sil*_*aut 3 android android-mediaplayer
我使用MediaPlayer并通常以编程方式设置播放器的状态,例如:
if(mp.isPlaying()) {
mp.pause();
animationPausedMusic();
}
private void animationPausedMusic() {
// Changing button image to play button
btn_play.setBackgroundResource(R.drawable.play);
... // more code
}
Run Code Online (Sandbox Code Playgroud)
但有时logcat给我的信息是:
"纠正了内部/外部状态不匹配"
然后播放和暂停功能不再起作用.
这条消息是什么意思?我该如何解决?
小智 5
在浏览了android的媒体播放器本机框架后,我发现在源文件中有mediaplayer.cpp内部函数bool MediaPlayer::isPlaying()开发人员正在检查currentState媒体播放器是否处于STARTED状态但是媒体播放器没有播放任何媒体,所以它试图改变状态到PAUSED状态,以便为API用户保持状态一致性.(这里是他打印消息"ALOGE("内部/外部状态不匹配已纠正");")
现在,如果您浏览下面的媒体播放器状态图:

您会注意到,MediaPlayer在调用start()之后移动到'STARTED'状态时可能会发生这种情况,此时由于某些模糊原因尚未启动回放并且您触发MediaPlayer.isPlaying()方法调用,Framework将此视为状态不一致并进入'PAUSED'状态,这就是为什么你看不到任何进一步发挥的原因.
但是,如果有人有更好的理解,请分享您的想法!
| 归档时间: |
|
| 查看次数: |
3441 次 |
| 最近记录: |