【问题标题】:Android plays sounds after delayAndroid 延迟后播放声音
【发布时间】:2012-06-20 01:41:41
【问题描述】:

我必须在 GUI 事件上播放声音,例如单击按钮等。为此,我从 WebView 调用以下本机代码:

MediaPlayer _SoundPlayer = new MediaPlayer();
private void playSound(String sound)
{
    _SoundPlayer.reset();
    try
    {
        AssetFileDescriptor afd = getAssets().openFd("sound/" + sound + ".mp3");
        _SoundPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
        _SoundPlayer.prepare();
        _SoundPlayer.start();
    }
    catch (Exception e) { }
}

问题是事件与其声音之间存在约 500 毫秒的延迟。我能否以某种方式优化播放声音,也许,为每种声音创建一个专用的 MediaPlayer 实例?

问候,

【问题讨论】:

    标签: android audio


    【解决方案1】:

    使用SoundPool 代替MediaPlayer 进行低延迟媒体播放。

    【讨论】:

    • 是的,但如果音频硬件被闲置到足以关闭(臭名昭著的音频抛掷器写入延迟消息),您仍可能会看到超过 100 毫秒的启动延迟
    【解决方案2】:

    我看到这已经有一个公认的答案,但我要补充一点,目前还没有完整的解决方案:Android 目前有非常大的音频延迟。开发者仍在等待一个好的解决方案。

    这个问题是指 NDK,但问题是一般性的:

    http://code.google.com/p/android/issues/detail?id=3434

    【讨论】:

    • 坦率地说,SoundPool 的性能看起来也不尽如人意。但它稍微好一点,答案被接受为开发人员应该如何在他们的应用程序中处理多个声音的大方向。
    猜你喜欢
    • 2018-07-19
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多