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