2010-04-06 3 views
30

Кто-нибудь построил OpenAL для Android или нашел для него общую библиотеку? Это кажется очевидной необходимостью в игре любого вида, но для этого нет ресурсов. Кажется, что java-звуковая библиотека Android не может делать изменения в шаге от того, что я могу сказать, поэтому кажется, что есть необходимость в OpenAL. Я знаю, что OpenAL Soft может быть построен поверх ALSA, но я не уверен, что это сделали, и я уверен, что это займет у меня месяц.Android OpenAL?

Если есть хороший проводник где-то на звуковых манипуляциях на Android без OpenAL, это тоже хорошо. Это просто, что OpenAL - это своего рода стандарт для разработчиков игр, и было бы неплохо перенести мои тысячи строк на эту систему, и я подумал, что это была точка NDK, прежде чем я подключился к ней и увидел, что почти нет доступ к общей библиотеке в системе.

Спасибо .. Я надеюсь, что смогу на самом деле порт, не став сам экспертом java. На самом деле не нравится NDK!

ответ

-3

Вы можете использовать NDK для сборки OpenAL и упаковки его с помощью APK. Таким образом, вы можете получить к нему доступ из собственного кода.

+2

Вы не можете получить доступ к низкоуровневым звуковым API (ALSA и т. Д.) Любым поддерживаемым способом из NDK, так что нет, вы не можете этого сделать. – SomeCallMeTim

+0

, так что только api, который можно использовать, это то, что один java: android.media? – RzR

+0

Нет, вы также можете использовать soundpool и audiotrack (который является низким уровнем), в java, а также теперь открывает исходный код. –

5

OpenSL планируется для будущей сборки Android; OpenAL недоступен, а низкоуровневое оборудование отключено от всего, что вы можете сделать в NDK, поэтому вы не можете безопасно его самостоятельно создать.

Нет поддержки для звука с низкой задержкой, даже запланированного; есть ошибка в этой связи здесь:

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

Звезда это, если это отношение к вам; возможно, Google будет слушать, если он получит достаточно звезд.

EDIT: В Android 4.0+ есть звук с низкой задержкой, и теперь доступен OpenSL. См. Эту страницу и связанные страницы: http://source.android.com/devices/audio/latency.html Также см. Руководство NDK по OpenSL.

8

Перед тем, как Google объявит, что 3D-звук будет включен в Android 2.3, мне удалось скомпилировать OpenAL для Android и упаковать его в качестве общего объекта.

См http://pielot.org/2010/12/14/openal-on-android/

все еще может быть полезно, если вы хотите, чтобы целевые устройства < 2,3.

Cheers.

+1

Чтобы продлить ответ Мартина: он также дает некоторые примеры использования на высоком уровне [здесь] (http://pielot.org/2011/11/10/openal4android-2/). –

31

Несколько вариантов доступны теперь для НДК аудио:

  1. Это не OpenAL, но OpenSL ES 1.0.1 является официальной частью НДК от уровня API 9 (2.3). Дополнительная информация here.

  2. OpenAL Soft имеет базовый сервер OpenSL ES в своем git-сервере (не выпущен начиная с версии 1.13). Однако на данный момент он взломан на Android, поскольку он написан для OpenSL ES 1.1, а не 1.0.1. См. this commit для исправления.

  3. Как уже упоминалось в предыдущем ответе, бэкэнд JNI для OpenAL Soft связан и описан here как единственный вариант для OpenAL на платформах до 2.3 Android. Однако это устаревшая вилка OpenAL Soft - я обновил бэкэнд до последней версии on a github repo here вместе с исправлением OpenSL ES 1.0.1. Также включен untested optional patch, который утверждает, что обеспечивает лучшую производительность и меньшую задержку.

+1

+1 от меня после редактирования. Здесь положительно отзываются ответы на старые вопросы (хорошие ответы), поэтому для этого есть [отмеченные значки] (http://stackoverflow.com/badges/17/necromancer). – Flexo