android集成华为统一扫码功能。
2021-06-25 本文已影响0人
背锅TV丶伴奏大师
统一扫码:支持条形码和二维码扫描。
前言:集成过zxing的都知道,这个框架真的不好用,不灵活,很难扫出来。但是华为统一扫码服务(Scan Kit)就不一样了。真的好用。
集成步骤:
1.引入依赖:
repositories {
// 配置HMS Core SDK的Maven仓地址。
maven {url 'https://developer.huawei.com/repo/'}
}
allprojects {
repositories {
// 配置HMS Core SDK的Maven仓地址。
maven {url 'https://developer.huawei.com/repo/'}
}
华为官方给我们提供了两种类型的依赖包:

按需接入:
implementation 'com.huawei.hms:scanplus:1.3.2.300'
然后注意动态申请相机权限
2.扫码代码:
/**
* 扫描二维码
*/
private final int REQUEST_CODE_SCAN_DEFAULT_MODE=200
private void startScan(){
HmsScanAnalyzerOptions options=new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create();
ScanUtil.startScan(this,REQUEST_CODE_SCAN_DEFAULT_MODE, options);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK || data == null) {
return;
}
if(requestCode==REQUEST_CODE_SCAN_DEFAULT_MODE){
//获取扫码结果
HmsScan hmsScan=data.getParcelableExtra(ScanUtil.RESULT);
if(!TextUtils.isEmpty(hmsScan.originalValue)){
}
}
}
3.根据url生产二维码(文字也可以生成):
private int width=700, height=700;//二维码尺寸
private Bitmap resultImage;//所需结果
private int type = 0;//码类型。0=QR Code、1=Data Matrix、2=PDF417、3=Aztec
private int margin = 1;//边距
private int color = Color.BLACK;//码颜色
private int background = Color.WHITE;//码背景色
/**
* 生产二维码
* @param url /string文字也可以
*/
private void generateCode(String url){
HmsBuildBitmapOption options = new HmsBuildBitmapOption.Creator().setBitmapMargin(margin).setBitmapColor(color).setBitmapBackgroundColor(background).create();
try {
resultImage = ScanUtil.buildBitmap(url, type, width, height, options);
} catch (WriterException e) {
e.printStackTrace();
}
}
结语:参考:https://developer.huawei.com/consumer/cn/forum/topic/0201248342859390343?fid=18
https://mp.weixin.qq.com/s/umN0saur3pezrtCqKpxJ6A