在使用藍牙耳機聽音樂時會遇到聲音斷斷續續的情況,根據工作經驗總結如下:
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,具體的使用方法還在研究中,以後補充