简体   繁体   English

Android Media Player中的Oncompletion侦听器

[英]Oncompletion Listener in android Media player

I want to play MediaPlayer one after other, i can able to get first file but could not able to get remaining files... 我想一个接一个地播放MediaPlayer,我可以获取第一个文件,但无法获取剩余文件...

whether this code is correct... 此代码是否正确...

private void playRecording()  {

    player = new MediaPlayer();

    player.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
            player.stop();
            if (i < numberOfFiles) {

                i++;
                playAudio(Environment.getExternalStorageDirectory()
                        .getAbsolutePath()
                        + "/android"
                        + i
                        + ".3gp");
            }else i=0;
        }


    });
    player.start();

playAudio: playAudio:

  private void playAudio(String filename) {
      try {
      player.setDataSource(filename); 
      player.prepare();
      player.start();
  } catch (Exception e) { 
      // TODO Auto-generated catch block
      e.printStackTrace(); 
      } 
      }

Change OnCompletionListener with following: 使用以下命令更改OnCompletionListener

player.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mp.stop();
            mp.release();
            if (i < numberOfFiles) {
                i++;
 String path=Environment.getExternalStorageDirectory() .getAbsolutePath()+ "/android"+"/"+i+".3gp";
           playAudio(path);
            }
            else i=0;
        }

In place of calling mp.release(); 代替调用mp.release(); It's better to call mp.reset(); 最好调用mp.reset();

where release will releases the object and reset is like just creating the object. release将释放对象并进行重置,就像创建对象一样。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM