Android藍(lán)牙開發(fā)(一)藍(lán)牙模塊及核心API

本文主要介紹Android藍(lán)牙開發(fā)中基礎(chǔ)知識:藍(lán)牙模塊及核心API辐益。

關(guān)于藍(lán)牙的連接及通訊功能實現(xiàn)智政,歡迎查閱下一篇文章:Android藍(lán)牙開發(fā)(二)藍(lán)牙消息傳輸實現(xiàn)。

藍(lán)牙模塊

從藍(lán)牙4.0開始包含兩個藍(lán)牙芯片模塊:

傳統(tǒng)/經(jīng)典藍(lán)牙模塊(Classic Bluetooth续捂,簡稱BT)和低功耗藍(lán)牙(Bluetooth Low Energy,簡稱BLE)劫拗。

經(jīng)典藍(lán)牙是在之前的藍(lán)牙1.0页慷,1.2,2.0+EDR滓彰,2.1+EDR州袒,3.0+EDR等基礎(chǔ)上發(fā)展和完善起來的, 而低功耗藍(lán)牙是Nokia的Wibree標(biāo)準(zhǔn)上發(fā)展起來的,是完全不同兩個標(biāo)準(zhǔn)他匪。

1. 經(jīng)典藍(lán)牙模塊(BT)

泛指藍(lán)牙4.0以下的模塊夸研,一般用于數(shù)據(jù)量比較大的傳輸,如:語音畦徘、音樂抬闯、較高數(shù)據(jù)量傳輸?shù)取?/p>

經(jīng)典藍(lán)牙模塊可再細(xì)分為:傳統(tǒng)藍(lán)牙模塊和高速藍(lán)牙模塊关筒。

傳統(tǒng)藍(lán)牙模塊在2004年推出蒸播,主要代表是支持藍(lán)牙2.1協(xié)議的模塊,在智能手機(jī)爆發(fā)的時期得到廣泛支持胀屿。

高速藍(lán)牙模塊在2009年推出包雀,速率提高到約24Mbps,是傳統(tǒng)藍(lán)牙模塊的八倍葡兑。

傳統(tǒng)藍(lán)牙有3個功率級別:Class1、Class2吆鹤、Class3洲守,分別支持100m,10m知允,1m的傳輸距離婴削。

用途:

  • 傳聲音

    如藍(lán)牙耳機(jī)、藍(lán)牙音箱嗤朴。藍(lán)牙設(shè)計的時候就是為了傳聲音的虫溜,所以是近距離的音頻傳輸?shù)牟欢x擇。現(xiàn)在也有基于WIFI的音頻傳輸方案吱雏,例如Airplay等瘾境,但是WIFI功耗比藍(lán)牙大很多迷守,設(shè)備無法做到便攜。因此固定的音響有WIFI的凯力,移動的如耳機(jī)礼华、便攜音箱清一色都是基于經(jīng)典藍(lán)牙協(xié)議的。

  • 傳大量數(shù)據(jù)

    如某些工控場景祈惶,使用Android或Linux主控,外掛藍(lán)牙遙控設(shè)備的行瑞,可以使用經(jīng)典藍(lán)牙里的SPP協(xié)議血久,當(dāng)作一個無線串口使用。速度比BLE傳輸快多了讹蘑。這里要注意的是筑舅,iPhone沒有開放。

2. 低功耗藍(lán)牙模塊(BLE)

泛指藍(lán)牙4.0及更高的模塊版仔,藍(lán)牙低功耗技術(shù)是低成本误墓、短距離、可互操作的魯棒性無線技術(shù)然想,工作在免許可的2.4GHz ISM射頻頻段欣范。

因為BLE技術(shù)采用非潮湫梗快速的連接方式,因此平時可以處于“非連接”狀態(tài)(節(jié)省能源)恼琼,此時鏈路兩端相互間只是知曉對方妨蛹,只有在必要時才開啟鏈路,然后在盡可能短的時間內(nèi)關(guān)閉鏈路(每次最多傳輸20字節(jié))晴竞。

低功耗藍(lán)牙無功率級別滑燃,一般發(fā)送功率在7dBm,一般在空曠距離颓鲜,達(dá)到20m應(yīng)該是沒有問題。

隨著藍(lán)牙5.0的發(fā)布典予,其性能有了大幅提升甜滨,主要體現(xiàn)在以下幾個方面:

  • 高速傳輸:其傳輸速率達(dá)到了 24Mbps 是藍(lán)牙 4.2LE 的兩倍

  • 傳輸距離:其傳輸?shù)挠行Ь嚯x是上一版本的 4 倍瘤袖,理論上衣摩,藍(lán)牙發(fā)射和接收設(shè)備之間的有效工作距離可達(dá) 300 米。

  • 精準(zhǔn)定位:結(jié)合 wifi 可以實現(xiàn)精度小于 1 米的室內(nèi)定位

  • 超低功耗:藍(lán)牙 5.0 將大大降低了藍(lán)牙的功耗,使人們在使用藍(lán)牙的過程中再也不必?fù)?dān)心待機(jī)時間短的問題艾扮。

