在使用蓝牙耳机听音乐时会遇到声音断断续续的情况,根据工作经验总结如下:
1:dump audio数据
Bluedroid协议栈中把audio_a2dp_hw.c中的宏BT_AUDIO_SAMPLE_LOG打开,发送到bluetooth HAL 层的pcm数据被保存在手机的/data/audio/下命名为output_sampleX.pcm格式。
可以用cool edit pro工具分析PCM数据是否有问题
2:在协议中数据包被丢弃
首先进行如下设置:
1)把bt_stack.conf配置文件的log输出级别修改为5(默认是2)
2)搜集BT snoop log,在开发者选项中勾选“Enable Bluetooth HCI snoop log”或者在bt_stack.conf中把BtSnoopLogOutput设置为true。
查看是否有:
btif_media_aa_prep_2_send congestion buf count xxx
L2CA_FlushChannel() flushed: 0 + 0, num_left:xxx格式的数据输出。
然后使用frontline的ComProbe Protocol Analysis System解析获取的snoop log a2dp数据包的传输
3:Android4.1及以上版本可以通过Systrace 工具分析设备的性能。
打开bluedroid中的宏BT_AUDIO_SYSTRACE_LOG
进入到sdk的platform-tools/systrace
执行:python systrace.py --time=10 -o a2dptrace.html sched gfx view wm
使用浏览器打开a2dptrace.html,具体的使用方法还在研究中,以后补充