欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android Bluetooth藍牙技術(shù)初體驗

 更新時間:2016年02月13日 17:31:53   作者:pengkv  
這篇文章主要介紹了Android Bluetooth藍牙技術(shù)初體驗的相關(guān)資料,需要的朋友可以參考下

一:Bluetooth包簡介

Android平臺提供了一個android.bluetooth的包,里面實現(xiàn)藍牙設(shè)備之間通信的藍牙API??偣灿?個類,常用的四個類如下:

BluetoothAdapter類

代表了一個本地的藍牙適配器。它是所有藍牙交互的入口點。利用它你可以發(fā)現(xiàn)其他藍牙設(shè)備,查詢綁定了的設(shè)備,使用已知的MAC地址實例化一個藍牙設(shè)備和建立一個BluetoothServerSocket(作為服務(wù)器端)來監(jiān)聽來自其他設(shè)備的連接。

BluetoothDevice類

代表了一個遠端的藍牙設(shè)備,使用它請求遠端藍牙設(shè)備連接或者獲取遠端藍牙設(shè)備的名稱、地址、種類和綁定狀態(tài)(其信息是封裝在BluetoothSocket中)。

BluetoothSocket類

代表了一個藍牙套接字的接口(類似于TCP中的套接字),它是應(yīng)用程序通過輸入、輸出流與其他藍牙設(shè)備通信的連接點。

BlueboothServerSocket類

代表打開服務(wù)連接來監(jiān)聽可能到來的連接請求(屬于server端),為了連接兩個藍牙設(shè)備必須有一個設(shè)備作為服務(wù)器打開一個服務(wù)套接字。當(dāng)遠端設(shè)備發(fā)起連接連接請求的時候,并且已經(jīng)連接到了的時候,BlueboothServerSocket類將會返回一個BluetoothSocket。

二:常用類的使用

BluetoothAdapter:藍牙適配器

cancelDiscovery()取消探索,當(dāng)我們正在搜索設(shè)備的時候調(diào)用這個方法將不再繼續(xù)搜索
disable()關(guān)閉藍牙
enable()打開藍牙,這個方法打開藍牙不會彈出提示,更多的時候我們需要問下用戶是否打開,以下兩行代碼同樣是打開藍牙,但會提示用戶:

Intentenabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enabler);
getAddress()獲取本地藍牙地址
getDefaultAdapter()獲取默認(rèn)BluetoothAdapter,實際上,也只有這一種方法獲取BluetoothAdapter
getName()獲取本地藍牙名稱
getRemoteDevice(String address)根據(jù)藍牙地址獲取遠程藍牙設(shè)備
getState()獲取本地藍牙適配器當(dāng)前狀態(tài)
isDiscovering()判斷當(dāng)前是否正在查找設(shè)備,是則返回true
isEnabled()判斷藍牙是否打開,已打開返回true,否則返回false
listenUsingRfcommWithServiceRecord(String name,UUID uuid)根據(jù)名稱,UUID創(chuàng)建并返回BluetoothServerSocket,這是創(chuàng)建BluetoothSocket服務(wù)器端的第一步
startDiscovery()開始搜索,這是搜索的第一步

BluetoothDevice:遠程藍牙設(shè)備

createRfcommSocketToServiceRecord(UUIDuuid)根據(jù)UUID創(chuàng)建并返回一個BluetoothSocket,這個方法也是我們獲取BluetoothDevice
的目的——創(chuàng)建BluetoothSocket

這個類其他的方法,如getAddress()、getName()等,同BluetoothAdapter。

BluetoothSocket:客戶端

//這個類一共有6個方法
close()關(guān)閉
connect()連接
isConnected()判斷是否連接
getInptuStream()獲取輸入流
getOutputStream()獲取輸出流
getRemoteDevice()獲取BluetoothSocket指定連接的遠程藍牙設(shè)備

BluetoothServerSocket:服務(wù)端

//這個類一共有4個方法
accept()
accept(int timeout)
close()關(guān)閉
getChannel()返回這個套接字綁定的通道

兩者的區(qū)別在于后面的方法指定了過時時間,需要注意的是,執(zhí)行這兩個方法的時候,直到接收到了客戶端的請求(或是過期之后),都會阻塞線程,應(yīng)該放在新線程里運行。還有一點需要注意的是,這兩個方法都返回一個BluetoothSocket,最后的連接也是服務(wù)器端與客戶端的兩個BluetoothSocket的連接

三:數(shù)據(jù)傳輸

藍牙數(shù)據(jù)傳輸——服務(wù)器端

1、獲得BluetoothAdapter。
2、通過BluetoothAdapter.listenUsingRfcommWithServiceRecord(name,UUID uuid)方法創(chuàng)建BluetoothServerSocket對象。
3、通過luetoothServerSocket.accept()方法返回一個BluetoothSocket對象。由于該方法處于阻塞狀態(tài),需要開啟線程來處理。
4、通過BluetoothSocket.getInputStream()和BluetoothSocket.getOutputStream()方法獲得讀寫數(shù)據(jù)的InputStream和OutputStream對象。
5、通過InputStream.read()方法來讀數(shù)據(jù)。通過OutputStream.write()方法來寫數(shù)據(jù)。

藍牙數(shù)據(jù)傳輸——客戶端

1、獲得BluetoothAdapter。
2、通過BluetoothAdapter.getRemoteDevice(String address)獲得指定地址的BluetoothDevice對象。
3、通過BluetoothDevice.createRfcommSocketToServiceRecord (UUID uuid)方法創(chuàng)建BluetoothSocket對象。
4、通過BluetoothSocket.connect()方法來連接藍牙設(shè)備。
5、通過BluetoothSocket.getInputStream()和BluetoothSocket.getOutputStream()方法獲得讀寫數(shù)據(jù)的InputStream和OutputStream對象。
6、通過InputStream.read()方法來讀數(shù)據(jù)。通過OutputStream.write()方法來寫數(shù)據(jù)。

四:Tip

UUID

// UUID:全局唯一標(biāo)識符,格式為:8-4-4-4-12
// 兩個藍牙設(shè)備進行連接需要使用同一個UUID

<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permissionandroid:name="android.permission.BLUETOOTH" />

以上所述是小編給大家分享的Android Bluetooth藍牙技術(shù)初體驗的相關(guān)內(nèi)容,下篇將給大家介紹Android Bluetooth藍牙技術(shù)使用流程詳解,感興趣的朋友可以點擊了解詳情。

相關(guān)文章

最新評論