久久久久久人妻一区精品,西西人体444www大胆无码视频,好大好深好猛好爽视频,youjizz中国熟女,在线а√天堂中文官网

android藍(lán)牙app開(kāi)發(fā)(android藍(lán)牙app開(kāi)發(fā) i12藍(lán)牙耳機(jī)安卓使用方法)

網(wǎng)站建設(shè) 3450
本篇文章給大家談?wù)刟ndroid藍(lán)牙app開(kāi)發(fā),以及android藍(lán)牙app開(kāi)發(fā) i12藍(lán)牙耳機(jī)安卓使用方法對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 Android開(kāi)發(fā)之藍(lán)牙(Bluetooth) 在上一篇中有介紹了Wifi與網(wǎng)絡(luò)連接處理 Android開(kāi)發(fā)之WiFi與網(wǎng)絡(luò)連接處理 下面,來(lái)繼續(xù)說(shuō)說(shuō)Android中藍(lán)牙的基本使用。 Bluetooth是目前使用的最廣泛的無(wú)線通訊協(xié)議之一,主要針對(duì)短距離設(shè)備通訊(10米),常用于連接耳機(jī)、鼠標(biāo)和移動(dòng)通訊設(shè)備等。

本篇文章給大家談?wù)刟ndroid藍(lán)牙app開(kāi)發(fā),以及android藍(lán)牙app開(kāi)發(fā) i12藍(lán)牙耳機(jī)安卓使用方法對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。

Android開(kāi)發(fā)之藍(lán)牙(Bluetooth)

在上一篇中有介紹了Wifi與網(wǎng)絡(luò)連接處理

Android開(kāi)發(fā)之WiFi與網(wǎng)絡(luò)連接處理

下面,來(lái)繼續(xù)說(shuō)說(shuō)Android中藍(lán)牙的基本使用。

Bluetooth是目前使用的最廣泛的無(wú)線通訊協(xié)議之一,主要針對(duì)短距離設(shè)備通訊(10米),常用于連接耳機(jī)、鼠標(biāo)和移動(dòng)通訊設(shè)備等。

值得一提的是:

android4.2新增了部分新功能,但是對(duì)于Bluetooth熟悉的人或許開(kāi)始頭疼了,那就是Android4.2引入了一個(gè)新的藍(lán)牙協(xié)議棧針BLE。谷歌和Broadcom之間的合作,開(kāi)發(fā)新的藍(lán)牙協(xié)議棧,取代了基于堆棧的Bluez。因此市場(chǎng)上出現(xiàn)了老設(shè)備的兼容問(wèn)題,很多藍(lán)牙設(shè)備在android4.2手機(jī)上不能正常使用。

BluetoothAdapter簡(jiǎn)單點(diǎn)來(lái)說(shuō)就是代表了本設(shè)備(手機(jī)、電腦等)的藍(lán)牙適配器對(duì)象。

first:we need permission

要操作藍(lán)牙,先要在AndroidManifest.xml里加入權(quán)限

**下面來(lái)看看如何使用藍(lán)牙。 **↓↓↓****

Demo已就緒:

返回值:如果設(shè)備具備藍(lán)牙功能,返回BluetoothAdapter 實(shí)例;否則,返回null對(duì)象。

打開(kāi)藍(lán)牙設(shè)備的方式:

1.直接調(diào)用函數(shù)enable()去打開(kāi)藍(lán)牙設(shè)備 ;

2.系統(tǒng)API去打開(kāi)藍(lán)牙設(shè)備,該方式會(huì)彈出一個(gè)對(duì)話框樣式的Activity供用戶選擇是否打開(kāi)藍(lán)牙設(shè)備。

注意: 1.如果藍(lán)牙已經(jīng)開(kāi)啟,不會(huì)彈出該Activity界面。2.在目前大多數(shù)Android手機(jī)中,是不支持在飛行模式下開(kāi)啟藍(lán)牙的。如果藍(lán)牙已經(jīng)開(kāi)啟,那么藍(lán)牙的開(kāi)關(guān) ,狀態(tài)會(huì)隨著飛行模式的狀態(tài)而發(fā)生改變。

1. 搜索藍(lán)牙設(shè)備

使用BluetoothAdapter的startDiscovery()方法來(lái)搜索藍(lán)牙設(shè)備

