我在使用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
答案 0 :(得分:1)
Android操作系统具有硬编码的音轨资源限制,可以同时播放声音。因为所有正在运行的应用程序的限制都是32 tracks that have to be shared。你正在做的是通过在每次点击按钮上创建新的MediaPlayer
而不释放它们来浪费这些曲目。
对于您的方案,您应该创建并重用单个MediaPlayer
实例,并在Activity
停止时释放它。可以reset MediaPlayer
和set a different stream data source afterwards。
答案 1 :(得分:0)
您必须释放播放器OnPause或OnDestroy方法。
@Override
public void onPause() {
if (mp!= null) mp.release();
}