資源描述:
《Android藍(lán)牙開發(fā)(整理)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、...Android藍(lán)牙開發(fā)學(xué)習(xí)之前先了解兩個(gè)基本概念:1.RFCOMM協(xié)議:一個(gè)基于歐洲電信標(biāo)準(zhǔn)協(xié)會(huì)ETSI07.10規(guī)程的串行線性仿真協(xié)議。此協(xié)議提供RS232控制和狀態(tài)信號(hào),如基帶上的損壞,CTS以及數(shù)據(jù)信號(hào)等,為上層業(yè)務(wù)(如傳統(tǒng)的串行線纜應(yīng)用)提供了傳送能力。RFCOMM是一個(gè)簡(jiǎn)單傳輸協(xié)議,其目的是針對(duì)如何在兩個(gè)不同設(shè)備上的應(yīng)用之間保證一條完整的通信路徑,并在它們之間保持一通信段。RFCOMM是為了兼容傳統(tǒng)的串口應(yīng)用,同時(shí)取代有線的通信方式,藍(lán)牙協(xié)議棧需要提供與有線串口一致的通信接口而開發(fā)出的協(xié)議。RFC
2、OMM協(xié)議提供對(duì)基于L2CAP協(xié)議的串口仿真,基于ETSI07.10??芍С衷趦蓚€(gè)BT設(shè)備之間同時(shí)保持高達(dá)60路的通信連接。RFCOMM只針對(duì)直接互連設(shè)備之間的連接,或者是設(shè)備與網(wǎng)絡(luò)接入設(shè)備之間的互連。通信兩端設(shè)備必須兼容于RFCOMM協(xié)議,有兩類設(shè)備:DTE(DataTerminalEndpoint,通信終端,如PC,PRINTER)和DCE(DataCircuitEndpoint,通信段的一部分,如Modem)。此兩類設(shè)備不作區(qū)分。2.MAC硬件地址MAC(Medium/MediaAccessControl,
3、介質(zhì)訪問控制)MAC地址是燒錄在NetworkInterfaceCard(網(wǎng)卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特長(zhǎng)(6字節(jié)),16進(jìn)制的數(shù)字組成.0-23位叫做組織唯一標(biāo)志符(organizationallyunique,是識(shí)別LAN(局域網(wǎng))節(jié)點(diǎn)的標(biāo)識(shí).24-47位是由廠家自己分配。其中第40位是組播地址標(biāo)志位。網(wǎng)卡的物理地址通常是由網(wǎng)卡生產(chǎn)廠家燒入網(wǎng)卡的EPROM(一種閃存芯片,通??梢酝ㄟ^程序擦寫),它存儲(chǔ)的是傳輸數(shù)據(jù)時(shí)真正賴以標(biāo)識(shí)發(fā)出數(shù)據(jù)的電腦和接收數(shù)據(jù)的主機(jī)的地址。Android平臺(tái)
4、提供的藍(lán)牙API去實(shí)現(xiàn)藍(lán)牙設(shè)備之間的通信,藍(lán)牙設(shè)備之間的通信主要包括了四個(gè)步驟:設(shè)置藍(lán)牙設(shè)備、尋找局域網(wǎng)內(nèi)可能或者匹配的設(shè)備、連接設(shè)備和設(shè)備之間的數(shù)據(jù)傳輸。以下是建立藍(lán)牙連接的所需要的一些基本類:BluetoothAdapter類:代表了一個(gè)本地的藍(lán)牙適配器。它是所有藍(lán)牙交互的的入口點(diǎn)。利用它你可以發(fā)現(xiàn)其他藍(lán)牙設(shè)備,查詢綁定了的設(shè)備,使用已知的MAC地址實(shí)例化一個(gè)藍(lán)牙設(shè)備和建立一個(gè)BluetoothServerSocket(作為服務(wù)器端)來監(jiān)聽來自其他設(shè)備的連接。BluetoothDevice類:代表了一個(gè)遠(yuǎn)端的
5、藍(lán)牙設(shè)備,使用它請(qǐng)求遠(yuǎn)端藍(lán)牙設(shè)備連接或者獲取遠(yuǎn)端藍(lán)牙設(shè)備的名稱、地址、種類和綁定狀態(tài)(其信息是封裝在BluetoothSocket中)。BluetoothSocket類:代表了一個(gè)藍(lán)牙套接字的接口(類似于TCP中的套接字),它是應(yīng)用程序通過輸入、輸出流與其他藍(lán)牙設(shè)備通信的連接點(diǎn)。BlueboothServerSocket類:代表打開服務(wù)連接來監(jiān)聽可能到來的連接請(qǐng)求(屬于server端),為了連接兩個(gè)藍(lán)牙設(shè)備必須有一個(gè)設(shè)備作為服務(wù)器打開一個(gè)服務(wù)套接字。當(dāng)遠(yuǎn)端設(shè)備發(fā)起連接連接請(qǐng)求的時(shí)候,并且已經(jīng)連接到了的時(shí)候,Blu
6、eboothServerSocket類將會(huì)返回一個(gè)BluetoothSocket。BluetoothClass類:描述了一個(gè)藍(lán)牙設(shè)備的一般特點(diǎn)和能力。它的只讀屬性集定義了設(shè)備的主、次設(shè)備類和一些相關(guān)服務(wù)。然而,它并沒有準(zhǔn)確地描述所有該設(shè)備所支持的藍(lán)牙文件和服務(wù),而是作為對(duì)設(shè)備種類來說的一個(gè)小小暗示。參考學(xué)習(xí)...要操作藍(lán)牙,先要在AndroidManifest.xml里加入權(quán)限:<
7、uses-permissionandroid:name="android.permission.BLUETOOTH"/>Android所有關(guān)于藍(lán)牙開發(fā)的類都在android.bluetooth包下,只有8個(gè)類。常用的四個(gè)類如下所示:1.BluetoothAdapter藍(lán)牙適配器,直到我們建立BluetoothSocket連接之前,都要不斷操作它。BluetoothAdapter里的方法很多,常用的有以下幾個(gè):cancelDiscovery()取消發(fā)現(xiàn),也就是說當(dāng)我們正在搜索設(shè)備的時(shí)候調(diào)用這個(gè)方法將不再繼續(xù)搜索di
8、sable()關(guān)閉藍(lán)牙enable()打開藍(lán)牙,這個(gè)方法打開藍(lán)牙不會(huì)彈出提示,更多的時(shí)候我們需要問下用戶是否打開,以下兩行代碼同樣是打開藍(lán)牙,但會(huì)提示用戶:Intentenabler=newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enabler,reCode);//同sta