【问题标题】:ANDROID_LOOP = true -- how to avoid MediaPlayer looping audios with this metadata tagANDROID_LOOP = true -- 如何避免 MediaPlayer 使用此元数据标签循环播放音频
【发布时间】:2012-10-11 07:52:13
【问题描述】:

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

ANDROID_LOOP = true

已设置 MediaPlayer 忽略了方法 setLooping

的调用
mMediaPlayer.setLooping(false);

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

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

所以我的问题是我是否可以

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

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

谢谢

【问题讨论】:

  • FWIW,即使是股票媒体选择器(从 Android 设置活动中选择铃声时)似乎也会循环播放铃声。除了以某种方式对其进行编辑(不知道如何在手机上进行此操作)之外,这似乎不是一种忽略元数据标签的方法。
  • 更多信息:code.google.com/p/android/issues/detail?id=1314 他们似乎并不想改变这种行为。

标签: android android-mediaplayer


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多