ktm390蓝牙连接安卓_蓝牙音乐AudioTrack Session ID的获取
當今這個音視頻無處不在的時代,音頻跟蹤會話ID(AudioTrack Session ID)是個很重要的參數,可以用來實現音頻相關的一些特效。接下來的內容我們就探究如何在安卓藍牙系統中獲取該id。
熟悉藍牙音樂播放流程的同學都了解藍牙音樂AVDTP的控制流與音頻流以及AVRCP是如何作用的,以如下的交互圖簡單介紹下:
AVDTP連接階段分為四步:
1、 發現對端支持的編碼方式有哪幾種
2、 獲取每種編碼方式的參數
3、 雙方協商確定一個最優的編碼方式
4、 建立該編碼方式的AVDTP連接
音頻播放過程中只要創建的audiotrack不變則對應的session id就會保持不變。播放藍牙音樂也是這樣。那藍牙音樂對應的audiotrack session id從哪兒獲取呢?
創建audiotrack都會生成對應的session id,那問題就簡單多了,藍牙音樂播放過程中audiotrack在哪兒被創建的?
藍牙音樂播放分為source、sink兩端,source一般為音頻流輸出端,sink接收音頻流方。這篇文章主要是已sink端來講解藍牙音頻播放流程。Sink方(藍牙耳機、音響、車載等)的藍牙芯片接收到音頻流后通過HCI送到藍牙協議棧,該協議棧中直接通過audio track送入安卓音頻系統播放音樂。
結合藍牙協議棧的代碼可以快速找到audio track的創建處為:BtifAvrcpAudioTrackCreate(),通過sp track可以實現session id的獲取。
那如何將該id送到application層呢?這塊就需要我們了解安卓藍牙系統中媒體音頻的架構,從而添加接口來獲取session id。
安卓系統中關于媒體音頻的架構類似于整個藍牙系統,見下圖:
根據上面的系統架構圖,則獲取audiotrack session id的接口主要和framework、service、JNI以及Bluedroid中btif都有關系。大概的時序圖如下:
至此audiotrack session id就通過新增接口被相關應用獲取。
總結
以上是生活随笔為你收集整理的ktm390蓝牙连接安卓_蓝牙音乐AudioTrack Session ID的获取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果x下面两个喇叭都响吗(苹果官网报价)
- 下一篇: 点钞机语音怎么打开_微信语音怎么转发?原