btsppiot

来自于:开发者

概述

本模块仅支持蓝牙串口服务(UUID:00001101-0000-1000-8000-00805F9B34FB),为了减少不必要的接口,所以没有提供开启和关闭蓝牙的接口,但在使用中 INIT、scan、paired、discoverable 时会自动判断提醒。本模块由第三方模块开发者提供,使用本模块需在线云编译安装包,请使用本模块的小伙伴一定要测试所有功能(包括手机兼容性问题,由于本人能力有限,手机兼容性问题暂时无法解决),在使用过程中,可能由于电脑接口问题无法配对,请更换接口,或者使用独立电源测试(本人遇到过此问题)。测试包: 下载 ,欢迎大家及时反映Bug(859305930@qq.com)。

测试环境:手机(荣耀7 Android 6.0)、蓝牙模块(HC-05)

理论支持: API-15(Android 4.0.3)(已知:中国移动M701 不兼容)

INIT

初始化蓝牙

INIT({params}, callback(ret, err))

params

isToast:

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Toast 无焦点提示(可选项)
  • 默认值:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true】时请注意重复提示
  • 内部字段:
{
     status:      //【1:本机没有蓝牙 2:蓝牙没有开启】
}

示例

一般用法(系统对话框)
apiready = function(){
    var SPP = api.require("btsppiot");
    SPP.INIT();
}
高级用法(只传送数据)
apiready = function(){
    var SPP = api.require("btsppiot");
    SPP.INIT({
        isToast:false
    },function(ret, err){
        var status = ret.status;
        if(status == 1)api.toast({ msg: "本机没有蓝牙设备"});
        if(status == 2)api.toast({ msg: "本机蓝牙没有开启"});
    });
}

补充说明

打开蓝牙、注册蓝牙状态广播、注册连接状态广播

可用性

Android系统

可提供的1.0.0及更高版本

scan

扫描附近蓝牙

scan({params}, callback(ret, err))

params

isToast:

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Toast 无焦点提示(可选项)
  • 默认值:true

isDialog

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Dialog 对话框提示(可选项)
  • 默认值:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true 或 isDialog:true】时请注意重复提示
  • 内部字段:
{
     status:      //【1:本机没有蓝牙 2:蓝牙没有开启】
     bondState:   //【1:取消配对 2:已经配对 3:正在配对】
     scanState:   //【1:扫描开始 2:扫描完成 3:发现设备 4:配对改变】
     scanArray:   // 扫描到的设备(数组)
}

示例

一般用法(系统对话框)
function scanDevice(){
    var SPP = api.require("btsppiot");
    SPP.scan();
}
高级用法(只传送数据)
function scanDevice(){
    var SPP = api.require("btsppiot");
    SPP.scan({
        isDialog:false,
        isToast:false
    },function(ret, err){
        var status = ret.status;
        if(status == 1)api.toast({ msg: "本机没有蓝牙设备"});
        if(status == 2)api.toast({ msg: "本机蓝牙没有开启"});
        var bondState = ret.bondState;
        if(bondState == 1)api.toast({ msg: "取消配对"});
        if(bondState == 2)api.toast({ msg: "已经配对"});
        if(bondState == 3)api.toast({ msg: "正在配对"});
        var scanState = ret.scanState;
        if(scanState == 1)api.toast({ msg: "扫描开始"});
        if(scanState == 2)api.toast({ msg: "扫描完成"});
        if(scanState == 3)api.toast({ msg: "发现设备"});
        if(scanState == 4)api.toast({ msg: "配对改变"});
        var scanArray = ret.scanArray;
        for(var i in scanArray){
            var scan = scanArray[i];
        }
        if(scanArray.length != 0)alert(scanArray);
    });
}

补充说明

可用性

Android系统

可提供的1.0.0及更高版本

paired

已配对蓝牙

paired({params}, callback(ret, err))

params

isToast:

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Toast 无焦点提示(可选项)
  • 默认值:true

