更新记录

1.0.0(2023-05-22)

经典蓝牙SPP协议,扫描、连接、收发数据


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

android 经典蓝牙SPP协议,扫描、连接、收发数据

支持定制,QQ252797991


var bluetoothSpp = uni.requireNativePlugin("wrs-bluetoothSpp");

方法

  • 设置回调

            // 设置回调
            bluetoothSpp.setCallback((resp) => {
                var opt = resp.opt;
                switch (opt) {
                    // 扫描到蓝牙设备
                    case "onReceiveDevice":
                        var action = resp.action;
                        var device = resp.device;
                        switch (action) {
                            case "android.bluetooth.device.action.FOUND":
                                // 扫描到设备
                                this.deviceArray.push(device);
                                break;
                            case "android.bluetooth.adapter.action.DISCOVERY_FINISHED":
                                // 扫描完成
                                break;
                            case "android.bluetooth.adapter.action.DISCOVERY_STARTED":
                                // 开始扫描
                                break;
                            default:
                                break;
                        }
                        break;
                        // 收到蓝牙数据
                    case "onReceiveDeviceData":

                        var dataHex = resp.dataHex;
                        this.showMsg("收到蓝牙数据:" + JSON.stringify(dataHex));
                        break;
                    default:
                        break;
                }
            });
  • 注册接收者

bluetoothSpp.registerReceiver();
  • 取消注册接收者

bluetoothSpp.unregisterReceiver();
  • 检查蓝牙是否已经打开

                bluetoothSpp.isEnabled((resp)=>{
                    var isEnabled = resp.isEnabled;
                });
  • 开启蓝牙

bluetoothSpp.enable();
  • 开始扫描

// 扫描结果通过setCallback接口回调
                bluetoothSpp.startDiscovery((resp) => {
                    var code = resp.code;
                    if (code != 0) { // 扫描失败
                        this.showMsg(JSON.stringify(resp));
                        this.showToast("扫描失败");
                    }
                });
  • 是否正在扫描中

                bluetoothSpp.isDiscovering((resp) => {
                    var isDiscovering = resp.isDiscovering;
                    if (isDiscovering) {

                    } else {

                    }
                });
  • 停止扫描

    bluetoothSpp.cancelDiscovery((resp)=>{});
  • 连接蓝牙

var params = {};
params.address = "xxx";
params.uuid = "00001101-0000-1000-8000-00805F9B34FB";
bluetoothSpp.connectBluetooth(params, (resp)=>{
    var code = resp.code;
    if(code == 0) { // 连接成功
        var maxReceivePacketSize = resp.maxReceivePacketSize;
        var maxTransmitPacketSize = resp.maxTransmitPacketSize;

    } else { // 连接失败

    }
})
  • 关闭

                bluetoothSpp.close((resp) => {
                    var code = resp.code;
                    if (code == 0) {
                        // 成功

                    } else {

                    }
                });
  • 发送数据

                var params = {};
                params.data = "FFFB";
                bluetoothSpp.sendData(params, (resp) => {
                    var code = resp.code;
                    if (code != 0) {
                        this.showMsg(JSON.stringify(resp));
                        this.showToast("发送失败");
                    }
                });

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<!-- Android 12 引入了 BLUETOOTH_SCAN、BLUETOOTH_ADVERTISE 和 BLUETOOTH_CONNECT 权限,可让您的应用扫描附近的设备,而无需请求位置权限。 --> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问