微信小程序蓝牙功能开发与问题记录

一、蓝牙支持情况

1. 微信小程序对蓝牙的支持情况

目前普遍使用的蓝牙规格:经典蓝牙和蓝牙低功耗。

经典蓝牙(蓝牙基础率/增强数据率):常用在对数据传输带宽有一定要求的大数据量传输场景上,比如需要传输音频数据的蓝牙音箱、蓝牙耳机等;

蓝牙低功耗 (Bluetooth Low Energy, BLE): 从蓝牙 4.0 起支持的协议,特点就是功耗极低、传输速度更快,常用在对续航要求较高且只需小数据量传输的各种智能电子产品中,比如智能穿戴设备、智能家电、传感器等。

IOS 安卓

基础库

(当前开发基础库2.23+)

经典蓝牙 不支持 不支持,规划中 /
蓝牙低功耗 主机模式(手机作为客户端,主动连接) 微信客户端6.5.6及以上 微信客户端6.5.7及以上 1.1.0及以上
从机模式(手机作为服务端,被动连接) 支持 支持 2.10.3及以上
蓝牙信标(持续广播,但不建立连接) 支持 支持 1.2.0及以上

2. IOS和安卓设备对蓝牙低功耗的支持情况

由于项目所使用的设备是低功耗蓝牙,故对此做调研:

IOS

安卓

连接设备数量 20个 6-8个
连接速度 正常 部分安卓机经常出现连接速度慢、连接超时的现象
传输数据量(MTU)  20字节  20字节
设备搜索 支持 6.0及以上版本需要打开定位权限

注意点:1)数据量超过 MTU  (20 字节)会导致错误,需要根据蓝牙设备协议进行分片传输。其中安卓分片之间的传输需要做延迟 250ms。

2)由于Android 从微信 6.5.7 开始支持,iOS 从微信 6.5.6 开始支持,因此小程序中需要做好版本检测(wx.getSystemInfoSync 获取系统信息)。

二、基本需求

1. 添加页面:开启蓝牙搜索,选择设备并输入识别码(蓝牙连接后发送识别码,匹配成功则与设备正式建立了连接)。

2. 首页:可进行蓝牙连接、切换、断开、消息监听与数据发送(识别码匹配)。

三、蓝牙API的基本使用

整理上述涉及蓝牙API的使用:

1. 添加页面(搜索蓝牙逻辑)

// 添加页
// 检查蓝牙是否开启
checkBluetoothOn(){
    let sucCallback = this.startDiscovering
    let errCallback = () => {
        // 蓝牙未开启逻辑处理
    } 
    // 如果蓝牙开启状态,就去搜索设备
    this.getBlueState(errCallback, sucCallback)
},
// 判断手机蓝牙是否打开
getBlueState (errCallback, sucCallback) {
    this.$getBlueState(errCallback).then(res=>{
        if(res.errno === 0){
            sucCallback ? sucCallback() : ''
        } else {}
    });
},
// 蓝牙搜索逻辑 15s关闭
startDiscovering(){
    // 开始搜寻附近设备
    this.$discoveryBlue(this.found)
    setTimeout(()=>{
        this.handleStopDiscovery()
    }, 15000)
},
// 找到新设备就触发该方法 处理数据逻辑
found(res) {
    var devices = res.devices;
    devices.map(async item => {
        // 对设备信息处理
    })
},
handleStopDiscovery(){
    let stopLoading = () => {
        this.loading = false
        // 其它关闭逻辑
        
    }
    this.$stopDiscoveryBlue(stopLoading, stopLoading)
},

2. 首页(连接逻辑)

onShow() {
    // 第一次进来如果没有连接 去自动连接
    let sucCallback = (this.blueDeviceList?.length && this.isAutoConnect) ? 
           this.autoConnect : this.isConnnected
    let errCallback = () => {
        // 未开启逻辑
    }
    // 如果蓝牙开启状态 就去连接
    this.getBlueState(errCallback, sucCallback)
    this.isAutoConnect =
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值