【安卓扫码开发,华为Scan Kit版本】

华为Scan Kit是华为提供的一种统一扫码服务,它提供便捷的条形码和二维码扫描、解析、生成能力,帮助用户快速构建应用内的扫码功能。

Scan Kit的优点在于它支持多种码制式,包括一维码和二维码,如EAN-8、EAN-13、UPC-A、UPC-E、Codabar、Code 39、Code 93、Code 128、ITF、QR Code、Data Matrix、PDF417、Aztec等。同时,Scan Kit针对远距离码或小型码的检测和自动放大做了优化,并对常见复杂扫码场景(如反光、暗光、污损、模糊、柱面)做了针对性识别优化,提升了扫码成功率与用户体验。

在调用模式上,Scan Kit提供了四种模式:Default View Mode模式、Customized View Mode模式、Bitmap Mode模式和MultiProcessor Mode模式。其中,Default View Mode模式和Customized View Mode模式针对扫码流程和扫码界面处理方式不同,Bitmap Mode模式和MultiProcessor Mode模式同样如此。

在解析结果方面,Scan Kit不仅可以返回码的原始内容,还可以针对使用特定内容格式编码的二维码/条码进行分析并提取结构化数据,帮助开发者快速构建关联服务。支持的场景包括联系人信息、Wi-Fi连接信息、网页、日历日程、ID卡、短信、电话、邮件、地理位置、商品条码、ISBN等。

另外,Scan Kit还支持生成码,可以将字符串转换为一维码或二维码,目前支持的码制式包括EAN-8、EAN-13、UPC-A、UPC-E、Codabar、Code 39、Code 93、Code 128、ITF、QR Code、Data Matrix、PDF417、Aztec等。

华为Scan Kit官网的代码和示例

以下是一个使用华为Scan Kit进行二维码扫描的示例代码:

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import com.huawei.hms.plugin.scan.Scan;
import com.huawei.hms.plugin.scan.model.ScanResult;
import com.huawei.hms.plugin.scan.model.options.decoder.BarcodeFormat;
import com.huawei.hms.plugin.scan.model.options.decoder.DecodeRequestedOptions;
import com.huawei.hms.plugin.scan.model.options.decoder.QrCodeDecoderOption;
import com.huawei.hms.plugin.scan.ui.ScanActivity;
import com.huawei.hms.plugin.scan.ui.ScanFragment;

public class MainActivity extends AppCompatActivity {
    private static final int REQUEST_CODE_SCAN = 10001;
    private Button mButtonScan;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mButtonScan = findViewById(R.id.button_scan);
        mButtonScan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission
                         .CAMERA) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(MainActivity .this, new String[]{Manifest
                             .permission .CAMERA}, REQUEST_CODE_SCAN);
                } else {
                    startScan();
                }
            }
        });
    }

    private void startScan() {
        // 创建扫描请求对象,并设置扫描模式为连续扫描
        final Scan scan = new Scan(ScanFragment.class);
        QrCodeDecoderOption qrCodeDecoderOption = new QrCodeDecoderOption();
        qrCodeDecoderOption .setBarcodeFormats(BarcodeFormat .QR_CODE); // 设置需要识别的码制式,这里只识别二维码。 可以通过 | 运算符添加多个需要识别的码制式,例如:BarcodeFormat .QR_CODE | BarcodeFormat .EAN_13。默认识别的码制式为 BarcodeFormat .EAN_13 | BarcodeFormat .QR_CODE。  默认识别所有支持的码制式。  如果设置了该参数,则只识别对应的码制式。 可以通过查询华为开发者联盟官网获取支持的码制式类型。 例如:BarcodeFormat .EAN_13、BarcodeFormat .QR_CODE等。 
	    // 设置扫描请求对象的解码选项  
	    scan.setRequestedOptions(qrCodeDecoderOption);  
	    // 启动扫描活动  
	    startActivityForResult(scan.getOpenIntent(), REQUEST_CODE_SCAN);  
	}  
  
	// 处理扫描结果  
	@Override  
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
	    super.onActivityResult(requestCode, resultCode, data);  
	    if (requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK) {  
	        if (data != null && data.hasExtra(ScanActivity.SCAN_RESULT)) {  
	            // 获取扫描结果  
	            String result = data.getStringExtra(ScanActivity.SCAN_RESULT);  
	            // 处理扫描结果,例如解析二维码内容  
	            ParseQRCodeResult parseResult = ScanKit.getInstance().parseQRCode(result);  
	            if (parseResult != null && parseResult.getContent() != null) {  
	                String content = parseResult.getContent();  
	                // 处理二维码内容,例如展示在界面上或者进行其他操作  
	                Toast.makeText(MainActivity.this, content, Toast.LENGTH_SHORT).show();  
	            } else {  
	                Toast.makeText(MainActivity.this, "无法解析二维码", Toast.LENGTH_SHORT).show();  
	            }  
	        }  
	    }  
	}
        
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值