Низкоуровневый аудио API для Android - PullRequest
10 голосов
/ 09 августа 2010

Я ищу в Android способ воспроизведения звука в памяти способом, аналогичным семейству методов waveOutOpen в программировании Windows.

Методы waveOut..., по сути, позволяют приложению создаватьмассивы выборочных значений (например, файлы WAV в памяти без заголовков) и выгрузка их в очередь для последовательного воспроизведения.Windows плавно переходит из одного массива в другой, поэтому, пока приложение продолжает выгружать массивы в очередь перед воспроизведением, программа может создавать и воспроизводить непрерывный звук любой произвольной длины.Windows API также включает в себя механизм обратного вызова, который приложение может использовать для индикации хода выполнения и загрузки дополнительных буферов.

Насколько я могу судить, аудио API для Android позволяет приложению воспроизводить файл из локального хранилища или URL-адресаили из потока памяти.Есть ли способ заставить Android «ставить в очередь» вызовы MediaPlayer.start(), чтобы один игрок переходил (без глюков) в другого по завершении игры?Похоже, что Jet делает что-то подобное, но только со своим собственным внутренним механизмом синтеза.

Есть ли какой-либо другой способ доступа к звуку Android waveOutOpen?

1 Ответ

10 голосов
/ 23 августа 2010
android.media.AudioTrack

... это класс, который вы, вероятно, ищете.

http://developer.android.com/reference/android/media/AudioTrack.html#AudioTrack%28int,%20int,%20int,%20int,%20int,%20int%29

После создания вы просто заполняете его двоичными данными в указанном формате, используя следующий метод:

AudioTrack.writeTo(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...