當前位置:編程學習大全網 - 編程語言 - Android開發之藍牙(Bluetooth)

Android開發之藍牙(Bluetooth)

在上壹篇中有介紹了Wifi與網絡連接處理

Android開發之WiFi與網絡連接處理

下面,來繼續說說Android中藍牙的基本使用。

Bluetooth是目前使用的最廣泛的無線通訊協議之壹,主要針對短距離設備通訊(10米),常用於連接耳機、鼠標和移動通訊設備等。

值得壹提的是:

android4.2新增了部分新功能,但是對於Bluetooth熟悉的人或許開始頭疼了,那就是Android4.2引入了壹個新的藍牙協議棧針BLE。谷歌和Broadcom之間的合作,開發新的藍牙協議棧,取代了基於堆棧的Bluez。因此市場上出現了老設備的兼容問題,很多藍牙設備在android4.2手機上不能正常使用。

BluetoothAdapter簡單點來說就是代表了本設備(手機、電腦等)的藍牙適配器對象。

first:we need permission

要操作藍牙,先要在AndroidManifest.xml裏加入權限

**下面來看看如何使用藍牙。 **↓↓↓****

Demo已就緒:

返回值:如果設備具備藍牙功能,返回BluetoothAdapter 實例;否則,返回null對象。

打開藍牙設備的方式:

1.直接調用函數enable()去打開藍牙設備 ;

2.系統API去打開藍牙設備,該方式會彈出壹個對話框樣式的Activity供用戶選擇是否打開藍牙設備。

註意: 1.如果藍牙已經開啟,不會彈出該Activity界面。2.在目前大多數Android手機中,是不支持在飛行模式下開啟藍牙的。如果藍牙已經開啟,那麽藍牙的開關 ,狀態會隨著飛行模式的狀態而發生改變。

1. 搜索藍牙設備

使用BluetoothAdapter的startDiscovery()方法來搜索藍牙設備

startDiscovery()方法是壹個異步方法,調用後會立即返回。該方法會進行對其他藍牙設備的搜索,該過程會持續12秒。該方法調用後,搜索過程實際上是在壹個System Service中進行的,所以可以調用cancelDiscovery()方法來停止搜索(該方法可以在未執行discovery請求時調用)。

系統開始搜索藍牙設備

^( *  ̄(oo) ̄ ) ^ 系統會發送以下三個廣播:

2.掃描設備

3.定義廣播接收器接收搜索結果

4.註冊廣播

獲取附近的藍牙設備

第壹步建立連接:首先Android sdk(2.0以上版本)支持的藍牙連接是通過BluetoothSocket建立連接,服務端BluetoothServerSocket和客戶端(BluetoothSocket)需指定同樣的UUID,才能建立連接,因為建立連接的方法會阻塞線程,所以服務器端和客戶端都應啟動新線程連接。

(這裏的服務端和客戶端是相對來說的)

兩個藍牙設備之間的連接,則必須實現服務端與客戶端的機制。

當兩個設備在同壹個RFCOMM channel下分別擁有壹個連接的BluetoothSocket,這兩個設備才可以說是建立了連接。

服務端設備與客戶端設備獲取BluetoothSocket的途徑是不同的。

1,服務端設備是通過accepted壹個incoming connection來獲取的,

2,客戶端設備則是通過打開壹個到服務端的RFCOMM channel來獲取的。

服務端

通過調用BluetoothAdapter的listenUsingRfcommWithServiceRecord(String, UUID)方法來獲取BluetoothServerSocket(UUID用於客戶端與服務端之間的配對)

客戶端

調用BluetoothService的createRfcommSocketToServiceRecord(UUID)方法獲取BluetoothSocket(該UUID應該同於服務端的UUID)。

調用BluetoothSocket的connect()方法(該方法為block方法),如果UUID同服務端的UUID匹配,並且連接被服務端accept,則connect()方法返回。

數據傳遞,通過以上操作,就已經建立的BluetoothSocket連接了,數據傳遞無非是通過流的形式

獲取流

該類就是關於遠程藍牙設備的壹個描述。通過它可以和本地藍牙設備---BluetoothAdapter連接通信。

好多東西我也不知道怎麽描述,下面給出Demo:

剛好有剛學習的小夥伴問我ListView怎麽用,那我就用ListView。

源碼:

RairDemo

GitHub: /Rairmmd/android-demo

Coding: /u/Rair/p/RairDemo/git

  • 上一篇:求好字,求句數,妳有什麽感受?
  • 下一篇:針組詞二年級上冊語文生字
  • copyright 2024編程學習大全網