【android设置主mic/副mic录音】胸怀万里世界, 放眼无限未来。这篇文章主要讲述android设置主mic/副mic录音相关的知识,希望能为你提供帮助。
//添加MIC设置参数
/hal/audio_extn/audio_extn.c
@@ -75,6 +75,7 @@ struct audio_extn_module {
bool ras_enabled;
struct aptx_dec_bt_addr addr;
struct audio_device *adev;
+int mic_choose;
};
static struct audio_extn_module aextnmod;
@@ -838,6 +839,7 @@ void audio_extn_set_parameters(struct audio_device *adev,
if (adev->
offload_effects_set_parameters != NULL)
adev->
offload_effects_set_parameters(parms);
audio_extn_set_aptx_dec_bt_addr(adev, parms);
+audio_extn_set_mic_choose_parameters(parms);
}
void audio_extn_get_parameters(const struct audio_device *adev,
@@ -1478,3 +1480,29 @@ int audio_extn_set_device_cfg_params(struct audio_device *adev,
return 0;
}
// 获取mic参数
int audio_extn_get_mic_choose_parameters(void)
{
ALOGD("
%s: mic_choose:%d"
, __func__, aextnmod.mic_choose);
return aextnmod.mic_choose;
}
// 设置mic参数
void audio_extn_set_mic_choose_parameters(struct str_parms *parms)
{
int ret;
char value[32] = {0};
ret = str_parms_get_str(parms, "
MIC_CHOOSE"
, value, sizeof(value));
ALOGD("
mic_choose_ret:%d"
, ret);
if (ret >
= 0) {
if (strcmp(value, "
primary_mic"
) == 0) {
aextnmod.mic_choose = 1;
}else if (strcmp(value, "
secondary_mic"
) == 0) {
aextnmod.mic_choose = 2;
} else {
aextnmod.mic_choose = 0;
}
} else {
aextnmod.mic_choose = 0;
}
ALOGD("
%s: mic_choose:%d, value:%s"
, __func__, aextnmod.mic_choose, value);
}
//头文件中声明
/hal/audio_extn/audio_extn.h
+
+
+int audio_extn_get_mic_choose_parameters(void);
+
+void audio_extn_set_mic_choose_parameters(struct str_parms *parms);
hal/msm8916/platform.c
@@ -541,6 +541,7 @@ static const char * const device_table[SND_DEVICE_MAX] = {
[SND_DEVICE_IN_UNPROCESSED_THREE_MIC] = "
three-mic"
,
[SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = "
quad-mic"
,
[SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = "
headset-mic"
,
//添加mic参数,与mixer_paths_mtp.xml对应
+[SND_DEVICE_IN_SECONDARY_MIC] = "
secondary-mic"
,
};
// Platform specific backend bit width table
@@ -683,6 +684,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = {
[SND_DEVICE_IN_UNPROCESSED_THREE_MIC] = 145,
[SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = 146,
[SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = 147,
//自定义ID
+[SND_DEVICE_IN_SECONDARY_MIC] = 170,
};
struct name_to_index {
@@ -4313,6 +4315,20 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d
snd_device = SND_DEVICE_IN_HANDSET_DMIC;
platform_set_echo_reference(adev, true, out_device);
}
+
+/*
+* 上层通过 AudioManager.setParameters("
MIC_CHOOSE=xxx"
) 选择使用主副麦
+* 主麦:MIC_CHOOSE=primary_mic
+* 副麦:MIC_CHOOSE=secondary_mic
+*/
+int mic_choose = 0;
+mic_choose = audio_extn_get_mic_choose_parameters();
+if (mic_choose == 1) {
+snd_device = SND_DEVICE_IN_HANDSET_MIC;
+} else if (mic_choose == 2) {
+snd_device = SND_DEVICE_IN_SECONDARY_MIC;
+}
+ALOGD("
%s: snd_device mic_choose (%s)"
, __func__, device_table[snd_device]);
}
}
} else if (source == AUDIO_SOURCE_FM_TUNER) {
hal/msm8916/platform.h
SND_DEVICE_IN_UNPROCESSED_THREE_MIC,
SND_DEVICE_IN_UNPROCESSED_QUAD_MIC,
SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC,
+SND_DEVICE_IN_SECONDARY_MIC,
SND_DEVICE_IN_END,
SND_DEVICE_MAX = SND_DEVICE_IN_END,
// 设置MIC寄存器参数。
/configs/msm8953/mixer_paths_mtp.xml<
path name="
wsa-speaker-and-headphones"
/>
<
/path>
+<
path name="
secondary-mic"
>
+<
path name="
adc3"
/>
+<
/path>
<
/mixer>
推荐阅读
- Deep Learnin 7: Setting up machine learning application
- Execution failed for task ':app:processDebugResources'
- Android自动化测试脚本
- 自动化中app支持schema跳转
- android 解决连接电视机顶盒失败的方法
- AppCrawler
- 安卓基础干货(安卓测试以及解析)
- 安卓常见引起内存泄漏的五种情况
- Android和iPhone的最佳表情符号键盘应用软件推荐合集