蓝牙的配对

2024-06-20 03:58
文章标签 蓝牙 配对

本文主要是介绍蓝牙的配对,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官方蓝牙Api
蓝牙之开启和关闭
蓝牙之扫描可连接设备

在这里插入图片描述

通过反射BluetoothDevice中的“createBond”和“removeBond”两个函数实现配对和移除配对

  • 创建配对
/*** 创建配对** @param device*/@RequiresApi(api = Build.VERSION_CODES.KITKAT)public void CreateBond(BluetoothDevice device){if (device==null)return;if (!BluetoothManager.newInstance().isBlueEnable()){return;}if (BluetoothManager.newInstance().getBluetoothAdapter().isDiscovering()){BluetoothManager.newInstance().getBluetoothAdapter().cancelDiscovery();}/**如果该蓝牙没有配对*/if (device.getBondState()==BluetoothDevice.BOND_NONE){try {//反射Method createBondMethod = device.getClass().getMethod("createBond");//配对密码
//                String pinPwd = "1234";
//                device.setPin(pinPwd.getBytes());Boolean returnValue = (Boolean) createBondMethod.invoke(device);returnValue.booleanValue();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
  • 取消配对
/*** 取消配对** @param device*/public void cancelBond(BluetoothDevice device){if (device==null)return;if (!BluetoothManager.newInstance().isBlueEnable()){return;}/**如果该蓝牙没有配对*/if (device.getBondState()==BluetoothDevice.BOND_NONE){try {//反射Method createBondMethod = device.getClass().getMethod("removeBond");Boolean returnValue = (Boolean) createBondMethod.invoke(device);returnValue.booleanValue();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
  • 通过广播接收配对状态

注册广播

public void  init(){IntentFilter filter4 = new IntentFilter(BluetoothDevice.ACTION_PAIRING_REQUEST);IntentFilter filter5 = new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED);getContext(). registerReceiver(pinBlueReceiver,filter4);getContext(). registerReceiver(pinBlueReceiver,filter5);}

广播接收器

 public class PinBlueReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();Log.d(TAG, "action:" + action);BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);if (BluetoothDevice.ACTION_PAIRING_REQUEST.equals(action)){try {//1.确认配对Method setPairingConfirmation = device.getClass().getDeclaredMethod("setPairingConfirmation",boolean.class);setPairingConfirmation.invoke(device,true);//2.终止有序广播Log.d("order...", "isOrderedBroadcast:"+isOrderedBroadcast()+",isInitialStickyBroadcast:"+isInitialStickyBroadcast());//如果没有将广播终止,则会出现一个一闪而过的配对框。abortBroadcast();//3.调用setPin方法进行配对...Method removeBondMethod = device.getClass().getDeclaredMethod("setPin", new Class[]{byte[].class});Boolean returnValue = (Boolean) removeBondMethod.invoke(device, new Object[]{pin.getBytes()});} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {switch (device.getBondState()) {case BluetoothDevice.BOND_NONE:Log.d(TAG, "取消配对");break;case BluetoothDevice.BOND_BONDING:Log.d(TAG, "配对中");break;case BluetoothDevice.BOND_BONDED:Log.d(TAG, "配对成功");break;}}}}

这篇关于蓝牙的配对的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1077036

相关文章

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

蓝牙ble数传芯片推荐,TD5327A芯片蓝牙5.1—拓达半导体

蓝牙数传芯片TD5327A芯片是一款支持蓝牙BLE的纯数传芯片,蓝牙5.1版本。芯片的亮点在于性能强,除了支持APP端直接对芯片做设置与查询操作,包括直接操作蓝牙芯片自身的IO与PWM口以外,还支持RTC日历功能,可以做各类定时类操作,极大丰富了蓝牙在IOT产品中的应用。此外,在数传应用方面,此芯片支持串口流控功能,提大提高了数据传输的稳定与可靠性。 拓达蓝牙芯片特点: 支持RTC日历功能,超

uniapp 低功耗蓝牙BLE分包

ble.js // 分包写入蓝牙async sendWriteBLECharacteristicValue(deviceId,serviceId,writeCharacteristicId,readCharacteristicId,buffer,success, // 成功回调failure, // 失败回调) {const offset = 500; // 偏移量let pos = 0;

2021-02-16物料档案条码添加和蓝牙条码标签打印,金蝶安卓盘点机PDA,金蝶仓库条码管理WMS系统

物料档案条码添加和蓝牙条码标签打印,金蝶安卓盘点机PDA https://member.bilibili.com/platform/upload-manager/article 本期视频我们来讲解一下汉点机PDA条码添加和条码标签蓝牙便携打印: 在实际使用中,我们商品有两种情况: 一种是商品本身就有条码, 比如:超市卖的可口可乐,牛奶等商品,商品本身就有69开头的国标码,那么我们就可以使用盘点

Android蓝牙开发(一)之打开蓝牙和设备搜索

private BluetoothManager bluetoothmanger; private​ BluetoothAdapter bluetoothadapter; /** 判断设备是否支持蓝牙 */ bluetoothmanger = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); bluetooth

基于51单片机计步器—无线蓝牙APP上传

基于51单片机计步器设计 (程序+原理图+设计报告) 功能介绍 具体功能: 本设计由STC89C52单片机最小系统+ADXL345加速度传感器+lcd1602液晶电路+蓝牙模块电路+呼吸灯电路+电源电路组成。 1.通过ADXL345检测步数,然后通过蓝牙模块将步数,路程,卡路里及运动状态实时传输到手机; 2.有动态呼吸灯指示走路情况; 3.液晶lcd1602实时显示步

【深海王国】小学生都能做的APP?AppInventor、BLE蓝牙、Arduino联合开发你的第一个手机远程控制程序(7)

Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督依旧为大家带来小学生都能学会的APP制作教程,帮你一周内快速开发一款可以和单片机无线通讯的手机蓝牙APP,let’s go! (7)完结篇:APP最终美化、配色、logo一应俱全 不知不觉,本系列已经来到了最后一节,大都督看好你!继续加油!最后一节,我们将完成整个手机远程控制

蓝牙模块在工业自动化中的应用

随着科技的快速发展,工业自动化已成为现代工业生产的重要组成部分。蓝牙模块作为一种无线通信技术,其在工业自动化领域的应用日益广泛。本文将探讨蓝牙模块在工业自动化领域的具体应用场景,分析蓝牙模块如何提升工业自动化的效率和灵活性,并讨论面临的挑战和潜在解决方案。 蓝牙模块在工业自动化中的具体应用场景 无线传感器网络 在工业自动化中,无线传感器网络是实现实时监测和数据采集的重要工具。蓝牙模块

[Android源码分析]蓝牙打开流程分析——jni层之上的方方面面

在前面的UI分析的文章中我们已经发现,其实不管是设置中的开关和fragment之后的开关最终都是关联到BluetoothEnabler中去的,所以,我们直接去看这个里面对于开关的处理,开关的处理当然就是onCheckedChanged这个函数了,哈哈~~直接分析。。 1、蓝牙打开的按键处理 public void onCheckedChanged(CompoundButto

[Android源码分析]从蓝牙界面看设置中fragment的实现

本文和上一篇博文的关联性较大,基本属于后续分析篇。 上一篇博文地址:http://blog.csdn.net/u011960402/article/details/12612173 2. Settings中蓝牙的fragment          其实在开机情况下,我们还会看到另外一个界面,就是点击一下蓝牙的那个header,会显示如图2所示的界面。这个界面是如何实现的呢,我们来着重分析一