我的应用程序中有这段代码
mp.start();
play=mp.isPlaying();
while(play)
{
play=mp.isPlaying();
}
mp.stop();
mp.release();
当我调试时(我使用真正的 Android 设备),日志窗口不断显示类似“V/Mediaplayer: isPlaying: 1”的内容。当我关闭应用程序时,它也会打印该字符串。我确信我的应用程序在播放文件后退出循环,因为它执行这部分之后的所有指令。我也尝试使用 OnCompletionListener,但它并没有像预期的那样工作。
我在 AsyncTask 中执行此代码,这可能是问题所在吗?
最佳答案
那个 while 循环太可怕了,你不需要它,只需使用 MediaPlayer 回调或创建你自己的回调
link of android mediaPlayer official documentation
接下来,您不能调用 .start() ,然后再调用 stop() ..也许这是一个测试,但如果它是实时代码,则可能会出现问题。
OnCompletionListener 仅在播放轨道结束时为您提供回调
为了跟踪玩家的状态,您可以使用枚举和接口(interface)来进行自己的回调
关于java - Android - MediaPlayer 继续前进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28450036/