zoukankan      html  css  js  c++  java
  • Android-----使用zxing实现二维码扫描

    因客户上需要用到这个功能,就在网上找了一堆资料,全是说得不清不楚,Android用zxing,IOS用zbar,然后给出各种收费地址下载,这里我只用到扫码功能,生成条形码,二维码功能一样的道理,下面直接上教程。

    链接:https://pan.baidu.com/s/1MJdIODuFzJQYTRMXflgyEg
    提取码:jv6n
    下载好这个作为依赖,可以创建一个空项目,或者在原有的项目上跟着我走:File --> new --> import Module

    选择刚刚下载好的包目录,确定。之后:File --> Project Structure(项目结构)

     点击 "+" 后选择 "Module dependency"  , 然后选择我们import 的 module , 然后:apply -->确定

     这样就导入完成了。接下来就开始实现扫描功能;

    直接上代码:布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.tmri.enforcement.app.RequestAction"
        android:orientation="vertical"
        android:background="#87CEEB">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:orientation="horizontal">
                
                <EditText
                    android:id="@+id/edit_lsh"
                    android:layout_width="0dp"
                    android:layout_weight="3"
                    android:layout_height="40dp"
                    android:textSize="18sp"
                    />
                <Button
                    android:id="@+id/btnSweep"
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_weight="1"
                    android:text="扫描"/>
            </LinearLayout>
          
    
        </LinearLayout>
    
    </LinearLayout>

    逻辑实现代码:CaptureActivity是依赖中实现扫码功能的一个类,直接调用就能实现扫码,然后在onActivityResult()方法中拿到我们要的数据。

    stringLSH = this.findViewById(R.id.edit_lsh);    
    /*二维码扫描*/
            btnSweep = this.findViewById(R.id.btnSweep);
            btnSweep.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent sweep = new Intent(RequestAction.this, CaptureActivity.class);
                    startActivityForResult(sweep,1003);
                }
            });
    
    
    @Override
        public void onActivityResult(int requestCode , int resultCode , Intent data){
            super.onActivityResult(requestCode , resultCode , data);
            if (resultCode == RESULT_OK){
                String result = data.getExtras().getString("result");
                stringLSH.setText(result);
            }
        }

    /*申请手机权限,在oncreate()方法中调用*/
    public void requestPermissions(){
    String [] permissions = new String[]{
    Manifest.permission.CAMERA,
    Manifest.permission.RECORD_AUDIO,
    Manifest.permission.VIBRATE,
    };
    ActivityCompat.requestPermissions(RequestAction.this,permissions,100);
    }
     

    最后在运行项目之前记得在AndroidManifest.xml中添加权限:

     <!--网络权限-->
        <uses-permission android:name="android.permission.INTERNET"/>
        <!--震动权限-->
        <uses-permission android:name="android.permission.VIBRATE"/>
        <!--摄像头权限-->
        <uses-permission android:name="android.permission.CAMERA"/>
        <!--自动聚焦权限-->
        <uses-feature android:name="android.hardware.camera.autofocus"/>

    最后扫描直接将结果填入:

    扫码功能大功告成。

    要做生成二维码,直接调用zxing中的生成类就可以了。

  • 相关阅读:
    嵌套函数
    大括号{ }
    不是俺的错
    hasOwnProperty()
    属性的查找过程
    原型和原型链——汤姆大叔
    JS问题汇总
    phpcms无刷新分页
    phpcms开发过程中遇到的问题总结
    基于物联网的自动氮吹仪
  • 原文地址:https://www.cnblogs.com/xiobai/p/12785548.html
Copyright © 2011-2022 走看看