Android蓝牙实现自动配对,无需输入密码
2015-01-21 22:50
971 查看
在项目开发中,需要连接一个蓝牙设备,实现自动配对,经过尝试和分析Android源码,最终问题得以解决:
网上较为流行的ClsUtils工具类并不能满足我的要求,
(1)首先分析一下ClsUtils工具类,通过接受Action为android.bluetooth.device.action.PAIRING_REQUEST的广播,并且在接到广播后,调用一下方法实现自动配对
ClsUtils.setPin(btDevice.getClass(), btDevice, strPsw); // 手机和蓝牙采集器配对
ClsUtils.createBond(btDevice.getClass(), btDevice);
ClsUtils.cancelPairingUserInput(btDevice.getClass(), btDevice);
缺点是,“蓝牙配对请求”对话框会显示一下,然后再消失,并且不是十分可靠,即有的时候“蓝牙配对请求”对话框弹出后不能自己消失,而蓝牙确实已经配对成功了。
(2)我的解决方案:
在开发过程中我们往往通过反射createBond方法,实现配对功能
if (mBluetoothDevice.getBondState() != BluetoothDevice.BOND_BONDED) {
Method creMethod = BluetoothDevice.class.getMethod("createBond");
creMethod.invoke(mBluetoothDevice);
}
配对成功后获取Socket对象,然后执行socket.connect()方法进行连接,开发过程中我发现即使蓝牙设备已经绑定了,在执行socket.connect()方法时还是偶尔会弹出“蓝牙配对请求”对话框,经过分析源码我发现是我创建的Socket的原因,将通过createRfcommSocket创建对象,改为通过createInsecureRfcommSocket创建socket对象后,再执行connect()方法时不会再弹出配对请求,即这种方法只需在第一次绑定成功之后,就再也不用输入密码,而是实现自动配对了。但是我不清楚这对获取的数据会有什么影响!还需要进一步了解
网上较为流行的ClsUtils工具类并不能满足我的要求,
(1)首先分析一下ClsUtils工具类,通过接受Action为android.bluetooth.device.action.PAIRING_REQUEST的广播,并且在接到广播后,调用一下方法实现自动配对
ClsUtils.setPin(btDevice.getClass(), btDevice, strPsw); // 手机和蓝牙采集器配对
ClsUtils.createBond(btDevice.getClass(), btDevice);
ClsUtils.cancelPairingUserInput(btDevice.getClass(), btDevice);
缺点是,“蓝牙配对请求”对话框会显示一下,然后再消失,并且不是十分可靠,即有的时候“蓝牙配对请求”对话框弹出后不能自己消失,而蓝牙确实已经配对成功了。
(2)我的解决方案:
在开发过程中我们往往通过反射createBond方法,实现配对功能
if (mBluetoothDevice.getBondState() != BluetoothDevice.BOND_BONDED) {
Method creMethod = BluetoothDevice.class.getMethod("createBond");
creMethod.invoke(mBluetoothDevice);
}
配对成功后获取Socket对象,然后执行socket.connect()方法进行连接,开发过程中我发现即使蓝牙设备已经绑定了,在执行socket.connect()方法时还是偶尔会弹出“蓝牙配对请求”对话框,经过分析源码我发现是我创建的Socket的原因,将通过createRfcommSocket创建对象,改为通过createInsecureRfcommSocket创建socket对象后,再执行connect()方法时不会再弹出配对请求,即这种方法只需在第一次绑定成功之后,就再也不用输入密码,而是实现自动配对了。但是我不清楚这对获取的数据会有什么影响!还需要进一步了解
相关文章推荐
- android 取消蓝牙配对框 实现自动配对 输入PIN码
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- android 取消蓝牙配对框 实现自动配对
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- Android 取消蓝牙配对框实现自动配对功能
- android 实现蓝牙自动配对连接
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- android 实现蓝牙自动配对连接
- android修改系统源码之实现蓝牙自动配对以及取消开机锁屏
- android 取消蓝牙配对框 实现自动配对
- android 利用accessibilityservice 实现自动发红包功能 (让收红包的人手抽筋)(密码不能自动输入,可以开启指纹支付)
- android 取消蓝牙配对框 实现自动配对
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- android 取消蓝牙配对框 实现自动配对
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- Android 取消蓝牙配对框 实现自动配对
- 用expect 实现切换用户时自动输入密码
- android程序代码实现改变字体颜色和输入密码的显示隐藏