Android MediaPlayer在多次启动后无法正常工作

时间:2014-03-03 15:57:23

标签: android

我在使用MediaPlayer时遇到了麻烦。在随附的代码中,当触摸按钮时,如果选择了这样做的选项,则激活语音提示。但是,声音大约工作31次,然后声音响起。使用.release()方法(我现在注释掉了)会导致声音根本不起作用。

如何更正此功能?

谢谢

.... 
import android.media.MediaPlayer;
....
MediaPlayer mp = null;
........

//  Causes the name of the appropriate cell to be announced

    public void sayCellName() {
        if(voiceChoice == false) return;
        else{
            switch(cellName){             
            case 1:
                mp = MediaPlayer.create(this, R.raw.poly);
                break;
            case 2:
                mp = MediaPlayer.create(this, R.raw.lymph);
                break;
            case 3:
                mp = MediaPlayer.create(this, R.raw.mono);
                break;
            case 4:
                mp = MediaPlayer.create(this, R.raw.eo);
                break;
            case 5:
                mp = MediaPlayer.create(this, R.raw.baso);
                break;
            case 6:
                mp = MediaPlayer.create(this, R.raw.band);
                break;
            default:
                break;
            } // end switch statement
        } // end else statement;
        mp.start();
//      mp.release();
    } // end of sayCellName
} // end of main

2 个答案:

答案 0 :(得分:1)

Android操作系统具有硬编码的音轨资源限制,可以同时播放声音。因为所有正在运行的应用程序的限制都是32 tracks that have to be shared。你正在做的是通过在每次点击按钮上创建新的MediaPlayer而不释放它们来浪费这些曲目。

对于您的方案,您应该创建并重用单个MediaPlayer实例,并在Activity停止时释放它。可以reset MediaPlayerset a different stream data source afterwards

答案 1 :(得分:0)

您必须释放播放器OnPause或OnDestroy方法。

   @Override
   public void onPause() {
       if (mp!= null) mp.release();
   }