android factorymode下回路测试无声音问题解析
一、 问题描述:
进入factory mode后在进行回路测试项时,第一次测试可以听到声音,但之后再进行测试时无法听到声音。
二、 factory回路测试项代码流程:
主要涉及代码为:
mediatek/factory/src/test/ftm_audio.cpp
mediatek/factory/src/test/ftm_audio_Common.cpp
1. audio_init
在init函数中主要是分配内存空间和注册功能函数
回路测试项目使用的的主要函数是mAudio_reveiverloopback_entry
2. mAudio_reveiverloopback_entry
在这个接口中主要有4个功能
(1) 输出显示信息
staticitem_taudio_items_loopback[]= {
#ifdefMTK_DUAL_MIC_SUPPORT
{ITEM_MIC1,uistr_info_audio_loopback_dualmic_mi1, 0},//选择MIC1
{ITEM_MIC2,uistr_info_audio_loopback_dualmic_mi2, 0},//选择MIC2
#endif
{ITEM_PASS, uistr_pass, 0},//测试通过
{ITEM_FAIL, uistr_fail, 0},//测试失败
{-1, NULL, 0},
};
(2) 初始化audio和headset
这里默认使用MIC1
(3) 监控用户操作
首先获取headset信息
然后做了do{}while(1)循环,用来检测用户的操作
例如选择了MIC1,就会设定需要打开MIC1,即设定g_loopback_item = 1,在Audio_Headset_detect_thread中会使用此项来作为打开MIC 1或者MIC2的判断条件
在退出循环后即退出此项测试后,会根据之前获取的headset信息(headset是否可用等信息)及选择的MIC1或者MIC2来disable 之前的打开项
(4) 创建Audio_Headset_detect_thread线程
3. Audio_Headset_detect_thread
(1) 获取headset信息Audio_headset_update_info(hds, hds->info);
例如目前headset是否可用等信息,这一点在界面上有显示项,也是后续判断是否需要打开MIC的一个判断项
(2) 设定循环检测来判断需要打开哪一个headset MIC (默认打开MIC1)
HeadsetMic_Receiver_Loopback(MIC1_ON, hds->Headset_mic);
这里还有另外一个判断条件是hds->avail即headset此时是否可用,如果测试hds->avail为0时,会打开
PhoneMic_Receiver_Loopback(MIC1_OFF);
在测试完成退出循环检测后,会再进行一次检测,关闭之前打开的MIC
并且结束线程
三、 问题解决
问题出在寄存器上,adb shell cat /proc/audio 命令可以输出audio的寄存器配置
AFE_DL_SRC2_1的bit4:3被写成了1,也就是输出通路被mute所导致的
修改方法为:在mediatek/factory/src/test/ftm_audio_Common.cpp中判断headset是否插入前重新配置此寄存器
android factorymode下回路测试无声音问题解析相关推荐
- 【网易测试】真题解析
1.以下python代码输出为 >>> val=[['a'] * 3] * 3 >>> val[0][0]='b' >>> print val; ...
- android dd命令,【测试人员技能】Android shell 下dd命令浅析
一.前言 小编在最近的过程中遇到了一个需要构造存储空间不足的场景,并且还需要覆盖验证各种机型,而单个拷贝大文件到测试机器又太繁琐,小编查阅资料发现下的dd命令可以协助小编完成此项任务,正好借此机会给大 ...
- Android 蓝牙 A2dp 听歌卡音?audio数据到a2dp通道流程解析----A2dp流控原理(Acl Flow Control),一文搞懂蓝牙卡音问题处理
同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. 本文章将卡音 ...
- android activity启动流程_1307页!一线大厂Android面试全套真题解析!
/ 前言 / 金九银十到了,很多读者都反映有面试的需求,所以我特地给大家准备了一点资料! 下面的题目都是大家在面试一线互联网大厂时经常遇到的面试真题和答案解析,如果大家还有其他好的题目或者好的 ...
- Android Studio下项目构建的Gradle配置及打包应用变体
Gradle简介 Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.具有语法简洁.可读性强.配置灵活等特点. ...
- android广告页白屏_年度整理!2056页《大厂安卓岗面试真题解析合集》火爆全网...
前言 2020年还有最后一个月就结束了,时间一眨眼就过去了.今年面试有没有被面试官虐呢,明年跳槽想跳去哪个大厂呢,这是个问题.说实话,今年我面试也被虐了,为了明年能找到一份心怡的工作,特地的从朋友那里 ...
- android studio云测,Android studio 下的robotium自动化测试和持续集成
[背景介绍] Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开 ...
- 高通Android平台下关于display部分的几个关键问题
高通Android平台下关于display部分的几个关键问题 2011-04-07 18:59 From: http://hi.baidu.com/leowenj/blog/item/3fe59f74 ...
- Android Studio下导出jar包和aar包
Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...
- Android平台下的图片/视频转Ascii码图片/视频 (一)
前一阵看鸿洋公众号日推,看到一个几年前就感觉有意思的一个技术,那就是图片转Ascii码,记得上大学时玩过windows的图片或视频转ascii码,可惜那个软件不好用,有bug,转视频的时候动不动就卡死 ...
最新文章
- 苹果Think Different广告
- 小米国际电商业务总经理赵程:电商人才的心路旅程
- 配置快捷键让Total Commander跳转到某个目录
- android x866.0 教程,海尔暴风AmlogicT866平台升级步骤教程
- 从0开始学习自动化测试框架cypress(四)登录
- 仿照七牛云图片处理类实现的C#帮助类
- Halcon PDF文档(hdevelop_users_guide)学习总结之七——关于Halcon语法
- mysql select in 排序_MySQL数据库之Mysql select in 按id排序实现方法
- Acrel-2000Z智能电力监控系统解决方案
- CCA分析图如何解读_BI报表控件Wyn使用教程:如何使用网状/雷达图进行数据分析...
- 即时通信(二)--- 腾讯云IM接入具体实现
- 【金融财经】金融市场一周简报(2017-09-08)
- Java实现内存分配算法 FF(首次适应算法) BF(最佳适应算法)
- 穿山甲插屏广告居中_穿山甲|广告展示量太低?穿山甲给出6个实操建议,助力效果提升...
- Laya 【U3D场景的 .ls场景】 【Laya.URL.basePath远程加载】 【加载分包】,【进度条】
- 佛山机场安装RFID行李跟踪系统 可全流程追踪行李
- 2023年浙江工业大学MPA提前批招生通知
- 深圳云计算培训学习:构建企业级WIKI及工单系统 --【千锋】
- 打造更完美的小程序商城
- 中科红旗之死--国产软件界最大不幸
热门文章
- 求101到200之间的素数
- 大数据开源框架环境配置(一)——安装VMware
- 【音视频】使用DXGI实现多屏幕采集(4-2)
- python开发浏览器_Python制作简易浏览器
- python免费程序-Python——免费观看全网视频小程序
- 三种CSS样式实现(内联样式、内联样式表、外联样式表)
- 计算机维修管理平台软件,美萍电脑行业管理软件(电脑业务管理系统、电脑维修管理系统、组装业务、电脑装机管理软件)--管理软件,美萍是专家!...
- Linux Ruby安装
- 单片机c语言内部ram移动,2012年微型计算机原理与接口技术自考题模拟(9)
- math: 四元数与欧拉角(RPY角)的相互转换