蓝牙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.mzph.cn/news/790379.shtml

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

相关文章

全球范围内2nm晶圆厂建设加速

随着人工智能浪潮席卷而来,先进制程芯片的重要性日益凸显。当前,3nm工艺节点是行业内最先进的节点。与此同时,台积电、三星、英特尔、Rapidus等厂商正积极布局建设2nm晶圆厂。台积电与三星此前计划于2025年量产2nm芯片,而Rapidus则…

02-JDK新特性-Stream流

Stream流 什么是Stream流 Stream流是Java 8中的一个新特性,它提供了一种处理集合和数组的方式。Stream流可以让我们以一种更加简洁、高效、可读性更强的方式来处理数据。 Stream流可以用于过滤、映射、排序、聚合等操作,它可以让我们避免使用循环和条件…

实验2:CLI的使用与IOS基本命令

1、实验目的 通过本实验可以掌握: CLI的各种工作模式个CLI各种编辑命令“?” 和【Tab】键使用方法IOS基本命令网络设备访问限制查看设备的相关信息 2、实验拓扑 CLI的使用与IOS基本命令使用拓扑如下图所示。 3、实验步骤 (1)CLI模式的切…

openwrt开发包含路由器基本功能的web问题记录

1.这里的扫描怎么实现的先找一些luci代码,在openwrt21版本后,luci用js替换了lua写后台,先找一些代码路径 在openrwt15这部分代码是在这个目录下 feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm 里面包含…

自然语言处理NLP概述

大家好,自然语言处理(NLP)是计算机科学领域与人工智能领域中的一个重要方向,其研究能实现人与 计算机之间用自然语言进行有效通信的各种理论和方法。本文将从自然语言处理的本质、原理和应用三个方面,对其进行概述。 一、NLP的本质 NLP是一…

[HackMyVM]靶场Boxing

难度:Medium kali:192.168.56.104 靶机:192.168.56.143 端口扫描 ┌──(root㉿kali2)-[~/Desktop] └─# nmap 192.168.56.143 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-03 19:25 CST Nmap scan report for staging-env.boxing.hmv (192.168.56.143) Host …

v-text 和v-html

接下来&#xff0c;我讲介绍一下v-text和v-html的使用方式以及它们之间的区别。 使用方法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-widt…

计算机网络_工具

从你的电脑到指定ip网站&#xff0c;用时3ms ttl TTL Time To Live 数据包存活时间 指一个数据包在经过一个路由器时&#xff0c;可传递的最长距离&#xff08;跃点数&#xff09;。每当数据包经过一个路由器时&#xff0c;其存活次数就会被减一 256 - 249 7&…

软件设计师28--SQL语言

软件设计师28--SQL语言 考点1&#xff1a;普通查询SQL语言SQL语言 - 查询例题&#xff1a; 考点2&#xff1a;分组查询SQL语言 - 查询例题&#xff1a; 考点3&#xff1a;权限控制SQL语言例题&#xff1a; 考点1&#xff1a;普通查询 SQL语言 SQL语言 - 查询 例题&#xff1a;…

python 字符串写入 csv 被拆分问题

问题与现象 在使用csv的writerow或者writerows方法时&#xff0c;直接写入字符串会导致字符串被分割成一个字符占一个单元格的问题。 分析 查看writer源码&#xff0c;可以看到源码中的提示Iterable[Any]&#xff0c;说明我们所写内容必须转化为列表 class _writer:dialect…

远程登录服务器(ubuntu20.04)在自己账号下的虚拟环境(python3.6)安装Jupyter并连接pycharm使用

参考&#xff1a;Jupyter notebook/lab安装及远程访问 1、安装jupyter pip install notebook遇到的问题&#xff1a; &#xff08;1&#xff09;运行这个指令之前尝试了好多方法都安不上 此前还尝试了更新pip之类的&#xff0c;大家安不上也可以先更新pip试试。 &#xff0…

职场聚餐:搭建沟通桥梁,促进团队凝聚力

在职场中&#xff0c;聚餐作为一种非正式的社交活动&#xff0c;不仅能够增进同事间的了解&#xff0c;还有助于提升团队凝聚力。本文将探讨职场聚餐的重要性以及如何组织一场成功的职场聚餐。 一、职场聚餐的重要性 1. 搭建沟通桥梁&#xff1a;职场聚餐为员工提供了一个轻松愉…

电商好评语整理与优化:让繁琐工作变得轻松高效

在电子商务领域&#xff0c;客户的好评是店铺信誉和产品质量的重要体现。然而&#xff0c;整理和优化这些好评语却是一项既繁琐又需要细致耐心的工作。本文将探讨如何高效地进行电商好评语的筛选、分类和优化&#xff0c;让这一工作变得更加轻松和高效。 一、明确整理目的 在开…

webapi 允许跨域

1.在Nuget安装webapi.cors 添加完会有这个包 然后在项目App_Start 目录下的WebApiConfig.cs里面添加 // Web API 配置和服务// 添加跨域设置config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

[C++ ]21:哈希+海量数据处理

[C ]21:哈希海量数据处理 一.哈希&#xff1a;1.位图&#xff1a;1.题目一&#xff1a;方法一&#xff1a;方法二&#xff1a; 2.题目二&#xff1a;方法一&#xff1a;补充&#xff1a; 3.题目三&#xff1a;方法一&#xff1a;双位图 4.题目四&#xff1a; 二.布隆过滤器&…

智慧工地安全+绿色施工方案

塔机监测 塔吊监测可以实现对塔机监测、群塔防碰撞、塔机区域防护和吊钩可视化 1司机身份识别认证:只有司机在监控设备进行刷卡、指纹、人脸、虹膜验证身份后才能进行设备的作业操作。 2运行工况采集与显示:清晰实时显示起重机械设备运行工况,主要显示的内容:起重量、起…

k8s的pod访问service的方式

背景 在k8s中容器访问某个service服务时有两种方式&#xff0c;一种是把每个要访问的service的ip注入到客户端pod的环境变量中&#xff0c;另一种是客户端pod先通过DNS服务器查找对应service的ip地址&#xff0c;然后在通过这个service ip地址访问对应的service服务 pod客户端…

jstat命令

jstat 是一个强大的命令行工具&#xff0c;用于监控 Java 应用程序的运行时状态&#xff0c;特别是与垃圾收集&#xff08;GC&#xff09;相关的统计信息和内存使用情况。下面是一个使用 jstat 监控特定 Java 进程的垃圾回收统计信息的具体例子&#xff1a; 假设有一个正在运行…

‘iostream‘ file not foundclang(pp_file_not_found)

概要 在 macOS 用 VSCode 打开 test.cpp 文件&#xff0c; 使用 CMake 构建&#xff0c; 生成了 compile_commands.json 看起来也正常。遇到 iostream 头文件画红色波浪线的报错&#xff0c; 也无法跳转。最后查出来是 brew install 了 LLVM 并且&#xff08;莫名其妙的&#…

如何使用Java语言发票查验接口实现发票真伪查验、票据ocr

随着时代潮流的发展&#xff0c;企业也在寻找更加便捷、高效的办公模式&#xff0c;尤其是针对财务工作人员而言&#xff0c;繁琐的发票录入、查验工作占据了财务人员的大部分时间。对此&#xff0c;翔云提供了发票识别接口、发票查验接口&#xff0c;那么企业应当如何将这些接…