日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

移動(dòng)開(kāi)發(fā)知識(shí):Android平臺(tái)如何進(jìn)行藍(lán)牙模塊開(kāi)發(fā)(安卓藍(lán)牙模塊開(kāi)發(fā))

現(xiàn)在對(duì)于短距離通信,尤其是一些附加設(shè)備,采用藍(lán)牙通信是一個(gè)很流行的選擇,因此,作為一名移動(dòng)端開(kāi)發(fā)人員,需要掌握藍(lán)牙開(kāi)發(fā)的相關(guān)信息。

那么,都有哪些知識(shí)需要掌握呢?我們一起來(lái)看一下。

一、藍(lán)牙開(kāi)發(fā)的基本組件

在安卓系統(tǒng)中,藍(lán)牙開(kāi)的基本組件有如下幾個(gè):

1、BluetoothAdapter類。這個(gè)類代表本地的藍(lán)牙適配器,也是所有藍(lán)牙交互的入口點(diǎn)。利用該類,可以發(fā)現(xiàn)其它藍(lán)牙設(shè)備,查詢已經(jīng)匹配了的設(shè)備,使用已知的MAC地址實(shí)例化一個(gè)藍(lán)牙設(shè)備從而能夠與該設(shè)備進(jìn)行通信,以及作為服務(wù)器端,建立一個(gè)BluetoothServerSocket,來(lái)監(jiān)聽(tīng)來(lái)自其它設(shè)備的連接。

2、BluetoothDevice類。這個(gè)類代表了一個(gè)遠(yuǎn)端的藍(lán)牙設(shè)備,使用它可以獲取掃描到的藍(lán)牙設(shè)備的各類信息,如名稱、MAC地址、各類和綁定狀態(tài)等。

3、BluetoothSocket類。這個(gè)類代表了一個(gè)藍(lán)牙套接字的接口(類似于TCP),它是應(yīng)用程序通過(guò)輸入、輸出流與其它藍(lán)牙設(shè)備通信的連接點(diǎn)。

4、BluetoothServerSocket類。這個(gè)類代表打開(kāi)服務(wù)連接監(jiān)聽(tīng)可能到來(lái)的連接請(qǐng)求(屬于server端),為了連接兩個(gè)藍(lán)牙設(shè)備必須有一個(gè)設(shè)備作為服務(wù)器打開(kāi)一個(gè)服務(wù)接口。當(dāng)遠(yuǎn)端設(shè)備發(fā)起連接請(qǐng)求,并且已經(jīng)連接上了的時(shí)候,該類會(huì)返回一個(gè)BluetoothSocket。

5、BluetoothClass類。這個(gè)類是一個(gè)描述類,描述了一個(gè)藍(lán)牙設(shè)備的一般特點(diǎn)和能力。他的只讀屬性集中定義了設(shè)備的主、次類和一些相關(guān)服務(wù)。

移動(dòng)開(kāi)發(fā)知識(shí):Android平臺(tái)如何進(jìn)行藍(lán)牙模塊開(kāi)發(fā)(安卓藍(lán)牙模塊開(kāi)發(fā))

二、需要在AndroidManifest.xml里加入什么權(quán)限

使用藍(lán)牙設(shè)備,需要加入

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

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

這兩個(gè)權(quán)限,在新一點(diǎn)的安卓版本中,為獲取到對(duì)方設(shè)備的名稱,還需要加入以下兩個(gè)權(quán)限。

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

三、如何初始化藍(lán)牙設(shè)備并判斷藍(lán)牙是否開(kāi)啟

可以通過(guò)getDefaultAdapter()來(lái)獲取藍(lán)牙適配器BluetoothAdapter,當(dāng)然,如果獲取到的值為空,就說(shuō)明該設(shè)備不支持藍(lán)牙。如果成功了,就后用其中的isEnabled()函數(shù)來(lái)判斷藍(lán)牙是否啟用。

四、如何查找已匹配的設(shè)備

可以使用BluetoothAdapter中的getBondedDevices()來(lái)獲取匹配的設(shè)備集,代碼如下

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();

五、建立藍(lán)牙連接需要什么

建立藍(lán)牙連接只需要一個(gè)MAC地址就夠了,掃描到對(duì)方設(shè)備后,可以獲取對(duì)方的MAC地址。掃描設(shè)備使用startDiscovery()方法,在舊一點(diǎn)的版本中,使用startLeScan()進(jìn)行掃描,不過(guò)這個(gè)方法已經(jīng)被放棄了。

掃描到設(shè)備會(huì)拋出ACTION_FOUND動(dòng)作,因此需要注冊(cè)一個(gè)BroadcastReceiver來(lái)接受掃描到的信息。而對(duì)于每一個(gè)掃描設(shè)備都會(huì)拋出一個(gè)ACTION_FOUND動(dòng)作。

如果想建立兩個(gè)設(shè)備之間的連接,還需要實(shí)現(xiàn)客戶端和服務(wù)器端的代碼。一個(gè)持有打開(kāi)的BluetoothServerSocket來(lái)監(jiān)聽(tīng)外來(lái)連接,監(jiān)聽(tīng)到之后返回一個(gè)BluetoothSocket給對(duì)方用于通信。

六、如何進(jìn)行數(shù)據(jù)傳輸

通信通道建立好了之后,雙方都有了各自的BluetoothSocket。然后就可以通過(guò)調(diào)用getInputStream()和getOutputStream()方法來(lái)獲取輸入輸出流。然后通過(guò)read(byte[])和write(byte[])來(lái)讀取和寫(xiě)入數(shù)據(jù)。

注意一點(diǎn)哦,讀取和寫(xiě)入,都是阻塞行為,所以需要新起一個(gè)線程。

以上就是安卓開(kāi)發(fā)藍(lán)牙設(shè)備的方法哦,大家學(xué)會(huì)了嗎?

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁(yè)
返回頂部
休宁县| 柳河县| 浮梁县| 类乌齐县| 麻城市| 永川市| 讷河市| 通山县| 沾益县| 化州市| 泰安市| 大冶市| 墨脱县| 黄陵县| 东宁县| 乌兰县| 金沙县| 阳东县| 青田县| 衡阳市| 固镇县| 封开县| 晋江市| 沛县| 安庆市| 永年县| 鹤山市| 合水县| 顺平县| 青田县| 湾仔区| 隆德县| 托里县| 紫阳县| 广河县| 西畴县| 连云港市| 九江市| 木里| 昆山市| 阜阳市|