好的,我正在编写一个简单的呼叫/拨号应用程序,我已为每个号码创建了按钮。我正在尝试用MediaPlayer类实现声音,所以每当用户点击/点击按钮声音播放时。并且它正在工作,但是在30次点击之后声音没有播放,只有当我重新启动应用程序时,我再次只能听到30次点击声音,然后我就会收到错误。
我也尝试过使用SoundPool类,但是再次点击30次后我听不到声音。任何解决方案?
onButtonClick方法:
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.button_sound);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
if (mp.isPlaying()) {
mp.stop();
mp.release();
} else {
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
错误日志:
11-29 23:01:03.632 12572-12572 / com.phonecalldemo E / MediaPlayer-JNI: QCMediaPlayer媒体播放器不存在11-29 23:01:03.662 12572-12572 / com.phonecalldemo E / MediaPlayer:应该有副标题 控制器已设置11-29 23:01:03.672 12572-12572 / com.phonecalldemo E / MediaPlayer:错误(-19,0)11-29 23:01:03.682 12572-12572 / com.phonecalldemo E / MediaPlayer:错误 (-19,0)
答案 0 :(得分:0)
<强>更新强>
我找到了解决方案,这是我的新代码,对于那些仍然遇到此类错误的人:
final MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.button_sound);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mp.release();
}
});