Android 集成二维码扫描器

    xiaoxiao2021-03-31  32

    GitHub:https://github.com/bingoogolapple/BGAQRCode-Android

    Layout:

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_qrcode" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="cn.queenup.rike.activity.QRCodeActivity"> <cn.bingoogolapple.qrcode.zxing.ZXingView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/qrcode_zxingview" android:layout_width="match_parent" android:layout_height="match_parent" app:qrcv_animTime="1000" app:qrcv_borderColor="@android:color/white" app:qrcv_borderSize="1dp" app:qrcv_cornerColor="#ffd535" app:qrcv_cornerLength="20dp" app:qrcv_cornerSize="3dp" app:qrcv_maskColor="#33000000" app:qrcv_rectWidth="200dp" app:qrcv_scanLineColor="@android:color/white" app:qrcv_scanLineSize="1dp" app:qrcv_qrCodeTipText="将二维码放入框内,即可自动扫描" app:qrcv_topOffset="220dp" /> <include layout="@layout/toolbar_qrcode" /> </RelativeLayout>

    Activity:

    public class QRCodeActivity extends BaseActivity implements QRCodeView.Delegate{ // 动态申请权限(要申请的权限) private String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; private ImageView iv_toolbar_back; private ImageView iv_toolbar_flash; private ZXingView zv_zxingView; private boolean isFlash; @Override protected int getLayoutId() { return R.layout.activity_qrcode; } @Override protected void initView() { iv_toolbar_back = (ImageView) findViewById(R.id.toolbar_qrcode_back); iv_toolbar_flash = (ImageView) findViewById(R.id.toolbar_qrcode_flash); zv_zxingView = (ZXingView) findViewById(R.id.qrcode_zxingview); } @Override protected void initListener() { iv_toolbar_back.setOnClickListener(this); iv_toolbar_flash.setOnClickListener(this); } @Override protected void initData() { checkPermissions(); zv_zxingView.setDelegate(this); } private void checkPermissions() { // 版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // 检查该权限是否已经获取 int i1 = ContextCompat.checkSelfPermission(this, permissions[0]); int i2 = ContextCompat.checkSelfPermission(this, permissions[1]); int i3 = ContextCompat.checkSelfPermission(this, permissions[2]); // 权限是否已经 授权 GRANTED---授权 DINIED---拒绝 if (i1 != PackageManager.PERMISSION_GRANTED || i2 != PackageManager.PERMISSION_GRANTED || i3 != PackageManager.PERMISSION_GRANTED) { // 请求权限 ActivityCompat.requestPermissions(this, permissions, 321); } } } @Override public void onClick(View v) { switch (v.getId()){ case R.id.toolbar_qrcode_back: finish(); break; case R.id.toolbar_qrcode_flash: // 闪光灯 if (isFlash){ zv_zxingView.closeFlashlight(); }else{ zv_zxingView.openFlashlight(); } isFlash = !isFlash; break; } } @Override public void onScanQRCodeSuccess(String result) { if (TextUtils.isEmpty(result)) { MyToast.showToast(QRCodeActivity.this,"未发现二维码"); } else { // 处理二维码 result:扫描的结果 Intent intent = new Intent(this,QRCodeProcessActivity.class); intent.putExtra(Constants.QRCODE,result); startActivity(intent); finish(); } zv_zxingView.startSpotDelay(500); } @Override public void onScanQRCodeOpenCameraError() { MyToast.showToast(App.mContext,"打开相机错误,请返回并重新打开"); } @Override protected void onStart() { super.onStart(); zv_zxingView.startCamera(); zv_zxingView.showScanRect(); zv_zxingView.startSpotDelay(500); } @Override protected void onStop() { zv_zxingView.stopCamera(); super.onStop(); } @Override protected void onDestroy() { zv_zxingView.onDestroy(); super.onDestroy(); } }

    转载请注明原文地址: https://ju.6miu.com/read-665277.html

    最新回复(0)