当MediaPlayer停止时触发事件

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();

你知道音频文件的长度吗? - Adam Johns
我有多个不同长度的音频文件。 - mremremre1
在发布之前,你应该真正阅读文档 - keyser
当使用声音资源ID创建时,不应调用player.prepare(),因为代码中已经有prepare。 - cyanide
2个回答

17
您可以将OnCompleteListener()设置给播放器对象。相关代码如下: ```

您可以将OnCompleteListener()设置给播放器对象。相关代码如下:

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

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


0

他/她在标签中指定了“MediaPlayer”,所以我猜那会起作用。 - keyser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接