Я разработал хорошую игру с libgdx + java для android в качестве целевой платформы. Я почти подошел к концу, осталось только улучшить карты. До сих пор я выполнял отладку своей игры на рабочем столе, потому что вы знаете, что libgdx кроссплатформенный, и я ожидал, что просто щелкну правой кнопкой мыши и экспортирую для Android. И я, конечно, пробовал, что потом? внезапно я ударился о стену. Проблема в том, что мои звуковые эффекты плохо звучат на Android. Они отлично работают на рабочем столе, но не очень хорошо на Android. Разрешите мне проанализировать этот случай с помощью нескольких вопросов и на примерах: если мы рассматриваем звуковой эффект взрыва: сценарий; автомобиль попадает во взрывчатку. Я ловлю контакт с box2d и вызываю метод play для звукового эффекта взрыва. я ожидаю нормального звука взрыва. На рабочем столе я слышу это, нет проблем, но в Android то, что я слышу, - это просто очень-очень короткий шум (действительно короткий, возможно, несколько миллисекунд), затем долгое молчание, через некоторое время снова короткий шум. Что я пробовал:
Я пробовал рекомендации из многих других тем:
- Я пробовал это в форматах 44,1 кГц 16-битный файл wav тот же формат файл ogg 22,05 кГц wav файл, все они звучат одинаково.
- звуковой эффект не будет слишком коротким или слишком длинным. Ладно, у меня 3 секунды.
- Пытался пересохранить или оформить с fl-studio и смелостью.
Пробовал все равно на s5 mini Experia z1 и z3.
mp3 файлы отлично работают, когда я использую музыкальный класс, но у меня много звуковых эффектов, и музыкальный класс не для этого использования, поэтому мне нужно решить эту проблему
Я пробовал несколько других звуковых файлов, отличных от моего звукового эффекта взрыва, при тех же условиях (я имею в виду частоту звуковых форматов или битрейт и т. Д.).
Проверил, полностью ли загружен звук, нет ли. да, он загружен полностью, но звучит так же, и, конечно же, я играю в него через некоторое время, моя игра запускается. Этим предложением я имею в виду, что я ждал, по крайней мере, следующего кадра, чтобы воспроизвести звук, потому что некоторые ребята сказали, что он не может воспроизводиться в первом кадре в каком-то потоке.
если мы хотим увидеть какой-то код: как я загружаю файл:
это вызывается, когда игра только начинается, когда пользователь терпеливо следит за индикатором выполнения на экране загрузки :)
private void loadSoundEffects(){
assetMan.load("sounds/explosion.wav", Sound.class);
}
затем я получаю звук в глобальную отсортированную карту другим методом после завершения загрузки
soundEffects.put("explosion",assetMan.get("sounds/explosion.wav", Sound.class));
в моем классе звукового менеджера у меня есть такой метод
public void playSingle(String name,float x ,float y){
Sound sound=null;
sound=soundEffects.get(name);
long id=sound.play();
sound.setVolume(id, getVolume(x, y));//dont worry here volume returns always 1 for texting
}
когда я вызываю метод воспроизведения прямо здесь, он возвращает положительный идентификатор (в случае проблемы он вернет -1)
Для загрузки вещей я тоже пробовал вот так:
sound=Gdx.audio.newSound(Gdx.files.internal("sounds/explosion.wav"));
это большой проект, поэтому у меня, возможно, более 70 классов => Я не могу вставить их все здесь :) но я чувствую себя готовым ответить на любой вопрос, как, что, где, почему, когда вопросы, задавайте, пожалуйста .. если вам нужен еще код или файл или что-то еще, просто дайте мне знать
посмотрим, как это звучит; Я загрузил обычный wav файл взрыва и тот, который я записал с телефона в этом rar:
http://www.filedropper.com/soundeffects
вы услышите несколько звуков, похожих на тик-так, на самом деле это звучит так :)
РЕДАКТИРОВАТЬ: добавление дополнительной информации
он работает на Windows 7, моя ОС - это победа 7
Я использую последнюю версию libGDX. моя IDE - это затмение. Я попробовал это, отключив кабель, чтобы избавиться от отладчика, но результат тот же.
для использования звукового эффекта размер файла должен быть меньше 1 МБ, как сказано в вики, а мой файл составляет 688 КБ
РЕДАКТИРОВАТЬ: связано с производительностью?
Я начал думать, связано ли это с производительностью моего кода. подумайте о какой-то другой причине, которая вызывает задержку, и это влияет на звуки, но вот некоторые значения, игра работает с 55-60 fps, даже иногда все вычисления занимают менее 15 мс, но я слышу тот же звук, то же самое с очень маленькими файлами вроде 60 КБ. Итак, я буду продолжать думать о файлах. если они сломаны? или все еще проблема формата? у вас есть рабочий файл звуковых эффектов? или какие-нибудь предложения по формату? Я где-то читал 96 кГц 16-битный файл ogg, я тоже пробовал.
РЕДАКТИРОВАТЬ: важное замечание
Я играл в свою игру на мобильном телефоне. Я подорвал взрывчатку на машине. это звучало так же, потом я вернулся в меню. Я забыл открыть свой телефон. Игра была запущена. Но экран автоматически блокируется. Так оставалось минут 15-20. Затем, чтобы попробовать еще раз, я разблокировал экран и что случилось? Внезапно взорвалась вся взрывчатка, я собрал звуки очень хорошо и полно, а экран меню все еще отображался. в результате я думаю, что смогу сделать это, когда игра остановится на достаточное время, звуковые эффекты будут готовы и можно будет играть хорошо. что это значит сейчас? звуковые эффекты еще не загрузились из памяти, но я пытаюсь сыграть? или подготовка имеет другое значение? Я проверил, загружен он или нет, с помощью метода isLoaded () менеджера активов, который вернул true. Я сделал это непосредственно перед вызовом метода воспроизведения звука. я должен доверять этому методу isLoaded? или что?
Что ж, ребята заранее спасибо за помощь.
Извините, я держал это немного долго, я буду продолжать пытаться и исследовать ..