蓝牙BLE开发——如何实时监听蓝牙适配器状态变化及回调

uniapp 监听蓝牙适配器状态变化事件

近年来开发项目中接触比较多的与硬件设备对接,通过蓝牙与设备通讯;开发 App、微信小程序,今天分享其中如何监听蓝牙适配;近期比较忙,不定时更新,有时间会分享 uniapp开发蓝牙项目的Demo,个人分享,仅供参考。

  • 如何实时监听手机蓝牙状态变化监听回调?
  • 监听蓝牙适配器状态变化事件,蓝牙适配器状态发生变化时触发回调。

效果图

蓝牙状态变化时,返回结果;

  • Android:开启、关闭都会执行 2次
  • iOS:正常

在这里插入图片描述


在这里插入图片描述


  • 关闭 蓝牙,返回数据
{"discovering": false,"available": false
}
  • 开启 蓝牙,返回数据
{"discovering": false,"available": true
}

监听状态变化

需求:

  • 全局监听 蓝牙状态变化;
  • 不同页面,可根据当前状态变化,处理相关业务逻辑;

  • 为了方便测试,这里定义在 App.vue 中定义 监听方法;(个人所需可定义到js文件中;)
  • discovering:蓝牙适配器是否正在搜索设备(即开启监听后,搜索设备时也能监听到当前具体状态);
  • available :蓝牙适配器是否可用。
var bleAdapterChangeCallback = null;// xxxmethods: {listenerStateChange(){// 这里用 5+写的plus.bluetooth.onBluetoothAdapterStateChange((e) => {console.log('监听蓝牙适配器状态变化事件:', e);if (!e.available && !e.discovering) { // 都关闭状态// 根据个人所需处理,保存当前蓝牙连接状态this.$store.commit('SET_BLE_CONNECT_STATUS', false);if (bleAdapterChangeCallback != null) {bleAdapterChangeCallback(false);}} else if (e.available && !e.discovering) { // 蓝牙打开,未搜索设备if (bleAdapterChangeCallback != null) {bleAdapterChangeCallback(true);}}});},setBLEAdapterChangeCallback(callBack) {bleAdapterChangeCallback = callBack;},clearBLEAdapterChangeCallback(callBack) {bleAdapterChangeCallback = null;}
}

  • 在 需要 监听页面上 调用
const app = getApp();onShow() {// #ifdef APPapp.setBLEAdapterChangeCallback(this.listenerBLEState);// #endif
},
methods: {listenerBLEState(res) {console.log('当前蓝牙适配器状态结果:', res)// 例:当关闭蓝牙时重置 data 数据,开启时,刷新当前页面if (!res) {Object.assign(this.$data, this.$options.data())} else {this.reload(); // 自定义的}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589290.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【浅谈面向过程和面向对象的区别】

面向对象和面向过程是两种不同的编程范式,它们在处理问题和构建软件时有着显著的区别。 一、面向过程 1、基本概念 面向过程编程是一种早期的程序设计范型,它以事件为中心,主要关注“怎么做”,即完成任务的具体步骤。它将问题分…

用于无人机小型化设计的高精度温补晶振

用于无人机小型化设计的高精度温补晶振:TG2016SMN和TG2520SMN。无人机的发展可以说是非常的迅速,在安防,农业,交通,电力,直播等领域经常能看到无人机大显身手。无人机的应用场最是非常的广泛,功能更强&…

每日面经分享(python part1)

Python中的深拷贝和浅拷贝的区别是什么? a. 浅拷贝创建一个新的对象,但其中的可变元素仍然共享引用。只有对象的第一层被复制,而更深层次的嵌套对象仍然是引用。更改其中一个对象的属性会影响到其他对象。 b. 深拷贝创建一个完全独立的新对象…

C++——异常机制

目录 一,背景 1.1 C语言处理错误的方式 1.2 C异常概念 二,异常的使用 2.1 异常的简单使用 2.2 异常的匹配原则 2.3 异常抛对象 2.4 异常的重新抛出 2.5 异常安全 三,自定义异常体系 四,异常优缺点 4.1 优点 4.2 缺点 …

对【AI技术创业】有哪些机会进行分析和引导

文章目录 方向一:行业解决方案,以下是一些常见的行业解决方案:方向二:智能产品和服务,以下是一些智能产品和服务的示例:方向三:教育和培训 1.智能客户服务: 利用自然语言处理(NLP)和…

day10 java封装性

封装性 为什么有封装性? 为了保护数据不被随意修改,隐藏类的实现细节。增强了代码的安全性和可维护性。 该隐藏隐藏 该暴露暴露 封装性的实现? 让调用者只能通过方法操作属性。可以在方法中加入一些限制条件或数据检查的操作。 封装性的直…

局域网与城域网(练习题)

局域网与城域网 ⭐️⭐️⭐️⭐️ 红色标记为答案⭐️⭐️⭐️⭐️ ⭐️⭐️⭐️ 蓝色标记为要点解析⭐️⭐️⭐️ 1.以下关于VLAN标记的说法中,错误的是()。 A.交换机根据目标地址和VLAN标记进行转发决策 B.进入目的网段时,交换机…

ansible-自动化工具

一、ansible概述 不是C/S架构,就是一种工具 1:linux自动化运维 编写程序实现运维自动化:shell python 工具模式自动化: ①OS Provisioning: RedHat satellite;PXE(可实现dhcp和tftp&#…

moment.js 产出未知格式的时间,可能的原因

moment.js 产出未知格式的时间,可能的原因 有个问题困扰我好久了,在项目中使用格式化时间的时候会产出一些千奇百怪的格式,产出的文字我都不认识。 百思不得其解,终于今天在看代码的时候发现了这个问题。 它的表现是这样的&…

pygame--坦克大战(一)

项目搭建 本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可以通过控制我方的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认5个的(这可以自己设置),当然,如果我方坦克被敌方坦克的子弹打中,游戏结束。从…

Jmeter各组件超详细介绍

1、JMeter和Loadrunner的区别? 2、JMeter如何开发脚本的?强化脚本的技术? 代理服务器录制脚本,Fiddler录制脚本,Badboy录制脚本,根据API,手写脚本,根据抓包,手写脚本。 …

课程设计项目1.2:回音消除

01.课程设计的主要内容 02.代码效果图 1.逆系统法消除回声 2.LMS算法自适应滤波消除回声 3.用同态滤波消除回音 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复:MATLAB课程设计本公众号致力于解决找代码难&…