Замените микрофон по умолчанию с помощью OpenSL ES (собственное аудио в Android)

Я новичок в Android Native audio, использующем OpenSL ES, и мне нужна ваша помощь.

Теперь я хочу написать приложение для записи и воспроизведения в реальном времени. В части записи мы должны сначала настроить источник звука, когда мы создаем аудиорекордер. Так.

SLDataLocator_IODevice loc_dev = {SL_DATALOCATOR_IODEVICE,SL_IODEVICE_AUDIOINPUT,SL_DEFAULTDEVICEID_AUDIOINPUT, NULL};
SLDataSource audioSrc = {&loc_dev, NULL};

SL_DEFAULTDEVICEID_AUDIOINPUT — это адрес микрофонов по умолчанию. Я хочу использовать другие микрофоны на телефоне Android (я использую Nexus 6 с тремя разными микрофонами), но я не могу найти адреса других микрофонов.

Ценю любой ответ!


person Yiya.Hao    schedule 01.12.2015    source источник
comment
Вам удалось найти решение?   -  person Recycled Steel    schedule 16.02.2016


Ответы (1)


Из OpenSLES.h у нас есть несколько типов IOУстройства, которые..

/** IODevice-types */
#define SL_IODEVICE_AUDIOINPUT  ((SLuint32) 0x00000001)
#define SL_IODEVICE_LEDARRAY    ((SLuint32) 0x00000002)
#define SL_IODEVICE_VIBRA       ((SLuint32) 0x00000003)
#define SL_IODEVICE_RESERVED4   ((SLuint32) 0x00000004)
#define SL_IODEVICE_RESERVED5   ((SLuint32) 0x00000005)

Вы можете попробовать каждый из них, чтобы проверить, удовлетворяют ли они ваши потребности.

Вы также можете просмотреть OpenSLES_AndroidConfiguration.h. При инициализации вашего AudioRecorder у вас есть некоторая конфигурация Android, чтобы установить тип ввода.

/*---------------------------------------------------------------------------*/
/* Android AudioRecorder configuration                                       */
/*---------------------------------------------------------------------------*/

/** Audio recording preset */
/** Audio recording preset key */
#define SL_ANDROID_KEY_RECORDING_PRESET ((const SLchar*) "androidRecordingPreset")
/** Audio recording preset values */
/**   preset "none" cannot be set, it is used to indicate the current settings
 *     do not match any of the presets. */
#define SL_ANDROID_RECORDING_PRESET_NONE                ((SLuint32) 0x00000000)
/**   generic recording configuration on the platform */
#define SL_ANDROID_RECORDING_PRESET_GENERIC             ((SLuint32) 0x00000001)
/**   uses the microphone audio source with the same orientation as the camera
 *     if available, the main device microphone otherwise */
#define SL_ANDROID_RECORDING_PRESET_CAMCORDER           ((SLuint32) 0x00000002)
/**   uses the main microphone tuned for voice recognition */
#define SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION   ((SLuint32) 0x00000003)
/**   uses the main microphone tuned for audio communications */
#define SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION ((SLuint32) 0x00000004)

В основном это метод проб и ошибок. У меня нет точного решения.

person Reaz Murshed    schedule 07.02.2016