uniapp兼容多pda扫描扫码

这篇具有很好参考价值的文章主要介绍了uniapp兼容多pda扫描扫码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前景

网上有现成的针对单个pda扫码录入的代码,但是公司的需求是在多个不同厂商pda上运行,这就会导致不同的pda默认的广播动作和广播标签不一致的情况,目前也没有获取这俩字段的api。

单个pda扫描扫码代码

先创建一个scanCode.js的文件

let main, receiver, filter;
let _codeQueryTag = false;

export const initScan = () => {
  let _this = this;
  main = plus.android.runtimeMainActivity(); //获取activity
  var IntentFilter = plus.android.importClass("android.content.IntentFilter");
  filter = new IntentFilter();
  filter.addAction('android.intent.ACTION_DECODE_DATA'); // 换你的广播动作
  receiver = plus.android.implements(
    "io.dcloud.feature.internal.reflect.BroadcastReceiver",
    {
      onReceive: function (context, intent) {
        plus.android.importClass(intent);
        let code = intent.getStringExtra('barcode_string'); // 换你的广播标签
        queryCode(code);
      },
    }
  );
};

export const startScan = () => {
  main.registerReceiver(receiver, filter);
};
export const stopScan = () => {
  main.unregisterReceiver(receiver);
  //解绑uni的全局$on 不然会有bug
  uni.$off('SCAN_CODE')
};
export const queryCode = (code) => {
  //防重复
  if (_codeQueryTag) return false;
  _codeQueryTag = true;
  setTimeout(function () {
    _codeQueryTag = false;
  }, 150);
  var id = code;
  //id就是扫码的结果
  uni.$emit("SCAN_CODE", { code: id });
};

使用在对应页面

mounted() {
	// #ifndef H5
		initScan();
		startScan();
		uni.$on("SCAN_CODE", ({code}) => {
			// code就是扫码的结果 接下来写业务需求
			
		});
	// #endif
},
destroyed() {
	// #ifndef H5
	//页面销毁就取消接受扫码结果
	stopScan();
	// #endif
},

uniapp兼容多pda扫描扫码

兼容多个pda

无非就是更换scanCode.js中addAction和getStringExtra字段

const initScan = () => {
  filter.addAction('android.intent.ACTION_DECODE_DATA'); // 换你的广播动作
  let code = intent.getStringExtra('barcode_string'); // 换你的广播标签
};

但是没有对应的api获取当前pda的广播动作、标签字段
又不好让用户自己去设置这俩字段
我的方法是自己要知道什么pda的默认广播动作、标签字段 然后预设在代码里面 通过uni.getSystemInfoSync().deviceBrand来区分不同pda厂家 后面用对应的广播动作字段即可
创建toggleScanCode.js

const deviceBrand = uni.getSystemInfoSync().deviceBrand;

// 目前已知的广播动作和广播标签 后续叠加
/*
1、优博讯"deviceBrand": "urovo",||"deviceModel": "RT40", action:android.intent.ACTION_DECODE_DATA、StringExtra:barcode_string
2、honeywell "deviceBrand": "honeywell",||"deviceModel": "EDA50KP-3",action:com.honeywell.scan.broadcast、StringExtra:data
*/

export const actionData = [{
	deviceBrand:'urovo',
	action:'android.intent.ACTION_DECODE_DATA',
	stringExtra:'barcode_string',
},{
	deviceBrand:'honeywell',
	action:'com.honeywell.scan.broadcast',
	stringExtra:'data',
}]

// 首页进入页面 将本设备的信息存入本地  如果没预设的 就拿优博讯的 广播信息比较通用
export const setCurrentDeviceAction = () => {
	// 如果本地有存广播信息 就不拿了
	if(uni.getStorageSync('currentDeviceData')?.deviceBrand) return
	const data = actionData.find(item=>deviceBrand === item.deviceBrand)
	if(data && Object.keys(data).length){
		uni.setStorageSync('currentDeviceData',data)
	}else{
		uni.setStorageSync('currentDeviceData',actionData[0])
	}
};

然后再首页去调用这个方法
index.vue

onLoad() {
	// 一进入页面就获取当前设备的广播
	setCurrentDeviceAction()
},

再改scanCode.js的initScan方法

export const initScan = () => {
	if(platform==='ios') return
  let _this = this;
  main = plus.android.runtimeMainActivity(); //获取activity
  var IntentFilter = plus.android.importClass("android.content.IntentFilter");
  filter = new IntentFilter();
	const action = uni.getStorageSync('currentDeviceData').action
	const stringExtra = uni.getStorageSync('currentDeviceData').stringExtra
  filter.addAction(action); // 换你的广播动作
  receiver = plus.android.implements(
    "io.dcloud.feature.internal.reflect.BroadcastReceiver",
    {
      onReceive: function (context, intent) {
        plus.android.importClass(intent);
        let code = intent.getStringExtra(stringExtra); // 换你的广播标签
        queryCode(code);
      },
    }
  );
};

这样就能兼容多个pda的扫码功能了 不过前提还是要知道用户pda是什么厂商 自己再去找对应厂商默认的广播动作和广播标签字段文章来源地址https://www.toymoban.com/news/detail-485553.html

