更新记录

1.0.0(2026-06-17) 下载此版本

  • 首次发布
  • Android APP 空闲捕获 USB HID 扫码枪
  • 视图层 evalJS 注入 + plus.storage 桥接逻辑层
  • 提供 Vue2 插件安装与全局 mixin

平台兼容性

uni-app(5.0)

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

lt-scan-gun

Android APP 端 USB / 蓝牙 HID 键盘模式扫码枪插件。采用「空闲捕获」:仅在无业务输入框聚焦时,让隐藏 input 接收扫码,不干扰用户填表。

平台支持

平台 支持
App-Android (vue2)
App-iOS / H5 / 小程序

快速接入

1. 安装插件

uni_modules/lt-scan-gun 复制到项目 uni_modules 目录。

2. main.js 注册

import ltScanGun from '@/uni_modules/lt-scan-gun/js_sdk/install.js'

Vue.use(ltScanGun, {
  enableLog: true,      // 是否 console.log('[scanGun]', code)
  minLength: 3,         // 最短条码长度
  pollInterval: 80      // storage 轮询间隔 ms
})

注册后每个页面 onShow 会自动注入视图层捕获脚本,无需手动加组件。

3. App.vue 启动(可选)

import { startGlobalScanGun } from '@/uni_modules/lt-scan-gun/js_sdk/index.js'

onLaunch() {
  startGlobalScanGun()
  console.log('[scanGun] App 启动,等待扫码...')
}

4. 业务页订阅扫码

import { onGlobalScanGun } from '@/uni_modules/lt-scan-gun/js_sdk/index.js'

export default {
  data() {
    return { offScan: null }
  },
  onShow() {
    this.offScan = onGlobalScanGun((code) => {
      console.log('收到条码', code)
    })
  },
  onHide() {
    this.offScan && this.offScan()
    this.offScan = null 
  }
}

或使用实例 API:

this.$scanGun.on((code) => { /* ... */ })

API

方法 说明
configureScanGun(options) 全局配置 minLength / pollInterval / enableLog
startGlobalScanGun(handler?, pageInstance?) 启动监听;传 pageInstance 时注入当前页
stopGlobalScanGun() 停止 storage 轮询
onGlobalScanGun(callback) 订阅扫码,返回取消函数
isGlobalScanGunStarted() 是否已启动

事件名:scan-gun:commitSCAN_EVENT

原理简述

  1. 视图层evalJS 注入隐藏 input,空闲时 focus,Enter 时写入 plus.storage
  2. 逻辑层:轮询 storage → console.log + uni.$emit
  3. 业务输入框有焦点时:不抢焦点,条码进入当前输入框

注意事项

  • 仅适用于 HID 键盘模式扫码枪,PDA Intent 广播请用其他方案
  • 全屏 web-view 内 H5 页面需单独处理(插件注入在外层 uni 页 WebView)

隐私、权限声明

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

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

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

许可协议

MIT协议