在Android应用中实现扫描二维码功能

扫描,识别二维码是很多企业 App 应用必备功能,因此也发展的非常成熟,通常可以直接使用 zxing-library 来实现。

在实践中,可以直接使用一个包装好的开源项目: android-zxingLibrary 官网。该项目已经对 zxing-library进行了封装,只需要很少的代码就可以实现扫码的功能。并且由于项目本身也是开源的,方便后期按企业要求进行定制。

安装 android-zxingLibrary

在 app 模块的 build.gradle 文件的 dependencies 块中加入 android-zxingLibrary 的依赖:

1
implementation 'cn.yipianfengye.android:zxing-library:2.2'

Android Stuido 会自动下载相关的依赖库。

申请相机权限

在 AndroidManifest.xml 中加入以下代码,为应用程序申请相机相关权限

1
2
3
4
5
6
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

初始化扫码库

在触发扫码操作的 Activity 的 onCreate 方法中增加对扫描库的初始化代码, 在本示例中,将在 MainActivity 中增加一个按钮来触发扫码操作,因此在 MainActivity 的 onCreate 代码中增加以下一行代码

1
ZXingLibrary.initDisplayOpinion(this);

打开扫码页面

android-zxingLibrary 已经内置了一个用于扫描的 Activity, 只需要直接调用就可以了,当然如果需要也可以对这个 Activity 进行定制。

调用需要处理返回值,所以需要定义一个特定的 RequestCode, 对这部分内瓤不熟悉的可以参考 Android中的Intent功能演示

在示例中,假设从 MainActivity 中调用扫码界面

1
2
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);

第2行代码中的 REQUEST_CODE 是一个自定义的常量,用来识别特定的请求,只需要在 MainActivity 中声明即可, 比如

1
private static final int REQUEST_CODE = 111;

接收扫码界面的返回

在 MainActivity 中处理扫码结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (requestCode == REQUEST_CODE) {
if (intent != null) {
Bundle bundle = intent.getExtras();
if (bundle == null) {
return;
}
if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
String result = bundle.getString(CodeUtils.RESULT_STRING);
Toast.makeText(this, "解析结果:" + result, Toast.LENGTH_LONG).show();
} else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {
Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
}
} else {
Log.d(TAG, "扫码失败或放弃");
}
}

本文标题:在Android应用中实现扫描二维码功能

文章作者:Morning Star

发布时间:2019年08月14日 - 14:08

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/app/android/android-scan-qrcode/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。