1

我正在使用OpenSL_ESAndroid,当我将耳机与免提连接时,三星设备中的麦克风源选择存在一些问题。

问题是无论我设置什么麦克风源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));

以上均不允许我更改源(仅增益配置)

在我读过的一些地方,可以设置“hack” SL_ANDROID_RECORDING_PRESET_NONEOpenSL_ES然后使用 Java 中的 MediaRecorder 类来准备录音机,同时更改麦克风源(例如 9),以检查其中一个是否会使电话改变源到设备内置麦克风,因此目前OpenSL_ES将采用默认麦克风。这没有太大意义,因为它们在不同的环境中工作,但需要时间进行测试,并且 MediaRecorder 在连接免提时也不会更改麦克风源。

我看到的一个选项是在三星的 Jack 库中开发我的麦克风模块,假设该库可以更改麦克风源。但是我不确定这是否可能。

问题: 你知道我该如何解决这个问题吗?

我已经看到一些应用程序能够成功完成这项工作,但我不知道他们在做什么来完成这项任务。

4

0 回答 0