最近需要利用現有的單片機通過藍牙和手機進行通信,並且在手機中實現一定程度的控制。我只是稍微知道點android的開發,現在是在調研階段。第一步調研的是利用手頭有的android-sdk文件來初步了解android中藍牙的使用。有關藍牙通信的基本知識將在以后補充。
一、android中藍牙支持
安卓平台提供了藍牙協議棧的支持,允許手機通過無線和其他藍牙設備進行數據傳輸。應用程序通過安卓的Android Bluetooth APIs 能夠實現藍牙功能,實現點對點或者說對多點的無線傳輸功能,這些在API中都能輕易找到。
android中所有的bluetooth API都在android.bluetooth包中,使用bluetooth APIs ,android設備能夠實現:
1)掃描其他藍牙設備;
2)詢問當前適配器已配對設備;
3)建立RFCOMM通道;
4)通過設備發現鏈接到其他設備;
5)傳送或接受數據;
6)管理多點連接。
而為了通過藍牙通信需要事先主要的四個任務:設置藍牙適配器,查找已經配對的或者查找到的設備,建立連接,設備間傳輸數據。
二、建立藍牙通信需要用的的類和接口
BluetoothAdapter :藍牙適配器類,是所有藍牙通信的入口,用於發現設備,詢問配對請求,通過已知的MAC地址識別設備 BluetoothDevice,並且建立用於監聽的 BluetoothServerSocket。
BluetoothDevice :遠程藍牙設備類,這個類的實例被用於通過 BluetoothSocket 或者設備的地址、名稱等信息請求遠程設備的連接。
BluetoothSocket :是Bluetooth Socket 類(類似於TCP 的Socket套接字)。是一個允許該設備和其他藍牙設備之間通過InputStream和OutputStream進行數據交換的連接點。
BluetoothServerSocket :是一個用於監聽其他設備發出的連接請求的類(類似於TCP的ServerSocket)。通過藍牙連接兩台android設備的時候,其中一台設備必須使用這個類開啟一個Socket,當一遠程設備向本設備發出藍牙請求時,如果連接被允許,BluetoothServerSocket將返回一個連接號的BluetoothSocket 類的對象。
BluetoothClass :是描述藍牙設備普遍特征和屬性的類。一系列的屬性都是只讀類型,定義了設備的各種設備的種類,但是,這個類的屬性並不能完全描述所有的藍牙配置和設備支持的服務,但是對於了解設備類型是很有用的。
BluetoothProfile :接口,一個Bluetooth profile是設備間藍牙通信的無線接口。(待完善)
BluetoothHeadset :
BluetoothA2dp :(完全不知道說什么)
BluetoothProfile.ServiceListener
三、應用程序藍牙權限的獲取
應用程序為了能夠使用藍牙,需要再程序中至少申明一到兩種權限:BLUETOOTH 和 BLUETOOTH_ADMIN
實現任何的藍牙通信都需要發出藍牙允許的請求,包括發出連接請求,接受連接請求,傳輸數據。
為了初始化設備發現或者說操作藍牙設置都必須申請獲得 BLUETOOTH_ADMIN 權限,大多數的應用程序都僅僅是為了能夠發現本地的藍牙設備才需要這個權限,這個權限所能得到的其他應用一般都用不到。
權限申請范例:深入了解可以參照API 的 uses-permission
<manifest ... >
<uses-permission android:name="android.permission.BLUETOOTH" />
...
</manifest>
