gpt4 book ai didi

android - 无法播放声音两次 Android MediaPlayer 应用程序崩溃

转载 作者:行者123 更新时间:2023-12-02 22:38:24 24 4
gpt4 key购买 nike

无法播放两次声音导致 Android MediaPlayer 应用程序崩溃

    mp = MediaPlayer.create(context, R.raw.audio1);
final ImageButton play = (ImageButton) findViewById(R.id.play_button_dua_seher);

play.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

try {
if (mp.isPlaying()) {
mp.stop();
mp.reset();
mp.release();
mp = MediaPlayer.create(context, R.raw.audio1);
}
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
}
});

final ImageButton stop = (ImageButton) findViewById(R.id.stop_button_dua_seher);
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mp != null)
{
mp.stop();
mp.reset();
mp.release();
}
}
});

逻辑猫

06-15 14:34:59.470 11697-11697/com.toptech.android.ramadanduas

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.toptech.android.ramadanduas, PID: 11697
java.lang.IllegalStateException
at android.media.MediaPlayer.isPlaying(Native Method)
at com.toptech.android.ramadanduas.duaseher$2.onClick(duaseher.java:53)
at android.view.View.performClick(View.java:5697)
at android.view.View$PerformClick.run(View.java:22526)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit

最佳答案

似乎问题是您在单击停止按钮时在 MediaPlayer 实例上调用了 release(),但是在(重新)启动时您没有检查它的状态播放。

这意味着您可以在已释放的 MediaPlayer 实例上调用 isPlaying(),这将导致 IllegalStateException

您应该以某种方式跟踪 MediaPlayer 实例的状态(例如使用 boolean 标志)或在之后将其设置为 null发布,以便您可以在之后执行 null 值检查。

你可以这样做:

// in your play button's onClick()
if (mp != null && mp.isPlaying()) { // check for null value also
mp.stop();
mp.reset();
} else {
mp = MediaPlayer.create(context, R.raw.audio1);
}
mp.start();

// in your stop button's onClick()
mp.release();
mp = null; // set it to null

关于android - 无法播放声音两次 Android MediaPlayer 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37831680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com