ANDROID_LOOP = true -- 如何避免使用此元数据标签时 MediaPlayer 循环音频

7
我希望使用MediaPlayer播放设备铃声,但似乎当元数据标签
ANDROID_LOOP = true

MediaPlayer忽略了setLooping方法的调用。

mMediaPlayer.setLooping(false);

并且在任何情况下循环音频。而且onCompletionListener方法没有被调用。
我注意到,即使是像ES Media Player这样的音频应用程序也会使用此标记将音频循环设置为true,而不管是否启用了循环。
所以我的问题是,我是否可以:
  • 让MediaPlayer忽略此标记
  • 暂时修改标记,使MediaPlayer不循环音频
这个问题围绕着铃声产生,但当然不是特定于铃声的。有趣的是,我发现关于如何播放铃声的教程都设置了mMediaPlayer.setLooping(true);,这样他们似乎就不必处理这个问题了...
谢谢

就此而言,即使是股票媒体选择器(在从Android设置活动中选择铃声时)似乎也会循环播放铃声。除了以某种方式编辑它(不知道如何在手机上进行),似乎没有忽略元数据标签的方法。 - Tony Chan
更多信息:http://code.google.com/p/android/issues/detail?id=1314 看起来他们不倾向于改变这种行为。 - Tony Chan
1个回答

3
也许不是一个令人满意的答案,但似乎工程师并不倾向于更改MediaPlayer的行为或ogg文件的元数据标签ANDROID_LOOP=true。请参见问题:http://code.google.com/p/android/issues/detail?id=1314 至于暂时修改标签,我不知道该如何操作。
我没有测试过,但我认为其他声音格式不会表现出这种行为(例如mp3或wav)。也许你可以将ogg文件转换为不同的格式并将它们作为临时数据保存(可能有助于此:Java-Convert ogg to mp3)。当然,这看起来像是播放一些文件所需的大量开销,但至少它们通常是小文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接