startDiscovery()方法是一個(gè)異步方法,調(diào)用后會(huì)立即返回。該方法會(huì)進(jìn)行對(duì)其他藍(lán)牙設(shè)備的搜索,該過(guò)程會(huì)持續(xù)12秒。該方法調(diào)用后,搜索過(guò)程實(shí)際上是在一個(gè)System Service中進(jìn)行的,所以可以調(diào)用cancelDiscovery()方法來(lái)停止搜索(該方法可以在未執(zhí)行discovery請(qǐng)求時(shí)調(diào)用)。

系統(tǒng)開(kāi)始搜索藍(lán)牙設(shè)備

^( *  ̄(oo) ̄ ) ^ 系統(tǒng)會(huì)發(fā)送以下三個(gè)廣播:

2.掃描設(shè)備

3.定義廣播接收器接收搜索結(jié)果

4.注冊(cè)廣播

獲取附近的藍(lán)牙設(shè)備

第一步建立連接:首先Android sdk(2.0以上版本)支持的藍(lán)牙連接是通過(guò)BluetoothSocket建立連接,服務(wù)端BluetoothServerSocket和客戶端(BluetoothSocket)需指定同樣的UUID,才能建立連接,因?yàn)榻⑦B接的方法會(huì)阻塞線程,所以服務(wù)器端和客戶端都應(yīng)啟動(dòng)新線程連接。

(這里的服務(wù)端和客戶端是相對(duì)來(lái)說(shuō)的)

兩個(gè)藍(lán)牙設(shè)備之間的連接,則必須實(shí)現(xiàn)服務(wù)端與客戶端的機(jī)制。

當(dāng)兩個(gè)設(shè)備在同一個(gè)RFCOMM channel下分別擁有一個(gè)連接的BluetoothSocket,這兩個(gè)設(shè)備才可以說(shuō)是建立了連接。

服務(wù)端設(shè)備與客戶端設(shè)備獲取BluetoothSocket的途徑是不同的。

1,服務(wù)端設(shè)備是通過(guò)accepted一個(gè)incoming connection來(lái)獲取的,

2,客戶端設(shè)備則是通過(guò)打開(kāi)一個(gè)到服務(wù)端的RFCOMM channel來(lái)獲取的。

服務(wù)端

通過(guò)調(diào)用BluetoothAdapter的listenUsingRfcommWithServiceRecord(String, UUID)方法來(lái)獲取BluetoothServerSocket(UUID用于客戶端與服務(wù)端之間的配對(duì))

客戶端

調(diào)用BluetoothService的createRfcommSocketToServiceRecord(UUID)方法獲取BluetoothSocket(該UUID應(yīng)該同于服務(wù)端的UUID)。

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

數(shù)據(jù)傳遞,通過(guò)以上操作,就已經(jīng)建立的BluetoothSocket連接了,數(shù)據(jù)傳遞無(wú)非是通過(guò)流的形式

獲取流

該類就是關(guān)于遠(yuǎn)程藍(lán)牙設(shè)備的一個(gè)描述。通過(guò)它可以和本地藍(lán)牙設(shè)備---BluetoothAdapter連接通信。

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

剛好有剛學(xué)習(xí)的小伙伴問(wèn)我ListView怎么用,那我就用ListView。

源碼:

RairDemo

GitHub:

Coding:

Android 藍(lán)牙開(kāi)發(fā)(一)

普通藍(lán)牙設(shè)備官方文檔

Android 平臺(tái)包含藍(lán)牙網(wǎng)絡(luò)堆棧支持 ,憑借此支持,設(shè)備能以無(wú)線方式與其他藍(lán)牙設(shè)備交換數(shù)據(jù)。應(yīng)用框架提供了通過(guò) Android Bluetooth API 訪問(wèn)藍(lán)牙功能的途徑。使用 Bluetooth API Android 應(yīng)用可以執(zhí)行下面的操作:

傳統(tǒng)藍(lán)牙適用于電池使用強(qiáng)度較大的操作,例如 Android 設(shè)備之間的流傳輸和通信等。針對(duì)具有低功耗要求的藍(lán)牙設(shè)備,Android 4.3(API 18)中引入了面向低功耗藍(lán)牙的 API 支持。

使用 Android Bluetooth API 來(lái)完成使用藍(lán)牙進(jìn)行通信的四項(xiàng)主要任務(wù): 設(shè)置藍(lán)牙 、 查找局部區(qū)域內(nèi)的配對(duì)設(shè)備或可用設(shè)備 、 連接設(shè)備 ,以及在 設(shè)備之間傳輸數(shù)據(jù) 。

