Android

时间:2018-02-08 22:45:04

标签: android audio libgdx delay

我在Libgdx(Android)中构建游戏,每次用户触摸某个对象时我都会播放声音。对象的声音和视觉选择应该协调一致,但是当我播放声音时,我会调用sound.play()以及声音开始实际播放的那一刻有200ms的延迟。

我正在使用AssetManager在游戏开始之前加载所有声音文件,我已经确认时间延迟在sound.play()调用和sound.getPosition()停止为0之间。所以我的问题是的,这里发生了什么? Libgdx或Android在两个需要200毫秒的时刻之间做什么,假设文件已经加载?这是一个.wav文件,因此根本没有压缩。我有什么遗漏或某种方法可以修复它吗?

1 个答案:

答案 0 :(得分:0)

在 libGDX 1.9.12 中,您可以使用 AsynchronousAndroidAudio 来帮助您解决问题。

您可以通过在 AsynchronousAndroidAudio 类中覆盖此方法来更改默认的 LibGDX 行为并使用 AndroidLauncher

@Override
public AndroidAudio createAudio(Context context, AndroidApplicationConfiguration config) {
    return new AsynchronousAndroidAudio(context, config);
}

有一个限制:不能选择使用声音 ID。

有关详细信息,请参阅 official documentation 以及 the pull request

此外,如果出于任何原因您需要声音 ID,您可以以此实现为例,并为您的项目找到解决方法。