package com.dayu.recharge.activity; import android.annotation.SuppressLint; import android.content.Context; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.inputmethod.InputMethodManager; import com.dayu.recharge.MyApplication; import com.dayu.recharge.databinding.ActivityAdminSetupBinding; import com.dayu.recharge.dbBean.AdminDataBean; import com.dayu.recharge.dbBean.IpBean; import com.dayu.recharge.utils.SocketUtil; import com.dayu.recharge.utils.TipUtil; import com.example.pickerviewlibrary.picker.TeaPickerView; 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.Random; import java.util.zip.CRC32; /** * Copyright (C), 2023, * Author: zuo * Date: 2023-11-10 19:52 * Description: 管理员信息设置 */ public class AdminSetupActivity extends BaseActivity { ActivityAdminSetupBinding adminBinding; public static AdminSetupActivity adminSetupActivity; AdminDataBean adminData = new AdminDataBean(); TeaPickerView pickerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { adminBinding = ActivityAdminSetupBinding.inflate(LayoutInflater.from(this)); setContentView(adminBinding.getRoot()); adminSetupActivity = this; setData(); initView(); } catch (Exception e) { CrashReport.postCatchedException(e); e.printStackTrace(); } } private void initView() { adminBinding.setupOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!TextUtils.isEmpty(adminData.getCun()) && !TextUtils.isEmpty(adminBinding.adminSerial.getText().toString()) ) { if (Integer.valueOf(adminBinding.adminSerial.getText().toString()) <= 16777215) { adminBinding.adminAddressCode.setText(adminData.getAddressCode()); adminData.setSerial(adminBinding.adminSerial.getText().toString()); baseDao.adminDao().insert(adminData); setData(); IpBean ipBean = MyApplication.myApplication.ipBean; if (ipBean != null) { MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode()); } TipUtil.show(AdminSetupActivity.this, "设置成功", new TipUtil.TipListener() { @Override public void onCancle() { AdminSetupActivity.this.finish(); } }); } else { TipUtil.show(AdminSetupActivity.this, "输入的数字不能超过16777215"); } } else { TipUtil.show(AdminSetupActivity.this, "请输入完整内容"); } } }); adminBinding.choseAddress.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(adminBinding.adminSerial.getWindowToken(), 0); intiPickerView(); } }); pickerView = new TeaPickerView(this); new Thread(new Runnable() { @Override public void run() { pickerView.initAddressData(); } }).start(); } private void setData() { try { AdminDataBean adminData = baseDao.adminDao().findFirst(); if (adminData != null) { this.adminData = adminData; adminBinding.adminSerial.setText(adminData.getSerial()); adminBinding.adminAddressCode.setText(adminData.getAddressCode()); adminBinding.adminAddress.setText(adminData.getSheng() + adminData.getShi() + adminData.getXian() + adminData.getZhen() + adminData.getCun()); } else { // 创建一个随机数生成器对象 Random random = new Random(); // 生成 1 到 12 之间的随机数字 int randomNumber = random.nextInt(12) + 1; adminBinding.adminSerial.setText(randomNumber + generateUniqueNumber(getSN())); } } catch (Exception e) { CrashReport.postCatchedException(e); e.printStackTrace(); } } private void intiPickerView() { try { pickerView.setScreenH(2) .setDiscolourHook(true) .setRadius(25) .setContentLine(true) .setRadius(25) .build(); pickerView.show(adminBinding.choseAddress); pickerView.setOnPickerClickListener(new OnPickerClickListener() { @Override public void OnPickerClick(PickerData pickerData) { adminData.setSheng("河南"); adminData.setShi(pickerData.getFirstText().getName()); adminData.setXian(pickerData.getSecondText().getName()); if (pickerData.getThirdText() != null) { adminData.setZhen(pickerData.getThirdText().getName()); } else { adminData.setZhen(""); } if (pickerData.getFourthText() != null) { adminData.setCun(pickerData.getFourthText().getName()); adminData.setAddressCode(pickerData.getFourthText().getCode()); } else { adminData.setCun(""); adminData.setAddressCode(pickerData.getSecondText().getCode()); } adminBinding.adminAddress.setText(adminData.getSheng() + adminData.getShi() + adminData.getXian() + adminData.getZhen() + adminData.getCun()); adminBinding.adminAddressCode.setText(adminData.getAddressCode()); pickerView.dismiss(); } }); } catch (Exception e) { CrashReport.postCatchedException(e); e.printStackTrace(); } } @SuppressLint("MissingPermission") 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; } } }