7

I want to play device ringtones with MediaPlayer yet it seems when the metadata tag

ANDROID_LOOP = true

is set MediaPlayer is ignoring the call of the method setLooping

mMediaPlayer.setLooping(false);

and loops the audio in any case. Also the onCompletionListener method is not called.

I noticed that even audio apps like ES Media Player loop audios with this tag set to true regardless if looping is enabled or not.

So my question is if I can

  • make MediaPlayer ignoring this tag
  • temporary modify the tag so that MediaPlayer does not loop the audio

This question arose around ringtones yet it is of course not ringtone specific. Funnily the tutorials I found on how to play ringtones all set mMediaPlayer.setLooping(true); so that they dont have to handle this problem it seems ...

Thanks

enter image description here

dorjeduck
  • 7,624
  • 11
  • 52
  • 66
  • FWIW, even the stock media selector (when selecting ringtones from the Android settings activity) seems to loop the ringtones. Doesn't seem to be a way to ignore the metadata tag, other than somehow editing it (no idea how to go about that on the phone). – Tony Chan Dec 16 '12 at 07:15
  • More info: http://code.google.com/p/android/issues/detail?id=1314 Doesn't seem like they're inclined to change anything about this behavior. – Tony Chan Dec 16 '12 at 07:22

1 Answers1

3

Might not be a satisfactory answer, but it seems the engineers are not inclined to change the behavior of MediaPlayer and the metadata tag ANDROID_LOOP=true for ogg files. See issue: http://code.google.com/p/android/issues/detail?id=1314

As for temporarily modifying the tag, I don't know how you could go about doing that.

I haven't tested it but I believe other sound formats don't exhibit this behavior (e.g. mp3 or wav). Perhaps you could convert the ogg files to a different format and keep them as temp data (might help with this: Java - Convert ogg to mp3) This of course seems like a lot of overhead to play back some files, but at least they're usually small files.

Community
  • 1
  • 1
Tony Chan
  • 8,017
  • 4
  • 50
  • 49