android bluetooth 藍(lán)牙設(shè)備之間自動(dòng)配對(duì)

android bluetooth 藍(lán)牙設(shè)備之間自動(dòng)配對(duì)

ID:12588140

大?。?4.86 KB

頁數(shù):20頁

時(shí)間:2018-07-17

android bluetooth 藍(lán)牙設(shè)備之間自動(dòng)配對(duì)_第1頁
android bluetooth 藍(lán)牙設(shè)備之間自動(dòng)配對(duì)_第2頁
android bluetooth 藍(lán)牙設(shè)備之間自動(dòng)配對(duì)_第3頁
android bluetooth 藍(lán)牙設(shè)備之間自動(dòng)配對(duì)_第4頁
android bluetooth 藍(lán)牙設(shè)備之間自動(dòng)配對(duì)_第5頁
資源描述:

《android bluetooth 藍(lán)牙設(shè)備之間自動(dòng)配對(duì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、AndroidBluetooth學(xué)習(xí)(3)藍(lán)牙設(shè)備之間自動(dòng)配對(duì)0人收藏此文章,?我要收藏發(fā)表于6個(gè)月前(2013-03-2112:01),已有654次閱讀,共0個(gè)評(píng)論前言(android2.3版本,4.0版本由于是隨機(jī)獲取pin值,沒有研究過):???1、藍(lán)牙設(shè)備之間自動(dòng)配對(duì),需要兩個(gè)設(shè)備都安裝進(jìn)行配對(duì)的apk(網(wǎng)上好多自動(dòng)配對(duì)的帖子都沒有說明情況)???2、在自動(dòng)匹配的時(shí)候想通過反射調(diào)用BluetoothDevice的setPin、createBond、cancelPairingUserInput實(shí)現(xiàn)設(shè)置密鑰、配對(duì)請(qǐng)求創(chuàng)建、取消

2、密鑰信息輸入等。??????1)createBond()創(chuàng)建,最終會(huì)調(diào)到源碼的BluetoothService的createBond(Stringaddress)方法,通過對(duì)源碼淺顯的了解,createBond主要是寫入匹配密鑰(BluetoothService的writeDockPin())以及進(jìn)入jni注冊(cè)回調(diào)函數(shù)onCreatePairedDeviceResult觀察匹配結(jié)果比如:??//Pinsdidnotmatch,orremotedevicedidnotrespondtopin??????//requestintime

3、????????????//Werejectedpairing,ortheremotesiderejectedpairing.This??????//happensifeithersidepresses'cancel'atthepairingdialog.????????????//Notsureifthishappens?????????????//Otherdeviceisnotrespondingatall????????????//alreadybonded等,在jni中創(chuàng)建了進(jìn)行匹配的device("CreatePair

4、edDevice"),這時(shí)bluetooth會(huì)發(fā)送一個(gè)ACTION_PAIRING_REQUEST的廣播,只有當(dāng)前會(huì)出現(xiàn)密鑰框的藍(lán)牙設(shè)備收到。寫完密鑰之后,發(fā)送廣播給另外一個(gè)藍(lán)牙設(shè)備接收,然后打開密鑰輸入框進(jìn)行匹配。??????2)setPin()設(shè)置密鑰,通過查看setting源碼,發(fā)現(xiàn)在確認(rèn)輸入密鑰之后會(huì)調(diào)用setPin()(如果點(diǎn)取消,就會(huì)調(diào)用cancelPairingUserInput,取消密鑰框),setPin具體通過D-BUS做了什么沒有去深究,但是在調(diào)用setPin的時(shí)候會(huì)remove掉一個(gè)map里面的鍵值對(duì)(add

5、ress:int),也就是我們?cè)谡{(diào)用setPin之后如果再去調(diào)用onCreatePairedDeviceResult,則該方法一定返回false,并且出現(xiàn)下面的打印提示:cancelUserInputNative(B8:FF:FE:55:EF:D6)calledbutnonativedataavailable,ignoring.MaybethePasskeyAgentRequestwasalreadycancelledbytheremoteorbybluez.(因?yàn)樵摲椒ㄒ矔?huì)remove掉一個(gè)鍵值對(duì))????????3)cance

6、lPairingUserInput()取消用戶輸入密鑰框,個(gè)人覺得一般情況下不要和setPin(setPasskey、setPairingConfirmation、setRemoteOutOfBandData)一起用,這幾個(gè)方法都會(huì)remove掉map里面的key:value(也就是互斥的)。???3、藍(lán)牙耳機(jī)、手柄等一些無法手動(dòng)配置的設(shè)備是如何完成自動(dòng)配對(duì)的。???在源碼里面有一個(gè)自動(dòng)配對(duì)的方法,也就是把pin值自動(dòng)設(shè)為“0000”????1/*package*/?synchronizedbooleanattemptAutoPa

7、ir(Stringaddress){2????????if?(!mBondState.hasAutoPairingFailed(address)&&3????????????????!mBondState.isAutoPairingBlacklisted(address)){4????????????mBondState.attempt(address);5????????????setPin(address,BluetoothDevice.convertPinToBytes("0000"));6????????????retur

8、n?true;7????????}8????????return?false;9????}該方法是在底層回調(diào)到j(luò)ava層的onRequestPinCode方法時(shí)被調(diào)用,首先?Checkifitsadock(正常輸入的密鑰,走正常配對(duì)方式,雙方輸入匹

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。