isDialog

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Dialog 对话框提示(可选项)
  • 默认值:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true 或 isDialog:true】时请注意重复提示
  • 内部字段:
{
     status:      //【1:本机没有蓝牙 2:蓝牙没有开启】
     pairedArray: // 以配对的设备(数组)
}

示例

一般用法(系统对话框)
function pairedDevice(){
    var SPP = api.require("btsppiot");
    SPP.paired();
}
高级用法(只传送数据)
function pairedDevice(){
    var SPP = api.require("btsppiot");
    SPP.paired({
        isDialog:false,
        isToast:false
    },function(ret, err){
        var status = ret.status;
        if(status == 1)api.toast({ msg: "本机没有蓝牙设备"});
        if(status == 2)api.toast({ msg: "本机蓝牙没有开启"});
        var pairedArray = ret.pairedArray;
        for(var i in pairedArray){
            var paired = pairedArray[i];
        }
        if(pairedArray.length != 0)alert(pairedArray);
    });
}

补充说明

可用性

Android系统

可提供的1.0.0及更高版本

send

发送数据

send({params}, callback(ret, err))

params

isToast:

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Toast 无焦点提示(可选项)
  • 默认值:true

sendData:

  • 类型:字符串
  • 描述:要发送的数据
  • 默认值:无

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true】时请注意重复提示
  • 内部字段:
{
     status:      //【1:本机没有蓝牙 2:蓝牙没有开启 3:设备连接断开】
}

示例

一般用法(系统对话框)
function sendData(){
    var SPP = api.require("btsppiot");
    SPP.send({
        sendData:"spp"
    });
}
高级用法(只传送数据)
function sendData(){
    var SPP = api.require("btsppiot");
    SPP.send({
        sendData:"spp",
        isToast:false
    },function(ret, err){
        var status = ret.status;
        if(status == 1)api.toast({ msg: "本机没有蓝牙设备"});
        if(status == 2)api.toast({ msg: "本机蓝牙没有开启"});
        if(status == 3)api.toast({ msg: "连接已断开"});
    });
}

补充说明

可用性

Android系统

可提供的1.0.0及更高版本

receive

接收数据

receive({params}, callback(ret, err))

params

isToast:

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Toast 无焦点提示(可选项)
  • 默认值:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true】时请注意重复提示
  • 内部字段:
{
     status:      //【1:本机没有蓝牙 2:蓝牙没有开启 3:设备连接断开】
     receiveData: //接收到的数据
}

示例

一般用法(系统对话框)
function receiveData(){
    var SPP = api.require("btsppiot");
    SPP.receive();
}
高级用法(只传送数据)
function receiveData(){
    var SPP = api.require("btsppiot");
    SPP.receive({
        isToast:false
    },function(ret, err){
        var status = ret.status;
        if(status == 1)api.toast({ msg: "本机没有蓝牙设备"});
        if(status == 2)api.toast({ msg: "本机蓝牙没有开启"});
        if(status == 3)api.toast({ msg: "连接已断开"});
        var receiveData = ret.receiveData;
        if(receiveData != null)alert(receiveData);
    });
}

补充说明

由于串口传输可能出现分段问题,在此做了延时200ms,暂时测试为32个字符串,需要在程序中轮询检测,数据只能读取一次,之后会清除(二次读取会提示为空,或者没有数据)。

可用性

Android系统

可提供的1.0.0及更高版本

connect

连接到设备

connect({params}, callback(ret, err))

params

isToast:

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Toast 无焦点提示(可选项)
  • 默认值:true

sppMac:

  • 类型:物理地址(如:30:1A:1C:09:0E:32)
  • 描述:需要连接的蓝牙地址(必填项)
  • 默认值:无

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true】时请注意重复提示
  • 内部字段:
{
     status:      //【1:本机没有蓝牙 2:蓝牙没有开启 3:物理地址有误】
}

示例

