Zxing扫描二维码,生成

首先导入依赖

// 二维码依赖
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.4'



@BindView(R.id.button)
Button button;
@BindView(R.id.button2)
Button button2;
@BindView(R.id.zxiv)
ImageView zxiv;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_zxing);
    ButterKnife.bind(this);
}

@OnClick({R.id.button, R.id.button2})
public void onViewClicked(View view) {
    switch (view.getId()) {
        case R.id.button:
            customScan();
            break;
        case R.id.button2:
            zxiv.setImageBitmap(encodeAs("杨某人的二维码"));
            break;
    }
}
//扫描二维码
public  void customScan(){
    IntentIntegrator intentIntegrator = new IntentIntegrator(this);
    intentIntegrator.setDesiredBarcodeFormats(IntentIntegrator.CODE_39);
    intentIntegrator.setCaptureActivity(ScanActivity.class);
    intentIntegrator.setPrompt("扫描二维码");//底部的提示文字,设为""可以置空
    intentIntegrator.setCameraId(0);//前置或者后置摄像头
    intentIntegrator.setBeepEnabled(true);//扫描成功的「哔哔」声,默认开启
    intentIntegrator.setBarcodeImageEnabled(true);
    intentIntegrator.initiateScan();
}

//生成二维码

public Bitmap encodeAs(String str) {
    Bitmap bitmap = null;
    BitMatrix result = null;
    MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
    try {
        result = multiFormatWriter.encode(str, BarcodeFormat.QR_CODE, 200, 200);
        // 使用 ZXing Android Embedded 要写的代码
        BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
        bitmap = barcodeEncoder.createBitmap(result);
    } catch (WriterException e) {
        e.printStackTrace();
    } catch (IllegalArgumentException iae) {
        return null;
    }
    return bitmap;
}
## 调用的界面
public class ScanActivity extends CaptureActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}


@Override
// 通过 onActivityResult的方法获取 扫描回来的 值
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if (intentResult != null) {
        if (intentResult.getContents() == null) {
            Toast.makeText(this, "内容为空", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(this, "扫描成功", Toast.LENGTH_LONG).show();
            // ScanResult 为 获取到的字符串
            String ScanResult = intentResult.getContents();
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

猜你喜欢

转载自blog.csdn.net/ytw737006109/article/details/86436387