目錄
前言
前面兩篇文章【Android】藍牙開發——經典藍牙(附完整Demo)和【Android】藍牙開發——經典藍牙配對介紹(通過手機系統藍牙演示),分別介紹了經典藍牙的開發流程以及通過手機系統藍牙演示經典藍牙的四種配對方式,今天這篇文章主討論Java代碼實現經典藍牙的配對。經典藍牙需要進行配對,一般有兩種情況下:
1、系統藍牙第一次連接設備時,需要進行配對操作。(這裏“第一次”指的是系統藍牙沒有與設備建立配對)
2、系統藍牙與設備只進行配對操作,不建立連接。
注意:如果系統藍牙已經與設備建立了配對,連接設備時就不再進行配對操作。
一、連接&配對方法介紹
1、連接方法
BluetoothDevice.createRfcommSocketToServiceRecord(UUID)
2、配對&解除配對方法(通過反射)
/** * 與設備配對 參考源碼:platform/packages/apps/Settings.git * /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java */ @SuppressWarnings("unchecked") static public boolean createBond(@SuppressWarnings("rawtypes") Class btClass, BluetoothDevice btDevice) throws Exception { Method createBondMethod = btClass.getMethod("createBond"); Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice); return returnValue.booleanValue(); }
/** * 與設備解除配對 參考源碼:platform/packages/apps/Settings.git * /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java */ @SuppressWarnings("unchecked") static public boolean removeBond(Class btClass, BluetoothDevice btDevice) throws Exception { Method removeBondMethod = btClass.getMethod("removeBond"); Boolean returnValue = (Boolean) removeBondMethod.invoke(btDevice); return returnValue.booleanValue(); }
二、演示:第一次連接藍牙設備 & 直接與藍牙設備建立配對
每一種配對模式下,左邊的圖是演示第一次連接藍牙設備,右邊圖是直接與藍牙設備建立配對。
第一次連接藍牙設備,即只調用上面的連接方法。
直接與藍牙設備建立配對,即只調用上面的配對方法。
(測試手機爲榮耀9 Android 9系統,不同的手機樣式可能會有所不同)
(1)pincode模式
(2)confirm模式
(3)passkey
(4)justwork
三、總結
仔細比對上面4種配對模式下的2組圖,可以發現:
1、pincode、confirm、passkey三種配對模式,第一次連接藍牙設備與直接配對藍牙設備均會彈出配對框。
2、而justwork配對模式,第一次連接藍牙設備會彈出配對框,而直接配對藍牙設備不會彈出配對框。
四、補充
下面演示一下,“如果系統藍牙已經與設備建立了配對,連接設備時就不再進行配對操作”的情況,以pincode模式爲例: