藍牙音樂之AVRCP
藍牙音樂實實在在地改變了我們聽音樂的方式,尤其是iphone推出真無線耳機后,這一趨勢更加明顯。藍牙音樂中不單單涉及到A2DP,對A2DP還不了解的小伙伴可以查看《藍牙音樂之A2DP 》,還有音樂遠端控制功能(播放、暫停、切換歌曲等),而這些功能的實現都依賴于AVRCP協(xié)議。
AVRCP:Audio/Video Remote Control Profile,音視頻遠端控制協(xié)議,所以該協(xié)議不但能控制藍牙音樂,也可以控制視頻流相應的功能。常見的使用到AVRCP控制功能的場景有如下幾種:
耳機或車載等藍牙設備控制其他設備上的音樂音源播放(手機)
遠端設備控制其他設備上的視頻播放
遠端設備控制手機拍照(手機前臺應用為照相機)
AVRCP協(xié)議版本變化,版本之間都是向下兼容的關系:
v1.0:基本的遠程控制命令,如播放、暫停、切歌
v1.3:新增獲取音樂當前的播放狀態(tài)以及播放音樂的歌曲信息(歌曲總時長、當前播放位置、歌曲名、專輯名、歌手)
v1.4:新增瀏覽功能,支持絕對音量調節(jié)
v1.5:相關協(xié)議已通過的更改以糾正各種錯誤
v1.6:新增兩個特性:
項目的數量,用于控制器的接口,請求和接收文件夾中的項數,而無需下載列表
封面藝術,支持通過基于OBEX協(xié)議上的 BIP(Basic Imaging Profile)協(xié)議將圖像傳輸到媒體項目
所以如果兩端設備的AVRCP協(xié)議都支持1.6及以上,則可實現通過藍牙傳輸圖片的功能。由于藍牙傳輸數據量的限制,該功能也只是適用于音樂專輯封面照等小數據量的傳輸,而不適合大批量圖片的傳輸。
至此,最新的v1.6版本的AVRCP協(xié)議結構及依賴關系如下:
AVRCP協(xié)議的核心概況如下:
類似于其他藍牙協(xié)議,AVRCP協(xié)議也將設備兩端劃分為兩種角色:
CT:controller控制器是通過向目標設備發(fā)送命令幀來啟動事務的設備,如耳機、音箱、車載藍牙設備
TG:target目標是接收控制器發(fā)送過來的命令幀并生成相應響應幀的設備,如手機
需要注意的是,通常情況下CT和TG都是成對出現在同一個piconet網中,但是同一個piconet網中可以存在多個CT設備,比如同一個手機(TG)可以同時連接多個耳機(CT)。常見的關系圖如下:
從上面的概況圖可知AVRCP協(xié)議的傳輸依賴于AVCTP,所以AVRCP協(xié)議的連接、交互實際上是AVCTP傳輸協(xié)議的連接、交互流程。
AVCTP的連接建立
用于AVCTP控制的L2CAP鏈路的連接建立可以由CT或TG啟動,此L2CAP鏈路稱為控制通道。如果設備雙方都支持瀏覽功能(AVRCP版本都在v1.4及以上),則還可以在控制通道建立后再建立一條瀏覽通道,瀏覽通道在建立時應配置為使用L2CAP增強重傳模式。同理通道的釋放也可以由CT或TG啟動,如果存在瀏覽通道則需要在控制通道斷開前釋放。
如果兩端設備同時打開AVCTP通道建立連接,雙方檢測到連接沖突后兩個通道都應關閉,每端設備應該等待隨機時間(100ms <= time <= 1s),然后再嘗試打開AVCTP通道。如果知道哪個設備是主設備,則該設備可以立即重新嘗試連接。
實際使用過程中AVCTP的連接都會在AVDTP(A2DP協(xié)議依賴的傳輸協(xié)議)連接成功后由CT端設備主動發(fā)起連接,當然GT端設備可選擇性的也發(fā)起主動連接。
AVRCP中基本AV/C命令
AV/C命令啟動的前提是AVCTP的連接已建立,這樣由用戶觸發(fā)或程序內部啟動的AV/C流程才可正常運作,大致流程圖如下:
OBEX的連接和斷開
AVRCP(v1.6版本及以上)使用來自BIP協(xié)議通用成像圖像特性中定義的功能來提供封面藝術圖片,而BIP又依賴于OBEX。所以封面藝術OBEX連接時使用的目標標頭為封面藝術專屬的 UUID=7163DD54-4A7E-11E2-B47C-0050C2490048。
鏈路建立成功后,AVRCP的CT端設備具有BIP成像發(fā)起者的作用,而對應的AVRCP的GT端設備具有BIP成像應答器的作用。
AVRCP命令的類型:
1、AV/C命令,通過AVCTP的控制通道交互,存在如下兩組命令:
在AV/C規(guī)范中定義的Pass Through命令、UNIT和SUBUNIT INFO命令,常用的播放、暫停、上下首切歌等控制命令都是Pass Through命令
AVRCP特有的AV/C命令
2、瀏覽命令,通過AVCTP的瀏覽通道交互
3、封面藝術命令,通過OBEX建立的連接交互
AVRCP協(xié)議中特有的常見命令如下圖所示:
更多AVRCP指令就留待大家在實際使用過程中探索了,本期的AVRCP協(xié)議分享就到這兒感興趣的小伙伴歡迎私信留言一起討論,共同學習,一起進步!