左晓为主开发手持机充值管理机
zuoxiao
2023-11-16 682caa4cef47046184e860d86ebb8467c11e032f
app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
@@ -1,5 +1,6 @@
package com.dayu.recharge.activity;
import android.Manifest;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
@@ -8,6 +9,7 @@
import android.view.LayoutInflater;
import android.view.View;
import com.msd.ocr.idcard.LibraryInitOCR;
import com.dayu.recharge.MyApplication;
import com.dayu.recharge.card.UserCard;
import com.dayu.recharge.databinding.ActivityNewCardBinding;
@@ -26,6 +28,10 @@
import com.dayu.recharge.utils.SocketUtil;
import com.dayu.recharge.utils.ToastUtil;
import com.dayu.recharge.utils.WSHelper;
import com.permissionx.guolindev.PermissionX;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Arrays;
@@ -37,7 +43,7 @@
 */
public class NewCardActivity extends BaseNfcActivity {
    public static final int SCAN_IDCARD_REQUEST = 1;
    UserCardBean userCardBean;
    Dialog dialog;
@@ -54,9 +60,19 @@
        setContentView(newCardBinding.getRoot());
        setData();
        initView();
        LibraryInitOCR.initOCR(NewCardActivity.this);
    }
    private void initView() {
        //身份证识别
        newCardBinding.newCardScanBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                rxPermission();
            }
        });
        newCardBinding.newCardRegistBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -97,6 +113,67 @@
        });
    }
    private void rxPermission() {
        PermissionX.init(NewCardActivity.this).permissions(Manifest.permission.CAMERA)
                .onExplainRequestReason((scope, deniedList) -> {
// val message = "PermissionX需要您同意以下权限才能正常使用"
                })
                .request((allGranted, grantedList, deniedList) -> {
                    if (allGranted) {//所有申请的权限都已通过
                        startCamera();
                    } else {//您拒绝了如下权限:$deniedList
                    }
                });
    }
    private void startCamera() {
        Bundle bundle = new Bundle();
        bundle.putBoolean("saveImage", false);
        bundle.putInt("requestCode", SCAN_IDCARD_REQUEST);
        bundle.putInt("type", 0); //0身份证, 1驾驶证
        LibraryInitOCR.startScan(NewCardActivity.this, bundle);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK){
            switch (requestCode) {
                case SCAN_IDCARD_REQUEST:
                    String result = data.getStringExtra("OCRResult");
                    try {
                        JSONObject jo = new JSONObject(result);
//                    sb.append(String.format("正面 = %s\n", jo.opt("type")));
//                    sb.append(String.format("姓名 = %s\n", jo.opt("name")));
//                    sb.append(String.format("性别 = %s\n", jo.opt("sex")));
//                    sb.append(String.format("民族 = %s\n", jo.opt("folk")));
//                    sb.append(String.format("日期 = %s\n", jo.opt("birt")));
//                    sb.append(String.format("号码 = %s\n", jo.opt("num")));
//                    sb.append(String.format("住址 = %s\n", jo.opt("addr")));
//                    sb.append(String.format("签发机关 = %s\n", jo.opt("issue")));
//                    sb.append(String.format("有效期限 = %s\n", jo.opt("valid")));
//                    sb.append(String.format("整体照片 = %s\n", jo.opt("imgPath")));
//                    sb.append(String.format("头像路径 = %s\n", jo.opt("headPath")));
                        newCardBinding.newCardName.setText(jo.opt("name").toString());
                        newCardBinding.newCardId.setText(jo.opt("num").toString());
                        newCardBinding.newCardIdTip.setVisibility(View.VISIBLE);
                    } catch (JSONException e) {
                        throw new RuntimeException(e);
                    }
                    break;
            }
        }
    }
    private void setData() {
        try {