之前在和Unity對接藍(lán)牙開發(fā)(和theme,brightness后面發(fā)博客進(jìn)行講解),現(xiàn)在將這一塊梳理下。目前我這邊的流程是android端做接口,然后unity調(diào)用android的接口進(jìn)行下面一些操作,此外還有android主動調(diào)用unity的情況。
藍(lán)牙主要分五大塊
1.開啟(關(guān)閉)藍(lán)牙
2.獲取設(shè)備列表(廣播)
3.連接(廣播)
4.斷開(廣播)
下面一個個講解。
1.開啟藍(lán)牙
BluetoothAdapter…enable()進(jìn)行開啟
disable()進(jìn)行關(guān)閉
2.獲取設(shè)備列表(廣播)
進(jìn)入首頁開啟開關(guān)后,Unity會調(diào)用android的一個接口來開啟獲取設(shè)備列表(在我那個工程定義為startScan),然后會注冊一個廣播
intentFilter.addAction("android.bluetooth.device.action.FOUND");
intentFilter.addAction("android.bluetooth.adapter.action.DISCOVERY_FINISHED");
通過以上兩個action來接收不斷增加的附近藍(lán)牙,隨后在onReceive進(jìn)行判斷,將NativeDevice信息傳給Unity,Unity根據(jù)此結(jié)構(gòu)將藍(lán)牙列表顯示出來。
3.連接(廣播)
3.1.判斷藍(lán)牙狀態(tài)是否開啟
3.2.構(gòu)建Receiver監(jiān)聽配對請求和連接狀態(tài)
intentFilter.addAction("android.bluetooth.device.action.BOND_STATE_CHANGED");
intentFilter.addAction("android.bluetooth.device.action.PAIRING_REQUEST");
3.3.根據(jù)綁定狀態(tài)(android.bluetooth.device.extra.BOND_STATE)的state去回調(diào)相應(yīng)的方法,比如onPairSuccess對應(yīng)state = 12 ,onPairFail對應(yīng)state = 10,另外由于我這邊需要屏蔽系統(tǒng)配對彈窗,由Unity顯示彈窗,所以接收到android.bluetooth.device.action.PAIRING_REQUEST這個情況下,我們需要abortBroadcast從而能中斷系統(tǒng)彈出配對框,接著回調(diào)給Unity,將配對碼傳過去顯示。(配對完之后就會根據(jù)state 為12 或者 10 或者其他,進(jìn)行調(diào)用不同的接口)
3.4.通過一開始初始化的mAdapter.getRemoteDevice,傳入NativeDevice中存在的address來構(gòu)建BluetoothDevice對象
3.5.再用mBluetoothHeadsetClient,mBluetoothPBAPClient,mBluetoothA2DPClient,mBluetoothMAPClient去建立連接(這四個對象都需要在init里進(jìn)行初始化),這樣就建立了連接文章來源:http://www.zghlxwxcb.cn/news/detail-478356.html
4.斷開(廣播)
和3過程類似文章來源地址http://www.zghlxwxcb.cn/news/detail-478356.html
到了這里,關(guān)于Android Unity串接Bluetooth開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!