android studio 使用zxing实现扫码功能

1、添加依赖

在项目的build.gradle添加:maven { url 'https://jitpack.io' }

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}

在app的build.gradle 添加:

    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:support-vector-drawable:26.1.0'
    implementation 'com.github.yuzhiqiang1993:zxing:2.0.0'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    /*添加依赖*/
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:support-vector-drawable:26.1.0'
    implementation 'com.github.yuzhiqiang1993:zxing:2.0.0'

}

在AndroidMainfest申请相机权限

<uses-permission android:name="android.permission.CAMERA"/>

2、好可以使用了

布局界面就是一个button和一个显示扫码结果的Edittext,代码就不贴了,图如下:

调用扫码功能代码如下:

button的响应事件:其中REQUEST_CODE_SCAN=0,就是一个请求的标志。

getPrimission():android6.0以上需要动态申请权限

scan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //android6.0以上需要动态申请相机等权限,
                getPrimission();

                //启动扫码
                Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
                startActivityForResult(intent, REQUEST_CODE_SCAN);//REQUEST_CODE_SCAN=0
            }
        });

扫码返回后填充EditView,俩常量REQUEST_CODE_SCAN =0; RESULT_OK=-1

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // 扫描二维码/条码回传
        if (requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK) {//RESULT_OK=-1
            if (data != null) {
                String content = data.getStringExtra(Constant.CODED_CONTENT);
                result.setText(content);
            }
        }
    }

申请权限的函数:其中android.permission.CAMERA表示相机权限com.zhengyuan.learningqrscan表示包名,需要改成自己项目的包名

//动态申请权限
    private void getPrimission() {
        PackageManager pm = getPackageManager();
        boolean permission = (PackageManager.PERMISSION_GRANTED ==
                pm.checkPermission("android.permission.CAMERA", "com.zhengyuan.learningqrscan"));
        if (permission) {
            //"有这个权限"
            Toast.makeText(MainActivity.this, "有权限", Toast.LENGTH_SHORT).show();
        } else {
            //"木有这个权限"
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(new String[]{Manifest.permission.CAMERA}, 15);
            }
        }
    }

点击button的运行效果如下

其中还能调用闪光灯,相册,震动等效果

猜你喜欢

转载自blog.csdn.net/qq_25066049/article/details/83385063
今日推荐