左晓为主开发手持机充值管理机
zuoxiao
2023-11-21 fc6048b630901058ccd90529e32e031e612b8384
app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java
@@ -1,6 +1,7 @@
package com.dayu.recharge.activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -16,6 +17,9 @@
import com.example.pickerviewlibrary.picker.entity.PickerData;
import com.example.pickerviewlibrary.picker.listener.OnPickerClickListener;
import com.tencent.bugly.crashreport.CrashReport;
import java.lang.reflect.Method;
import java.util.zip.CRC32;
/**
 * Copyright (C), 2023,
@@ -107,6 +111,8 @@
                adminBinding.adminPhone.setText(adminData.getPhone());
                adminBinding.adminName.setText(adminData.getName());
                adminBinding.adminAddress.setText(adminData.getSheng() + adminData.getShi() + adminData.getXian() + adminData.getZhen() + adminData.getCun());
            } else {
                adminBinding.adminSerial.setText("12" + generateUniqueNumber(getSN()));
            }
        } catch (Exception e) {
@@ -155,5 +161,52 @@
        }
    }
    public static String getSN() {
        String serial = null;
        try {
            Class<?> c = Class.forName("android.os.SystemProperties");
            Method get = c.getMethod("get", String.class);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                try {
                    serial = (String) get.invoke(c, "ro.sunmi.serial");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return serial;
            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                serial = Build.getSerial();
                return serial;
            } else {
                //安卓8以下使用Build.SERIAL相同方式
                //return Build.SERIAL;
                try {
                    serial = (String) get.invoke(c, "ro.serialno");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return serial;
            }
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (NoSuchMethodException e) {
            throw new RuntimeException(e);
        }
    }
    public static String generateUniqueNumber(String input) {
        try {
            // 使用CRC32哈希函数
            CRC32 crc32 = new CRC32();
            crc32.update(input.getBytes());
            long crcValue = crc32.getValue();
            // 将哈希值映射到6位数字的范围
            long sixDigitNumber = Math.abs(crcValue) % 1000000;
            // 格式化为6位数字的字符串
            return String.format("%06d", sixDigitNumber);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}