2017-11-17 10 views
1

1分ごとに「検索中」と表示されるオーディオファイルを再生する場合は、繰り返します。 CASE_STATUS_SEARCHINGが他に変更されると、このファイルを停止するにはどうすれば実装できますか? //オーディオファイルを繰り返し、タスクが変更されたときに停止します

public class Player { 
private static SoundPool soundPool; 
private static int searching; 
final Timer timer = new Timer(); 


public void searching() { 
    timer.schedule(new TimerTask() { 
         @Override 
         public void run() { 
          soundPool.play(searching, 1.0f, 1.0f, 1, 0, 1.0f); 
         } 
        }, 60000); 
} 

と私はここのスレッドを起動します:私はTIMERSOUNDPOOLを使用

public class Locator BroadcastReceiver extends BroadcastReceiver { 
@Override 
public void onReceive (Context context, Intent intent) { 
final String action = intent.getAction(); 

switch (newStatus) { 
    case STATUS_SEARCHING: 
         stateStr = getString(R.string.Scanning); 
         tvStatus.setText(R.string.Scanning); 
         Player.searching(); 
         break; 
} 

答えて

0

私はstackoverflowのから少し助けを借りて自分でそれを解決しました。

public void playStillSearching() { 

    if (handler == null) { 
      handler = new Handler(); 
      handler.postDelayed(runnable = new Runnable() { 
       @Override 
       public void run() { 
        soundPool.play(stillSearching, 1.0f, 1.0f, 1, 0, 1.0f); 
        handler.postDelayed(this, 3000); 
       } 
      }, 3000); 
    } 
} 

public void stopSpeak() { 

    if (handler != null) { 
     handler.removeCallbacks(runnable); 
    } 
} 

私は自分のイベントにそれらを実装しています。

関連する問題