Android:Mediaplayer 停止/开始播放原始资源

标签 android media-player playback

它现在在第一次按下时播放,在第二次按下或按下另一个声音按钮时停止。如果我让一个声音播放通过,我可以重新启动它或单击一次播放另一个声音。

我的目标是第二次按下同一个按钮来停止它,但是按下一个新按钮只是开始新的声音而不是第一次按下新按钮停止旧的声音,第二次按下开始新的声音。

我明白为什么它会做现在做的事情,但我不确定如何让它按照我想要的方式工作。

public void playSound(int input){
    if (mp!=null && mp.isPlaying()) {
         mp.stop();
         mp.reset();
    } else{
         if (mp!=null){
             mp.reset();
             mp.release();
         }
         mp = MediaPlayer.create(Soundboard.this, input);
         mp.start();
    }
}

最佳答案

这段代码:

if (mp!=null){
    mp.reset();
    mp.release();
}

永远不会被执行。 mp 此时只能是 null,因为它在 if (mp != null)< 的 else block 中 测试。这表明您对使用此方法的想法存在缺陷。

如果播放了声音并且您按下了按钮,那么这段代码将执行:

mp.release();
mp = null;

因为 mp 不是 null,所以 else block 不会执行,也不会播放新的声音。第二次按下按钮时,mp 现在是 null 并且执行 else block ,创建一个新的 MediaPlayer 并播放声音。

关于Android:Mediaplayer 停止/开始播放原始资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812947/

相关文章:

java - 如何通过Bundle将数据从 fragment 传输到 fragment

java - 当我尝试在Android Studio中构建APK时出现错误

Android MediaPlayer 准备失败 : status = 0x1

ios - 在应用速率大于 2 倍时从 avplayer 播放生涩

Android:播放声音文件的一部分

android - 如何使类型转换器与自定义类列表一起使用?

android - 完全使用适用于 Android 的 xml Mono

android - 运行一个线程几秒钟

Android AudioRecord 和 MediaRecorder

ios - 无论如何,可以在iOS中内嵌播放视频吗?