3

我正在制作一个使用音效的应用程序。我想知道如何检测声音何时播放完毕并触发事件。

我试过这个:

 player = new MediaPlayer();
    if (player != null) {
        player.reset();
        player.release();
    }

    player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {

            sonar.setBackgroundResource(R.drawable.sonar_off);
            stopPlay();
        }
    });

        if(state==1){
            player = MediaPlayer.create(this, R.raw.sonar_slow);
        }else if(state==2){
            player = MediaPlayer.create(this, R.raw.sonar_medium);
        }else if(state==3){
            player = MediaPlayer.create(this, R.raw.sonar_fast);
        }
         try{
             player.prepare();
            } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            } 
        player.start();
4

2 回答 2

15

您可以将 OnCompleteListener() 设置为播放器对象。它的代码是:

mPlayer.setOnCompletionListener(new OnCompletionListener() {
     @Override
     public void onCompletion(MediaPlayer mp) 
             { 
                "your code comes here" 
             }
});

这里的 mPlayer 是当前正在运行的 MediaPlayer 的对象。

于 2013-08-15T15:04:08.930 回答
0

有多种播放声音的方法,假设您使用 MediaPlayer 类,您可以注册一个MediaPlayer.OnCompletionListener

于 2013-08-15T15:02:49.240 回答