關於安卓藍芽開發總結

2021-07-05 14:04:27 字數 3066 閱讀 1094

這幾個星期提出了乙個小專案,於是和團隊日夜加工,大概就是感測器連線51微控制器,51再通過藍芽傳送資訊到手機端。前幾天一直在研究微控制器裡面的程式,這幾天是負責寫安卓客戶端接收的介面,涉及到有關安卓藍芽的開發,仔細學習了下,略有心得,做個總結,新手感悟,望大神指點。注意,這個主要是和微控制器藍芽相連,與手機互連略有不同的,主要體現在uuid那塊,也是需要獲取,因為微控制器的串列埠藍芽uuid是固定的。整體思路可以參考。

首先得介紹關於藍芽的幾個重要的類,bluetoothadapter,bluetoothsocket,bluetoothdevice,大概用這幾個類就能做出藍芽的基本功能,當然藍芽類不多,還有其他的,詳細的大家去看看api吧。

首先來講bluetoothadapter,這個類是用來獲取本地的藍芽,以便後續對本地藍芽進行操作。

bluetoothadapter  adapter  =   bluetoothadapter. getdefaultadapter ()       ————本地藍芽物件的獲得

再來是bluetoothdevice,這個類是用來獲取搜尋到附近的藍芽裝置的物件,也就是說搜到對方了,用bluetoothdevice去獲取乙個物件,然後物件裡裝有名稱,位址之類可用的

bluetoothdevice   device =  intents.getparcelableextra(bluetoothdevice.extra_device)  ————附近藍芽物件的獲得,這個intent我們稍後再說。

最後是bluetoothsocket,顧名思義,就是藍芽通訊的類了,可以獲得流物件。

bluetoothsocket  cliensocket=device.createrfcommsockettoservicerecord(uuid);   ——————定義與xx藍芽連線的socket

cliensocket.connect();   ——————開始連線

重要的類就是這三個,至於類中的方法不詳細說明,用提示快捷鍵去檢視下,各種方法也是見名知意,接下來我們詳細講下思路。

一、我首先是初始化了乙個本地藍芽的物件,用來對我手機上的藍芽進行操作嘛,再次之前,我先用**開啟了藍芽的開關。

intent intent = new intent(bluetoothadapter.action_request_enable);

toast.maketext(mainactivity.this, "開啟藍芽", toast.length_short).show();

startactivityforresult(intent, 1);

bluetoothadapter  adapter  =   bluetoothadapter. getdefaultadapter ();

adapter.startdiscovery();

二、我註冊了乙個廣播接收,為什麼要註冊廣播接收呢,原來仔細了解藍芽機制,大概意思是開啟搜尋附近藍芽裝置時,如果搜尋到了,會返還相應的訊號,那我們如何接收這些      訊號呢?自然是註冊乙個廣播接受者啦,來看看它到底返回的資訊。

class mybroadcastreceiver extends broadcastreceiver

if(bluetoothadapter.action_discovery_finished.equals(action))

listview.setadapter(marrayadapter);}}

解釋:這段**還是挺簡單的吧~就是寫個類繼承broadcastreceiver,然後重新裡面的onreceive方法,這個方法裡呢,它會獲取乙個intent,不要小瞧這個intent哦                 ,裡面可是包含著很多擁有資訊的,首先你這個intent是幹嘛的幹嘛的想幹嘛,好,我獲取你的action資訊來看看你的舉動目的,這個舉動目的也就是我們剛才說的                 返回的資訊,一般來說有bluetoothdevice.action_found(就是找到裝置啦)、bluetoothadapter.action_discovery_finished(找累了,找完了                  )、諸如此類的常量資訊。然後我們做個判斷,再用剛才講的獲取到找到的device裝置,這樣就ok了.

三、找到了裝置,那就連線咯,還等什麼。這時就用到bluetoothsocket這個類了。恩,沒什麼好說的,這步比較簡單。不過注意捕捉異常。

bluetoothsocket  cliensocket=device.createrfcommsockettoservicerecord(uuid);   ——————定義與xx藍芽連線的socket

cliensocket.connect();

四、連線了幹嘛,自然是通訊啦,到這步其實就不太算藍芽的知識範圍啦,就是我們以前學的輸入輸出流,獲取資訊啦,這裡我嘗試了乙個比較新潮的用法(對我而言= = ),        以前用的是thread+handle,現在用下傳說的asynctask。這裡寫下簡單**步驟。

乙個類繼承了asynctask類,重寫protected boolean doinbackground(void... params)方法,在這裡加入我們想要處理的耗時的事情,自然是資料的獲取了。

inputstream  is=mainactivity.cliensocket.getinputstream();

i = is.read(arrayofbyte);

str_receiver = new string(arrayofbyte, 0, i);

chs=str_receiver.tochararray();

length =chs.length;

publishprogress();

然後在protected void onprogressupdate(integer... values)方法裡更新ui,這樣就完成啦~~~~~~~

ps:整體理解了還是比較簡單的,第一次寫總結,也不知道格式或者思路條理這些好不好,大家見諒,其實在開發過程中,還有關於listview,uuid之類的小內容,就沒有擴充套件       開來總結了,今天主題是藍芽嘛,以後有機會也寫寫,包括非同步處理的兩種方法。那藍芽總結就寫到這裡,最後附錄那裡還有關於微控制器串列埠的uuid,省的要做同樣專案的       小夥伴們就不用到處找了。

附錄:微控制器串列埠uuid     "00001101-0000-1000-8000-00805f9b34fb"

安卓藍芽開發相關

對於一般的軟體開發人員來說,藍芽是很少用到的,尤其是 android 的藍芽開發,國內的例子很少 android 對於藍芽開發從 2.0版本的 sdk才開始支援,而且模擬器不支援,測試至少需要兩部手機,所以制約了很多技術人員的開發,剛巧這段時間公司有藍芽開發的需求,我看了很多國內 國外的資料,又研究...

安卓開發筆記 藍芽開發

一般情況下用預設的藍芽介面卡就好了 private static bluetoothadapter adapter bluetoothadapter.getdefaultadapter 貼幾個常用的方法 開啟藍芽功能 public static void openbluetooth 關閉藍芽功能 p...

安卓裝置之藍芽

第一步 藍芽許可權的申請 第二步 設定藍芽 通常,乙個手機裡面只有乙個藍芽裝置器,稱為bluetoothadapter。bluetoothadapter mbluetoothadapter bluetoothadapter.getdefaultadapter 通過bluetoothadapter的g...