Android Bluetooth藍芽技術基礎講解

2021-07-12 05:12:27 字數 3319 閱讀 3985

一:bluetooth包簡介

android平台提供了乙個android.bluetooth的包,裡面實現藍芽裝置之間通訊的藍芽api。總共有8個類,常用的四個類如下:

bluetoothadapter類

代表了乙個本地的藍芽介面卡。它是所有藍芽互動的入口點。利用它你可以發現其他藍芽裝置,查詢繫結了的裝置,使用已知的mac位址例項化乙個藍芽裝置和建立乙個bluetoothserversocket(作為伺服器端)來監聽來自其他裝置的連線。

bluetoothdevice類

代表了乙個遠端的藍芽裝置,使用它請求遠端藍芽裝置連線或者獲取遠端藍芽裝置的名稱、位址、種類和繫結狀態(其資訊是封裝在bluetoothsocket中)。

bluetoothsocket類

代表了乙個藍芽套接字的介面(類似於tcp中的套接字),它是應用程式通過輸入、輸出流與其他藍芽裝置通訊的連線點。

blueboothserversocket類

代表開啟服務連線來監聽可能到來的連線請求(屬於server端),為了連線兩個藍芽裝置必須有乙個裝置作為伺服器開啟乙個服務套接字。當遠端裝置發起連線連線請求的時候,並且已經連線到了的時候,blueboothserversocket類將會返回乙個bluetoothsocket。

二:常用類的使用

bluetoothadapter:藍芽介面卡

intentenabler = new intent(bluetoothadapter.action_request_enable);

startactivity(enabler);

getaddress()獲取本地藍芽位址

getdefaultadapter()獲取預設bluetoothadapter,實際上,也只有這一種方法獲取bluetoothadapter

getname()獲取本地藍芽名稱

getremotedevice(string address)根據藍芽位址獲取遠端藍芽裝置

getstate()獲取本地藍芽介面卡當前狀態

isdiscovering()判斷當前是否正在查詢裝置,是則返回true

isenabled()判斷藍芽是否開啟,已開啟返回true,否則返回false

listenusingrfcommwithservicerecord(string name,uuid uuid)根據名稱,uuid建立並返回bluetoothserversocket,這是建立bluetoothsocket伺服器端的第一步

startdiscovery()開始搜尋,這是搜尋的第一步

bluetoothdevice:遠端藍芽裝置

createrfcommsockettoservicerecord(uuiduuid)根據uuid建立並返回乙個bluetoothsocket,這個方法也是我們獲取bluetoothdevice

的目的——建立bluetoothsocket

這個類其他的方法,如getaddress()、getname()等,同bluetoothadapter。

bluetoothsocket:客戶端

//這個類一共有6個方法

close()關閉

connect()連線

isconnected()判斷是否連線

getinptustream()獲取輸入流

getoutputstream()獲取輸出流

getremotedevice()獲取

bluetoothsocket指定連線的遠端藍芽裝置

bluetoothserversocket:服務端

//這個類一共有4個方法

accept()

accept(int timeout)

close()關閉

getchannel()返回這個套接字繫結的通道

兩者的區別在於後面的方法指定了過時時間,需要注意的是,執行這兩個方法的時候,直到接收到了客戶端的請求(或是過期之後),都會阻塞執行緒,應該放在新執行緒裡執行。還有一點需要注意的是,這兩個方法都返回乙個bluetoothsocket,最後的連線也是伺服器端與客戶端的兩個bluetoothsocket的連線

三:資料傳輸

藍芽資料傳輸——伺服器端

1、獲得bluetoothadapter。 

2、通過bluetoothadapter.listenusingrfcommwithservicerecord(name,uuid uuid)方法建立bluetoothserversocket物件。 

3、通過luetoothserversocket.accept()方法返回乙個bluetoothsocket物件。由於該方法處於阻塞狀態,需要開啟執行緒來處理。 

4、通過bluetoothsocket.getinputstream()和bluetoothsocket.getoutputstream()方法獲得讀寫資料的inputstream和outputstream物件。 

5、通過inputstream.read()方法來讀資料。通過outputstream.write()方法來寫資料。

藍芽資料傳輸——客戶端

1、獲得bluetoothadapter。 

2、通過bluetoothadapter.getremotedevice(string address)獲得指定位址的bluetoothdevice物件。 

3、通過bluetoothdevice.createrfcommsockettoservicerecord (uuid uuid)方法建立bluetoothsocket物件。

4、通過bluetoothsocket.connect()方法來連線藍芽裝置。 

5、通過bluetoothsocket.getinputstream()和bluetoothsocket.getoutputstream()方法獲得讀寫資料的inputstream和outputstream物件。 

6、通過inputstream.read()方法來讀資料。通過outputstream.write()方法來寫資料。

四:tip

uuid

// uuid:全域性唯一識別符號,格式為:88888888-44444-44444-44444-123456aaaaaa

// 兩個藍芽裝置進行連線需要使用同乙個uuid

新增許可權

bluetooth_admin

bluetooth ?

android bluetooth開發基礎 1

android包含了對藍芽網路協議棧的支援,這使得藍芽裝置能夠無線連線其他藍芽裝置交換資料。android的應用程式框架提供了訪問藍芽功能的apis。這些apis讓應用程式能夠無線連線其他藍芽裝置,實現點對點,或點對多點的無線互動功能。使用藍芽apis,乙個android應用程式能實現下列功能 使用...

藍芽技術原理(9)藍芽AOA AOD技術原理

5.1 有個特性加入了aoa和aod定位應用,實現了厘公尺級別的定位功能,效果不錯 1 發射端 1 乙個tag 2 單天線的 3 資料報為cte廣播資料 2 接收端 1 陣列天線 2 通過cte廣播訊號得到iq結果 1 發射端 1 乙個天線 2 通過cte廣播訊號得到iq結果 2 接收端 1 陣列天...

藍芽技術詳解

在物聯網中物與網相連的最後數公尺,發揮關鍵作用的是短距離無線傳輸技術,目前有多種短距離無線傳輸技術可以應用在物聯網中,在我國,除已得到大規模應用的rfid之外,還有wifi zigbee 藍芽 nfc等 1 rfid 無線射頻識別技術,是一種通訊技術,可以通過無線電訊號識別特定目標並讀寫相關資料 r...