微信小程序如何搜索iBeacon设备

1.首先在utils文件夹下创建bluetooth.js和ibeacon.js

2.在 bluetooth.js文件中写入

module.exports = {
  initBluetooth: function () {
    // 初始化蓝牙模块
    wx.openBluetoothAdapter({
      success: function (res) {
        console.log('蓝牙模块初始化成功');

      },
      fail: function (res) {
        console.log('蓝牙模块初始化失败');

      }
    });
  }
}

3.在 ibeacon.js中写入

module.exports = {
  registerIBeaconCallback: function (callback) {
    // 注册iBeacon回调函数
    wx.onBeaconUpdate(function (res) {
      callback(res);
    });
    // 开始搜索iBeacon设备
    wx.startBeaconDiscovery({
      uuids: ['FDA50693-A4E2-4FB1-AFCF-C6EB07647826'], // iBeacon设备的uuid
      success: function (res) {
        console.log('开始搜索iBeacon设备');

      },
      fail: function (res) {
        console.log('搜索iBeacon设备失败');
      }
    });
  },

}

4.在需要获取蓝牙的wxml中的page上方引入

const bluetooth = require('../../utils/bluetooth');
const ibeacon = require('../../utils/ibeacon');

5.在下方onshow事件中调用

 bluetooth.initBluetooth();
    // 注册iBeacon回调函数
    ibeacon.registerIBeaconCallback(this.handleIBeacon);

6.在page内写入获取ibeacon设备代码及停止搜索

  handleIBeacon: function (res) {
    // 处理搜索到的iBeacon设备    
    let _this = this
    if (res.beacons.length > 0) {
      wx.stopBeaconDiscovery({
        success: function (res) {
          console.log('停止搜索 iBeacon 设备',res);
        },
        fail: function (res) {
          console.log('停止搜索 iBeacon 设备失败');

        }
      });
      let devices = this.data.devices

      devices.push(res.beacons[0].uuid)
      this.setData({
        devices: devices
      })
      console.log(this.data.devices);
     
    }
    
    // 在这里可以对搜索到的设备进行进一步处理
  },

7.最后如果想检测蓝牙是否连接可以加上 wx.onBluetoothAdapterStateChange事件

 wx.onBluetoothAdapterStateChange(function(res) {
      console.log("蓝牙适配器状态变化", res);
      if (res.available) {
        console.log("蓝牙适配器可用");
  
      } else {
        console.log("蓝牙适配器不可用");
      
      }
    });

 8.如果出现报错,则需要安装 npm install @babel/runtime,或检查是否正确引用了@babel/runtime/helpers/defineProperty.js 模块

module '@babel/runtime/helpers/defineProperty.js' is not defined, require args is '../../@babel/runtime/helpers/defineProperty' 
 Error: module '@babel/runtime/helpers/defineProperty.js' is not defined, require args is 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

citeSpace保姆级安装使用教程

citeSpace保姆级安装使用教程 文章目录 citeSpace保姆级安装使用教程CiteSpace功能与参数区安装使用知网数据导出citespace数据导入结果 设置操作隐藏节点 CiteSpace功能与参数区 安装 citeSpace安装教程 citespace下载 网址:https://citespace.podia.com/ 安装之…

Nginx 的 gzip 压缩

目录 1. 为什么要开启gzip 压缩 2.对网站配置文件进行修改 1. 为什么要开启gzip 压缩 nginx使用gzip压缩主要是为了降低网站的带宽消耗和提升访问速度。通过对页面进行压缩,可以减少传输的数据量,从而减少网络传输的时间和带宽消耗。 当浏览器接收到压…

视频剪辑指南:如何将多个视频快速批量合并的方法

在日常生活和工作中,经常要将多个视频片段合并为一个完整的视频。但是手动剪辑每个视频不仅费时,而且效率低下。那么如何解决这个问题呢,可以采用一些快速批量合并视频的方法。现在一起来看看云炫AI智剪如何批量合并视频的具体步骤吧。 合并…

天津大数据培训机构 大数据时代已到来!

大数据时代已经来临,越来越多的人开始关注大数据,并且准备转行大数据。但是,对于一个外行人或者小白来说,大数据是什么?大数据需要学什么?什么样的大数据培训机构是靠谱的?这几个简单的问题就足…

数据库 补充 树,红黑树,b树,b+树

01.树 02.二叉树和二叉平衡树 03.平衡二叉树的恢复 将导致不平衡的结点称作被破坏者,破坏了结点的平衡的结点成为破坏者,经过调整可以让该树平衡的结点称为调整结点。 LL型: 以被破坏者的左孩子结点作为调整结点,对其进行右旋…

【书生·浦语大模型实战营01】《书生·浦语大模型全链路开源体系》

《书生浦语大模型全链路开源体系》 1. 大模型成为热门关键词 LLM发展时间轴 2. 书生浦语全链条开源开放体系 微调:XTuner 支持全参数微调支持LoRA等低成本微调 评测:OpenCompass 全方位评测,性能可复现80套评测集, 40万道题目…

