AndreiBogdan AndreiBogdan - 2 months ago 7
Android Question

MediaPlayer won't loop. setLooping() doesn't work

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();


I've tested it like above, I've also tested it by calling
setLooping(true)
after
start()
but with no luck.

I have two
Nexus 5
phones, both with
Android 5
on them. On one, the looping works, on the other the sound stops after one go, it won't loop.

Any ideas ?!

Answer

Apparently there's an issue with Android 5 devices which use the NuPlayer instead of the AwesomePlayer.

You can check it by going in the Developer Options, under the Media section there should be Use NuPlayer (experimental). I've unchecked that and it appears it's alright now.

I haven't been able to figure out how to fix this issue, so I've hacked it a bit. I've set some flags in the code and when it enters onCompletion, if the user hasn't specifically stopped the sound, i restart it there. If there's anyone with a better fix, let me know and i'll update this answer.

Here's the issue: https://code.google.com/p/android-developer-preview/issues/detail?id=1695