關(guān)于藍(lán)牙的 API 在 android.bluetooth 包中,下面介紹一下和藍(lán)牙相關(guān)的主要類:

在 BluetoothProfile IPC 客戶端連接到服務(wù)(即,運(yùn)行特定配置文件的內(nèi)部服務(wù))或斷開(kāi)服務(wù)連接時(shí)向其發(fā)送通知的接口。

使用藍(lán)牙必須聲明權(quán)限 BLUETOOTH 才可以執(zhí)行藍(lán)牙通信。

1、獲取藍(lán)牙適配器

例如:我們可以查詢所有已配對(duì)的設(shè)備,然后使用 ArrayAdapter 向用戶顯示每臺(tái)設(shè)備的名稱:

要發(fā)起連接僅需要知道目標(biāo)藍(lán)牙設(shè)備的 Mac 地址就可以了。

注意 執(zhí)行 discovery 對(duì)于藍(lán)牙適配器來(lái)說(shuō)是一個(gè)非常繁重的過(guò)程,并且會(huì)消耗大量資源。在找到要連接的設(shè)備后, 要確保使用 cancelDiscovery() 來(lái)停止發(fā)現(xiàn),然后嘗試連接 。如果您已經(jīng)和某臺(tái)設(shè)備進(jìn)行連接,那么這個(gè)時(shí)候執(zhí)行發(fā)現(xiàn)操作會(huì)大幅度的減少此連接可用的帶寬!因此不應(yīng)該在處于連接狀態(tài)的時(shí)候執(zhí)行發(fā)現(xiàn)操作!

例如:

在連接之前如果兩個(gè)設(shè)備沒(méi)有配對(duì),則系統(tǒng)會(huì)自動(dòng)發(fā)出配對(duì)請(qǐng)求。

服務(wù)器套接字接受連接的基本過(guò)程

放在子線程中去執(zhí)行。

例子:

客戶端連接的基本過(guò)程

調(diào)用 connect() 的時(shí)候要確??蛻舳藳](méi)有執(zhí)行發(fā)現(xiàn)操作。如果執(zhí)行了會(huì)大幅度降低連接的速度,增加失敗的可能。

例子

在連接之前調(diào)用 cancleDiscovery() 在進(jìn)行連接之前應(yīng)該始終調(diào)用這個(gè)方法,而且調(diào)用的時(shí)候無(wú)需檢測(cè)是否正在掃描。

過(guò)程:

從 Android 3.0 開(kāi)始, Bluetooth API 便支持使用藍(lán)牙配置文件。藍(lán)牙配置文件是適用于設(shè)備間藍(lán)牙通信的無(wú)線接口規(guī)范。

1、藍(lán)牙配置文件就是設(shè)備間通信(藍(lán)牙設(shè)備)的一種規(guī)范

免提配置文件便是一個(gè)示例,對(duì)于連接到無(wú)線耳機(jī)的手機(jī),兩臺(tái)設(shè)備都必須支持免提配置文件。我們也可以通過(guò)實(shí)現(xiàn)接口 BluetoothProfile 來(lái)寫(xiě)入自己的類來(lái)支持特定的藍(lán)牙配置文件。Android API 提供了以下的幾種藍(lán)牙配置文件的實(shí)現(xiàn):

2、使用配置文件的基本步驟

創(chuàng)建 HDP 應(yīng)用:

關(guān)于普通藍(lán)牙設(shè)備和普通藍(lán)牙設(shè)備之間的連接通信

關(guān)于藍(lán)牙設(shè)備和藍(lán)牙儀器(藍(lán)牙耳機(jī)、電子秤等等類似產(chǎn)品)

這種之間的通信是通過(guò)配置文件代理來(lái)實(shí)現(xiàn)的。

都有一個(gè)對(duì)應(yīng)的配置文件代理類。具體的操作是通過(guò)這個(gè)對(duì)象來(lái)完成。

參考: ;mid=2247484128idx=1sn=9d59b9ad66fb68b9569c29566103c009scene=21#wechat_redirect

Android 藍(lán)牙開(kāi)發(fā)(三)-藍(lán)牙的詳細(xì)介紹

前面的兩篇文章,主要是在 Android 官網(wǎng)關(guān)于藍(lán)牙介紹的基礎(chǔ)上加上自己的理解完成的。主要針對(duì)的是 Android 開(kāi)發(fā)中的一些 API 的使用。