到了这里,关于uniapp兼容多pda扫描扫码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp - 详细手机端h5网页调用手机摄像头进行二维码识别扫描,在uniapp的H5移动端微信网页平台中,在浏览器中调用手机扫码功能详细教程,识别二维码并获取扫描结果(完整示例源码,一键复制即用

    正常情况下,使用uniapp扫码API是不行的,因为不支持h5端。 在uniapp h5移动端网页项目中,实现了浏览器中调用手机摄像头扫码功能,uniapp手机网页H5扫描二维码功能实现,uni-app h5端调用摄像头扫码,提供完整可运行的代码。 跟着本文的步骤,复制源代码后运行改下就行了。

    2024年02月04日
    浏览(73)
  • 手机扫码枪 扫描枪 小程序扫码枪 传输到PC指定位置

    微信小程序搜索【手机扫码枪】 安卓版本评论区获取!。 流程: 0.打开PC软件,打开手机软件,链接好 1.手机扫码-》内容出现在电脑的任意位置(光标处),可加【回车】【tab】实现自动化操作,省人省力 2.还有去重,团队扫码,历史记录,导出表格,等等众多功能。 202

    2024年03月18日
    浏览(150)
  • 4.2 针对PE文件的扫描

    通过运用 LyScript 插件并配合 pefile 模块,即可实现对特定PE文件的扫描功能,例如载入PE程序到内存,验证PE启用的保护方式,计算PE节区内存特征,文件FOA与内存VA转换等功能的实现,首先简单介绍一下 pefile 模块。 pefile模块是一个用于解析Windows可执行文件(PE文件)的Pytho

    2024年02月12日
    浏览(30)
  • 小程序调用扫码接口,实现扫描二维码

    小程序实现扫描二维码,需要调用微信扫码的api,如下: wxml文件代码如下: js文件代码如下: 注意: success函数回调成功后的res值 res.result 所扫码的内容 res.scanType 所扫码的类型 res.charSet 所扫码的字符集 res.path 当所扫的码为当前小程序二维码时,会返回此字段,内容为二维码携带

    2024年02月04日
    浏览(39)
  • 4.2 x64dbg 针对PE文件的扫描

    通过运用 LyScript 插件并配合 pefile 模块,即可实现对特定PE文件的扫描功能,例如载入PE程序到内存,验证PE启用的保护方式,计算PE节区内存特征,文件FOA与内存VA转换等功能的实现,首先简单介绍一下 pefile 模块。 pefile模块是一个用于解析Windows可执行文件(PE文件)的Pytho

    2024年02月12日
    浏览(35)
  • 安卓和ios针对于new Date()数据格式的兼容问题

    IOS 手机不识别 YYY-MM-DD HH:mm:ss 格式的日期传参。 在项目中需要实现倒计时,这个倒计时的时间是后端同学给到前端的,我们针对当前时间到结束的时,进行倒计时,这个功能在测试的时候安卓手机和iOS手机都没问题,但是哦生产有用户反馈ios手机无法出现倒计时 发现是ios低版本的情

    2024年02月04日
    浏览(40)
  • php对接微信公众号扫码登录开发实录(H5微信扫描登录、服务出现故障调试、模版消息设置、扫码轮询交互)

    微信公众号扫码登录在安全性、用户体验和数据收集方面优势明显,是目前许多应用程序采用的登录方式之一。 无需记住账号密码:用户无需输入和记住账号和密码,只需使用微信扫描二维码即可快速登录。 安全性高:微信采用 OAuth2.0 协议,将用户信息传递给第三方应用程

    2024年02月07日
    浏览(57)
  • 前端怎么从H5调起微信扫描二维码?小程序使用扫码功能.

    wx.scanCode(Object object) 参数 属性 类型 默认值 必填 说明 最低版本 onlyFromCamera boolean false 否 是否只能从相机扫码,不允许从相册选择图片 1.2.0 scanType Array.string [\\\'barCode\\\', \\\'qrCode\\\'] 否 扫码类型 1.7.0 合法值 说明 barCode 一维码 qrCode 二维码 datamatrix Data Matrix 码 pdf417 PDF417 条码 success

    2024年02月10日
    浏览(52)
  • 针对“扫雷“和“植物大战僵尸“游戏,分析,扫描,阳光值,植物,金币,僵尸的分析逆向

    《软件逆向分析》 2022年9月 [一、实验工具介绍 3](#一实验工具介绍) [二、针对\\\"扫雷\\\"游戏 3](#二针对扫雷游戏) [2.1分析\\\"初级\\\"、\\\"中级\\\"和\\\"高级\\\"的棋盘内存地址范围 3](#分析初级中级和高级的棋盘内存地址范围) [2.2找出\\\"雷数\\\"、\\\"笑脸\\\"和\\\"计时器\\\"的内存地址 9](#找出雷数笑脸和计时

    2024年02月07日
    浏览(48)
  • uniapp 微信小程序:扫码

    HBuilderX 创建一个新项目,直接用默认模板 添加一个【扫码】按钮,绑上点击事件。 使用 uni.scanCode 调起客户端扫码界面,扫码成功后返回对应的结果。 界面 演示 camera 之 scanCode模式扫码 扫码结果: HBuilderX 创建一个新项目,直接用默认模板 添加一个 camera 组件,如下调整。

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包