Android MediaPlayer вызывает зависание игры с «AudioHardware PCM воспроизведение будет в режиме ожидания» - PullRequest
4 голосов
/ 27 ноября 2010

Это сложный вопрос: /

Я создаю музыкальную игру для Android в духе Audiosurf. Все работает хорошо, за исключением нескольких секунд до конца песни (которая воспроизводится обычным MediaPlayer), музыка останавливается, и вся игра (включая пользовательский интерфейс) останавливается на несколько секунд.

Каждый раз, когда это происходит, я вижу ошибку «Воспроизведение AudioHardware PCM переходит в режим ожидания» в logcat.

Поиск в Google привел меня к выводу, что

  • Это может быть проблема, относящаяся к HTC Hero (невозможно воспроизвести на эмуляторе или других устройствах)
  • это сообщение обычно регистрируется, когда поток http недостаточно быстр для MediaPlayer
  • Аудио в Android вообще отстой

Поскольку я уже декодирую mp3 с помощью NDK + libmpg123 для анализа аудио, я мог бы также просто воспроизвести аудио сам (используя очень уродливый интерфейс между кодом NDK C и AudioTrack в Java).

Есть ли исправление / обходной путь для этой ошибки или я действительно должен пойти по этому пути? (У меня есть только ограниченное время для завершения этого проекта)

Я ценю каждый намек!

1 Ответ

0 голосов
/ 14 марта 2011

Возможно, вы останавливаете музыку, когда все это буферизируется в вашем C-коде.Поскольку у AudioTrack есть задержка, вам, возможно, придется подождать дольше, пока он не завершится.

Однако мне понадобится больше подробностей о вашем коде, чтобы помочь.

...