相關類:
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();2 開啟藍芽的可見性,可以被其他藍芽檢測到if(adapter!=null)
if(devices!=null&&devices.size()>0)
}}
intent intent=new intent(bluetoothadapter.action_request_discoverable);3 掃瞄裝置intent.putextra(bluetoothadapter.extra_discoverable_duration, 300); //設定可見時間 最高300秒
startactivity(intent);
bluetoothadapter.getdefaultadapter().startdiscovery();//開始掃瞄 非同步呼叫 查詢到乙個裝置後傳送一廣播 //註冊接收藍芽廣播的intentfilter filter=new intentfilter(bluetoothdevice.action_found); //當接收到廣播的
registerreceiver(new bluetoothreceiver(), filter);
下面是廣播接收器
class bluetoothreceiver extends broadcastreceiver }
4 匹配設配(利用反射機制)
方法1:使用反射
method m = null;6 傳送檔案try );
} catch (securityexception e) catch (nosuchmethodexception e)
try catch (illegalargumentexception e) catch (illegalacces***ception e) catch (invocationtargetexception e)
try catch (ioexception e)
/** 傳送一指定的檔案到其它藍芽裝置
*/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...