Как изменить микрофон для записи при подключении громкой связи в устройствах Samsung?
Я работаю с OpenSL_ES
в Android, и некоторые проблемы с выбором источника микрофона на устройствах Samsung, когда я подключаю наушники с громкой связью.
Проблема в том, что независимо от того, какой источник микрофона я установил в OpenSL_ES
конфигурация усиления изменяется, но микрофон всегда является микрофоном громкой связи. Другими словами, я не могу использовать встроенный микрофон устройства при подключении устройства громкой связи.
Я пытался:
Изменение источника микрофона на все доступные источники:
//ioInternals.micSource = SL_ANDROID_RECORDING_PRESET_NONE;
//ioInternals.micSource = SL_ANDROID_RECORDING_PRESET_GENERIC;
ioInternals.micSource = SL_ANDROID_RECORDING_PRESET_CAMCORDER;
//ioInternals.micSource = SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION;
//ioInternals.micSource = SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION;
//ioInternals.micSource = SL_ANDROID_RECORDING_PRESET_UNPROCESSED;
res = (*recorderConfig)->SetConfiguration(recorderConfig, SL_ANDROID_KEY_RECORDING_PRESET,&ioInternals.micSource, sizeof(SLuint32));
Ничто из вышеперечисленного не позволяет мне изменить источник (только настройка усиления)
Некоторые, где я читал, что "взломать" может быть установлен на SL_ANDROID_RECORDING_PRESET_NONE
в OpenSL_ES
а затем используйте класс MediaRecorder в Java для подготовки рекордера при смене источников микрофона (например, 9), чтобы проверить, изменит ли один из них телефон источник звука на встроенный микрофон устройства и т. д. OpenSL_ES
взял бы микрофон по умолчанию в данный момент. Это не имеет особого смысла, так как они работают в разных контекстах, но затрачивало время на тестирование, и MediaRecorder не изменяет источник микрофона, когда громкая связь не подключена.
Вариант, который я вижу, состоит в том, чтобы разработать мой микрофонный модуль в библиотеке Jack от Samsung, предполагая, что библиотека может изменить источник микрофона. Однако я не уверен, что это возможно.
Вопрос: Знаете ли вы, как я могу решить эту проблему?
Я видел несколько приложений, которые справляются с этой задачей, но я понятия не имею, что они делают для выполнения этой задачи.