Default View Mode提供相机扫码和导入图片扫码两个功能,提供完整的Activity,不需要开发者开发扫码界面的UI。
使用Default View Mode的主要业务流程如下:
1. 用户打开应用发起扫码申请。
2. 校验是否有相机权限和文件读取权限。
3. 权限验证通过后,调用HMS SDK的“startScan”扫码接口,启动扫码界面。
4. 判断扫码页面启动状态。
5. HMS SDK回调应用的“onActivityResult”接口,根据扫码状态获取扫码结果。
6. 应用封装扫码结果返回给用户。

1. 在调用模块的AndroidManifest.xml清单文件中对扫码页面进行声明。
- <activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />
2. (可选)根据实际需求创建扫码选项参数。
Scan Kit默认支持13种码制式,开发者也可以指定Scan Kit只扫描特定的码制式以提高扫码速度。例如,当仅需要检测QR码和Data Matrix码时,请按照以下示例构建“HmsScanAnalyzerOptions”对象。如果不限制检测码格式,开发者可以不创建“HmsScanAnalyzerOptions”对象。
- //“QRCODE_SCAN_TYPE”和“DATAMATRIX_SCAN_TYPE”表示只扫描QR和Data Matrix的码
- HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE , HmsScan.DATAMATRIX_SCAN_TYPE).create();
3. 调用“ScanUtil”的静态方法“startScan”启动Default View扫码页面。用户可以使用相机扫码,也可以通过该页面的“导入图片”按钮检测图片中的码。
“REQUEST_CODE_SCAN_ONE”为开发者设置的请求码参数,对应“onActivityResult”方法中的“requestCode”参数,用于判断“onActivityResult”调用是否来自Scan Kit扫码结果回调。若requestCode参数等于开发者设置的请求码参数,则表示本次”onActivityResult”是Scan Kit的扫码结果回调。
如果开发者没有指定只检测特定的码制式,此处的“options”可以置为“null”,表示默认检测Scan Kit支持的码制式。
- ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, options);
4. 实现回调接口接收扫码结果,相机扫码和导入图片扫码均通过该接口返回。
调用Activity的“onActivityResult”方法获取Intent参数,扫码结果对象HmsScan封装在其中。
若“requestCode”等于第3步中定义的“REQUEST_CODE_SCAN_ONE”请求码参数,则表示本次接收的Intent是Scan Kit返回的结果。
通过Intent中的“ScanUtil.RESULT”获取扫码结果HmsScan,其中包含的信息参见码值解析。
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (resultCode != RESULT_OK || data == null) {
- return;
- }
- if (requestCode == REQUEST_CODE_SCAN_ONE) {
- HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);
- if (obj != null) {
- //展示解码结果
- showResult(obj);
- }
- }
- }