目录
前言
一、连接&配对方法介绍
二、演示:第一次连接蓝牙设备 & 直接与蓝牙设备建立配对
三、总结
四、补充
五、Demo案例源码地址:
前言
前面两篇文章【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模式为例:
五、Demo案例源码地址:
https://gitee.com/lilium_foliage/Android-Bluetooth