在项目的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"/>
布局界面就是一个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的运行效果如下
其中还能调用闪光灯,相册,震动等效果
