更新记录

1.0.0(2023-02-27)

Acaia电子秤API 1.0.0


平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:9 - 16

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


一、重要的事说三遍 重要的事说三遍 重要的事说三遍

已适配Android12 和 Android13 !!!!!!

有问题咨询QQ群 - 838332280 支持离线版和源码版的购买 需要加群交流

一定要添加权限:

Android:

        "android.permission.ACCESS_FINE_LOCATION",  //精确的蓝牙位置
        "android.permission.BLUETOOTH_SCAN",                //蓝牙扫描
        "android.permission.BLUETOOTH_ADMIN",               //蓝牙发现
        "android.permission.BLUETOOTH_CONNECT"          //蓝牙连接

IOS:

        "NSBluetoothPeripheralUsageDescription",        //蓝牙
      "NSBluetoothAlwaysUsageDescription"                   //蓝牙

二、类型说明

//单位
export enum AcaiaScaleWeightUnit {
    AcaiaScaleWeightUnitGram = 0,       //Gram
    AcaiaScaleWeightUnitOunce = 1       //Ounce
}

//承重
export enum AcaiaScaleCapacity {
    Capacity1000 = 0,                           // 1000G
    Capacity2000 = 1                                // 2000G
}

//关机定时器
export enum AcaiaScaleAutoOffTime {
    AutoOffTimeNone = 0,                        //无定时关机
    AutoOffTime5Min = 1,                        //5min关机
    AutoOffTime10Min = 2,                       //10min关机
    AutoOffTime20Min = 3,                       //20min关机
    AutoOffTime30Min = 4,                       //30min关机
    AutoOffTime60Min = 5,                       //60min关机
}

//全局事件
export enum NotificationEven {
    "RLUniEasyAcaia-didFinishScan" = "RLUniEasyAcaia-didFinishScan",    //扫描结束返回设备信息事件
    "RLUniEasyAcaia-onConnected" = "RLUniEasyAcaia-onConnected",            //设备连接事件
    "RLUniEasyAcaia-onWeight" = "RLUniEasyAcaia-onWeight",                      //重量变化事件
    "RLUniEasyAcaia-" = "RLUniEasyAcaia-",                            //定时器时间变化
}

//连接设备信息
export interface Device {
    addres: string;                             //地址仅Android字段
    name: string;                                   //名称
    connected: boolean;                     //是否连接
}

//质量单位
export interface Weight {
    weight: number;             //重量
    unit: number;               //单位 0 -> Gram | 1 -> Ounce
}

//返回信息
export interface AcaiaResult<T> {
    code: number;                   //验证码
    message: string;            //日志
    data: T                             //数据
}

三、API说明

1、注册中心

registerNoticeCenter()

说明:一定要执行的方法。

注意点:一般在进入APP或者界面执行,最好放在进入APP去执行,提前开启服务或者监听中心等。

2、注销中心

unregisterNoticeCenter()

说明:一定要执行的方法。一般在APP退出程序或者界面销毁执行。

3、扫描蓝牙

startScan()

说明:扫描Acaia电子秤设备。

注意点:扫描时最好做逻辑处理,弹出loading等,在收到RLUniEasyAcaia-didFinishScan全局事件时取消loading。

4、停止扫描蓝牙

stopScan()

说明:停止扫描Acaia电子秤设备。

5、连接Acaia电子秤

connect(index: number)

说明:连接Acaia电子秤设备。index为startScan方法扫描出来Acaia电子秤列表下标。

6、断开Acaia电子秤

disconnect()

说明:断开Acaia电子秤设备。

7、开始定时器

startTimer()

说明:定时器开始。

8、暂停定时器

pauseTimer()

说明:定时器暂停。

9、重置定时器 - 归零

stopTimer()

说明:定时器归零。

10、去皮功能

tare()

说明:去皮功能。

11、设置蜂鸣器

setVoice(enable: bool)

说明:enable为true,开启蜂鸣器。enable为false,关闭蜂鸣器。只有Android有此API

12、设置承重

setCapacity(type: AcaiaScaleCapacity)

说明:type为Capacity1000,承重1000G。type为Capacity2000,承重2000G。只有Android有此API

13、设置重量单位

setUnit(type: AcaiaScaleWeightUnit)

说明:type为AcaiaScaleWeightUnitGram,重量单位为Gram。type为AcaiaScaleWeightUnitOunce,重量单位为Ounce。只有Android有此API

14、设置关机时间

setAutoOffTime(type: AcaiaScaleAutoOffTime)
参数 说明 XXXXXXXX
AutoOffTimeNone 取消定时关机
AutoOffTime5Min 五分钟后关机
AutoOffTime10Min 十分钟后关机
AutoOffTime20Min 二十分钟后关机
AutoOffTime30Min 三十分钟后关机
AutoOffTime60Min 一个小时后关机

说明:只有Android有此API

四、全局监听事件

事件 说明 返回数据
RLUniEasyAcaia-didFinishScan 扫描Acaia电子秤结束事件 Device
RLUniEasyAcaia-onConnected Acaia电子秤连接状态事件 Device
RLUniEasyAcaia-onWeight Acaia电子秤重量变化事件 Weight
RLUniEasyAcaia- Acaia电子秤定时器变化事件 number

注意点:RLUniEasyAcaia-全局事件在Android接受时间时。由于SDK瑕疵的缘故,不能保证实时返回秒数。一般是在vue层自己开启计时器显示。IOS可以实时放回计时器秒数。

