Невозможно изменить источник звука в NDK, пример кода LiveEffect. - PullRequest
1 голос
/ 21 февраля 2020

Я скачал пример кода LiveEffect на основе библиотеки Oboe здесь: https://github.com/google/oboe/tree/master/samples/LiveEffect

, и я смог выполнить его на Samsung Galaxy S7 с Android 8.0

Программа работает должным образом при выборе библиотеки AAudio librray для NDK, но при выборе библиотеки OpenSL ES аудио всегда выбирает маршрут по умолчанию. Я хочу использовать встроенный в телефон mi c аудиовход, а громкоговоритель для внешних наушников - с выходом mi c, но если подключен наушник mi c, для аудиовхода всегда используется гарнитура mi c, хотя я выбираю телефон, встроенный в mi c в пользовательском интерфейсе приложения. Такое же поведение наблюдается в Samsung Galaxy S6 с Android 7, который поддерживает только OpenSL ES.

Мне не повезло, когда я узнал, как изменить аудиовход в программе примера звукового эха от Google на основе NDK , которая также использует OpenSL Es. Как указать источник аудиовхода при использовании звука NDK на основе OpenSL ES? Это ошибка?

1 Ответ

1 голос
/ 25 февраля 2020

Образец LiveEffect использует setDeviceId, чтобы указать, какое аудиоустройство использовать. Вот документы для setDeviceId:

Обратите внимание, что при использовании OpenSL ES это будет игнорироваться, и созданный поток будет иметь deviceId kUnspecified.

К сожалению, OpenSL ES (очень старый) не поддерживает указание аудиоустройства. Это означает, что аудиоустройство по умолчанию будет использоваться всегда.

Вы можете достичь желаемого поведения с помощью Java API, в частности setPreferredDevice

...