iData品牌pda扫描开发 您所在的位置:网站首页 idata扫码枪怎么下载软件 iData品牌pda扫描开发

iData品牌pda扫描开发

2024-07-16 21:45| 来源: 网络整理| 查看: 265

前言

在很多的业务场景中会涉及到二维码扫描的问题,而pda专注于扫描的移动设备,不同的pda品牌会有不同的扫描调用方法,今天我们就来讲讲iData品牌下怎么获取扫描结果。

今天涉及的内容有:

iData pda 获取扫描结果的方式 扫描封装类 IDataScan介绍 扫描在 MainActivity 中的使用 ScannerInterface 源码 效果图和项目结构图

先看下效果图吧

pk.gif 一. iData pda 获取扫描结果的方式

经过多种pda的兼容以后,获取pda扫描结果的方式大致分为两种,一种是通过厂家那边给的jar包进行代码集成获取,而另一种方式则是通过广播的方式获取扫描结果,今天要讲的iDta PDA 即是通过广播的方式获取扫描结果。

二. 扫描封装类 IDataScan介绍

IDataScan主要是封装了一个广播的接收类,用于接收扫描的数据,其中主要涉及到几个外部调用需要用到的方法:

//初始化,在listener接口中接收扫描返回值 void initScan(Context context,OnScanListener listener) //扫描结束后,注销扫描相关的广播 void destroy()

IDataScan全部代码如下:

package com.example.function; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import com.util.LogUtil; /** * Description: *

* Author:pei * Date: 2019/8/23 */ public class IDataScan { private static final String RES_ACTION = "android.intent.action.SCANRESULT"; private ScannerInterface mScannerInterface; private Context mContext; private OnScanListener mOnScanListener; //注册广播接受者 private BroadcastReceiver mScanReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action=intent.getAction(); //注意Extral为"value" String scanResult = intent.getStringExtra("value"); if(RES_ACTION.equals(RES_ACTION)){ if(scanResult.length()>0){ //如果条码长度>0,解码成功,否则失败 if(mOnScanListener!=null){ mOnScanListener.scanSuccess(scanResult); } }else{//解码失败 mOnScanListener.scanFailed("解码失败"); } } } }; public void initScan(Context context,OnScanListener listener){ this.mContext=context; this.mOnScanListener=listener; mScannerInterface = new ScannerInterface(context); //设置扫描结果的输出模式 mScannerInterface.setOutputMode(1); IntentFilter filter=new IntentFilter(); filter.addAction(RES_ACTION); context.registerReceiver(mScanReceiver, filter); } public void destroy(){ LogUtil.i("=======注销idata品牌pda广播========="); if(mScanReceiver!=null&&mContext!=null) { mContext.unregisterReceiver(mScanReceiver); } } public interface OnScanListener{ void scanSuccess(String code); void scanFailed(String message); } } 三. 扫描在 MainActivity 中的使用

在MainActivity中使用扫描的时候,先要初始化 IDataScan 类

mIDataScan=new IDataScan();

然后,调用IDataScan 的init方法,用于注册扫描广播并接收扫描结果返回值

mIDataScan.initScan(this, new IDataScan.OnScanListener() { @Override public void scanSuccess(String code) { //解码成功 LogUtil.i("=======解码成功==gg===="+code); } @Override public void scanFailed(String message) { //解码失败 LogUtil.i("=======解码失败==gg===="+message); } });

当界面要退出的时候,注销扫描广播

if (mIDataScan!=null){ mIDataScan.destroy(); }

下面贴出MainActivity代码:

package com.example.testdemo; import android.os.Bundle; import android.view.View; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.example.function.IDataScan; import com.util.LogUtil; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView mTvText; private IDataScan mIDataScan; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); setListener(); } private void initData() { mTvText = findViewById(R.id.tv_text); mTvText.setText("扫描结果:"); initScan(); } private void initScan(){ mIDataScan=new IDataScan(); mIDataScan.initScan(this, new IDataScan.OnScanListener() { @Override public void scanSuccess(String code) { //解码成功 LogUtil.i("=======解码成功==gg===="+code); mTvText.setText("扫描结果:"+code); } @Override public void scanFailed(String message) { //解码失败 LogUtil.i("=======解码失败==gg===="+message); mTvText.setText("扫描失败"); } }); } private void setListener() { } @Override public void onClick(View v) { } @Override protected void onDestroy() { super.onDestroy(); if (mIDataScan!=null){ mIDataScan.destroy(); } } } 四.ScannerInterface 源码


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有