android開發筆記藍芽

2021-07-05 22:00:33 字數 3955 閱讀 2103

相關類:

1.bluetoothadapter 

顧名思義,藍芽介面卡,直到我們建立bluetoothsocket連線之前,都要不斷操作它

bluetoothadapter

裡的方法很多,常用的有以下幾個:

canceldiscovery() 取消搜尋

disable()

關閉藍芽

enable()

開啟藍芽,這個方法開啟藍芽不會彈出提示,更多的時候我們需要問下使用者是否開啟,一下這兩行**同樣是開啟藍芽,不過會提示使用者:

intent intent=new intent(bluetoothadapter.action_request_enable); //開啟藍芽裝置startactivity(intent);

getdefaultadapter()

獲取預設bluetoothadapter,實際上,也只有這一種方法獲取bluetoothadapter

getname()

獲取本地藍芽名稱

getremotedevice(string address)

根據藍芽位址獲取遠端藍芽裝置

getstate()

獲取本地藍芽介面卡當前狀態(感覺可能除錯的時候更需要)

isdiscovering()

判斷當前是否正在查詢裝置,是返回true

isenabled()

判斷藍芽是否開啟,已開啟返回true,否則,返回false

listenusingrfcommwithservicerecord(string name,uuid uuid)

根據名稱,uuid建立並返回bluetoothserversocket,這是建立bluetoothsocket伺服器端的第一步

startdiscovery()

開始搜尋,這是搜尋的第一步

2.bluetoothdevice

看名字就知道,這個類描述了乙個藍芽裝置

createrfcommsockettoservicerecord(uuiduuid)

根據uuid建立並返回乙個bluetoothsocket   

這個方法也是我們獲取bluetoothdevice的目的——建立bluetoothsocket

這個類其他的方法,如getaddress(),getname(),同bluetoothadapter

3.bluetoothserversocket

如果去除了bluetooth相信大家一定再熟悉不過了,既然是socket,方法就應該都差不多,

這個類一種只有三個方法,阻塞的socket而且是

兩個過載的accept(),accept(inttimeout)兩者的區別在於後面的方法指定了過時時間,需要注意的是,執行這兩個方法的時候,直到接收到了客戶端的請求(或是過期之後),都會阻塞執行緒,應該放在新執行緒裡執行!

還有一點需要注意的是,這兩           個方法都返回乙個bluetoothsocket,最後的連線也是伺服器端與客戶端的兩個bluetoothsocket的連線

close()

這個就不用說了吧,翻譯一下——關閉!

4.bluetoothsocket,

跟bluetoothserversocket相對,是客戶端

一共5個方法,不出意外,都會用到

close(),

關閉              connect()

連線              getinptustream()

獲取輸入流

getoutputstream()

獲取輸出流

getremotedevice()

獲取遠端裝置,這裡指的是獲取bluetoothsocket指定連線的那個遠端藍芽裝置

許可權:

廣播   bluetoothdevice.action_found//查詢到乙個藍芽裝置時廣播

bluetoothadapter.action_discovery_finished//查詢結束時 廣播

bluetoothdevice.action_bond_state_changed //當藍芽裝置 匹配或者取消匹配時廣播

1.開啟藍芽

bluetoothadapter adapter = bluetoothadapter.getdefaultadapter();

if(adapter!=null)

if(devices!=null&&devices.size()>0)

}}

2 開啟藍芽的可見性,可以被其他藍芽檢測到

intent intent=new intent(bluetoothadapter.action_request_discoverable); 

intent.putextra(bluetoothadapter.extra_discoverable_duration, 300); //設定可見時間 最高300秒 

startactivity(intent);

3 掃瞄裝置

bluetoothadapter.getdefaultadapter().startdiscovery();//開始掃瞄 非同步呼叫 查詢到乙個裝置後傳送一廣播 //註冊接收藍芽廣播的

intentfilter filter=new intentfilter(bluetoothdevice.action_found); //當接收到廣播的

registerreceiver(new bluetoothreceiver(), filter);

下面是廣播接收器

class bluetoothreceiver extends broadcastreceiver  }

4 匹配設配(利用反射機制)

方法1:使用反射

method m = null;

try );

} catch (securityexception e) catch (nosuchmethodexception e)

try catch (illegalargumentexception e) catch (illegalacces***ception e) catch (invocationtargetexception e)

try catch (ioexception e)

6 傳送檔案

/*

* 傳送一指定的檔案到其它藍芽裝置

*/contentvalues cv = new contentvalues();

cv.put("uri", filepath);

cv.put("destination", address);

cv.put("direction", 0);

long ts = system.currenttimemillis();

cv.put("timestamp", ts);

getcontentresolver().insert(uri.parse("content:"), cv);

btsocket.close();

/*

* 下面一段是通過intent的方式傳送檔案

* 與上面一段的不同在於,該方式會開啟乙個資料分享方式列表,如藍芽,簡訊,email 等

* 選擇藍芽方式後也是可以傳送到其它藍芽裝置的

* 只不過偶爾也會丟擲乙個ioexception異常,所以健壯性還有待加強,如新增try/catch模組

Android 開發筆記

版本控制的注意事項 以下資料夾不要加入版本控制 bin bin是編譯的二進位制檔案的存放路徑 gen gen是android需要的資源檔案的原始檔存放的目錄 使用svn的時候要注意專案編譯的問題 在編譯的時候程式會把src資料夾裡面的檔案拷貝到bin裡面,但是svn是每個資料夾裡面都包含乙個隱藏的....

Android開發筆記

1.unable to resolve target android 4 fishjoy final未知android target problem 修改default properties 或者重啟 2.別人的開發筆記 3.真機除錯的時候,一定要下google的usb driver.或者省時省力,...

android開發筆記

1 androidmanifest.xml 解釋 3 meta data標籤使用 4 android.intent.action.main作用 6 頂部滑動導航實現 操作步驟 1 設定好布局檔案,在布局檔案中加入viewpager 2 新建號fragment的布局 3 將fm和viewlist傳入a...