Android的Bluetooth Profile與UUID

來源:互聯網
上載者:User

在Android中,常用的幾種Bluetooth Profile分別為:SPP (Serial Port Profile)、A2DP (Advanced Audio Distribution Profile)、AVRCP (Audio/Video Remote Control Profile)、HID (Human Interface Device Profile)、HFP (Hands-Free Profile)。其中Media相關度比較大的是A2DP和AVRCP,做資料通訊經常用到SPP。

Bluetooth Profile的概念

Profile定義了一種基於藍芽的應用,每個Profile規範主要包括針對開發人員的介面,訊息的格式和標準(例如音頻壓縮),使用藍芽協議棧的組件等等。每一種Profile對應於一個UUID,Bluetooth種UUID的概念類似於TCP/IP中連接埠的概念,每一個UUID運行一種服務。

Bluetooth通過SDP(Service Discovery Protocol)來發現配對裝置的所支援的Profile。在Bluetooth Device的SDP Servie Daemon中,儲存有支援的Service List和串連的Session等資訊,SDP Client利用這些資訊來完成Profile的發現和鑒別。

特殊說明的是,Bluetooth中比較基礎的Profile有Generic Access Profile (GAP)和上述的SDP,此外,SPP通常作為其他Profile的實現基礎。

Bluetooth UUID的概念

UUID的概念應用很普遍,是一種分布式(更確切說是局部式?)的ID產生方式。上述每種Profile均對應一個或多個UUID(同一Profile內不同UUID也對應不同的service)。

在Bluetooth SIG中已定義的Profile的UUID均採用如下方式產生:

BASE_UUID + uuid16 << 96 或 BASE_UUID + uuid32 << 96

其中,BASE_UUID為:

BASE_UUID00000000-0000-1000-8000-00805F9B34FB

因此,Bluetooth SIG預定義的UUID僅在後32位(實際為96~112位)發生變化。例如,

A2DP_UUID0000110B-0000-1000-8000-00805F9B34FB

在Android的logcat種經常看到00805F9B34FB的字串。

Android不同Profile實現情況

Bluetooth的Linux實現有一個官方庫BlueZ,但貌似是閉源的。

SPP

SPP是Android唯一完全開放的Bluetooth Profile,在Offical Tutorial中也採用00000000-0000-1000-8000-00805F9B34FB作為SPP的UUID。

事實上,SPP通訊是一個很基本的方式,UUID完全可以自訂,但Device雙方必須事先共用UUID。

具體實現上,SPP的編程方式非常接近於Linux的Tcp socket. 一些共同的問題如client接入之後處理,另開線程等等都非常類似。

A2DP

A2DP是做音頻和多媒體方面遇到比較多的一個Profile,在Android中已經包含了A2DP對應的API(大部為@hide)。需要自己用reflection的方式來獲得對應的API。

相關的API與Android API Level的對應關係隨後總結。

HID

HID是標準的鍵盤、滑鼠等的輸入輸出,例如可以用這個Profile來實現一些簡單的遠程按鍵控制。

Android種HID的事件捕獲與backKey等等方式相同,可以在使用View.OnKeyListener的onKey來捕獲對應的keyCode。

AVRCP

AVRCP主要是對應一些媒體播放控制,基本可以等價於HID,例如PC的“多媒體鍵盤”上的音量鍵、播放暫停鍵等等。

AVRCP事件可以看成HID的特殊情況,具體在Android的keybord layout中定義按鍵的具體含義。

HFP

在車載種經常用到的Profile。

音頻部分類似於A2DP。支援HFP和A2DP的裝置,Bluetooth在藍芽開啟的情況下會自動連接。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.