android ble 4.0实现自动配对
2015-08-25 00:13
495 查看
这几天在开发与蓝牙4.0Ble的通讯,因需求要求android必须能过自动与蓝牙配对。于是就开始上网找资料,查出来最多的就是说是用 ClsUtils 这个类,说利用反射调用封起来的方法,我直接copy 拿来使用,但是不管用。发现setPin 与 cancelPairingUserInput 一起调用就会失败,ok! 废话少说,直接进入主题:
重点是android.bluetooth.device.action.PAIRING_REQUEST 接收这个广播 并且设置优先级为最大
定义广播接收者 部分代码
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(); } }
相关文章推荐
- 兼容 Android 4.4 透明状态栏与导航栏
- Android 依赖注入
- android:includeFontPadding的使用:清除TextView字体周边空白
- 推荐两个比较全的android在线源代码
- Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())
- [Android][转]Android多线程下安全访问数据库
- Android第三夜
- Android开发异常
- [Android][转]在Android上实现Java和Js交互
- android中圆环的实现
- android入门(四) 调试工具DDMS的使用
- android之VOLD:staging目录作用与ASEC文件 -总结
- Android 与Java单元测试配置
- Android中View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
- Android 高效加载大图片
- Android中的windowSoftInputMode属性详解
- Android Studio编译时间过长问题解决
- Android布局解析,图文(转)
- Android开发框架
- 总结系列--AndroidManifest.xml文件详解