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" />
<!--<!—对扫码页面进行声明–>-->
<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