gpt4 book ai didi

java - 媒体播放器无法第二次播放

转载 作者:行者123 更新时间:2023-11-29 08:22:44 25 4
gpt4 key购买 nike

我使用相同的按钮来播放和暂停。它可以顺利地处理播放和暂停。但是音乐文件结束后,它无法再次播放。当我按下它时,重新启动应用程序。我使用 mp.reset(); mp.release();。在这种情况下它对我没有帮助

Java 代码:

final MediaPlayer mp1;

mp1 = MediaPlayer.create(convertView.getContext().getApplicationContext(), convertView.getResources().getIdentifier(audiopath, "raw", convertView.getContext().getPackageName()));



mHolder.play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {



if (mp1.isPlaying()) {

mp1.pause();

mHolder.play.setImageResource(R.drawable.plays);


} else {


mp1.start();
mHolder.play.setImageResource(R.drawable.pause);
mp1.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {

mp.reset();
mp.release();


mHolder.play.setImageResource(R.drawable.plays);



}




});




}




}
});

日志猫:

 java.lang.IllegalStateException
at android.media.MediaPlayer.isPlaying(Native Method)
at com.example.package.adapter.AdapterN$3.onClick(AdapterN.java:223)

最佳答案

https://developer.android.com/reference/android/media/MediaPlayer img ref

问题

当您调用 MediaPlayerrelease() 时,它会释放之前使用 MediaPlayer.create() 分配的所有资源,因此不会不再可访问。这会产生,

java.lang.IllegalStateException at android.media.MediaPlayer.isPlaying(Native Method) at com.example.package.adapter.AdapterN$3.onClick(AdapterN.java:223)

解决方案

你应该删除,

mp.release()

但是,您仍然可以使用 release() 但在这种情况下,您必须使用以下方法再次创建 MediaPlayer 实例:

mp1 = MediaPlayer.create(convertView.getContext().getApplicationContext(), convertView.getResources().getIdentifier(audiopath, "raw", convertView.getContext().getPackageName()));

在适当的位置(即在访问任何开始、暂停、重置等之前)。

建议

  1. 始终在 onCreate() 中创建 MediaPlayer 实例。
  2. 释放媒体播放器实例在 onDestroy() 之间使用。
  3. 在创建和发布之间使用启动/暂停/重置 API。

关于java - 媒体播放器无法第二次播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56153570/

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