android 蓝牙4.0配对,android ble 4.0实现自动配对

这几天在开发与蓝牙4.0Ble的通讯,因需求要求android必须能过自动与蓝牙配对。于是就开始上网找资料,查出来最多的就是说是用 ClsUtils 这个类,说利用反射调用封起来的方法,我直接copy 拿来使用,但是不管用。发现setPin 与 cancelPairingUserInput 一起调用就会失败,ok! 废话少说,直接进入主题:

IntentFilter filter = new IntentFilter("android.bluetooth.adapter.action.STATE_CHANGED");

filter.addAction("android.bluetooth.device.action.PAIRING_REQUEST");

filter.setPriority(Integer.MAX_VALUE);

context.registerReceiver(blueBroadcastReceivetr, filter);

重点是android.bluetooth.device.action.PAIRING_REQUEST 接收这个广播 并且设置优先级为最大

定义广播接收者  部分代码

else if (intent.getAction().equals("android.bluetooth.device.action.PAIRING_REQUEST")) {

BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

if ("不是你业务的设备")

return;

try {

int mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);

// 蓝牙有两种配对类型一种是pin,一种是密钥 先搞清楚你的设备是哪一种在做,不然瞎忙活

boolean isSuccess;

switch (mType) {

case 0:

// 反射 不会自己收ClsUtils

isSuccess = ClsUtils.setPin(device.getClass(), device, 123456);

break;

case 1:

// 这个方法是我自己加的 ,不会的可以照着setPin写一个setPasskey boolean

// Bluetooth.setPasskey(int)

isSuccess = ClsUtils.setPassKey(device.getClass(), device, 123456);

}

//配对不成功就弹出来

if (isSuccess) {

// 重点 先前已经设置我的广播接收者的优先者为最高 收到广播后 停止广播向下传递

// 因为系统的配对框的消失与弹出是通过广播做到的 我看源码得知 ,我们要将它

// 扼杀在摇篮中

abortBroadcast();

// 怕没拦截成功 补上一刀 发送一个关闭对话框的广播

context.sendBroadcast(new Intent("android.bluetooth.device.action.PAIRING_CANCEL"));

}

} catch (Exception e) {

e.printStackTrace();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值