网工内推 | 保险业网工,有绩效奖金,CISP认证优先,最高16K

01 华贵人寿保险股份有限公司 招聘岗位:系统管理岗(主机管理方向) 职责描述: 1.负责数据中心私有云平台的规划建设以及后期的运行维护; 2.负责公司操作系统的规划、部署与日常维护; 3.负责操作系统运维相关…

idea设置注释在鼠标当前位置,使其不从顶格位置添加注释

idea设置注释在鼠标当前位置,使其不从顶格位置添加注释 默认情况下,注释都是从改行的顶格开始,看起来不太美观而且不易清除分级 设置让其从代码处开始,步骤:File–>Sttings–>Editor–>Code Style &#xff…

在 IDEA 中创建JavaWeb 项目的方式(超详细步骤教程和遇到的问题)

目录 0-1项目图片操作步骤链接0-2项目结构预览1.新建Project2.定义项目名称3.创建完成后项目结构4.创建config文件夹4.1 作用 5.在WEB-INF下创建lib文件夹5.1然后搞几个常用的jar包放入5.1.1jar包全选中后右键选择放入类库5.1.2jar包全选中后右键选择放入类库 6.创建src下文件夹…

【Java并发】深入浅出 synchronized关键词原理-下

上一篇文章,简要介绍了syn的基本用法和monter对象的结构,本篇主要深入理解,偏向锁、轻量级锁、重量级锁的本质。 对象内存布局 Hotspot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据 (Instance Da…

Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C) Baumer工业相机Baumer工业相机的图像转换为OpenCV的Mat图像的技术背景在NEOAPI SDK里实现相机图像转换为Mat图像格式联合OpenCV实现相机图像转换为Mat图像格式测试演示图 工业相机…

页面自适应postcss-pxtorem配置

一、项目背景 uniappvue3tsvitepiniavant 二、安装postcss-pxtorem npm i postcss-pxtorem三、vite.config.ts配置 import pxtorem from "postcss-pxtorem";export default defineConfig({plugins: [uni(),Components({resolvers: [VantResolver()]})],css: {pos…

【Java集合篇】HashMap 在 get 和 put 时经过哪些步骤

HashMap在get和put时经过哪些步骤? ✔️ 典型解析✔️get方法✔️put方法✔️ 拓展知识仓✔️ HashMap如何定位key✔️ HashMap定位tablelndex的骚操作作✔️HashMap的key为null时,没有hashCode是如何存储的?✔️ HashMap的value可以为null吗? 有什么优缺点讷? …

ZkSync第一Dex空投交互全教程,Holdstation ZK热点不容错过

2023 年 12 月 8 日,在以太坊基金会的 176 次会议上,开发人员一致同意,如果事情进展顺利,将在 2024 年初定 Goerli 分叉日期,目标是能在 2024 年 1 月激活 Goerli Dencun 测试网,预计能够在 2024 年 3 月~ …

SOFA Framework源代码及插件Win11编译开发环境配置

这篇文章主要记录详细的SOFA Framework软件的源代码编译环境配置过程,开发环境基于Win系统,编译完成后,可以在插件或框架的源代码上进行开发集成。本文纯手写输入,言简意赅,以大方向和思路为准,具体需要注意…

torch.meshgrid和np.meshgrid的区别

numpy中meshgrid: 把数组a当作一行,再根据数组b的长度扩充行。 把数组b当作一列,再根据数组a的长度扩充列。 torch中meshgrid: 把数组a当作一列,再根据数组b的长度扩充列。 把数组b当作一行,再根据数组a的…

前端 js 基础对象 (3)

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…

C++ 释放指针

在C中&#xff0c;释放指针通常使用delete或delete[]操作符&#xff1b; 如果指针指向的是单个对象&#xff0c;可以使用delete操作符进行释放&#xff1b; 在释放完内存后&#xff0c;最好将指针置为nullptr&#xff0c;以避免出现悬空指针&#xff08;dangling pointer&#…

LeGO-LOAM 几个特有函数的分析(2)

接上回LeGO-LOAM 几个特有函数的分析&#xff08;1&#xff09; 二、广度优先遍历 广度优先遍历&#xff08;Breadth-First Search, BFS&#xff09;是一种用于遍历或搜索树或图的算法。这种算法从树的根&#xff08;或图的某一指定节点&#xff09;开始&#xff0c;然后探索…

「小明赠书活动」2024第二期《实战AI大模型》

⭐️ 赠书 - 《实战AI大模型》 从基本概念到实践技巧的&#xff0c;全方位解读AI大模型&#xff0c;手把手教你训练和部署BERT、GPT-3、ChatGPT&#xff01; 人工智能领域资深专家尤洋老师倾力打造&#xff0c;获得了 李开复、周鸿祎、颜水成 三位大咖鼎力推荐&#xff0c;一经…