123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- package com.example.chemical.ui.verify;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.util.Log;
- import android.view.View;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import androidx.core.util.Pair;
- import com.blankj.utilcode.util.ConvertUtils;
- import com.blankj.utilcode.util.GsonUtils;
- import com.blankj.utilcode.util.LogUtils;
- import com.blankj.utilcode.util.ResourceUtils;
- import com.blankj.utilcode.util.ThreadUtils;
- import com.blankj.utilcode.util.ToastUtils;
- import com.example.chemical.R;
- import com.example.chemical.databinding.ActivityDoubleVerifyBinding;
- import com.example.chemical.ui.verify.include.DetectType;
- import com.example.chemical.ui.verify.include.FaceDetectView;
- import com.example.chemical.utils.AudioPlayer;
- import com.google.zxing.BarcodeFormat;
- import com.google.zxing.MultiFormatWriter;
- import com.google.zxing.WriterException;
- import com.google.zxing.common.BitMatrix;
- import com.rc.httpcore.HttpConfig;
- import com.rc.httpcore.bean.UserValidationBean;
- public class DoubleVerifyActivityHelp {
- private DoubleVerifyActivity activity;
- private ActivityDoubleVerifyBinding binding;
- /**
- * 验证通过的人信息
- */
- private UserValidationBean userValidation1, userValidation2;
- public DoubleVerifyActivityHelp(DoubleVerifyActivity activity) {
- this.activity = activity;
- binding = activity.binding;
- }
- /**
- * 切换识别展示
- *
- * @param faceDetect 类型
- * @param isFirst 是否第一位
- * @param isShow 是否展示
- */
- public void switchShowDetect(DetectType faceDetect, boolean isFirst, boolean isShow) {
- Pair<Boolean, Boolean> first = activity.doubleVerifyList.get(0);
- Pair<Boolean, Boolean> second = activity.doubleVerifyList.get(1);
- if (first.first && second.first) {
- ToastUtils.showLong("双人认证已通过!");
- return;
- }
- // 切换UI
- switchDetectUi(faceDetect, isFirst);
- // 是否第一位
- if (isFirst) {
- if (first.first) {
- ToastUtils.showLong("第一位验证已通过!");
- return;
- }
- binding.include1LL.removeAllViewsInLayout();
- switch (faceDetect) {
- case FACE_DETECT:
- if (isShow) {
- binding.include1LL.addView(new FaceDetectView(activity, activity, activity.doubleVerifyList, new DoubleVerifyActivity.DoubleVerifyListener() {
- @Override
- public void detect(DetectType type, Bitmap faceBitmap, UserValidationBean userValidationBean) {
- binding.include1LL.removeAllViewsInLayout();
- ImageView imageView = new ImageView(activity);
- imageView.setImageBitmap(faceBitmap);
- binding.include1LL.addView(imageView);
- binding.hint1IV.setText("第一位验证已通过");
- ToastUtils.showLong("第一位验证已通过");
- userValidation1 = userValidationBean;
- switchShowDetect(DetectType.FACE_DETECT, false, true);
- }
- }));
- AudioPlayer.getInstance().play(R.raw.diyiren_renlianshibie);
- } else {
- ImageView imageView = new ImageView(activity);
- imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
- imageView.setScaleType(ImageView.ScaleType.FIT_XY);
- imageView.setBackgroundResource(R.mipmap.icon_face_two);
- binding.include1LL.addView(imageView);
- }
- break;
- case CARD_DETECT:
- ImageView imageView = new ImageView(activity);
- imageView.setBackgroundResource(R.mipmap.img_sfrz_sksyt);
- binding.include1LL.addView(imageView);
- AudioPlayer.getInstance().play(R.raw.diyiwei_shua_ka_renzheng);
- break;
- case SCAN_DETECT:
- ImageView qrIv = new ImageView(activity);
- qrIv.setImageBitmap(ConvertUtils.drawable2Bitmap(ResourceUtils.getDrawable(R.mipmap.qr)));
- ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<Bitmap>() {
- @Override
- public Bitmap doInBackground() throws Throwable {
- return createQrCode();
- }
- @Override
- public void onSuccess(Bitmap result) {
- if (null != result) {
- qrIv.setBackground(null);
- qrIv.setImageBitmap(result);
- }
- }
- });
- binding.include1LL.addView(qrIv);
- AudioPlayer.getInstance().play(R.raw.diyiren_saoma);
- break;
- }
- } else {
- if (!first.first) {
- ToastUtils.showLong("第一位验证未通过!");
- return;
- }
- binding.include2LL.removeAllViewsInLayout();
- switch (faceDetect) {
- case FACE_DETECT:
- if (isShow) {
- binding.include2LL.addView(new FaceDetectView(activity, activity, activity.doubleVerifyList, new DoubleVerifyActivity.DoubleVerifyListener() {
- @Override
- public void detect(DetectType type, Bitmap faceBitmap, UserValidationBean userValidationBean) {
- binding.include2LL.removeAllViewsInLayout();
- ImageView imageView = new ImageView(activity);
- imageView.setImageBitmap(faceBitmap);
- binding.include2LL.addView(imageView);
- binding.hint2IV.setText("第二位验证已通过");
- userValidation2 = userValidationBean;
- ToastUtils.showLong("双人认证成功");
- AudioPlayer.getInstance().play(R.raw.shuangren_tongguo);
- Intent intent = new Intent();
- intent.putExtra("userValidation1", GsonUtils.toJson(userValidation1));
- intent.putExtra("userValidation2", GsonUtils.toJson(userValidation2));
- activity.setResult(TwoPersonActivity.RESULT_OK, intent);
- activity.finish();
- }
- }));
- AudioPlayer.getInstance().play(R.raw.dierwei_renlianshibie);
- } else {
- ImageView imageView = new ImageView(activity);
- imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
- imageView.setScaleType(ImageView.ScaleType.FIT_XY);
- imageView.setBackgroundResource(R.mipmap.icon_face_two);
- binding.include2LL.addView(imageView);
- }
- break;
- case CARD_DETECT:
- ImageView imageView = new ImageView(activity);
- imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
- imageView.setScaleType(ImageView.ScaleType.FIT_XY);
- imageView.setBackgroundResource(R.mipmap.img_sfrz_sksyt);
- binding.include2LL.addView(imageView);
- AudioPlayer.getInstance().play(R.raw.dierweishuakarenzheng);
- break;
- case SCAN_DETECT:
- ImageView qrIv = new ImageView(activity);
- qrIv.setImageBitmap(ConvertUtils.drawable2Bitmap(ResourceUtils.getDrawable(R.mipmap.qr)));
- ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<Bitmap>() {
- @Override
- public Bitmap doInBackground() throws Throwable {
- return createQrCode();
- }
- @Override
- public void onSuccess(Bitmap result) {
- if (null != result) {
- qrIv.setBackground(null);
- qrIv.setImageBitmap(result);
- }
- }
- });
- binding.include2LL.addView(qrIv);
- AudioPlayer.getInstance().play(R.raw.dierren_saoma);
- break;
- }
- }
- }
- private void switchDetectUi(DetectType detectType, boolean isFirst) {
- if (isFirst) {
- switch (detectType) {
- case FACE_DETECT:
- binding.face1IB.setVisibility(View.GONE);
- binding.scan1IB.setVisibility(View.VISIBLE);
- binding.card1IB.setVisibility(View.VISIBLE);
- binding.hint1IV.setText("请第一位人脸验证");
- binding.hintBottom1IV.setText("请正对屏幕并使脸位于取景框内");
- break;
- case CARD_DETECT:
- binding.face1IB.setVisibility(View.VISIBLE);
- binding.scan1IB.setVisibility(View.VISIBLE);
- binding.card1IB.setVisibility(View.GONE);
- binding.hint1IV.setText("请第一位刷卡验证");
- binding.hintBottom1IV.setText("请在刷卡区域进行刷卡验证");
- break;
- case SCAN_DETECT:
- binding.face1IB.setVisibility(View.VISIBLE);
- binding.scan1IB.setVisibility(View.GONE);
- binding.card1IB.setVisibility(View.VISIBLE);
- binding.hint1IV.setText("请第一位扫码验证");
- binding.hintBottom1IV.setText("请打开微信扫描屏幕二维码");
- break;
- }
- } else {
- switch (detectType) {
- case FACE_DETECT:
- binding.face2IB.setVisibility(View.GONE);
- binding.scan2IB.setVisibility(View.VISIBLE);
- binding.card2IB.setVisibility(View.VISIBLE);
- binding.hint2IV.setText("请第二位人脸验证");
- binding.hintBottom2IV.setText("请正对屏幕并使脸位于取景框内");
- break;
- case CARD_DETECT:
- binding.face2IB.setVisibility(View.VISIBLE);
- binding.scan2IB.setVisibility(View.VISIBLE);
- binding.card2IB.setVisibility(View.GONE);
- binding.hint2IV.setText("请第二位刷卡验证");
- binding.hintBottom2IV.setText("请在刷卡区域进行刷卡验证");
- break;
- case SCAN_DETECT:
- binding.face2IB.setVisibility(View.VISIBLE);
- binding.scan2IB.setVisibility(View.GONE);
- binding.card2IB.setVisibility(View.VISIBLE);
- binding.hint2IV.setText("请第二位扫码验证");
- binding.hintBottom2IV.setText("请打开微信扫描屏幕二维码");
- break;
- }
- }
- }
- private Bitmap createQrCode() {
- BitMatrix bitMatrix;
- try {
- bitMatrix = new MultiFormatWriter().encode(HttpConfig.Companion.getAPI_BASE_QC_URL(), BarcodeFormat.QR_CODE, 400, 400);
- } catch (WriterException e) {
- LogUtils.e(Log.getStackTraceString(e));
- return null;
- }
- Bitmap bitmap = Bitmap.createBitmap(bitMatrix.getWidth(), bitMatrix.getHeight(), Bitmap.Config.ARGB_8888);
- for (int x = 0; x < bitMatrix.getWidth(); x++) {
- for (int y = 0; y < bitMatrix.getHeight(); y++) {
- bitmap.setPixel(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
- }
- }
- return bitmap;
- }
- }
|