標籤:android style blog http color 使用
藍芽簡介
藍芽(Bluetooth)是一種短距離的無線通訊技術標準。這個名子來源於10世紀丹麥國王Harald Blatand,英文名子是Harold Bluetooth。在無線行業協會組織人員的討論後,有人認為用Blatand國王的名字命名這種無線技術是再好不過了,這是因為Blatand國王將挪威、瑞典和丹麥統一起來,這就如同這項技術將統一無線通訊領域一樣。至此,藍芽的名字也就這樣定了下來。
藍芽協議分為4層,即核心協議層、電纜替代協議層、電話控制協議層和採納的其它協議層。這4種協議中最重要的是核心協議。藍芽的核心協議包括基帶、鏈路管理、邏輯鏈路控制和適應協議四部分。其中鏈路管理(LMP)負責藍芽組件間串連的建立。邏輯鏈路控制與適應協議(L2CAP)位於基帶協議層上,屬於資料連結層,是一個為高層傳輸和應用程式層協議屏蔽基帶協議的適配協議。
開啟和關閉藍牙裝置
第1種開啟藍芽的方式
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, 1);
必須設定許可權
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter()
adapter.enable();
adapter.disable();
搜尋藍牙裝置
藍芽資料轉送
通過藍芽傳輸資料與Socket類似。在網路中使用Socket和ServerSocket控制用戶端和服務端的資料讀寫。而藍芽通訊也由用戶端和服務端Socket來完成。藍芽用戶端Socket是BluetoothSocket,藍芽服務端Socket是BluetoothServerSocket。這兩個類都在android.bluetooth包中。
無論是BluetoothSocket,還是BluetoothServerSocket,都需要一個UUID(通用唯一識別碼,Universally Unique Identifier).格式如下:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UUID的格式被分成5段,其中中間3段的字元數相同,都是4,第1段是8個字元,最後一段是12個字元。所以UUID實際上是一個8-4-4-4-12的字串。
UUID相當於Socket的連接埠,而藍芽地址相當於Socket的IP。
藍芽的UUID
兩個藍牙裝置進行串連時需要使用同一個UUID。但很多讀者可能發現,有很多型號的手機(可能是非Android系統的手機)之間使用了不同的程式也可以使用藍芽進行通訊。從表面上看,它們之間幾乎不可能使用同一個UUID。
實際上,UUID和TCP的連接埠一樣,也有一些預設的值。例如,將藍芽類比成串口的服務就使用了一個標準的UUID:
00001101-0000-1000-8000-00805F9B34FB。除此之外,還有很多標準的UUID,如下面就是兩個標準的UUID。
資訊同步服務:00001104-0000-1000-8000-00805F9B34FB檔案傳輸服務:00001106-0000-1000-8000-00805F9B34FB