一般用法(系统对话框)
function connect(){
    var SPP = api.require("btsppiot");
    SPP.connect({
        sppMac:"30:1A:1C:09:0E:32"
    });
}
高级用法(只传送数据)
function connect(){
    var SPP = api.require("btsppiot");
    SPP.connect({
        sppMac:"30:1A:1C:09:0E:32",
        isToast:false
    },function(ret, err){
        var status = ret.status;
        if(status == 3)api.toast({ msg: "给定物理地址有误"});
    });
}

补充说明

一般用于初始化 INIT 中调用和在自定义对话框中使用

可用性

Android系统

可提供的1.0.0及更高版本

autoConnect

自动连接到设备

autoConnect()

示例

apiready = function(){
    var SPP = api.require("btsppiot");
    SPP.autoConnect();
}

补充说明

一般只用于初始化 INIT 中调用

注意:在调用时做了1000ms延时,用于判断是否连接成功。蓝牙随APP一起启动时,可能自动连接失败,由于服务还没有启动完成;蓝牙在程序启动前已经启动,则基本没这种现象。自动连接原理是搜索以配对蓝牙,然后根据 UUID:00001101-0000-1000-8000-00805F9B34FB筛选后再依次尝试连接,直到成功跳出。

可用性

Android系统

可提供的1.0.0及更高版本

discoverable

开放检测

discoverable({params}, callback(ret, err))

params

isToast:

  • 类型:布尔(取值:true || false)
  • 描述:是否显示 Toast 无焦点提示(可选项)
  • 默认值:true

time:

  • 类型:整数(单位:秒)
  • 描述:开放检测的时长(可选项)
  • 默认值:120

isDiscoverable:

  • 类型:布尔(取值:true || false)
  • 描述:是否开放检测(可选项)
  • 默认值:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true】时请注意重复提示
  • 内部字段:
{
     status:      //【1:关闭检测 2:处于开启状态】
}

示例

一般用法(系统对话框)
function discoverable(){
    var SPP = api.require("btsppiot");
    SPP.discoverable();
}
高级用法(只传送数据)
function discoverable(){
    var SPP = api.require("btsppiot");
    SPP.discoverable({
        isDiscoverable:true,
        time:128,
        isToast:false
    },function(ret, err){
        var status = ret.status;
        if(status == 1)api.toast({ msg: "蓝牙可检测性已经关闭"});
        if(status == 2)api.toast({ msg: "蓝牙可检测性已经是开启状态"});
    });
}

补充说明

可用性

Android系统

可提供的1.0.0及更高版本

connectState

连接状态

connectState(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true】时请注意重复提示
  • 内部字段:
{
     connectState://【1:连接断开 2:已连接 3:正在连接  4:连接失败 5:连接丢失】
}

示例

function connectState(){
    var SPP = api.require("btsppiot");
    SPP.connectState(function(ret, err){
        var status = ret.connectState;
        if(status == 1)api.toast({ msg: "连接断开"});
        if(status == 2)api.toast({ msg: "已经连接"});
        if(status == 3)api.toast({ msg: "正在连接"});
        if(status == 4)api.toast({ msg: "连接失败"});
        if(status == 5)api.toast({ msg: "连接丢失"});
    });
}

补充说明

需要在程序中轮询检测

可用性

Android系统

可提供的1.0.0及更高版本

bluetoothState

连接状态

bluetoothState(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 注意:【isToast:true】时请注意重复提示
  • 内部字段:
{
     bluetoothState://【1:蓝牙已关闭 2:蓝牙已开启 3:蓝牙正在关闭 4:蓝牙正在开启】
}

示例

function bluetoothState(){
    var SPP = api.require("btsppiot");
    SPP.bluetoothState(function(ret, err){
        var status = ret.bluetoothState;
        if(status == 1)api.toast({ msg: "蓝牙已关闭"});
        if(status == 2)api.toast({ msg: "蓝牙已开启"});
        if(status == 3)api.toast({ msg: "蓝牙正在关闭"});
        if(status == 4)api.toast({ msg: "蓝牙正在开启"});
    });
}

补充说明

需要在程序中轮询检测

可用性

Android系统

可提供的1.0.0及更高版本