7

我想用 MediaPlayer 播放设备铃声,但元数据标签似乎

ANDROID_LOOP = true

已设置 MediaPlayer 忽略了setLooping方法的调用

mMediaPlayer.setLooping(false);

并在任何情况下循环播放音频。也不会调用 onCompletionListener 方法。

我注意到,即使是像 ES Media Player 这样的音频应用程序也会循环使用这个标签设置为 true 的音频,无论是否启用循环。

所以我的问题是我能不能

  • 让 MediaPlayer 忽略这个标签
  • 临时修改标签,使 MediaPlayer 不会循环播放音频

这个问题出现在铃声周围,但它当然不是特定于铃声的。有趣的是,我找到的关于如何播放铃声的教程都设置了 mMediaPlayer.setLooping(true); 这样他们就不必处​​理这个问题了……

谢谢

在此处输入图像描述

4

1 回答 1

3

可能不是一个令人满意的答案,但工程师似乎不倾向于更改 ogg 文件的行为MediaPlayer和元数据标记ANDROID_LOOP=true。见问题:http ://code.google.com/p/android/issues/detail?id=1314

至于临时修改标签,我不知道你该怎么做。

我还没有测试过,但我相信其他声音格式不会表现出这种行为(例如 mp3 或 wav)。也许您可以将 ogg 文件转换为不同的格式并将它们保存为临时数据(可能对此有所帮助:Java - 将 ogg 转换为 mp3)这当然似乎是播放某些文件的很多开销,但至少它们'通常是小文件。

于 2012-12-16T07:41:10.050 回答