五、使用案例

<template>
    <view class="viewColumn">
        <view class="textbox" style="border-width: 2rpx; border-color: aqua;">
            <text>扫描设备:{{devices}}</text>
        </view>
        <view> --------------------- </view>
        <view class="textbox">
            <text>连接设备状态:{{onConnected}}</text>
        </view>
        <view class="viewRow">
            <button type="primary" @click="registerNoticeCenter">注册中心</button>
            <button type="primary" @click="unregisterNoticeCenter">注销中心</button>
        </view>
        <view class="viewRow">
            <button type="primary" @click="startScan">StartScaning</button>
            <button type="primary" @click="stopScan">StopScaning</button>
        </view>
        <view class="viewRow">
            <button type="primary" @click="connect">Connect</button>
            <button type="primary" @click="disconnect">Disconnect</button>
            <button type="primary" @click="tare">Tare</button>
        </view>

        <view class="viewRow">
            <button type="primary" @click="startTimer">StartTimer</button>
            <button type="primary" @click="pauseTimer">PauseTimer</button>
            <button type="primary" @click="stopTimer">StopTimer</button>
        </view>

        <view class="viewColumn" v-show="isAndroid">
            <view> ------------------以下是Android配置------------------ </view>
            <view class="viewRow">
                <button type="primary" @click="setVoice">SetVoice</button>
                <button type="primary" @click="setCapacity">SetCapacity</button>
                <button type="primary" @click="setUnit">SetUnit</button>
                <button type="primary" @click="setAutoOffTime">SetAutoOffTime</button>
            </view>
        </view>

    </view>
</template>

<script setup lang="ts">
    import {
        ref
    } from "vue";
    import {
        AcaiaResult,
        AcaiaScaleAutoOffTime,
        AcaiaScaleCapacity,
        AcaiaScaleWeightUnit,
        Device,
        NotificationEven,
        Weight,
    } from "./acaia_config";

    var module = uni.requireNativePlugin("RLUni-EasyAcaiaModule")

    var devices = ref('');

    var onConnected = ref('');

    var isAndroid = ref(false);

    var unit = ref(0);
    var capacity = ref(0);
    var voice = ref(false);

    isAndroid.value = plus.os.name == "Android";
    //点击事件 - start
    function registerNoticeCenter() {
        module.registerNoticeCenter();
    }

    function unregisterNoticeCenter() {
        module.unregisterNoticeCenter();
    }

    function startScan() {
        module.startScan();
    }

    function stopScan() {
        module.stopScan();
    }

    function connect() {
        module.connect(0);
    }

    function disconnect() {
        module.disconnect();
    }

    function startTimer() {
        module.startTimer();
    }

    function pauseTimer() {
        module.pauseTimer();
    }

    function stopTimer() {
        module.stopTimer();
    }

    function setVoice() {
        if(voice.value) {
            module.setVoice(true);
            voice.value = false;
        } else {
            module.setVoice(false);
            voice.value = true;
        }
    }

    function setCapacity() {
        if(capacity.value == 0) {
            module.setCapacity(AcaiaScaleCapacity.Capacity1000);
            capacity.value = 1;
        } else {
            module.setCapacity(AcaiaScaleCapacity.Capacity2000);
            capacity.value = 0;
        }
    }

    function setUnit() {
        if(unit.value == 0) {
            module.setUnit(AcaiaScaleWeightUnit.AcaiaScaleWeightUnitGram);
            unit.value = 1;
        } else {
            module.setUnit(AcaiaScaleWeightUnit.AcaiaScaleWeightUnitOunce);
            unit.value = 0;
        }
    }

    function setAutoOffTime() {
        module.setAutoOffTime(AcaiaScaleAutoOffTime.AutoOffTime10Min);
    }

    function tare() {
        module.tare();
    }
    //点击事件 - end

    //监听事件 - start
    var globalEvent = uni.requireNativePlugin('globalEvent');

    globalEvent.addEventListener(NotificationEven["RLUniEasyAcaia-didFinishScan"], function(result: AcaiaResult<Device[]> ) {
        devices.value = JSON.stringify(result);
        console.log('didFinishScan -----> ' + JSON.stringify(result));
    });

    globalEvent.addEventListener(NotificationEven["RLUniEasyAcaia-onConnected"], function(result: AcaiaResult<Device>) {
        console.log('onConnected -----> ' + JSON.stringify(result));
        onConnected.value = JSON.stringify(result);
    });

    globalEvent.addEventListener(NotificationEven["RLUniEasyAcaia-onPearlSStatus"], function(result: AcaiaResult<PearlSStatus>) {
        console.log('onStatus -----> ' + JSON.stringify(result));
    });

    globalEvent.addEventListener(NotificationEven["RLUniEasyAcaia-onWeight"], function(result: AcaiaResult<Weight>) {
        console.log('onWeight -----> ' + JSON.stringify(result));
    });

    globalEvent.addEventListener(NotificationEven["RLUniEasyAcaia-"], function(result: AcaiaResult<number>) {
        console.log('  -----> ' + JSON.stringify(result));
});

    //监听事件 - end
</script>

<style>
    .viewColumn {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .viewRow {
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: center;
        height: 100rpx;
        width: 100%;
    }

    .textbox {
        width: 100%;
        word-wrap: break-word;
    }
</style>

隐私、权限声明

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

蓝牙

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

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

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