Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – MediaPlayer暂停后完成大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近观察到MediaPlayer播放mp3文件时出现了一个非常奇怪的问题.我正在运行此代码(mPlayer是@L_287_1@mediaPlayer):

Log.d(tag,"Pausing");
try {
    mPlayer.pause();
    Log.d(tag,"Paused");
} catch (IllegalStateException E) {
    Log.w(tag,"exception pausing player");
}

奇怪的是,如果我接近音频文件的末尾,播放器会在上述代码完成后的短时间内向我的OnCompletionListener发送完成通知. (我没有确切地知道我有多接近,但它大约是1/4秒.)例如,这是发生这种情况时的典型logcat输出

05-27 17:23:43.439: DEBUG/Player(266): Pausing
05-27 17:23:43.487: DEBUG/Player(266): Paused
05-27 17:23:43.838: WARN/Player(266): Audio completed (state=PAUSED)

请注意,警告行(从我的OnCompletionListener记录)在调用pause()返回后超过300毫秒!

结果是媒体播放器在我不期望它时进入PlayBACkCompleted状态.这搞砸了我的代码的行为(以及start(),它从头开始重新开始,而不是播放文件的最后一点).

这种情况发生在从1.6到2.3的仿真器上以及至少一个运行2.2的设备上.有谁知道这个问题,怎么办呢?

解决方法

媒体播放器在一个单独的线程中运行,你必须等到ui线程和媒体播放器的线程同步.所以延迟是正常的.由于你的暂停命令太晚到达玩家,玩家可能真的完成了该文件.尝试使用更长的音频文件会发生什么.

可能出现的另一个问题是在pause-command之后搜索超出轨道末尾的其他代码.你的听众代码是什么?

大佬总结

以上是大佬教程为你收集整理的android – MediaPlayer暂停后完成全部内容,希望文章能够帮你解决android – MediaPlayer暂停后完成所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。