Android扫一扫和生成二维码(使用华为ScanKit)

本文主要讲如何使用华为统一扫码scan Kit进行扫一扫以及生成二维码,
有兴趣的可以看一下华为扫描和Zxing扫描的区别
使用步骤
1、在全局的build.gradle文件里添加华为maven仓库

buildscript {
    
    
    repositories {
    
            
        maven {
    
    url 'http://developer.huawei.com/repo/'}
    }    
}
allprojects {
    
    
    repositories {
    
           
        maven {
    
     url 'http://developer.huawei.com/repo/'}
    }
}

2、在app的build.gradle文件里添加Scan Kit的依赖

implementation 'com.huawei.hms:scanplus:1.1.3.301'

3、在清单文件里添加权限和扫码页面的声明

<!--相机权限--> 
<uses-permission android:name="android.permission.CAMERA" /> 
<!--读文件权限--> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<!--使用特性--> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" />

<!--<!—对扫码页面进行声明&ndash;&gt;-->
<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />

添加混淆

-ignorewarnings
-keepattributes *Annotation*  
-keepattributes Exceptions  
-keepattributes InnerClasses  
-keepattributes Signature  
-keepattributes SourceFile,LineNumberTable  
-keep class com.hianalytics.android.**{
    
    *;}  
-keep class com.huawei.**{
    
    *;}

4、下面是代码调用部分
扫一扫

/**
     * 请求权限
     * */
    private void requestPermission(int requestCode, int mode) {
    
    
        ActivityCompat.requestPermissions(
                this,
                new String[]{
    
    Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},
                requestCode);
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    
    
        if (permissions == null || grantResults == null) {
    
    
            return;
        }
        if (grantResults.length < 2 || grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {
    
    
            return;
        }
        if (requestCode == CAMERA_REQ_CODE) {
    
    
            ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create());
        }
    }

    @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) {
    
    
                mCeshi.setText(obj.originalValue);
            }
        }
    }

生成二维码

ScanUtil.buildBitmap("这里是要生成二维码的内容",3,300,300,new HmsBuildBitmapOption.Creator().create())

下面是全部的代码,这里我在页面中加了两个按钮,一个开启扫一扫,一个生成二维码

public class MainActivity extends AppCompatActivity {
    
    

    private TextView mCeshi,mCeshi1;
    private ImageView mCeshi2;
    private int CAMERA_REQ_CODE=2;
    private int DECODE=3;
    private int REQUEST_CODE_SCAN_ONE=4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mCeshi=findViewById(R.id.ceshi);
        mCeshi1=findViewById(R.id.ceshi1);
        mCeshi2=findViewById(R.id.ceshi2);
        mCeshi.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                requestPermission(CAMERA_REQ_CODE, DECODE);
            }
        });
        mCeshi1.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                try {
    
    
                    mCeshi2.setImageBitmap(ScanUtil.buildBitmap("zhangyujiezhangyujie",3,300,300,new HmsBuildBitmapOption.Creator().create()));
                } catch (WriterException e) {
    
    
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * 请求权限
     * */
    private void requestPermission(int requestCode, int mode) {
    
    
        ActivityCompat.requestPermissions(
                this,
                new String[]{
    
    Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},
                requestCode);
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    
    
        if (permissions == null || grantResults == null) {
    
    
            return;
        }
        if (grantResults.length < 2 || grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {
    
    
            return;
        }
        if (requestCode == CAMERA_REQ_CODE) {
    
    
            ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create());
        }
    }

    @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) {
    
    
                mCeshi.setText(obj.originalValue);
            }
        }
    }
}

自此结束

猜你喜欢

转载自blog.csdn.net/lanrenxiaowen/article/details/122983230