本文讲解cordova-plugin-ble-central插件以及如何在Wex5中使用该插件。

1.插件概述

低功耗蓝牙插件,将手机作为低功耗蓝牙中心设备,提供手机设备与低功耗蓝牙外设信息传输的能力。

注意:

1.使用该插件之前请尽量了解一些关于蓝牙开发的技术知识,方便对插件能力的理解。

2.要使用此插件,手机端蓝牙必须为低功耗蓝牙,而且需要一个低功耗蓝牙外设与其进行交互。

2.插件使用

首先,我们需要在自己的js文件中引入该插件,即“require(“cordova!cordova-plugin-ble-central”);”然后即可在js中调用相关API。

scan

扫描发现BLE外设

ble.scan(services, seconds, success, failure);

此方法可以扫描发现周边的BLE外设。每发现一个可用的外设就会调用该方法的成功回调,并且返回外设的简略信息,扫描会在数秒内停止。返回值类型如下:

{

    “name”: “TI SensorTag”,

    “id”: “BD922605-1B07-4D55-8D09-B66653E51BBA”,

    “rssi”: -79,

    “advertising”: /* ArrayBuffer or map */

}

“advertising”是外设的广播信息,Android与iOS的数据类型稍微有点差别。在Android平台,广播信息可以直接显示,但是iOS上不允许直接访问,所以返回一个字典。无论iOS平台还是Android平台,广播信息都包含有发射的信息,以及扫描响应信息。

Android

{

    “name”: “demo”,

    “id”: “00:1A:7D:DA:71:13”,

    “advertising”: ArrayBuffer,

    “rssi”: -37

}

iOS

{

    “name”: “demo”,

    “id”: “D8479A4F-7517-BCD3-91B5-3302B2F81802”,

    “advertising”: {

        “kCBAdvDataChannel”: 37,

        “kCBAdvDataServiceData”: {

            “FED8”: {

                “byteLength”: 7 // data not shown

            }

        },

        “kCBAdvDataLocalName”: “demo”,

        “kCBAdvDataServiceUUIDs”:

[“FED8”],

        “kCBAdvDataManufacturerData”: {

            “byteLength”: 7  // data not shown

        },

        “kCBAdvDataTxPowerLevel”: 32,

        “kCBAdvDataIsConnectable”: true

    },

    “rssi”: -53

}

参数描述:

  • services: 想要发现的设备服务id,[]表示扫描所有设备
  • seconds: 扫描持续的时间
  • success: 发现设备后的成功回调
  • failure: 当有错误发生时的回调

startScan

持续扫描周边的设备

ble.startScan(services, success, failure);

每发现一个可用的蓝牙外设,就会成功回调,直到stopScan接口被调用。参数不再详细说明。

stopScan

停止扫描外设

ble.stopScan(success, failure);

参数描述:

  • success: 成功回调,当扫描停止后被调用
  • failure: 当有错误发生时的回调

connect

连接到一个外设。

ble.connect(device_id, connectSuccess, connectFailure);

该方法可以使手机设备连接到一个可用的外设,回调会持续运行。当成功连接后就会调用成功回调。服务信息还有特征信息会在成功回调中的返回值对象中。当连接失败,或者断开连接的时候,会调用失败回调。同样,外设对象信息会被返回。

注意:当连接断开的时候,会触发失败回调。

参数描述:

  • device_id: 外设的UUID或者MAC地址
  • connectSuccess: 连接成功的回调
  • connectFailure: 发生错误或者锻炼连接的回调

disconnect

断开连接

ble.disconnect(device_id, [success], [failure]);

read

读取特征信息的值。

ble.read(device_id, service_uuid, characteristic_uuid, success, failure);

返回一个ArrayBuffer的原始数据。

参数说明:

  • device_id:外设的UUID或者MAC地址
  • service_uuid: 外设服务的UUID,可在连接外设时返回值中获取
  • characteristic_uuid: 外设特征的UUID,可在连接外设时的返回值获取
  • success: 成功回调
  • failure: 失败回调

write

往特征信息中写入数据

ble.write(device_id, service_uuid, characteristic_uuid, data, success, failure);

注意:data为ArrayBuffer

startNotification

监听特征信息,当特征值改变后会有通知。

ble.startNotification(device_id, service_uuid, characteristic_uuid, success, failure);

每当特征值改变就会调用成功回调。

stopNotification

去除特征信息的监听。

ble.stopNotification(device_id, service_uuid, characteristic_uuid, success, failure);

isConnected

返回当前连接状态

ble.isConnected(device_id, success, failure);

isEnabled

判断蓝牙是否可用。

ble.isEnabled(success, failure);

showBluetoothSettings

打开设备蓝牙设置,只支持Android。

ble.showBluetoothSettings(success, failure);

enable

启用设备蓝牙,只支持Android。

ble.enable(success, failure);

另:此插件来源于GitHub,用户如想使用最新版插件可从上面获取,但是新版插件对接口有一些调整,详情参考作者文档,本文不做详细说明。