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