用途:

耗電低既琴,數(shù)據(jù)量小,如遙控類(鼠標(biāo)泡嘴、鍵盤)甫恩,傳感設(shè)備(心跳帶、血壓計酌予、溫度傳感器磺箕、共享單車鎖、智能鎖抛虫、防丟器松靡、室內(nèi)定位)是目前手機(jī)和智能硬件通信的性價比最高的手段,直線距離約50米建椰,一節(jié)5號電池能用一年雕欺,傳輸模組成本10塊錢,遠(yuǎn)比WIFI棉姐、4G等大數(shù)據(jù)量的通信協(xié)議更實用屠列。雖然藍(lán)牙距離近了點,但勝在直連手機(jī)谅海,價格超便宜脸哀。以室內(nèi)定位為例,商場每家門店掛個藍(lán)牙beacon扭吁,就可以對手機(jī)做到精度10米級的室內(nèi)定位撞蜂,一個beacon的價格也就幾十塊錢而已。

3. 雙模藍(lán)牙

雙模藍(lán)牙指的是既有經(jīng)典藍(lán)牙也有低功耗藍(lán)牙模塊侥袜。

如智能電視遙控器蝌诡、降噪耳機(jī)等。很多智能電視配的遙控器帶有語音識別枫吧,需要用經(jīng)典藍(lán)牙才能傳輸聲音浦旱。而如果做復(fù)雜的按鍵,例如原本鍵盤表上沒有的功能九杂,經(jīng)典藍(lán)牙的HID按鍵協(xié)議就不行了颁湖,得用BLE做私有協(xié)議。包括很多降噪耳機(jī)上通過APP來調(diào)節(jié)降噪效果例隆,也是通過BLE來實現(xiàn)的私有通信協(xié)議甥捺。

Android手機(jī)藍(lán)牙4.x都是雙模藍(lán)牙(既有經(jīng)典藍(lán)牙也有低功耗藍(lán)牙),而某些藍(lán)牙設(shè)備為了省電是單模(只支持低功耗藍(lán)牙)镀层。

Android藍(lán)牙API簡介

1. 經(jīng)典藍(lán)牙(Classic Bluetooth)

經(jīng)典藍(lán)牙適用于電池使用強(qiáng)度較大的操作镰禾,例如Android之間流式傳輸和通信等(音頻/文件等大數(shù)據(jù))。 從Android 4.3(API 18)才有API支持低功耗藍(lán)牙(BLE)。

經(jīng)典藍(lán)牙API如下:

android.bluetooth

.BluetoothA2dp 音頻分發(fā)配置文件,高質(zhì)量音頻通過藍(lán)牙連接和流式傳輸

.BluetoothAdapter 本地藍(lán)牙適配器,是所有藍(lán)牙交互的入口,發(fā)現(xiàn)設(shè)備,查詢配對設(shè)備,創(chuàng)建BluetoothServerSocket偵聽其他設(shè)備

.BluetoothAssignedNumbers

.BluetoothClass 描述藍(lán)牙設(shè)備的一般特征和功能,這是一組只讀屬性,設(shè)備類型提示

.BluetoothDevice 遠(yuǎn)程藍(lán)牙設(shè)備,與某個遠(yuǎn)程設(shè)備建立連接,查詢設(shè)備信息,名稱,地址,類和配對狀態(tài)

.BluetoothHeadset 提供藍(lán)牙耳機(jī)支持,以便與手機(jī)配合使用,藍(lán)牙耳機(jī)和免提配置文件

.BluetoothHealth 控制藍(lán)牙服務(wù)的健康設(shè)備配置文件代理

.BluetoothHealthAppConfiguration 第三方藍(lán)牙健康應(yīng)用注冊的應(yīng)用配置吴侦,以便與遠(yuǎn)程藍(lán)牙健康設(shè)備通信

.BluetoothHealthCallback 實現(xiàn) BluetoothHealth 回調(diào)的抽象類

.BluetoothManager

.BluetoothProfile 藍(lán)牙配置文件,藍(lán)牙通信的無線接口規(guī)范

.BluetoothServerSocket 服務(wù)端監(jiān)聽,連接RFCOMM通道(類似TCP ServerSocket)

.BluetoothSocket 建立RFCOMM通道,藍(lán)牙Socket接口(類似TCP Socket),通過InputStream和OutputStream與其他設(shè)備傳輸數(shù)據(jù)

