更新记录

4.1.0326(2026-01-19)

更新日志

1.0.0 (2026-01-18)

新增

  • 初始版本发布
  • 扫码功能 (ScanManager)
    • openScanner() - 打开扫码器
    • closeScanner() - 关闭扫码器
    • getScannerState() - 获取扫码器状态
    • startDecode() - 开始扫码
    • stopDecode() - 停止扫码
    • setTriggerMode() - 设置触发模式(点扫/连续/脉冲)
    • getTriggerMode() - 获取触发模式
    • enableAllSymbologies() - 启用/禁用所有条码类型
    • registerScanCallback() - 注册扫码回调
    • unregisterScanCallback() - 注销扫码回调
    • getLastScanResult() - 获取最后扫码结果
    • clearLastScanResult() - 清除扫码结果

占位功能(待实现)

  • 打印管理 (PrinterManager)
  • 设备管理 (DeviceManager)
  • IC卡管理 (IccManager)
  • 非接卡管理 (PiccManager)
  • 磁条卡管理 (MagManager)

兼容性

  • 支持 uni-app (Vue2/Vue3)
  • 支持 uni-app x
  • 仅支持 Android 平台
  • 需要 HBuilderX 3.6.0+

注意事项

  • 回调函数存在生命周期限制,连续扫码建议使用链式重注册模式
  • 需要打包自定义基座使用

平台兼容性

uni-app(3.6.15)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android Android插件版本 iOS 鸿蒙
- - - - - - 8.0 4.1.0326 - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

uni-app x(3.91)

Chrome Safari Android Android插件版本 iOS 鸿蒙 微信小程序
- - 8.0 4.1.0326 - - -

优博讯设备SDK (xt-device-sdk)

基于 UTS 插件封装的优博讯(UROVO) PDA 设备 SDK,支持 uni-app 和 uni-app x 项目。

兼容性

项目类型 最低版本 调用方式
uni-app (Vue2) HBuilderX 3.6.8+ JS 调用
uni-app (Vue3) HBuilderX 3.6+ JS 调用
uni-app x HBuilderX 3.9+ UTS 调用

安装

xt-device-sdk 目录复制到项目的 uni_modules 目录下即可。

功能模块

已实现

  • 扫码管理 (ScanManager) - 完整支持

待实现(占位)

  • 打印管理 (PrinterManager)
  • 设备管理 (DeviceManager)
  • IC卡管理 (IccManager)
  • 非接卡管理 (PiccManager)
  • 磁条卡管理 (MagManager)

扫码功能 (ScanManager)

引入

// #ifdef APP-PLUS
import {
    openScanner,
    closeScanner,
    getScannerState,
    startDecode,
    stopDecode,
    registerScanCallback,
    unregisterScanCallback,
    setTriggerMode,
    getTriggerMode,
    enableAllSymbologies
} from '@/uni_modules/xt-device-sdk';
// #endif

API 列表

openScanner()

打开扫码器电源。

const success = openScanner();
// 返回: boolean - true 成功,false 失败

closeScanner()

关闭扫码器电源。

const success = closeScanner();
// 返回: boolean

getScannerState()

获取扫码器状态。

const isOpen = getScannerState();
// 返回: boolean - true 已开启,false 已关闭

startDecode()

开始扫码(触发一次扫码会话)。

startDecode();

stopDecode()

停止扫码。

stopDecode();

setTriggerMode(mode)

设置扫码触发模式。

参数值 说明
"HOST" 点扫模式(默认),每次需手动触发
"CONTINUOUS" 连续扫码模式,持续扫描
"PULSE" 脉冲模式,按住扫描松开停止
setTriggerMode('CONTINUOUS'); // 设置为连续扫码

getTriggerMode()

获取当前触发模式。

const mode = getTriggerMode();
// 返回: "HOST" | "CONTINUOUS" | "PULSE"

enableAllSymbologies(enable)

启用或禁用所有条码类型。

enableAllSymbologies(true);  // 启用所有条码类型
enableAllSymbologies(false); // 禁用所有条码类型

registerScanCallback(callback)

注册扫码结果回调。

注意:由于 UTS 回调函数生命周期限制,回调可能只执行一次。建议使用链式重注册模式(见下方示例)。

registerScanCallback((result) => {
    console.log('条码:', result.barcode);
    console.log('类型:', result.barcodeType);
    console.log('长度:', result.barcodeLength);
});

ScanResult 结构:

type ScanResult = {
    barcode: string;      // 条码内容
    barcodeHex: string;   // 条码十六进制
    barcodeType: number;  // 条码类型
    barcodeLength: number; // 条码长度
}

unregisterScanCallback()

注销扫码回调,释放资源。

unregisterScanCallback();

使用示例

基础扫码(点扫模式)

// 1. 打开扫码器
openScanner();

// 2. 启用所有条码类型
enableAllSymbologies(true);

// 3. 注册回调
registerScanCallback((result) => {
    console.log('扫码结果:', result.barcode);
});

// 4. 触发扫码(或按设备扫码键)
startDecode();

// 5. 使用完毕后关闭
unregisterScanCallback();
closeScanner();

连续扫码模式(推荐方案)

由于 UTS 回调函数只能执行一次,连续扫码需使用链式重注册模式:

export default {
    data() {
        return {
            scanListenerActive: false,
            scanCount: 0
        }
    },
    methods: {
        // 开始连续扫码
        startContinuousScan() {
            openScanner();
            enableAllSymbologies(true);
            setTriggerMode('CONTINUOUS');

            this.scanListenerActive = true;
            this.scanCount = 0;
            this.registerNextCallback();

            startDecode();
        },

        // 链式注册回调
        registerNextCallback() {
            if (!this.scanListenerActive) return;

            const self = this;
            registerScanCallback((result) => {
                self.scanCount++;
                console.log(`[第${self.scanCount}次] 条码: ${result.barcode}`);

                // 回调执行后立即注册下一个回调
                setTimeout(() => {
                    self.registerNextCallback();
                }, 10);
            });
        },

        // 停止扫码
        stopContinuousScan() {
            this.scanListenerActive = false;
            stopDecode();
            unregisterScanCallback();
            closeScanner();
        }
    },

    onUnload() {
        // 页面卸载时务必释放资源
        this.scanListenerActive = false;
        unregisterScanCallback();
    }
}

操作流程

点扫模式

打开扫码器 → 注册回调 → 开始扫码/按扫码键 → 获取结果 → 注销回调 → 关闭扫码器

连续扫码模式

打开扫码器 → 注册回调 → 设置连续模式 → 开始扫码 → 持续获取结果 → 停止扫码 → 注销回调 → 关闭扫码器

注意事项

  1. 回调函数生命周期:UTS 插件的回调函数默认只能执行一次,连续扫码需使用链式重注册模式。

  2. 资源释放:页面卸载时务必调用 unregisterScanCallback() 释放资源。

  3. 自定义基座:使用此插件需要打包自定义基座,标准基座不包含设备 SDK。

  4. 设备兼容性:仅支持优博讯(UROVO) PDA 设备。


更新日志

v1.0.0

  • 初始版本
  • 实现扫码功能完整支持
  • 支持点扫、连续扫码、脉冲三种模式

隐私、权限声明

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

"<uses-feature android:name=\"android.hardware.camera\"/>"

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

插件不采集任何数据

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

暂无用户评论。