左晓为主开发手持机充值管理机
zuoxiao
2024-03-26 ebc06a3ae3a42bd6ac1359a59c55d5e6f1a0e2f0
app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
@@ -1,17 +1,16 @@
package com.dayu.recharge.activity;
import android.Manifest;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import com.dayu.recharge.utils.DeviceNumberUtils;
import com.dayu.recharge.view.ProgressDialog;
import androidx.annotation.NonNull;
import com.dayu.recharge.MyApplication;
import com.dayu.recharge.card.UserCard;
@@ -28,14 +27,19 @@
import com.dayu.recharge.tools.HexUtil;
import com.dayu.recharge.tools.Utils;
import com.dayu.recharge.utils.CRC8;
import com.dayu.recharge.utils.DeviceNumberUtils;
import com.dayu.recharge.utils.SocketUtil;
import com.dayu.recharge.utils.TipUtil;
import com.permissionx.guolindev.PermissionX;
import com.dayu.recharge.view.ProgressDialog;
import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -49,7 +53,6 @@
    public static final int SCAN_IDCARD_REQUEST = 1;
    UserCardBean userCardBean;
    Dialog dialog;
    ActivityNewCardBinding newCardBinding;
    AdminDataBean adminData;
@@ -75,7 +78,7 @@
            @Override
            public void onClick(View v) {
                rxPermission();
                getPermission();
            }
        });
@@ -154,22 +157,40 @@
    }
    private void rxPermission() {
        PermissionX.init(NewCardActivity.this).permissions(Manifest.permission.CAMERA)
                .onExplainRequestReason((scope, deniedList) -> {
    private void getPermission() {
        try {
            XXPermissions.with(this)
                    // 申请单个权限
//                    .permission(Permission.RECORD_AUDIO)
                    // 申请多个权限
                    .permission(Permission.CAMERA)
                    // 设置权限请求拦截器(局部设置)
                    //.interceptor(new PermissionInterceptor())
                    // 设置不触发错误检测机制(局部设置)
                    //.unchecked()
                    .request(new OnPermissionCallback() {
// val message = "PermissionX需要您同意以下权限才能正常使用"
                })
                .request((allGranted, grantedList, deniedList) -> {
                    if (allGranted) {//所有申请的权限都已通过
//                        startCamera();
                    } else {//您拒绝了如下权限:$deniedList
                        @Override
                        public void onGranted(@NonNull List<String> permissions, boolean allGranted) {
                            if (allGranted) {
                            }
                        }
                    }
                });
                        @Override
                        public void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) {
                            if (doNotAskAgain) {
                                // 如果是被永久拒绝就跳转到应用权限系统设置页面
                            } else {
//                                toast("获取录音和日历权限失败");
                            }
                        }
                    });
        } catch (
                Throwable e) {
            e.printStackTrace();
        }
    }
    @Override
@@ -249,7 +270,7 @@
        initCardRequestBean.setPhone(phoneBuffer.toString());
        String userId = userCardBean.getUserID();
        initCardRequestBean.setIdCard(SocketUtil.str2HexStr(userId));
        SocketNet.getInstance().sendTestMessage(initCardRequestBean.pack(), new SocketCallBack() {
        SocketNet.getInstance().sendTestMessage(initCardRequestBean.pack(), "93",new SocketCallBack() {
            @Override
            public void onSocketResponse(SocketData readData) {
@@ -257,9 +278,10 @@
                if (CRC8.isCRC8(readData.getOriginDataBytes())) {
                    String state = BcdUtil.bcdToStr(readData.getBodyBytes()[26]); //BCD码00成功01身份证已注册02其他原因失败
                    Log.i("initCard", "state:" + state);
                    if (state.equalsIgnoreCase("00")) {
                        String initPeasantCode = HexUtil.bytesToHex(Arrays.copyOfRange(readData.getBodyBytes(), 10, 26));
                        String initPeasantCode = HexUtil.bytesToHex(Arrays.copyOfRange(readData.getBodyBytes(), 10, 26));
                        String serial = baseDao.adminDao().findFirst().getSerial();
                        UserCard userCard = new UserCard();
                        userCard.setRechargeTimes(0);
@@ -349,6 +371,7 @@
            // 汉字的Unicode范围是:0x4e00 - 0x9fa5
            return (c >= 0x4e00 && c <= 0x9fa5);
        }
    }
    @Override