[Android High Performance Audio] AAudio аудиопоток, конфигурация, связанная с аудиоустройством (идентификатор аудиоустройства | направление аудиопотока | режим совместного использования аудиоустройства)
[Android High Performance Audio] AAudio аудиопоток, конфигурация, связанная с аудиоустройством (идентификатор аудиоустройства | направление аудиопотока | режим совместного использования аудиоустройства)
// настраивать Режим общего доступа , эксклюзивный режимпроизводительность выше , Меньшая задержка ; если Долженаудио оборудованиетолькосуществоватьодеялоиспользовать ,настраивать Неудача произойдет автоматическинастраиватьстановиться Режим общего доступа
AAudioStreamBuilder_setSharingMode(builder, AAUDIO_SHARING_MODE_EXCLUSIVE);
Далее основное внимание будет уделено подробному анализу описанных выше деталей процесса. ;Параметры для каждого метода , принцип , возвращаемое значение Подробности будут объяснены ;
II . AAudio Конструктор аудиопотоков Настройка аудиоустройств ID AAudioStreamBuilder_setDeviceId
настраивать AAudio аудиопотокоборудование ID :
① функциональный эффект : оборудование ID Используется для идентификации аудио оборудование , Долженметоддадля AAudio аудиопоток Подать заявку на посещение Долженаудио оборудование ;
③ параметр AAudioStreamBuilder *builder : AAudio Конструктор аудиопотоковуказатель , Внимание: указатель уровня ;
④ параметр int32_t deviceId : аудио оборудование ID , Если не указано, его можно передать в AAUDIO_UNSPECIFIED параметр , использоватьпо умолчаниюаудио оборудование ;
⑤ Пример кода:
Язык кода:javascript
копировать
// настраиватьаудиопотокоборудование ID
AAudioStreamBuilder_setDeviceId(builder, playbackDeviceId_);
III . AAudio аудио оборудование ID получать
аудио оборудование ID получатьметод :
① вызов Java API : аудио оборудованиеиз ID Да, вызов Java из API серединаиз AudioManager из getDevices() методполучать Android оборудованиеначальствоизаудио оборудованиеинформация ;
② возвращаемое значение : который возвращает AudioDeviceInfo массив объектов , Должен AudioDeviceInfo аудио инкапсулировано в объекте оборудование ID ;
③ извлекать аудио оборудование ID : вызов AudioDeviceInfo объект из getId() метод ,Вот и всеполучать int типиз аудио оборудование ID, существовать C/C++ Да int32 тип ;
IV . AAudio аудиопоток по умолчанию аудио оборудованиенастраивать
AAudio аудиопоток по умолчаниюоборудованиеиспользовать :
① по умолчанию Параметры : Помимо указания фактического аудио оборудование ID снаружи , Вы также можете указать AAUDIO_UNSPECIFIED как аудио оборудование ID ;
② по умолчаниюоборудование : еслинастраивать Понятно Долженпараметр , Система будет умолчаниюиспользовать Android Текущий аудиопотокиз мобильного телефона умолчаниюаудио оборудование ;
③ Пример : еслитекущийнаправление выход аудиопотокада , по памяти -> аудио оборудование , то есть произношение , Так что по умолчаниюоборудование Сразуда наушники > В комплекте динамик ;
V . AAudio Конструктор аудиопотоков настраивать направление аудиопотока AAudioStreamBuilder_setDirection
AAudio направление аудиопотоканастраивать :
① Прототип функции:
Язык кода:javascript
копировать
AAUDIO_API void AAudioStreamBuilder_setDirection(
AAudioStreamBuilder *builder,
aaudio_direction_t direction
)
② методэффект : настраивать AAudio направление аудиопотока , Аудиовход Ну давай же аудиовыход , по умолчаниюдааудиовыход ;
③ параметр AAudioStreamBuilder *builder : AAudio Конструктор аудиопотоков ;
④ параметр aaudio_direction_t direction : направление перечисление аудиопотока , ценить AAUDIO_DIRECTION_OUTPUT ( аудиовыход ) или AAUDIO_DIRECTION_INPUT ( Аудиовход ) ;
AAudio направление аудиопотока иллюстрировать : Значение да aaudio_direction_t тип , Должентипда int32_t тип , ценитьдаан перечисление ;
① Определение типа перечисления :
Язык кода:javascript
копировать
enum {
/**
* Audio data will travel out of the device, for example through a speaker.
*/
AAUDIO_DIRECTION_OUTPUT,
/**
* Audio data will travel into the device, for example from a microphone.
*/
AAUDIO_DIRECTION_INPUT
};
typedef int32_t aaudio_direction_t;
② AAUDIO_DIRECTION_OUTPUT : Экспорт аудиоданных в аудио оборудование , Это произношение для мобильного телефона из процесса ;
③ AAUDIO_DIRECTION_INPUT : Аудиоданные из аудио ввод оборудования в мобильный телефон , Этот мобильный телефон слышит звук во время процесса ;
VII . AAudio Конструктор аудиопотоков настраивать аудио оборудование Режим общего доступа AAudioStreamBuilder_setSharingMode
AAudio аудиопотокнастраивать аудио оборудование Режим общего доступа :
② функциональный эффект : Настройка аудиоустройствиз Режим общего доступа ;
③ параметр AAudioStreamBuilder *builder : AAudio Конструктор аудиопотоков ;
④ параметр aaudio_sharing_mode_t sharingMode : аудио оборудованиеиз Режим общего доступа , AAUDIO_SHARING_MODE_SHARED ( Режим общего доступа ) , AAUDIO_SHARING_MODE_EXCLUSIVE ( эксклюзивный режим ) ;
⑤ по умолчаниюмодель : если Нетвызов Долженметоднастраивать аудио оборудованиеиз Режим общего доступа , Так что по умолчаниюдля AAUDIO_SHARING_MODE_SHARED модель ;
⑥ настраиватьнеудачаиз Состояние : если Долженаудио оборудованиетолькосуществоватьодеялодругойаудиопоток Эксклюзивный , Тогда Долженнастройка может дать сбой ;
⑦ Режим общего доступапроизводительностьанализировать : аудио оборудование существовать AAUDIO_SHARING_MODE_SHARED Режим общего доступа Вниз, Задержка аудиоиз будет выше, чем у эксклюзивного режим ;
⑧ эксклюзивный режимпроизводительностьанализировать : аудио оборудование существовать AAUDIO_SHARING_MODE_EXCLUSIVE эксклюзивный режим Вниз, Задержка аудиоиз будет снижена до минимума , Очень высокая производительность ;
⑨ эксклюзивный Высвобождение ресурсов в режиме : существоватьэксклюзивный режим Вниз , если Нет Применимыйаудио оборудование , Должен ресурсов надо освободить немедленно , Чтобы не влиять на другие страны оборудование ;
⑩ пример кода :
Язык кода:javascript
копировать
// настраивать Режим общего доступа , эксклюзивный режимпроизводительность выше , Меньшая задержка ; если Долженаудио оборудованиетолькосуществоватьодеялоиспользовать ,настраивать Неудача произойдет автоматическинастраиватьстановиться Режим общего доступа
AAudioStreamBuilder_setSharingMode(builder, AAUDIO_SHARING_MODE_EXCLUSIVE);
VIII . AAudio аудио оборудование Режим общего доступа
AAudio аудио оборудование Режим общего доступа :
① Определение кода:
Язык кода:javascript
копировать
enum {
/**
* This will be the only stream using a particular source or sink.
* This mode will provide the lowest possible latency.
* You should close EXCLUSIVE streams immediately when you are not using them.
*/
AAUDIO_SHARING_MODE_EXCLUSIVE,
/**
* Multiple applications will be mixed by the AAudio Server.
* This will have higher latency than the EXCLUSIVE mode.
*/
AAUDIO_SHARING_MODE_SHARED
};
typedef int32_t aaudio_sharing_mode_t;
② int32_t тип : аудио оборудование Режим общего доступа типдля int32_t тип ;
③ AAUDIO_SHARING_MODE_EXCLUSIVE эксклюзивный режим :
a . эксклюзивный доступ : только Долженаудиопоток Доступен Долженаудио оборудование, Другоеаудиопоток Доступ запрещен ;
b . высокая производительность : Долженмодель Вниз аудиопоток Высокая производительность , Низкая задержка ;
c . своевременный выпуск : если Нет Сноваиспользовать Долженаудио оборудование , Нужно немедленно выпустить аудиопоток , Чтобы не влиять на посещение других аудиопоток Долженаудио. оборудование ;
④ AAUDIO_SHARING_MODE_SHARED Режим общего доступа :
a . Посетите одновременно : Несколько аудиопоток могут посетить одновременно Долженаудио оборудование ;
b . производительностьниже, чемэксклюзивный режим : Долженмодель Вниз Аудиоиз Задержка немного выше, чемэксклюзивный режим ;
IX . AAudio аудиопоток режим производительности настраивать AAudioStreamBuilder_setPerformanceMode
① Прототип функции: настраивать Должен AAudio аудиопотокизрежим производительности , Модель экономии денег , низкая задержкамодель ,ипо умолчаниюмодель Три варианта ;
enum {
/**
* No particular performance needs. Default.
*/
AAUDIO_PERFORMANCE_MODE_NONE = 10,
/**
* Extending battery life is more important than low latency.
*
* This mode is not supported in input streams.
* For input, mode NONE will be used if this is requested.
*/
AAUDIO_PERFORMANCE_MODE_POWER_SAVING,
/**
* Reducing latency is more important than battery life.
*/
AAUDIO_PERFORMANCE_MODE_LOW_LATENCY
};
typedef int32_t aaudio_performance_mode_t;
② AAUDIO_PERFORMANCE_MODE_NONE : по умолчаниюценить,Нетнастраиватьидентификацияизрежим производительности ;
③ AAUDIO_PERFORMANCE_MODE_POWER_SAVING : Экономьте электроэнергиюмодель , Коэффициент продолжительности использования батареи проверен задержкапроизводительностьболее важный , существовать входной поток Должные настройки не поддерживаются в случае из ;
④ AAUDIO_PERFORMANCE_MODE_LOW_LATENCY : низкая задержка высокая производительность В противном случае важно время использования батареи. ;
режим производительностииспользоватьиллюстрировать :
① по умолчаниюценить : по умолчаниюсостояние Вниз, если Нетвызов Долженметоднастраиватьрежим производительности ,по умолчаниюценитьда AAUDIO_PERFORMANCE_MODE_NONE ;
② получатьрежим производительности : режим производительностинастраиватьможетнеудача, Да, вызов AAudioStream_getPerformanceMode методполучатьфинальныйизрежим производительности ;