Android經(jīng)典藍(lán)牙的開發(fā)步驟如下:

  1. 掃描其他藍(lán)牙設(shè)備

  2. 查詢本地藍(lán)牙適配器的配對藍(lán)牙設(shè)備

  3. 建立 RFCOMM 通道 (SPP協(xié)議)

  4. 通過服務(wù)發(fā)現(xiàn)連接到其他設(shè)備

  5. 與其他設(shè)備進(jìn)行雙向數(shù)據(jù)傳輸

  6. 管理多個連接

RFCOMM是藍(lán)牙簡單傳輸協(xié)議, 在兩個藍(lán)牙設(shè)備間的一條物理鏈上提供多個模擬串口進(jìn)行傳輸數(shù)據(jù), 可同時保持高達(dá)60路的通信連接屋休。

SPP(Serial Port Profile)是通過藍(lán)牙設(shè)備之間的串口進(jìn)行數(shù)據(jù)傳輸協(xié)議,spp協(xié)議處于RFCOMM上層, 如果能使用RFCOMM傳輸數(shù)據(jù),就不需要使用SPP(省去一些流程,速度更快),但還是推薦用SPP,兼容性有保證

2. 低功耗藍(lán)牙(BLE)

從Android 4.3(API 18)才支持低功耗藍(lán)牙(Bluetooth Low Energy备韧,BLE)的核心功能劫樟,BLE藍(lán)牙協(xié)議是GATT協(xié)議, BLE相關(guān)類不多, 全都位于android.bluetooth包和android.bluetooth.le包的幾個類:

android.bluetooth

.BluetoothGattService 包含多個Characteristic(屬性特征值), 含有唯一的UUID作為標(biāo)識

.BluetoothGattCharacteristic 包含單個值和多個Descriptor, 含有唯一的UUID作為標(biāo)識

.BluetoothGattDescriptor 對Characteristic進(jìn)行描述, 含有唯一的UUID作為標(biāo)識

.BluetoothGatt 客戶端相關(guān)

.BluetoothGattCallback 客戶端連接回調(diào)

.BluetoothGattServer 服務(wù)端相關(guān)

.BluetoothGattServerCallback 服務(wù)端連接回調(diào)

android.bluetooth.le

.AdvertiseCallback 服務(wù)端的廣播回調(diào)

.AdvertiseData 服務(wù)端的廣播數(shù)據(jù)

.AdvertiseSettings 服務(wù)端的廣播設(shè)置

.BluetoothLeAdvertiser 服務(wù)端的廣播

.BluetoothLeScanner 客戶端掃描相關(guān)(Android5.0新增)

.ScanCallback 客戶端掃描回調(diào)

.ScanFilter 客戶端掃描過濾

.ScanRecord 客戶端掃描結(jié)果的廣播數(shù)據(jù)

.ScanResult 客戶端掃描結(jié)果

.ScanSettings 客戶端掃描設(shè)置

BLE設(shè)備分為兩種設(shè)備: 客戶端(也叫主機(jī)/中心設(shè)備/Central), 服務(wù)端(也叫從機(jī)/外圍設(shè)備/peripheral) 客戶端的核心類是 BluetoothGatt

服務(wù)端的核心類是 BluetoothGattServer 和 BluetoothLeAdvertiser BLE數(shù)據(jù)的核心類是 BluetoothGattCharacteristic 和 BluetoothGattDescriptor

相關(guān)詳細(xì)內(nèi)容及使用請查看我的Github:https://github.com/MickJson/BluetoothCS

參考資料:

Android-經(jīng)典藍(lán)牙(BT)-建立長連接傳輸短消息和文件

歡迎點贊/評論,你們的贊同和鼓勵是我寫作的最大動力盯蝴!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毅哗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捧挺,更是在濱河造成了極大的恐慌虑绵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闽烙,死亡現(xiàn)場離奇詭異翅睛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)黑竞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門捕发,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人很魂,你說我怎么就攤上這事扎酷。” “怎么了遏匆?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵法挨,是天一觀的道長。 經(jīng)常有香客問我幅聘,道長凡纳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任帝蒿,我火速辦了婚禮荐糜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘葛超。我一直安慰自己暴氏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布绣张。 她就那樣靜靜地躺著答渔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胖替。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機(jī)與錄音独令,去河邊找鬼端朵。 笑死,一個胖子當(dāng)著我的面吹牛燃箭,可吹牛的內(nèi)容都是我干的冲呢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼招狸,長吁一口氣:“原來是場噩夢啊……” “哼敬拓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起裙戏,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤乘凸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后累榜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體营勤,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年壹罚,在試婚紗的時候發(fā)現(xiàn)自己被綠了葛作。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡猖凛,死狀恐怖赂蠢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辨泳,我是刑警寧澤虱岂,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站漠吻,受9級特大地震影響量瓜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜途乃,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一绍傲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耍共,春花似錦烫饼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钩骇,卻和暖如春比藻,著一層夾襖步出監(jiān)牢的瞬間铝量,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工银亲, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留慢叨,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓务蝠,卻偏偏與公主長得像拍谐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子馏段,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354