2013-07-08 2 views
-1

소리를 재생하고 멈추는 가장 좋은 방법은 무엇입니까?Android - 소리 재생 및 중지

RingtoneManager, MediaPlayer 및 SoundPool을 사용했지만 사운드를 중지하지 못했습니다.

RingtoneManager TYPE_ALARM을 사용할 때 소리를 멈출 방법이 있습니까?

간단한 코드를 작성하십시오. 내가 여러 번 호출되는이 기능을 믿고있어

 SoundPool pool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
    List<Integer> streams = new ArrayList<Integer>(); 
    int soundId = pool.load(getApplicationContext(), R.drawable.alarm, 1); //There are several versions of this, pick which fits your sound 


    try{ 

     if(myWifiInfo.getRssi() < -55) 
     { 
      /* 
      Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
      Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); 
      r.play();*/ 

      Thread.sleep(1000); 
      int streamId = -1; 
      streamId = pool.play(soundId, 1.0f, 1.0f, 1, 0, 1.0f); 
      streams.add(streamId); 
      textRssi.setText(String.valueOf(myWifiInfo.getRssi() + " WARNING")); 
     } 
     else { 
      Log.e("WIFI","Usao"); 
       for (Integer stream : streams) { 
        pool.stop(stream); 
       } 
       streams.clear(); 
      Log.e("WIFI","Izasao"); 
     } 
+0

시도한 코드를 게시하십시오. 미디어 플레이어와 사운드 풀에 대한 중지 방법이 작동하는 것을 보았습니다. –

+0

@GabeSechan이 (가) 게시물을 편집했습니다. 여기 있습니다. –

답변

0

:

이것은 내가 시도한 마지막 것은 무엇입니까? 문제는 로컬 목록에 streamID를 추가한다는 것입니다. 이 목록은 함수가 호출 될 때마다 다시 만들어 지므로 stop을 호출하려고하면 목록이 항상 비어있게됩니다.

한 번만 호출되는 경우 문제는 당신이 멈추지 않는다는 것입니다. 재생할 수 있습니다 (해당 경우 별도의 분기에 있음).

+0

당신의 제안을 시도했지만 효과가 없습니다. 사운드는 일정 시간이 지나면 재생을 멈추지 만 때가 안된다. –