Android-----使用zxing实现二维码扫描

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

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

Android-----使用zxing实现二维码扫描

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

Android-----使用zxing实现二维码扫描

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

Android-----使用zxing实现二维码扫描

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

直接上代码:布局文件

<?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"/>

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

Android-----使用zxing实现二维码扫描

扫码功能大功告成。

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