蓝牙自动配对,即搜索到其它蓝牙设备之后直接进行配对,不需要弹出配对确认框或者密钥输入框。
说明如下:
- 本Demo用来连接蓝牙设备HC-05,如果要连接其他蓝牙设备,注意修改相关名字以及修改设备初始pin值。
- 将Demo安装在Android手机上,点击按钮,可以实现与目标蓝牙设备的自动配对。
- 若目标蓝牙设备为Android手机的蓝牙,则只能保证本设备不弹出配对框,对方还是会弹出配对框。但是!!不管目标蓝牙点击“确认”or“取消”,在本设备中都显示已经成功配对。实测表明,确实已经配对了,可以进行数据传输。
-
由于使用了广播机制,所以需要在Androidmanifest.xml进行如下配置:
先配置蓝牙使用权限,然后配置action,将需要用到的广播进行注册:
程序运行流程:
- 点击按钮,判断蓝牙是否打开,执行bluetoothAdapter.startDiscovery();由本地蓝牙设备扫描远程蓝牙设备,startDiscovery()方法是一个异步方法,调用后立即返回。该方法会进行蓝牙设备的搜索,持续12秒。
-
搜索时,系统会发送3个广播,分别为:
ACTION_DISCOVERY_START:开始搜索
ACTION_DISCOVERY_FINISHED:搜索结束
ACTION_FOUND:找到设备
该Intent中包含两个extra fields;
- 在广播接收类中BluetoothReceiver.java中,当设备找到之后会执行其onReceive方法。
-
String action = intent.getAction(); //得到action
第一次action的值为BluetoothDevice.ACTION_FOUND,当找到的设备是我们目标蓝牙设备时,调用createBond方法来进行配对。
ClsUtils.createBond(btDevice.getClass(), btDevice);该方法执行后,系统会收到一个请求配对的广播,即android.bluetooth.device.action.PAIRING_REQUEST。
最后进行自动配对操作。
- 配对操作借助工具类ClsUtils.java得到了Android蓝牙API中隐藏的方法,实现自动配对,不弹出配对框的功能。
代码如下:
MainActivity.java
BluetoothReceiver.java
工具类ClsUtils.java
Androidmanifest.xml