package com.dayu.henanlibrary.activity; 
 | 
  
 | 
import android.annotation.SuppressLint; 
 | 
import android.content.Intent; 
 | 
import android.os.Build; 
 | 
import android.os.Bundle; 
 | 
import android.view.KeyEvent; 
 | 
import android.view.LayoutInflater; 
 | 
import android.view.View; 
 | 
import android.widget.Toast; 
 | 
  
 | 
import com.dayu.baselibrary.utils.TipUtil; 
 | 
import com.dayu.baselibrary.view.PassWordDialog; 
 | 
import com.dayu.henanlibrary.HeNanApplication; 
 | 
import com.dayu.henanlibrary.databinding.ActivityHomeHnBinding; 
 | 
import com.dayu.henanlibrary.dbBean.AdminDataBean; 
 | 
  
 | 
import java.lang.reflect.Method; 
 | 
import java.util.Random; 
 | 
import java.util.zip.CRC32; 
 | 
  
 | 
  
 | 
/** 
 | 
 * Copyright (C), 2023, 
 | 
 * Author: zuo 
 | 
 * Date: 2023-11-6 19:52 
 | 
 * Description: 主界面 
 | 
 */ 
 | 
public class HomeActivity extends HNBaseActivity { 
 | 
  
 | 
    public static HomeActivity homeActivity; 
 | 
    ActivityHomeHnBinding homeBinding; 
 | 
  
 | 
  
 | 
    @Override 
 | 
    protected void onCreate(Bundle savedInstanceState) { 
 | 
        super.onCreate(savedInstanceState); 
 | 
        homeActivity = this; 
 | 
        homeBinding = ActivityHomeHnBinding.inflate(LayoutInflater.from(this)); 
 | 
        setContentView(homeBinding.getRoot()); 
 | 
        initView(); 
 | 
        rushState(); 
 | 
    } 
 | 
  
 | 
  
 | 
    public void rushState() { 
 | 
        if (HeNanApplication.myApplication.isConncet) { 
 | 
            homeBinding.socketState.setTextColor(getResources().getColor(com.dayu.baselibrary.R.color.title_bg)); 
 | 
            homeBinding.socketState.setText("已连接数据中心"); 
 | 
        } else { 
 | 
            homeBinding.socketState.setTextColor(getResources().getColor(com.dayu.baselibrary.R.color.red)); 
 | 
            homeBinding.socketState.setText("正在连接数据中心"); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    private void initView() { 
 | 
        AdminDataBean adminData = baseDao.adminDao().findFirst(); 
 | 
        if (adminData == null) { 
 | 
            // 创建一个随机数生成器对象 
 | 
            Random random = new Random(); 
 | 
            // 生成 1 到 12 之间的随机数字 
 | 
            int randomNumber = random.nextInt(12) + 1; 
 | 
            AdminDataBean adminDataBean = new AdminDataBean(); 
 | 
            adminDataBean.setSerial(randomNumber + generateUniqueNumber(getSN())); 
 | 
            baseDao.adminDao().insert(adminDataBean); 
 | 
        } 
 | 
  
 | 
  
 | 
        homeBinding.homeNewCard.setOnClickListener(v -> { 
 | 
            AdminDataBean adminData1 = baseDao.adminDao().findFirst(); 
 | 
            if (adminData1.isHasAddressCode()) { 
 | 
                startActivity(new Intent(HomeActivity.this, NewCardActivity.class)); 
 | 
            } else { 
 | 
                TipUtil.show("请先设置地址信息"); 
 | 
            } 
 | 
  
 | 
        }); 
 | 
        homeBinding.homeRecharge.setOnClickListener(v -> { 
 | 
            AdminDataBean adminData12 = baseDao.adminDao().findFirst(); 
 | 
            if (adminData12.isHasAddressCode()) { 
 | 
                startActivity(new Intent(HomeActivity.this, RechargeActivity.class)); 
 | 
            } else { 
 | 
                TipUtil.show("请先设置地址信息"); 
 | 
            } 
 | 
  
 | 
        }); 
 | 
        homeBinding.homeRedCard.setOnClickListener(v -> startActivity(new Intent(HomeActivity.this, ReadCardAcitivy.class))); 
 | 
        homeBinding.homeAdmin.setOnClickListener(new View.OnClickListener() { 
 | 
            @Override 
 | 
            public void onClick(View v) { 
 | 
                PassWordDialog passWordDialog = new PassWordDialog(HomeActivity.this, new Intent(HomeActivity.this, SysActivity.class)); 
 | 
                passWordDialog.show(); 
 | 
            } 
 | 
        }); 
 | 
        //参数设置 
 | 
        homeBinding.homeParameter.setOnClickListener(v -> { 
 | 
            PassWordDialog passWordDialog = new PassWordDialog(HomeActivity.this, new Intent(HomeActivity.this, ParameterActivity.class)); 
 | 
            passWordDialog.show(); 
 | 
        }); 
 | 
        homeBinding.homeMy.setOnClickListener(new View.OnClickListener() { 
 | 
            @Override 
 | 
            public void onClick(View v) { 
 | 
                startActivity(new Intent(HomeActivity.this, MyActivity.class)); 
 | 
  
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    protected void onDestroy() { 
 | 
        super.onDestroy(); 
 | 
        homeActivity = null; 
 | 
    } 
 | 
  
 | 
  
 | 
    long mExitTime; 
 | 
  
 | 
    //点击两次退出程序 有时间间隔 间隔内点击则退出程序 否则 则提示 
 | 
    @Override 
 | 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
 | 
        if (keyCode == KeyEvent.KEYCODE_BACK) { 
 | 
            if ((System.currentTimeMillis() - mExitTime) > 2000) { 
 | 
                Toast.makeText(HomeActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); 
 | 
                mExitTime = System.currentTimeMillis(); 
 | 
            } else { 
 | 
                HomeActivity.this.finish(); 
 | 
            } 
 | 
            return true; 
 | 
        } 
 | 
        return super.onKeyDown(keyCode, event); 
 | 
    } 
 | 
  
 | 
    public 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; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @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); 
 | 
        } 
 | 
    } 
 | 
} 
 |