Android學習筆記之藍牙入門
藍牙概述
藍牙是一種支持設備間短距離通信的無線電技術。
支持移動電話、筆記本電腦、無線耳機、智能小車等設備之間進行信息的交換。
Android支持的藍牙協議棧:
協議棧名稱 | 特點 |
---|---|
Bluz | Linux提供給Android的藍牙棧,開源、靈活、高效,目前最常用的 |
BlueDroid | Android特有的,結構清晰,方便移植 |
BLE | 低功耗 |
協議棧(Protocol Stack)是指網絡中各層協議的總和,其形象的反映了一個網絡中文件傳輸的過程:由上層協議到底層協議,再由底層協議到上層協議。面對衆多不同的計算機和網絡生產廠家,以及用戶要求的便宜、靈活、方便的聯網需求,必須建立一個公認的計算機網絡連網標準和網絡體系結構,以實現任意計算機系統和任意網絡系統的互聯。
鏈路管理(LMP)進行藍牙配對、連接的過程。
BluetoothAdapter類
下面列舉幾個BluetoothAdapter類常用的成員方法:
方法 | 說明 |
---|---|
BluetoothAdapter getDefaultAdapter () | 初始化BluetoothAdapter類對象,不用構造函數 |
BluetoothDevice getRemoteDevice (String address) | 獲取已知Mac地址的設備,address爲Mac地址 |
String getAddress() | 獲取設備Mac地址 |
String getName() | 獲取設備名稱 |
boolean enable() | 連接藍牙設備 |
boolean disable() | 斷開藍牙設備 |
權限
使用藍牙需要在AndroidManifest.xml裏添加兩條權限:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
藍牙模塊的Mac地址獲取
使用藍牙模塊與硬件通信時,用Android對指定藍牙設備進行通信,可以使用getRemoteDevice的方法根據硬件設備的Mac地址綁定硬件設備,比如:
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevicebl uetoothDevice = bluetoothAdapter.getRemoteDevice("98:D3:31:90:88:83"); //注意:有英文的一定要大寫
而要用此法,首先要已知藍牙模塊的Mac地址。步驟如下:
1.先通過串口將藍牙模塊與電腦連接
2.打開顯示藍牙(我的是win10系統)
3.添加藍牙或其他設備
4.輸入PIN連接(藍牙模塊一般默認的是1234或0000)
5.更多藍牙選項
6.查看Mac地址
圖中最終獲得的值
Bluetooth#Bluetooth80:a5:89:3d:75:9a-98:d3:31:90:88:83
其中 98:d3:31:90:88:83即爲此藍牙模塊的Mac地址(注意:在Android中使用時,Mac地址裏有英文的一定要大寫,即98:D3:31:90:88:83)
藍牙數據傳輸
通過藍牙傳輸數據與Socket類似。在網絡中使用Socket和ServerSocket控制客戶端和服務端的數據讀寫。而藍牙通訊則由客戶端BluetoothSocket和服務端BluetoothServerSocket來完成。這兩個類都在android.bluetooth包中。
藍牙客戶端和服務端均需要一個全局唯一標識符UUID(Universally Unique Identifier),格式如下:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
(所以UUID實際上是一個8-4-4-4-12格式的字符串)UUID相當於Socket的端口,藍牙Mac地址相當於Socketde的IP。