Уже не первый проект, где выскакивает ошибка при быстром включении/выключении звука. Почему-то libgdx плохо справляется со стерео.
У меня при запуске уровня, включается фоновая музыка. При нажатии на Back игра ставится на паузу и в появившемся окне можно кликнуть по одной из 2-х кнопок: вернуться на главный экран или продолжить игру. Если вы нажали на паузу и в появившемся окне сразу же нажмёте «продолжить», то выскочит в консоли пресловутая ошибка AudioFlinger could not create track, status: -12.
То есть, при загрузке уровня запускается звук sounds.get("level-theme").loop(1F)
. При паузе стопается sounds.get("level-theme").stop()
. Потом снова запускается. Если промежуток между остановкой и запуском очень маленький, то будет ошибка.
Честно говоря, никак не могу понять причины. Ранее уже говорил про эту ошибку. Частично помогало снижение частоты. Но ошибка при воспроизведении не всех файлов вылезала. Оказалось, что эта ошибка только при воспроизведении стерео файлов. Свёл дорожки в моно и теперь ошибки нет =_=
Скорее всего связано с буферизацией. Стерео канал занимает в буфере в два раза больше места. Быстрая перезагрузка наверное приводит к тому, что буфер не успевает освобождаться.
Ну не знаю. Тоже самое если делать через OpenAL в ndk, то нет такой проблемы.
я не предлагаю решения)) Просто посмотри в эту сторону, пока все, что ты делал раньше приводит к уменьшению размера буфера и по описанному ранее, уменьшает вероятность появления ошибки. Вдруг какой костыль придет в голову?
Просто, видимо, к моменту использования звука, не успевают в буфер всё загрузить.
Буду инициализировать все звуки при старте игры, чтобы такого не было )
А есть какая-то возможность связаться с тобой напрямую? Можешь на почту прислать удобный для тебя контакт — я тебе напишу.
Опять же посоветовал бы на десктопе протестить и на виртуалках, у которых сильно по-разному память настроена.
Также снижение частоты приводит к снижению количества занимаемого места в памяти для буфера.