统一扫码服务(Scan Kit)
统一扫码服务(Scan Kit)的业务介绍涵盖了多方面的内容,包括其提供的能力、支持的设备、适用的场景等。
重要亮点
- 服务能力:提供全球主流制式二维码和条形码的扫描、识别和生成能力,在计算机视觉领域有出色表现,对复杂扫码场景做了特定识别优化,大幅提升扫码成功率。
- 系统支持:支持 Android 和 iOS 系统集成,Android 系统集成后具备横屏扫码能力。
- 支持设备:Android 方面,华为手机、平板及非华为手机在特定版本可集成;iOS 手机在特定版本可集成。
- 场景应用:支持十三种全球主流的码制式识别和生成以及多功能码识别,提供多种调用模式,可根据应用场景选择。
- 码值处理:Android 和 iOS 下可直接返回码的原始内容,也能对特定格式编码的码进行分析提取结构化数据。
/*
* Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 定义包名
package com.example.scankitdemo;
// 导入所需的Android库和华为HMS Scan Kit相关的类
import android.Manifest;
// ... 其他导入 ...
// MainActivity类继承自Android的Activity类
public class MainActivity extends Activity implements ActivityCompat.OnRequestPermissionsResultCallback {
// 定义请求代码常量
// ... 常量定义 ...
// onCreate方法在活动创建时被调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 请求无标题窗口特性
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 设置布局
setContentView(R.layout.activity_mwcmain);
// 根据设备方向设置不同的布局
// ... 屏幕方向检测和布局设置 ...
// 设置沉浸式状态栏
// ... 沉浸式状态栏设置代码 ...
}
// 定义按钮点击事件处理方法
// ... 按钮点击事件处理方法 ...
// 权限请求方法
private void requestPermission(int requestCode, int mode) {
// ... 权限请求代码 ...
}
// 解码权限请求方法
private void decodePermission(int requestCode) {
// ... 解码权限请求代码 ...
}
// 生成权限请求方法
private void generatePermission(int requestCode) {
// ... 生成权限请求代码 ...
}
// 权限请求结果回调方法
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// ... 权限请求结果处理 ...
}
// 活动结果回调方法
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// ... 活动结果处理 ...
}
}
一个Android应用程序的一部分,它实现了使用华为的HMS Scan Kit进行二维码和条形码扫描的功能。下面是对代码的分析:
版权声明:代码的开头是一个标准的Apache License 2.0版权声明,表明该文件遵循Apache License 2.0。
包名:
package com.example.scankitdemo;
定义了该Java类的包名。导入:代码中导入了必要的Android库和华为HMS Scan Kit相关的类。
类定义:
public class MainActivity extends Activity
定义了一个名为MainActivity
的类,它继承自Android的Activity
类。请求窗口特性:
requestWindowFeature(Window.FEATURE_NO_TITLE);
请求一个没有标题栏的窗口。布局设置:
setContentView(R.layout.activity_mwcmain);
设置了活动的布局。屏幕方向检测:代码检查设备的屏幕方向,并根据方向设置不同的布局。
沉浸式状态栏:设置了沉浸式状态栏,使得状态栏和导航栏在视觉上与应用内容融为一体。
按钮点击事件:定义了多个按钮点击事件,如
loadScanKitBtnClick
、newViewBtnClick
等,这些方法用于触发不同的扫描模式。权限请求:
requestPermission
方法根据不同的模式请求相应的权限,如相机权限、读取存储权限等。权限回调:
onRequestPermissionsResult
方法处理权限请求的结果,并根据不同的请求代码执行相应的操作。结果回调:
onActivityResult
方法处理从其他活动返回的结果,如扫描结果,并根据结果启动新的活动。扫描模式:代码支持多种扫描模式,包括默认视图模式、自定义视图模式、位图模式、多处理器同步和异步模式。
二维码生成:
generateQRCodeBtnClick
方法用于触发二维码生成功能。API调用:使用了华为HMS Scan Kit的API,如
ScanUtil.startScan
、HmsScanAnalyzerOptions
等,来进行二维码和条形码的扫描。结果处理:扫描完成后,结果会被传递到
DisPlayActivity
或DisPlayMulActivity
等活动,用于展示扫描结果。
演示提供了四种模式,以适应不同情况下的代码扫描能力。
- Default View
该应用程序直接调用 HUAWEI Scan Kit 的扫码功能,并通过异步回调 API 获取扫描结果。可以使用设备相机,也可以通过导入的图像来扫描条形码。
代码位置:example/scankitdemo/MainActivity.java
- Customized View
此应用程序直接构建 RemoteView,并借助异步回调 API 来获取扫描成果。能够运用设备相机抑或通过导入的图像对条形码进行扫描。
代码位置:example/scankitdemo/DefinedActivity.java
- Bitmap API
该应用程序直接通过位图API传递位图,并通过API获得扫描结果。
在您的应用中,您可以调用相机API或导入本地图像以获得位图,然后调用HUAWEI Scan Kit的位图API来解码位图。代码位置:example/scankitdemo/CommonActivity.java
example/scankitdemo/CommonHandler.java
- MultiProcessor API
该应用程序使用与HUAWEI ML Kit相同的技术,通过MultiProcessor
API传递帧数据以进行解码,并检测条形码以及诸如面部。代码位置:example/scankitdemo/CommonActivity.java
example/scankitdemo/CommonHandler.java