第一篇文章 Android 藍(lán)牙開(kāi)發(fā)(一) 主要是介紹了普通的藍(lán)牙在 Android 開(kāi)發(fā)中的運(yùn)用。

第二篇文章 Android 藍(lán)牙開(kāi)發(fā)(二) 主要是介紹了低功耗藍(lán)牙的開(kāi)發(fā)。

這篇文章主要介紹的是藍(lán)牙的歷史和一些關(guān)于藍(lán)牙的通用知識(shí),還有廣播包的知識(shí)。要想徹底了解藍(lán)牙開(kāi)發(fā),這些基礎(chǔ)的知識(shí)也是需要的,就像網(wǎng)絡(luò)協(xié)議一樣,這些都是基礎(chǔ)的內(nèi)容。我們的 API 的調(diào)用都是以這個(gè)為基礎(chǔ)的,了解這些,開(kāi)發(fā)過(guò)程中遇到問(wèn)題,才可以知道什么怎么一回事。

下篇文章主要講的就是實(shí)際開(kāi)發(fā)中的一些坑。

藍(lán)牙其實(shí)就是一種近距離無(wú)線通信技術(shù)。

從下到上分別為:控制器(Controller)--主機(jī)(host)--應(yīng)用(Application)

詳細(xì)介紹各個(gè)層的含義:

BLE 應(yīng)用可以分為兩大類:基于非連接的和基于連接的

意思就是外設(shè)和周邊設(shè)備不發(fā)生連接,主要靠掃描到的廣播來(lái)獲取信息。發(fā)送廣播的一方叫做 broadcaster 監(jiān)聽(tīng)廣播的一方叫做 oberver 在 GAP 層有對(duì)應(yīng)的角色定義。

網(wǎng)絡(luò)拓?fù)鋱D:

這種方式就是廣播設(shè)備不斷的向外發(fā)送廣播(含有特定的信息),然后觀察者接受到廣播按照兩者之間約定好的協(xié)議進(jìn)行解析拿到有用的信息。例如:iBeacon,通過(guò)這種設(shè)備我們可以實(shí)現(xiàn)室內(nèi)定位。

其實(shí)這些設(shè)備的角色可以即使廣播者又是觀察者。接收到廣播后作出了處理,然后又發(fā)送廣播。這樣就形成了雙向的網(wǎng)絡(luò),類似于因特網(wǎng),這就是藍(lán)牙 Mesh 組網(wǎng)。

廣播數(shù)據(jù)包格式:

每個(gè)廣播數(shù)據(jù)包由 31 byte 組成。分為有效數(shù)據(jù)和無(wú)效數(shù)據(jù)兩部分。

例子:

這里是掃描的數(shù)據(jù)包(轉(zhuǎn)換成了 16 進(jìn)制,兩個(gè)代表一個(gè)字節(jié)),第一個(gè)字節(jié)是 02 表示后面的兩個(gè)字節(jié)是數(shù)據(jù)部分,然后第二個(gè)字節(jié)是 01 表示了數(shù)據(jù)的類型。后面一個(gè)字節(jié)就是真正的數(shù)據(jù)了。這個(gè)廣播數(shù)據(jù)單元就分析完了。下面就是另一個(gè)數(shù)據(jù)單元了。依次類推,關(guān)于數(shù)據(jù)類型的解釋,官網(wǎng)有。

這是數(shù)據(jù)類型對(duì)應(yīng)的含義表。

網(wǎng)絡(luò)拓?fù)鋱D:

一個(gè)中心設(shè)備可連接多個(gè)外設(shè),但是一個(gè)外設(shè)只能連接一個(gè)中心(外設(shè)連接成功后就會(huì)停止對(duì)外廣播,別人就發(fā)現(xiàn)不了它了)。其中一個(gè)中心設(shè)備的連接外設(shè)的數(shù)量也是有限的。

鏈接: ;mid=2247484141idx=1sn=fd7e71864189b3631ce529afeb4cf669scene=21#wechat_redirect

android藍(lán)牙app開(kāi)發(fā)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于android藍(lán)牙app開(kāi)發(fā) i12藍(lán)牙耳機(jī)安卓使用方法、android藍(lán)牙app開(kāi)發(fā)的信息別忘了在本站進(jìn)行查找喔。

掃碼二維碼