|
@@ -20,8 +20,10 @@ import com.cooleshow.base.databinding.ActivityScanLayoutBinding;
|
|
|
import com.cooleshow.base.presenter.ScanPresenter;
|
|
|
import com.cooleshow.base.router.RouterPath;
|
|
|
import com.cooleshow.base.ui.activity.BaseMVPActivity;
|
|
|
+import com.cooleshow.base.utils.LOG;
|
|
|
import com.cooleshow.base.utils.LogUtils;
|
|
|
import com.cooleshow.base.utils.PermissionUtils;
|
|
|
+import com.cooleshow.base.utils.ThreadUtils;
|
|
|
import com.cooleshow.base.utils.ToastUtil;
|
|
|
import com.cooleshow.base.utils.UiUtils;
|
|
|
import com.cooleshow.base.utils.helper.GlideEngine;
|
|
@@ -33,21 +35,27 @@ import com.luck.picture.lib.config.PictureMimeType;
|
|
|
import com.luck.picture.lib.entity.LocalMedia;
|
|
|
import com.luck.picture.lib.tools.PictureFileUtils;
|
|
|
import com.tbruyelle.rxpermissions3.RxPermissions;
|
|
|
-import com.uuzuche.lib_zxing.activity.CaptureFragment;
|
|
|
-import com.uuzuche.lib_zxing.activity.CodeUtils;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.util.List;
|
|
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
+import cn.bingoogolapple.qrcode.core.QRCodeView;
|
|
|
|
|
|
/**
|
|
|
* Author by pq, Date on 2022/7/11.
|
|
|
*/
|
|
|
@Route(path = RouterPath.BaseCenter.SCAN_QR_CODE)
|
|
|
-public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, ScanPresenter> implements ScanContract.ScanView, CodeUtils.AnalyzeCallback, View.OnClickListener {
|
|
|
+public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, ScanPresenter> implements ScanContract.ScanView, View.OnClickListener {
|
|
|
public static final int SELECT_IMG_REQUEST_CODE = 1001;
|
|
|
|
|
|
+ private Runnable mRunnable = new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ reset();
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
@Override
|
|
|
protected void initView() {
|
|
|
initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "扫码登录");
|
|
@@ -59,22 +67,47 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
|
|
|
@Override
|
|
|
public void initData() {
|
|
|
super.initData();
|
|
|
+ initListener();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initListener() {
|
|
|
+ viewBinding.zxingview.setDelegate(new QRCodeView.Delegate() {
|
|
|
+ @Override
|
|
|
+ public void onScanQRCodeSuccess(String result) {
|
|
|
+ if (!checkActivityExist()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ LOG.i("pq,thread:" + Thread.currentThread().getName());
|
|
|
+ if (!TextUtils.isEmpty(result)) {
|
|
|
+ LOG.i("pq", "解析成功:" + result);
|
|
|
+ parseResult(result);
|
|
|
+ } else {
|
|
|
+ sendResetMsg();
|
|
|
+ ToastUtil.getInstance().showShort("解析失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onCameraAmbientBrightnessChanged(boolean isDark) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onScanQRCodeOpenCameraError() {
|
|
|
+ ToastUtil.getInstance().showShort("开启摄像头失败,请检查设备状态");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onResume() {
|
|
|
+ super.onResume();
|
|
|
checkCameraPermission();
|
|
|
}
|
|
|
|
|
|
private void initQrScan() {
|
|
|
- /**
|
|
|
- * 执行扫面Fragment的初始化操作
|
|
|
- */
|
|
|
- CaptureFragment captureFragment = new CaptureFragment();
|
|
|
- // 为二维码扫描界面设置定制化界面
|
|
|
- CodeUtils.setFragmentArgs(captureFragment, R.layout.my_camera);
|
|
|
-
|
|
|
- captureFragment.setAnalyzeCallback(this);
|
|
|
- /**
|
|
|
- * 替换我们的扫描控件
|
|
|
- */
|
|
|
- getSupportFragmentManager().beginTransaction().replace(R.id.fl_my_container, captureFragment).commit();
|
|
|
+ LOG.i("pq", "startSpotAndShowRect");
|
|
|
+ viewBinding.zxingview.startSpotAndShowRect();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -87,18 +120,13 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
|
|
|
return new ScanPresenter();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
|
|
|
- LogUtils.i("pq", "解析成功:" + result);
|
|
|
- LogUtils.i("pq", "解析成功mBitmap:" + mBitmap);
|
|
|
- parseResult(result);
|
|
|
- }
|
|
|
|
|
|
private void parseResult(String result) {
|
|
|
if (TextUtils.isEmpty(result)) {
|
|
|
return;
|
|
|
}
|
|
|
if (!checkUrlIsEnable(result)) {
|
|
|
+ sendResetMsg();
|
|
|
ToastUtil.getInstance().showShort("请扫描酷乐秀二维码");
|
|
|
return;
|
|
|
}
|
|
@@ -109,11 +137,11 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
|
|
|
finish();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void onAnalyzeFailed() {
|
|
|
- ToastUtil.getInstance().showShort("解析失败");
|
|
|
+ private void sendResetMsg() {
|
|
|
+ ThreadUtils.getMainHandler().postDelayed(mRunnable, 1000);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
int id = v.getId();
|
|
@@ -133,7 +161,7 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
|
|
|
if (permission) {
|
|
|
initQrScan();
|
|
|
} else {
|
|
|
- UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","扫描二维码需要相机权限,去设置?");
|
|
|
+ UiUtils.showPermissionTipDialog(getSupportFragmentManager(), this, "提示", "扫描二维码需要相机权限,去设置?");
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -157,7 +185,7 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
|
|
|
.circleDimmedLayer(false)// 是否圆形裁剪 true or false
|
|
|
.forResult(PictureConfig.CHOOSE_REQUEST);
|
|
|
} else {
|
|
|
- UiUtils.showPermissionTipDialog(getSupportFragmentManager(),this,"提示","选择照片需要相机、储存权限,去设置?");
|
|
|
+ UiUtils.showPermissionTipDialog(getSupportFragmentManager(), this, "提示", "选择照片需要相机、储存权限,去设置?");
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -170,22 +198,7 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
|
|
|
// 图片、视频、音频选择结果回调
|
|
|
List<LocalMedia> selectList = PictureSelector.obtainMultipleResult(data);
|
|
|
String avatar = selectList.get(0).getCompressPath();
|
|
|
- try {
|
|
|
- CodeUtils.analyzeBitmap(avatar, new CodeUtils.AnalyzeCallback() {
|
|
|
- @Override
|
|
|
- public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
|
|
|
- ToastUtil.getInstance().showShort("解析成功");
|
|
|
- parseResult(result);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onAnalyzeFailed() {
|
|
|
- ToastUtil.getInstance().showShort("解析二维码失败");
|
|
|
- }
|
|
|
- });
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
+ viewBinding.zxingview.decodeQRCode(avatar);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -196,4 +209,25 @@ public class ScanActivity extends BaseMVPActivity<ActivityScanLayoutBinding, Sca
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+ private void reset() {
|
|
|
+ if (viewBinding != null && viewBinding.zxingview != null) {
|
|
|
+ LOG.i("重置");
|
|
|
+ viewBinding.zxingview.startSpot();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onStop() {
|
|
|
+ LOG.i("pq", "stopCamera");
|
|
|
+ viewBinding.zxingview.stopCamera(); // 关闭摄像头预览,并且隐藏扫描框
|
|
|
+ super.onStop();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onDestroy() {
|
|
|
+ viewBinding.zxingview.onDestroy();
|
|
|
+ super.onDestroy();
|
|
|
+ ThreadUtils.getMainHandler().removeCallbacks(mRunnable);
|
|
|
+ }
|
|
|
}
|