Scanner Android et générer un code QR (à l'aide de Huawei ScanKit)

Cet article explique principalement comment utiliser le kit d'analyse unifiée de Huawei pour numériser et générer des codes QR.Si
vous êtes intéressé, vous pouvez jeter un œil à la différence entre l'analyse Huawei et l'analyse Zxing.Étape
1.Ajouter
l'entrepôt Huawei maven à la construction globale fichier .gradle

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

2. Ajoutez la dépendance Scan Kit dans le fichier build.gradle de l'application

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

3. Ajoutez la déclaration des autorisations et la page d'analyse dans le fichier manifeste

<!--相机权限--> 
<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" />

ajouter de la confusion

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

4. Ce qui suit est la partie d'appel du code,
scannez-la

/**
     * 请求权限
     * */
    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);
            }
        }
    }

Générer un code QR

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

Ce qui suit est tout le code, ici j'ai ajouté deux boutons à la page, un pour ouvrir le scan, un pour générer un code QR

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);
            }
        }
    }
}

fin ici

Je suppose que tu aimes

Origine blog.csdn.net/lanrenxiaowen/article/details/122983230
conseillé
Classement