android bluetooth 藍牙設(shè)備之間自動配對

android bluetooth 藍牙設(shè)備之間自動配對

ID:12588140

大?。?4.86 KB

頁數(shù):20頁

時間:2018-07-17

android bluetooth 藍牙設(shè)備之間自動配對_第1頁
android bluetooth 藍牙設(shè)備之間自動配對_第2頁
android bluetooth 藍牙設(shè)備之間自動配對_第3頁
android bluetooth 藍牙設(shè)備之間自動配對_第4頁
android bluetooth 藍牙設(shè)備之間自動配對_第5頁
資源描述:

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

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

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

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

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

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

6、lPairingUserInput()取消用戶輸入密鑰框,個人覺得一般情況下不要和setPin(setPasskey、setPairingConfirmation、setRemoteOutOfBandData)一起用,這幾個方法都會remove掉map里面的key:value(也就是互斥的)。???3、藍牙耳機、手柄等一些無法手動配置的設(shè)備是如何完成自動配對的。???在源碼里面有一個自動配對的方法,也就是把pin值自動設(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方法時被調(diào)用,首先?Checkifitsadock(正常輸入的密鑰,走正常配對方式,雙方輸入匹

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

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

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