BT问题解决步骤
- 确认问题:需要分清模块(Audio,BT,Power等)
声音类问题的大部分是Audio模块的;
功耗类问题,优先要求功耗的负责人先进行分析;
- 本地复现:(必现或高概率问题一定要本地复现下)
确认复现步骤,排除测试步骤问题(误操作或测试用例不对);
- 对比验证:(必现或高概率问题,最好本地对比验证下)
更换对比机,同类型三方apk,车载设备,连接设备;
- Check Log:需要check测试提供的有效性
分析问题以APLog和HCILog为主,log时间点和问题复现需要对应,log中有出现问题的信息等,问题单中无log的,需要让测试尽快提供。APlog用于Check BT的打开,扫描,匹配,连接使用是否正常;
- Check历史版本
BT问题有时很可能是代码引入的,需要check历史版本是否存在问题(必现问题优先);
- Check历史问题单
- Check代码逻辑
- 提交/Push QCOM /MTK Case
BT不同类型问题的常规处理方式
- 声音类问题
- 声音小,无声,语音不完整;
- 出声延时,声音卡顿;
- POP音,底噪大,杂音不清晰,失真;
一般是Audio处理,以更新音频参数的方式为主(通路配置文件);
- 出声设备不对(应该是BT,而speaker出声等),需要Check:
- 声道占用情况;
- A2DP,SCO等是否被关闭;
- BT是否连接上存在问题;
- 蓝牙配置文件(pofile);
- 参考资料
- Android系统Audio框架介绍:https://blog.csdn.net/u010164190/article/details/72916278
- Android音频管理:AudioPolicyService 和 AudioPolicyManager
http://www.cnblogs.com/yangjies145/p/6436209.html
- 蓝牙耳机音量大小,音量控制
- Audioservice ----> setStreamVolume
- 状态栏蓝牙耳机电量:原生无此功能,音量显示需要耳机支持(对比验证即可);
- 音频Log获取方法:使用QXDM抓取,QCAT解析;
- Log关键字:AudioService,setStreamVolume(音量变化)requestAudioFocus(音频焦点),setMode
- 音乐播放类
- 设备控制(开始,暂停,快进等),需要check:
- 对比排除apk问题和软件支持情况;
- Check AVRCP代码;
- 异常接入(Ex:BT听歌 —> 电话 —> 挂断 —>听歌(未播放))
- 复现问题,确认当前声道占用情况,音乐进程情况等;
- 参考资料
- android bt蓝牙耳机AVRCP按键分析https://blog.csdn.net/BlackEagle215/article/details/79033781
- Android-蓝牙AVRCP功能实现https://www.cnblogs.com/chenyready/p/7986712.html
- AVRCP协议
https://blog.csdn.net/shichaog/article/details/52180723
- 项目Code
packages/apps/Bluetooth/src/com/android/bluetooth/avrcp/Avrcp.java
- 文件传输类
- 文件传输速率问题,需要check:
- wifi打开情况(wifi,bt共存会影响速率);
- 环境干扰(本地复测),check天线影响;
- 文件无法发送,需要check:
- 对比测试,确认测试手法(okb文件是无法传输的,apk发送);
- 发送后文件异常(视频,图片无法打开等),需要check:
- 对方机器不支持打开(对比验证);
- 蓝牙键盘输入问题
- 参考资料
- 蓝牙文件分享源码全解析
https://blog.csdn.net/sinat_22657459/article/details/53509338
- 项目Code
- 配置蓝牙键盘按键
frameworks/base/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm
- 启动时间类
- 本地反复打开(开关飞行模式)复测,由于UI显示的方式判断误差较大,需要求测试使用log方式来判断启动正常。
- 蓝牙适配器的状态(打开/关闭蓝牙时状态值变化):
- 打开过程:
BluetoothAdapterState: Bluetooth adapter state changed
10-14:关闭状态 > 适配器进入LE模式;
14-15:进入LE only mode模式;
15-11:LE only mode > 适配器正在打开的过程;
11-12:适配器打开成功;
- 关闭过程:
12-13:
13-15:
15-16:
16-10:
- Log关键字:BluetoothAdapterState
- 蓝牙连接类
- 常用设备连接(小米上历史问题,都是HCILog异常导致)
- 测试步骤
- 地址
- 自动连接
- 仪器连接(需要优先确认连接步骤)
- 需要执行ftmdaemon,则要userdebug版本测试;
- BT测试脚本(测试认证)
- 连接状态变化:
STATE_DISCONNECTED = 0 已断开
STATE_CONNECTING = 1 连接中
STATE_CONNECTED = 2 已连接
STATE_DISCONNECTING = 3 断开中
- Log关键字:BluetoothPhonePolicy: processProfileStateChanged
- 蓝牙功耗类
- 此类问题功耗负责人优先处理,如果定位是BT影响了功耗,再协助处理
- 本地优先复测,可能测试有特殊操作,需要优先排除。
- log打印会影响功耗
- log打开对BT发送音乐的效果影响;
- 射频参数的修改会影响功耗
- 对比修改前后的功耗情况,如果差异大,需要射频协助处理;
- 蓝牙Crash类
- 要求测试提供复现的log,根据log分析,以空指针原因为主;
- 需要确认安全保护的方式是否可用(try-catch,空指针判断);
- 蓝牙车载类
- 同步联系人和信息(可能不支持)
- 连接
- 播放音乐
- 控制接听/拨打电话
- 需要对比验证:车载问题,三方apk问题,功能不支持;
- Check Log是否有异常;
- 蓝牙共享网络
- 功能一般无问题,大多是测试步骤不对,导致无法上网。