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>
android设置主mic/副mic录音的更多相关文章
- Android设置里面默认存储器选项(default write disk)的实现
原生的Android设置里面没有默认存储器的选项,可是MTK偏偏加上了这个功能,可能MTK认为这个比較实用吧,所以,他们在原生的基础上面做了改动.加上了这个功能.可是高通平台没有这个功能.相对MTK来 ...
- 逆向知识之CS1.6辅助/外挂专题.1.实现CS1.6主武器副武器无限子弹
逆向知识之CS辅助/外挂专题.1.实现CS主武器副武器无限子弹 PS: 相信大家CS1.6这类的FPS应该玩过.现在我们通过外挂手法.讲解逆向的本质.以及应用. 关于CS1.6的下载.网络百度下载即可 ...
- PL/SQL设置主键自增
oracle没有设置主键auto increment的功能,需要自己编写序列和触发器实现主键自动递增. 示例: 创建表menu: 一.创建表 create table menu( menuId n ...
- Django数据库怎么给字段设置主键
id = models.IntegerField(primary_key = True) 附: null :缺省设置为false.通常不将其用于字符型字段上,比如CharField,TextField ...
- Xamarin Android设置界面提示类型错误
Xamarin Android设置界面提示类型错误 错误信息:Integer types not allow (at ‘padding’ with value ’10’)Android界面属性的长度和 ...
- 怎样为DataTable设置主键及找行数据
只要是数据集中都应该存在主键,以确定数据集中唯一的值.那么,我们要如何为DataTable设置主键及利用主键在DataTable索引值呢? 步骤/方法 为DataTable设置主键 DataT ...
- Android 设置进度条背景
Android 设置进度条背景 直接上代码 <ProgressBar android:id="@+id/progressBar" android:layout_width=& ...
- SQL语句建表、设置主键、外键、check、default、unique约束
· 什么是数据库? 存放数据的仓库. · 数据库和数据结构有什么区别? 数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题.数据结构研究一些抽象数据模型(ADT)和以及定义在该模 ...
- 转:Android 设置屏幕不待机
本文转载于:http://blog.csdn.net/yudajun/article/details/7748760 Android设置支部待机有两种方法 第一种简单通过设置WindowManager ...
随机推荐
- 【小白的CFD之旅】26 何为收敛
小白最近对流体计算的收敛产生了困惑.以前在学习高等数学的时候,小白接触过了级数的收敛,由于当时贪玩,并未将其放在心上,因此大学结束了小白也只是记住有这么一个名词罢了.现如今在利用CFD的过程中 ...
- mybatis逆向工程自动生成实体类、接口以及映射Mapper.xml配置文件
Mybatis的逆向工程非常简单,只要一个配置文件和一个Main方法就可以实现,下面以maven工程为例: (1)在pom.xml中引入依赖包 <dependency> <group ...
- 有用的SAP System Administration T-CODE
一,SAP系统管理常用到的事务代码1. SM51 SAP Servers System Monitoring2. SM21 SAP系统日志3. SRZL SAP计算机中心管理系统(CCMS) ...
- 14款超时尚的HTML5时钟动画
时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5时钟动画,其中有圆盘时钟.3D时钟.个性化时钟等 ...
- C# 去除json字符串key引号
采用正则表达式去除: 方法 /// <summary> /// 去除json key双引号 /// </summary> /// <param name="js ...
- poj1077(康托展开+bfs+记忆路径)
题意:就是说,给出一个三行三列的数组,其中元素为1--8和x,例如: 1 2 3 现在,需要你把它变成:1 2 3 要的最少步数的移动方案.可以右移r,左移l,上移u,下移dx 4 6 4 5 67 ...
- Ubuntu 14.04快速搭建SVN服务器及日常使用
1.介绍 Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可以很方面恢复到以前的版本,并可以查看数据更改 ...
- [转]mybatis if test非空判断数字0为什么是false
原文地址:http://blog.51cto.com/wangguangshuo/1944531 今天工作中发现一个Long类型的参数没有传到sql中去,在sql xml配置文件中是使用if test ...
- [转]快速搞懂Gson的用法
原文地址:http://coladesign.cn/fast-understand-the-usage-of-gson/ 谷歌gson这个Java类库可以把Java对象转换成JSON,也可以把JSON ...
- Ubuntu 14.04 编译 Android 4.2.2 for Tiny4412
. . . . . 在学校里是用 Redhat 6.4 编译的 Android 4.2.2 很顺利,把源码包拷贝到笔记本上的 Ubuntu 14.04 上再编译遭遇了各种坑,所以便有了这篇博客记录解决 ...