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的运行效果如下

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值