目录

Default View Mode提供相机扫码和导入图片扫码两个功能,提供完整的Activity,不需要开发者开发扫码界面的UI。

1. 业务流程

使用Default View Mode的主要业务流程如下:

1. 用户打开应用发起扫码申请。

2. 校验是否有相机权限和文件读取权限。

3. 权限验证通过后,调用HMS SDK的“startScan”扫码接口,启动扫码界面。

4. 判断扫码页面启动状态。

5. HMS SDK回调应用的“onActivityResult”接口,根据扫码状态获取扫码结果。

6. 应用封装扫码结果返回给用户。

2. 开发步骤

1. 在调用模块的AndroidManifest.xml清单文件中对扫码页面进行声明。

  1. <activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />

2. (可选)根据实际需求创建扫码选项参数。

Scan Kit默认支持13种码制式,开发者也可以指定Scan Kit只扫描特定的码制式以提高扫码速度。例如,当仅需要检测QR码和Data Matrix码时,请按照以下示例构建“HmsScanAnalyzerOptions”对象。如果不限制检测码格式,开发者可以不创建“HmsScanAnalyzerOptions”对象。

  1. //“QRCODE_SCAN_TYPE”和“DATAMATRIX_SCAN_TYPE”表示只扫描QR和Data Matrix的码
  2. HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE , HmsScan.DATAMATRIX_SCAN_TYPE).create();

3. 调用“ScanUtil”的静态方法“startScan”启动Default View扫码页面。用户可以使用相机扫码,也可以通过该页面的“导入图片”按钮检测图片中的码。

  1. ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, options);

4. 实现回调接口接收扫码结果,相机扫码和导入图片扫码均通过该接口返回。

  1. @Override
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  3.    super.onActivityResult(requestCode, resultCode, data);
  4.    if (resultCode != RESULT_OK || data == null) {
  5.        return;
  6.    }
  7.    if (requestCode == REQUEST_CODE_SCAN_ONE) {
  8.        HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);
  9.        if (obj != null) {
  10.            //展示解码结果
  11.            showResult(obj);
  12.         }
  13.    }
  14. }