m_MediaPlayer = MediaPlayer.create(context, soundFromResource);
m_MediaPlayer.setVolume(0.99f, 0.99f);
m_MediaPlayer.setLooping(true);
m_MediaPlayer.setOnCompletionListener(USoundPlayback.this);
m_MediaPlayer.start();
我已经像上面那样对它进行了测试,我也在setLooping(true)
之后调用了start()
进行了测试,但没有运气。
我有两部Nexus 5
部电话,两部都有Android 5
。一方面,循环工作,另一方面声音一次停止,它不会循环。
有什么想法吗?!
答案 0 :(得分:5)
Android 5
设备使用NuPlayer
而不是AwesomePlayer
显然存在问题。
您可以通过Developer Options
在Media
部分下方Use NuPlayer (experimental)
进行检查。我已经取消选中了,现在它似乎没问题了。
我还没有弄清楚如何解决这个问题,所以我已经把它砍了一下。我在代码中设置了一些标记,当它进入onCompletion
时,如果用户没有专门停止声音,我会在那里重新启动它。如果有人有更好的解决方法,请告诉我,我会更新此答案。
问题在于:https://code.google.com/p/android-developer-preview/issues/detail?id=1695
答案 1 :(得分:1)
这是媒体播放器中的一个问题。
我使用下一个代码来解决这个问题:
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (looping) {
mMediaPlayer.seekTo(0);
}
}
});
答案 2 :(得分:1)
在对媒体播放器进行了大量实验之后,我找到了解决方案:
致电
m_MediaPlayer.setLoopoing(true)
之后
m_MediaPlayer.start()
答案 3 :(得分:0)
我使用此解决方法解决了这个问题:
public static void setMpLooping(final MediaPlayer mp, final boolean isLooping) {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP
|| Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1) {
if (isLooping) {
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.start();
}
});
} else {
mp.setOnCompletionListener(null);
}
} else {
mp.setLooping(isLooping);
}
}
但是请记住,有时在Lollipop赛道的结束到赛道开始过程中有延迟