android - Android:MediaPlayer无法按预期发布

标签 android audio android-mediaplayer

所以我有一个带有ListView的应用程序,该应用程序在片段之一中播放音频。问题是,某些用户报告该应用程序在经过一定数量的点击后停止播放音频。我知道这是与MediaPlayer无法正确发布有关的问题,但是我找不到我没有发布它的地方。希望你们能有所帮助。

这是MyAudioFragment.java中使用MediaPlayer的地方。我相当确定问题出在这些代码行中。

MyAudioFragment.java

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            if(MainActivity.mediaPlayer != null && MainActivity.mediaPlayer.isPlaying()){
                MainActivity.mediaPlayer.release();
                MainActivity.mediaPlayer = new MediaPlayer();
            }
            MainActivity.mediaPlayer = MediaPlayer.create(getContext(), MainActivity.hashMap.get(adapterView.getItemAtPosition(i)));
            MainActivity.mediaPlayer.start();
        }
    });

这是我在MainActivity.java中处理MediaPlayer的地方
//...
public static MediaPlayer mediaPlayer;
//...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //...
    //Layout stuff
    mediaPlayer = new MediaPlayer();
    //Setting up fragment stuff
    //...
}

@Override
public void onPause(){
    super.onPause();
    mediaPlayer.stop();
    mediaPlayer.release();
}

@Override
public void onResume(){
    super.onResume();
    mediaPlayer = new MediaPlayer();
}

编辑:可能是我没有发布“OnCompletion”吗?

最佳答案

在onCompletion上,您必须执行release();。

关于android - Android:MediaPlayer无法按预期发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557453/

相关文章:

android - 如何使登录cookie像系统

android - 使用 gradle 为 Android 配置 Log4j

java - 密码验证正则表达式android

python - 如何在python中将歌曲转换为时变波并为其添加噪音并再次播放?

java - 如何在我的媒体播放器中调整 setOnErrorListener 并在 textview 中将状态设置为 "offline"

android - Android 媒体播放器错误

java - 在 android 上使用 weka 库时出错(想在 Android 应用程序中实现机器学习)

html - 不带<audio>元素而听到的WebRTC音频(RTCMultiConnection)

javascript - 使用 jQuery 实现音频淡入和淡出

android - 如何使用 MediaCodec API 调用我的自定义解码器