扫描,识别二维码是很多企业 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 | <uses-permission android:name="android.permission.CAMERA" /> |
初始化扫码库
在触发扫码操作的 Activity 的 onCreate 方法中增加对扫描库的初始化代码, 在本示例中,将在 MainActivity 中增加一个按钮来触发扫码操作,因此在 MainActivity 的 onCreate 代码中增加以下一行代码
1 | ZXingLibrary.initDisplayOpinion(this); |
打开扫码页面
android-zxingLibrary 已经内置了一个用于扫描的 Activity, 只需要直接调用就可以了,当然如果需要也可以对这个 Activity 进行定制。
调用需要处理返回值,所以需要定义一个特定的 RequestCode, 对这部分内瓤不熟悉的可以参考 Android中的Intent功能演示
在示例中,假设从 MainActivity 中调用扫码界面
1 | Intent intent = new Intent(MainActivity.this, CaptureActivity.class); |
第2行代码中的 REQUEST_CODE 是一个自定义的常量,用来识别特定的请求,只需要在 MainActivity 中声明即可, 比如
1 | private static final int REQUEST_CODE = 111; |
接收扫码界面的返回
在 MainActivity 中处理扫码结果
1 | if (requestCode == REQUEST_CODE) { |