From fc6048b630901058ccd90529e32e031e612b8384 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 21 十一月 2023 14:32:03 +0800
Subject: [PATCH] 补卡相关

---
 app/src/main/java/com/dayu/recharge/activity/IdentifyingActivity.java |   53 +++
 app/src/main/res/layout/edt_dialog.xml                                |    4 
 app/src/main/java/com/dayu/recharge/activity/MyActivity.java          |   21 +
 app/src/main/res/layout/activity_admin_setup.xml                      |    2 
 app/src/main/res/layout/activity_write_text.xml                       |   13 
 app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java     |    3 
 app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java |   88 ++++++
 app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java    |  108 +++++-
 app/src/main/java/com/dayu/recharge/activity/PassWordActivity.java    |    6 
 app/src/main/java/com/dayu/recharge/dao/DeviceNumberDao.java          |   20 +
 app/src/main/java/com/dayu/recharge/dao/UserCardDao.java              |    2 
 app/dycz.jks                                                          |    0 
 app/src/main/java/com/dayu/recharge/view/PassWordDialog.java          |    2 
 app/libs/oaid_sdk_1.0.25.aar                                          |    0 
 app/src/main/res/layout/activity_domain.xml                           |    1 
 app/src/main/java/com/dayu/recharge/activity/SysActivity.java         |    2 
 app/src/main/java/com/dayu/recharge/dao/AppDatabase.java              |    8 
 app/src/main/java/com/dayu/recharge/card/ConfigurationPowerCard.java  |    2 
 app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java  |   53 +++
 app/src/main/res/mipmap-xhdpi/icon_search.png                         |    0 
 app/src/main/java/com/dayu/recharge/activity/DomainActivity.java      |    3 
 app/src/main/res/layout/activity_my.xml                               |   32 +
 app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java    |    5 
 app/build.gradle                                                      |   11 
 app/src/main/java/com/dayu/recharge/dao/IdentityDao.java              |   33 ++
 app/src/main/java/com/dayu/recharge/activity/ParameterActivity.java   |   11 
 app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java       |   11 
 app/src/main/res/layout/activity_new_card.xml                         |    2 
 app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java     |   24 +
 app/src/main/java/com/dayu/recharge/activity/PowerActivity.java       |    2 
 app/src/main/res/values/strings.xml                                   |    1 
 app/src/main/AndroidManifest.xml                                      |   20 
 app/src/main/res/layout/activity_identyfying.xml                      |   58 ++++
 app/src/main/res/layout/activity_replacement.xml                      |   26 +
 app/src/main/java/com/dayu/recharge/activity/HomeActivity.java        |   19 +
 app/src/main/java/com/dayu/recharge/MyApplication.java                |   13 
 app/src/main/java/com/dayu/recharge/net/SocketNet.java                |    5 
 app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java |    7 
 app/src/main/java/com/dayu/recharge/utils/DeviceNumberUtils.java      |   36 ++
 app/src/main/res/layout/activity_login.xml                            |    2 
 app/src/main/java/com/dayu/recharge/dbBean/IdentityBean.java          |   34 ++
 app/src/main/res/layout/activity_parameter.xml                        |   11 
 app/src/main/java/com/dayu/recharge/view/EdtDialog.java               |   39 ++
 43 files changed, 700 insertions(+), 93 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 02c2efb..4918915 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,11 +7,16 @@
     defaultConfig {
         applicationId "com.dayu.recharge"
         minSdk 23
-        targetSdk 33
+        targetSdk 26
         versionCode 1
         versionName "1.0"
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+
+        ndk{
+            abiFilters 'armeabi-v7a'
+        }
+
     }
 
     buildTypes {
@@ -33,7 +38,9 @@
 //        }
 //    }
 }
-
+//ps:dycz@2023
+//alias:dayu
+//ps:dycz@2023
 dependencies {
     implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
     implementation 'com.android.support:appcompat-v7:28.0.0'
diff --git a/app/dycz.jks b/app/dycz.jks
new file mode 100644
index 0000000..d8a85a0
--- /dev/null
+++ b/app/dycz.jks
Binary files differ
diff --git a/app/libs/oaid_sdk_1.0.25.aar b/app/libs/oaid_sdk_1.0.25.aar
new file mode 100644
index 0000000..47ca06d
--- /dev/null
+++ b/app/libs/oaid_sdk_1.0.25.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5ca0db9..9d92012 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,7 +44,10 @@
         <activity
             android:name=".activity.LoginActivity"
             android:exported="true">
-
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
         </activity>
         <activity
             android:name=".activity.AdminSetupActivity"
@@ -55,16 +58,13 @@
         <activity
             android:name=".activity.HomeActivity"
             android:exported="true">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
+
         </activity>
         <activity
             android:name=".activity.NewCardActivity"
             android:exported="true"
-            android:screenOrientation="portrait"
-            android:launchMode="singleTop">
+            android:launchMode="singleTop"
+            android:screenOrientation="portrait">
             <intent-filter>
                 <action android:name="android.nfc.action.TAG_DISCOVERED" />
                 <data android:mimeType="text/plain" />
@@ -103,8 +103,10 @@
         <activity android:name=".activity.SysIpActivity" />
         <activity android:name=".activity.ParameterActivity" />
         <activity android:name=".activity.PowerActivity" />
-        <activity android:name=".activity.DomainActivity"/>
-        <activity android:name=".activity.ElectricPriceActivity"/>
+        <activity android:name=".activity.DomainActivity" />
+        <activity android:name=".activity.ElectricPriceActivity" />
+        <activity android:name=".activity.IdentifyingActivity" />
+        <activity android:name=".activity.ReplacementActivity"/>
 
 
         <meta-data
diff --git a/app/src/main/java/com/dayu/recharge/MyApplication.java b/app/src/main/java/com/dayu/recharge/MyApplication.java
index 1b1ca34..2b4e13f 100644
--- a/app/src/main/java/com/dayu/recharge/MyApplication.java
+++ b/app/src/main/java/com/dayu/recharge/MyApplication.java
@@ -7,6 +7,7 @@
 import android.util.Log;
 
 import com.dayu.recharge.dao.BaseDaoSingleton;
+import com.dayu.recharge.dbBean.DeviceNumber;
 import com.dayu.recharge.dbBean.IpBean;
 import com.easysocket.EasySocket;
 import com.easysocket.config.EasySocketOptions;
@@ -175,8 +176,16 @@
                                         //BCD鐮�00鎴愬姛01澶辫触(娉ㄥ唽鍙蜂笉鏄湇鍔″櫒杩斿洖淇℃伅)
                                         if (state.equalsIgnoreCase("00")) {
                                             //淇濆瓨璁惧娉ㄥ唽鍙�
-                                            BaseDaoSingleton.getInstance(MyApplication.myApplication).ipDao().findFirst();
-                                            WSHelper.getInstance(MyApplication.this).put("initCode", initCode);
+                                            DeviceNumber deviceNumber = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst();
+                                            if (deviceNumber != null) {
+                                                deviceNumber.setDeviceRegistrationNumber(initCode);
+                                            } else {
+                                                deviceNumber = new DeviceNumber();
+                                                deviceNumber.setDeviceRegistrationNumber(initCode);
+                                            }
+                                            BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().insert(deviceNumber);
+
+//                                            WSHelper.getInstance(MyApplication.this).put("initCode", initCode);
                                             ToastUtil.show(MyApplication.this, "鍏呭�肩鐞嗘敞鍐屾姤鏂囪幏鍙栨垚鍔�");
                                         } else {
                                             //鏍¢獙CRC閿欒
diff --git a/app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java b/app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java
index 2a419ff..91d6565 100644
--- a/app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java
+++ b/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;
+        }
+    }
 
 }
diff --git a/app/src/main/java/com/dayu/recharge/activity/DomainActivity.java b/app/src/main/java/com/dayu/recharge/activity/DomainActivity.java
index 6983e9f..9c15735 100644
--- a/app/src/main/java/com/dayu/recharge/activity/DomainActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/DomainActivity.java
@@ -66,9 +66,10 @@
         if (domainBean != null) {
             binding.domainOldTV.setText("搴忓彿锛�" + domainBean.getDomainNumber() + "\n" + "鍩熷悕锛�" + domainBean.getDomain() + "\n" + "绔彛鍙凤細" + domainBean.getPort());
         } else {
+            domainBean = new DomainBean();
             binding.domainOldTV.setText("璇疯缃柊鐨勫煙鍚嶅崱淇℃伅");
         }
-        domainBean = new DomainBean();
+
     }
 }
 
diff --git a/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java b/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java
index 1a27f2c..ea32a72 100644
--- a/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java
@@ -1,5 +1,6 @@
 package com.dayu.recharge.activity;
 
+import android.Manifest;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.LayoutInflater;
@@ -8,6 +9,7 @@
 import com.dayu.recharge.databinding.ActivityHomeBinding;
 import com.dayu.recharge.dbBean.AdminDataBean;
 import com.dayu.recharge.utils.ToastUtil;
+import com.permissionx.guolindev.PermissionX;
 
 
 /**
@@ -27,6 +29,23 @@
         homeBinding = ActivityHomeBinding.inflate(LayoutInflater.from(this));
         setContentView(homeBinding.getRoot());
         initView();
+        getPermission();
+    }
+
+    private void getPermission() {
+        PermissionX.init(HomeActivity.this).permissions(Manifest.permission.READ_PHONE_STATE)
+                .onExplainRequestReason((scope, deniedList) -> {
+
+// val message = "PermissionX闇�瑕佹偍鍚屾剰浠ヤ笅鏉冮檺鎵嶈兘姝e父浣跨敤"
+                })
+                .request((allGranted, grantedList, deniedList) -> {
+                    if (allGranted) {//鎵�鏈夌敵璇风殑鏉冮檺閮藉凡閫氳繃
+
+                    } else {//鎮ㄦ嫆缁濅簡濡備笅鏉冮檺锛�$deniedList
+
+
+                    }
+                });
     }
 
     private void initView() {
diff --git a/app/src/main/java/com/dayu/recharge/activity/IdentifyingActivity.java b/app/src/main/java/com/dayu/recharge/activity/IdentifyingActivity.java
new file mode 100644
index 0000000..77d30e1
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/activity/IdentifyingActivity.java
@@ -0,0 +1,53 @@
+package com.dayu.recharge.activity;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import com.dayu.recharge.databinding.ActivityIdentyfyingBinding;
+import com.dayu.recharge.dbBean.IdentityBean;
+import com.dayu.recharge.utils.ToastUtil;
+
+/**
+ * Created by Android Studio.
+ * author: zuo
+ * Date: 2023-11-20
+ * Time: 10:21
+ * 澶囨敞锛氬崱鏍囪瘑璁剧疆
+ */
+public class IdentifyingActivity extends BaseActivity {
+
+    ActivityIdentyfyingBinding binding;
+    IdentityBean myIdentityBean;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        binding=ActivityIdentyfyingBinding.inflate(LayoutInflater.from(this));
+        setContentView(binding.getRoot());
+        IdentityBean identityBean=baseDao.identityDao().findFirst();
+        if (identityBean!=null){
+            myIdentityBean= identityBean;
+            binding.electricOldNumber.setText(myIdentityBean.getIdentity());
+        }else {
+            myIdentityBean=new IdentityBean();
+            binding.electricOldNumber.setText("3668F7A30119");
+        }
+        binding.electricOk.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String data = binding.electricOldNumber.getText().toString();
+                if (!TextUtils.isEmpty(data)){
+                    myIdentityBean.setIdentity(binding.electricOldNumber.getText().toString());
+                    baseDao.identityDao().insert(myIdentityBean);
+                    ToastUtil.show("淇濆瓨鎴愬姛");
+                }else {
+                    ToastUtil.show("璇疯緭鍏ュ崱鏍囪瘑");
+                }
+
+            }
+        });
+    }
+
+}
diff --git a/app/src/main/java/com/dayu/recharge/activity/MyActivity.java b/app/src/main/java/com/dayu/recharge/activity/MyActivity.java
index b8e0b6f..758307a 100644
--- a/app/src/main/java/com/dayu/recharge/activity/MyActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/MyActivity.java
@@ -14,6 +14,7 @@
 import com.dayu.recharge.databinding.ActivityMyBinding;
 import com.dayu.recharge.dbBean.AdminDataBean;
 import com.dayu.recharge.net.SocketNet;
+import com.dayu.recharge.utils.DeviceNumberUtils;
 import com.dayu.recharge.utils.ExcelUtil;
 import com.dayu.recharge.utils.ToastUtil;
 import com.dayu.recharge.utils.WSHelper;
@@ -55,12 +56,18 @@
     }
 
     private void initView() {
+        myBinding.cardReplacement.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                startActivity(new Intent(MyActivity.this, ReplacementActivity.class));
+            }
+        });
         myBinding.myAdmin.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-//                PassWordDialog passWordDialog = new PassWordDialog(MyActivity.this, new Intent(MyActivity.this, AdminSetupActivity.class));
-//                passWordDialog.show();
-                startActivity(new Intent(MyActivity.this, AdminSetupActivity.class));
+                PassWordDialog passWordDialog = new PassWordDialog(MyActivity.this, new Intent(MyActivity.this, AdminSetupActivity.class));
+                passWordDialog.show();
+//                startActivity(new Intent(MyActivity.this, AdminSetupActivity.class));
             }
         });
         myBinding.myPsw.setOnClickListener(new View.OnClickListener() {
@@ -105,8 +112,9 @@
         myBinding.sysIp.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                Intent intent = new Intent(MyActivity.this, SysIpActivity.class);
-                startActivity(intent);
+                PassWordDialog passWordDialog = new PassWordDialog(MyActivity.this, new Intent(MyActivity.this, SysIpActivity.class));
+                passWordDialog.show();
+
             }
         });
     }
@@ -184,7 +192,8 @@
             } else {
                 msgData.append("鏈繛鎺ユ暟鎹腑蹇�");
             }
-            String initCode = WSHelper.getInstance(this).get("initCode", "");
+
+            String initCode = DeviceNumberUtils.getDeviceNumber();
             if (TextUtils.isEmpty(initCode)) {
                 msgData.append(",璁惧鏈敞鍐�");
             } else {
diff --git a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
index 2f5427f..5355d4f 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -9,6 +9,7 @@
 
 import com.dayu.recharge.MyApplication;
 
+import com.dayu.recharge.R;
 import com.dayu.recharge.card.CleanCard;
 import com.dayu.recharge.card.CleanUserCard;
 import com.dayu.recharge.card.ConfigurationPowerCard;
@@ -20,6 +21,8 @@
 import com.dayu.recharge.card.UserCard;
 import com.dayu.recharge.databinding.ActivityWriteTextBinding;
 import com.dayu.recharge.dbBean.AdminDataBean;
+import com.dayu.recharge.dbBean.DeviceNumber;
+import com.dayu.recharge.dbBean.ElectricPriceBean;
 import com.dayu.recharge.dbBean.RechargeBean;
 import com.dayu.recharge.dbBean.UserCardBean;
 import com.dayu.recharge.net.SocketCallBack;
@@ -34,6 +37,7 @@
 import com.dayu.recharge.utils.AidlUtil;
 import com.dayu.recharge.utils.CRC8;
 import com.dayu.recharge.utils.DateUtil;
+import com.dayu.recharge.utils.DeviceNumberUtils;
 import com.dayu.recharge.utils.MornyUtil;
 import com.dayu.recharge.utils.SocketUtil;
 import com.dayu.recharge.utils.ToastUtil;
@@ -45,6 +49,12 @@
 import java.util.List;
 import java.util.Map;
 
+/**
+ * Copyright (C), 2023,
+ * Author: zuo
+ * Date: 2023-11-08 21:19
+ * Description: nfc鍐欏崱鐣岄潰
+ */
 public class NFCWreatActivity extends BaseNfcActivity {
 
 
@@ -133,33 +143,44 @@
             }
             if (this.getIntent().hasExtra("cleanCard")) {
                 cleanCard = (CleanCard) this.getIntent().getSerializableExtra("cleanCard");
+                binding.cardData.setText("鍒朵綔娓呴浂鍗�");
             }
             if (this.getIntent().hasExtra("manageCard")) {
                 manageCard = (ManageCard) this.getIntent().getSerializableExtra("manageCard");
+                binding.cardData.setText("鍒朵綔绠$悊鍗�");
             }
             if (this.getIntent().hasExtra("registeredCard")) {
                 registeredCard = (RegisteredCard) this.getIntent().getSerializableExtra("registeredCard");
+                binding.cardData.setText("鍒朵綔閲嶆柊娉ㄥ唽璁惧鍗�");
             }
             if (this.getIntent().hasExtra("dbUserCard")) {
                 userCardBean = (UserCardBean) this.getIntent().getSerializableExtra("dbUserCard");
             }
             if (this.getIntent().hasExtra("cleanUserCard")) {
                 cleanUserCard = (CleanUserCard) this.getIntent().getSerializableExtra("cleanUserCard");
+                binding.cardData.setText("鍒朵綔鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗�");
             }
             if (this.getIntent().hasExtra("domainCard")) {
                 domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard");
+                binding.cardData.setText("鍒朵綔璁剧疆鍩熷悕鍗�");
             }
             if (this.getIntent().hasExtra("testCard")) {
                 testCard = (TestCard) this.getIntent().getSerializableExtra("testCard");
+                binding.cardData.setText("鍒朵綔娴嬭瘯鍗�");
             }
             if (this.getIntent().hasExtra("configureDeviceRegistrationCrad")) {
                 configureDeviceRegistrationCrad = (ConfigureDeviceRegistrationCrad) this.getIntent().getSerializableExtra("configureDeviceRegistrationCrad");
+                binding.cardData.setText("鍒朵綔閰嶇疆璁惧娉ㄥ唽淇℃伅鍗�");
             }
             if (this.getIntent().hasExtra("configurationPowerCard")) {
                 configurationPowerCard = (ConfigurationPowerCard) this.getIntent().getSerializableExtra("configurationPowerCard");
+                binding.cardData.setText("鍒朵綔閰嶇疆姘存车鍔熺巼鍗�");
+            }
+            if (this.getIntent().hasExtra("morny")) {
+                morny = this.getIntent().getStringExtra("morny");
+                binding.cardData.setText("鍏呭�奸噾棰濓細" + morny + "鍏�");
             }
 
-            morny = this.getIntent().getStringExtra("morny");
             try {
                 adminData = baseDao.adminDao().findFirst();
             } catch (Exception e) {
@@ -248,7 +269,7 @@
                 if ((configPowerFlag || configDeviceRegiestFlag || testCardFlag || domainCrdFlag || userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag || cleanUserCardFlag)) {
                     try {
                         if (userFlag && userCardBean != null) {
-                            baseDao.userCardDao().insert(userCardBean);
+
                             ToastUtil.show(this, "娉ㄥ唽鎴愬姛");
                             NFCWreatActivity.this.finish();
                             if (NewCardActivity.newCardActivity != null) {
@@ -273,6 +294,9 @@
                 stopAnim();
             } else if (!TextUtils.isEmpty(morny)) {
                 readAllData(intent);
+            } else if (userCard == null && userCardBean != null) {
+                //琛ュ崱閫昏緫
+                selectBalance(userCardBean.getInitPeasantCode());
             } else {
                 stopAnim();
                 ToastUtil.show(this, "鍙傛暟閿欒");
@@ -369,7 +393,7 @@
             StringBuffer data = new StringBuffer();
             if (rechargeBean != null) {
                 data.append("*****************************" + "\n");
-                data.append("  鍐滀笟姘翠环缁煎悎鏀归潻鍏呭�肩郴缁焅n\n");
+                data.append(getResources().getString(R.string.login_title) + "\n");
                 data.append("璁惧搴忓垪鍙凤細" + rechargeBean.getSerial() + "\n");
                 data.append("鐢ㄦ埛鍚嶏細" + rechargeBean.getUserName() + "\n");
                 //            data.append("鎴�  鍙凤細" + rechargeBean.getUserNum() + "\n");
@@ -406,7 +430,7 @@
         try {
             RechargeRequestBean rechargeRequestBean = new RechargeRequestBean();
             rechargeRequestBean.setControl("01");
-            String initCode = WSHelper.getInstance(this).get("initCode", "");
+            String initCode = DeviceNumberUtils.getDeviceNumber();
             rechargeRequestBean.setInitCode(initCode);
             rechargeRequestBean.setXuLie(SocketUtil.getXuLie(this));
             rechargeRequestBean.setAFN("95");
@@ -625,6 +649,8 @@
 
 
     /**
+     * 鏌ヨ浣欓
+     *
      * @param initPeasantCode 鍐滄埛娉ㄥ唽缂栧彿
      */
     private void selectBalance(String initPeasantCode) {
@@ -633,7 +659,7 @@
             BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean();
             requestBean.setAFN("94");
             requestBean.setControl("01");
-            String initCode = WSHelper.getInstance(this).get("initCode", "");
+            String initCode = DeviceNumberUtils.getDeviceNumber();
             requestBean.setInitCode(initCode);
             requestBean.setInitPeasantCode(initPeasantCode);
             requestBean.setXuLie(SocketUtil.getXuLie(this));
@@ -648,6 +674,24 @@
                             stateText = new StringBuffer();
                             stateText.append("鐘�    鎬侊細");
                             String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]);  //BCD鐮�00鍚敤 01绂佺敤 02闅跺睘淇℃伅涓嶇 03鏃犳鍗′俊鎭� 04鍏跺畠s
+                            if (userCard == null) {
+                                userCard = new UserCard();
+                                userCard.setRechargeTimes(0);
+
+                                ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
+                                if (electricPriceBean != null) {
+                                    userCard.setElectricityPrice(electricPriceBean.getPrice());
+                                } else {
+                                    //榛樿鏄�1鍏�
+                                    userCard.setElectricityPrice(1.000f);
+                                }
+                                userCard.setSwipeNumber((short) 0);
+                                userCard.setState("00");
+                                userCard.setBalance(0);
+                                userCard.setAddressCode(adminData.getAddressCode());
+                                userCard.setInitPeasantCode(initPeasantCode);
+                            }
+
                             if ("00".equals(state)) {
                                 //鍙湁鍚姩鐘舵�佹墠鑳藉厖鍊�
                                 //閲戦
@@ -656,30 +700,42 @@
                                 //濮撳悕
                                 byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19);
                                 String name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte));
-                                rechargeBean = new RechargeBean();
-                                rechargeBean.setDate(System.currentTimeMillis());
-                                rechargeBean.setMorny(morny);
-                                if (userCardBean != null) {
-                                    rechargeBean.setUserName(userCardBean.getUserName());
-                                } else {
-                                    rechargeBean.setUserName(name);
-                                }
-                                List<UserCardBean> userCardBeans = baseDao.userCardDao().findAll();
-                                String userId = "";
-                                if (userCardBeans != null) {
-                                    for (int i = 0; i < userCardBeans.size(); i++) {
-                                        if (initPeasantCode.equalsIgnoreCase(userCardBeans.get(i).getInitPeasantCode())) {
-                                            userId = userCardBeans.get(i).getUserID();
+                                userCard.setBalance(balance);
+                                //涓巗ocket鏈嶅姟鍣ㄩ�氫俊鍚庤繘琛屽悗缁搷浣�
+
+                                if (!TextUtils.isEmpty(morny)) {
+                                    //鍏呭��
+                                    rechargeBean = new RechargeBean();
+                                    rechargeBean.setDate(System.currentTimeMillis());
+                                    rechargeBean.setMorny(morny);
+                                    if (userCardBean != null) {
+                                        rechargeBean.setUserName(userCardBean.getUserName());
+                                    } else {
+                                        rechargeBean.setUserName(name);
+                                    }
+                                    List<UserCardBean> userCardBeans = baseDao.userCardDao().findAll();
+                                    String userId = "";
+                                    if (userCardBeans != null) {
+                                        for (int i = 0; i < userCardBeans.size(); i++) {
+                                            if (initPeasantCode.equalsIgnoreCase(userCardBeans.get(i).getInitPeasantCode())) {
+                                                userId = userCardBeans.get(i).getUserID();
+                                            }
                                         }
                                     }
+                                    rechargeBean.setSerial(adminData.getSerial());
+                                    userCard.setRechargeDate(Calendar.getInstance());
+                                    rechargeBean.setBalance(MornyUtil.changeF2Y(balance + MornyUtil.changeY2F(morny)) + "");
+                                    rechargeBean.setUserId(userId);
+                                    recharge(initPeasantCode);
+                                } else {
+                                    //琛ュ崱閫昏緫
+                                    setUser(intent, userCard);
+                                    if (userFlag) {
+                                        NFCWreatActivity.this.finish();
+                                        ToastUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛");
+                                    }
                                 }
-                                rechargeBean.setSerial(adminData.getSerial());
-                                userCard.setBalance(balance);
-                                userCard.setRechargeDate(Calendar.getInstance());
-                                rechargeBean.setBalance(MornyUtil.changeF2Y(balance) + "");
-                                rechargeBean.setUserId(userId);
-                                //涓巗ocket鏈嶅姟鍣ㄩ�氫俊鍚庤繘琛屽悗缁搷浣�
-                                recharge(initPeasantCode);
+
                                 stateText.append("鍚敤");
                                 return;
                             } else if ("01".equals(state)) {
diff --git a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
index 67a3395..0d0cc7d 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
@@ -5,10 +5,13 @@
 import android.app.ProgressDialog;
 import android.content.Intent;
 import android.os.Bundle;
+import android.text.InputFilter;
+import android.text.Spanned;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 
+import com.dayu.recharge.utils.DeviceNumberUtils;
 import com.msd.ocr.idcard.LibraryInitOCR;
 import com.dayu.recharge.MyApplication;
 import com.dayu.recharge.card.UserCard;
@@ -60,10 +63,11 @@
         setContentView(newCardBinding.getRoot());
         setData();
         initView();
-        LibraryInitOCR.initOCR(NewCardActivity.this);
+//        LibraryInitOCR.initOCR(NewCardActivity.this);
     }
 
     private void initView() {
+        newCardBinding.newCardId.setFilters(new InputFilter[] { new AlphaNumericXFilter(),new InputFilter.LengthFilter(18) });
         //韬唤璇佽瘑鍒�
         newCardBinding.newCardScanBtn.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -191,7 +195,7 @@
      */
     private void initCard() {
 
-        String initCode = WSHelper.getInstance(this).get("initCode", "");
+        String initCode = DeviceNumberUtils.getDeviceNumber();
         if (TextUtils.isEmpty(initCode)) {
             ToastUtil.show(this, "璁惧娉ㄥ唽鍙蜂负绌猴紝璇峰厛璁剧疆IP鍜岀鐞嗗憳鍦板潃");
             IpBean ipBean = baseDao.ipDao().findFirst();
@@ -249,6 +253,7 @@
                         userCardBean.setPhone(newCardBinding.newCardPhone.getText().toString());
                         userCardBean.setUserID(newCardBinding.newCardId.getText().toString());
                         userCardBean.setDate(System.currentTimeMillis());
+                        baseDao.userCardDao().insert(userCardBean);
                         Intent intent = new Intent(NewCardActivity.this, NFCWreatActivity.class);
                         intent.putExtra("userCard", userCard);
                         intent.putExtra("dbUserCard", userCardBean);
@@ -280,4 +285,19 @@
         return name.matches(regex);
     }
 
+    private static class AlphaNumericXFilter implements InputFilter {
+        // 姝e垯琛ㄨ揪寮忓畾涔夊彧鑳借緭鍏ユ暟瀛楀拰瀛楁瘝 "X"锛堝ぇ鍐欐垨灏忓啓锛�
+        private final String regex = "[0-9Xx]*";
+
+        @Override
+        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
+            // 妫�鏌ユ瘡涓緭鍏ュ瓧绗︽槸鍚︾鍚堟鍒欒〃杈惧紡
+            for (int i = start; i < end; i++) {
+                if (!String.valueOf(source.charAt(i)).matches(regex)) {
+                    return ""; // 涓嶇鍚堣瀹氱殑瀛楃琚繃婊ゆ帀
+                }
+            }
+            return null; // 鍏佽杈撳叆瀛楃
+        }
+    }
 }
diff --git a/app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java b/app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java
index 465dcb1..d8cbaf1 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java
@@ -5,6 +5,7 @@
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.AdapterView;
 
 import com.dayu.recharge.adapter.NewCardAdapter;
 import com.dayu.recharge.databinding.ActivityNewcardListBinding;
@@ -16,7 +17,10 @@
 import java.util.List;
 
 /**
- * Created by zuoxiao on 2018/12/24.
+ * Copyright (C), 2023,
+ * Author: zuo
+ * Date: 2023-11-10 19:52
+ * Description: 鏂板崱娉ㄥ唽鍒楄〃鐣岄潰
  */
 
 public class NewCardListActivity extends BaseActivity {
@@ -48,6 +52,7 @@
         }
         adapter = new NewCardAdapter(this, userCardBeanList);
         newcardListBinding.newCardListView.setAdapter(adapter);
+
     }
 
     private void setRightButton() {
diff --git a/app/src/main/java/com/dayu/recharge/activity/ParameterActivity.java b/app/src/main/java/com/dayu/recharge/activity/ParameterActivity.java
index 76505e8..283e26a 100644
--- a/app/src/main/java/com/dayu/recharge/activity/ParameterActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/ParameterActivity.java
@@ -33,7 +33,7 @@
                 startActivity(intent);
             }
         });
-
+//       姘存车鍔熺巼璁剧疆
         binding.parameterPower.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -41,6 +41,7 @@
                 startActivity(intent);
             }
         });
+        //鐢甸噺鍗曚环璁剧疆
         binding.parameterElectricPrice.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -48,5 +49,13 @@
                 startActivity(intent);
             }
         });
+        //鍗℃爣璇嗚缃�
+        binding.parameterCardIdentifying.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(ParameterActivity.this, IdentifyingActivity.class);
+                startActivity(intent);
+            }
+        });
     }
 }
diff --git a/app/src/main/java/com/dayu/recharge/activity/PassWordActivity.java b/app/src/main/java/com/dayu/recharge/activity/PassWordActivity.java
index 133dda6..493f65d 100644
--- a/app/src/main/java/com/dayu/recharge/activity/PassWordActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/PassWordActivity.java
@@ -10,6 +10,12 @@
 import com.dayu.recharge.utils.ToastUtil;
 import com.dayu.recharge.utils.WSMD5;
 
+/**
+ * Copyright (C), 2023,
+ * Author: zuo
+ * Date: 2023-11-10 19:52
+ * Description: 淇敼瀵嗙爜鐣岄潰
+ */
 public class PassWordActivity extends BaseActivity {
 
     ActivityPswBinding pswBinding;
diff --git a/app/src/main/java/com/dayu/recharge/activity/PowerActivity.java b/app/src/main/java/com/dayu/recharge/activity/PowerActivity.java
index 6d51c56..8220dc7 100644
--- a/app/src/main/java/com/dayu/recharge/activity/PowerActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/PowerActivity.java
@@ -13,7 +13,7 @@
  * Copyright (C), 2023,
  * Author: zuo
  * Date: 2023-11-08 21:19
- * Description:
+ * Description: 鍔熺巼璁剧疆
  */
 public class PowerActivity extends BaseActivity {
     ActivityPowerBinding powerBinding;
diff --git a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
index 61e1b9f..2913686 100644
--- a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
+++ b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
@@ -24,6 +24,7 @@
 import com.dayu.recharge.tools.HexUtil;
 import com.dayu.recharge.tools.NfcReadHelper;
 import com.dayu.recharge.utils.CRC8;
+import com.dayu.recharge.utils.DeviceNumberUtils;
 import com.dayu.recharge.utils.MornyUtil;
 import com.dayu.recharge.utils.MyCommon;
 import com.dayu.recharge.utils.SocketUtil;
@@ -267,7 +268,7 @@
         BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean();
         requestBean.setAFN("94");
         requestBean.setControl("01");
-        String initCode = WSHelper.getInstance(this).get("initCode", "");
+        String initCode = DeviceNumberUtils.getDeviceNumber();
         requestBean.setInitCode(initCode);
         requestBean.setInitPeasantCode(initPeasantCode);
         requestBean.setXuLie(SocketUtil.getXuLie(this));
diff --git a/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java b/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
index 15c2542..50ca2b4 100644
--- a/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
@@ -10,6 +10,7 @@
 import android.widget.EditText;
 
 import com.dayu.recharge.databinding.ActivityRechargeBinding;
+import com.dayu.recharge.utils.DeviceNumberUtils;
 import com.dayu.recharge.utils.ToastUtil;
 import com.dayu.recharge.utils.WSHelper;
 import com.tencent.bugly.crashreport.CrashReport;
@@ -48,7 +49,7 @@
             public void onClick(View v) {
                 String morny = binding.rechargeWater.getText().toString();
                 if (!TextUtils.isEmpty(morny)) {
-                    String initCode = WSHelper.getInstance(RechargeActivity.this).get("initCode", "");
+                    String initCode = DeviceNumberUtils.getDeviceNumber();
                     if (TextUtils.isEmpty(initCode)) {
                         ToastUtil.show(RechargeActivity.this, "璁惧娉ㄥ唽鍙蜂负绌猴紝璇峰厛璁剧疆IP鍜岀鐞嗗憳鍦板潃");
 //                return;
@@ -72,7 +73,7 @@
                 if (s.toString().contains(".")) {
                     if (s.length() - 1 - s.toString().indexOf(".") > 2) {
                         s = s.toString().subSequence(0,
-                                s.toString().indexOf(".") + 2);
+                                s.toString().indexOf(".") + 3);
                         editText.setText(s);
                         editText.setSelection(s.length());
                     }
diff --git a/app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java b/app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java
new file mode 100644
index 0000000..47b2e64
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java
@@ -0,0 +1,88 @@
+package com.dayu.recharge.activity;
+
+import static com.dayu.recharge.view.TitleBar.ClickType_RIGHT_TEXT;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.AdapterView;
+
+import com.dayu.recharge.adapter.NewCardAdapter;
+import com.dayu.recharge.databinding.ActivityReplacementBinding;
+import com.dayu.recharge.dbBean.UserCardBean;
+import com.dayu.recharge.utils.ToastUtil;
+import com.dayu.recharge.view.EdtDialog;
+
+import java.util.List;
+
+/**
+ * Created by Android Studio.
+ * author: zuo
+ * Date: 2023-11-20
+ * Time: 17:32
+ * 澶囨敞锛� 琛ュ崱鐣岄潰
+ */
+public class ReplacementActivity extends BaseActivity {
+    ActivityReplacementBinding binding;
+    List<UserCardBean> userCardBeanList;
+    NewCardAdapter adapter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        binding = ActivityReplacementBinding.inflate(LayoutInflater.from(this));
+        setContentView(binding.getRoot());
+        setRightButton();
+        setData();
+        initView();
+    }
+
+    private void initView() {
+        binding.newCardListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                UserCardBean userCardBean = userCardBeanList.get(position);
+                Intent intent = new Intent(ReplacementActivity.this, NFCWreatActivity.class);
+                intent.putExtra("dbUserCard", userCardBean);
+                startActivity(intent);
+            }
+        });
+    }
+
+    private void setData() {
+        try {
+            userCardBeanList = baseDao.userCardDao().findAll();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        adapter = new NewCardAdapter(this, userCardBeanList);
+        binding.newCardListView.setAdapter(adapter);
+    }
+
+    private void setRightButton() {
+        titleBar.setOnItemclickListner(ClickType_RIGHT_TEXT, new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                EdtDialog edtDialog = new EdtDialog(ReplacementActivity.this, new EdtDialog.DialogBack() {
+                    @Override
+                    public void onOk(String data) {
+                        List<UserCardBean> beans = baseDao.userCardDao().findByData(data);
+                        if (beans != null && beans.size() > 0) {
+                            userCardBeanList.clear();
+                            userCardBeanList.addAll(beans);
+                            adapter.notifyDataSetChanged();
+                        } else {
+                            ToastUtil.show("鏈壘鍒拌鐢ㄦ埛");
+                        }
+                    }
+
+                    @Override
+                    public void onCancel() {
+
+                    }
+                });
+            }
+        });
+    }
+}
diff --git a/app/src/main/java/com/dayu/recharge/activity/SysActivity.java b/app/src/main/java/com/dayu/recharge/activity/SysActivity.java
index 9144d28..be7ad6f 100644
--- a/app/src/main/java/com/dayu/recharge/activity/SysActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/SysActivity.java
@@ -1,7 +1,9 @@
 package com.dayu.recharge.activity;
 
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.telephony.TelephonyManager;
 import android.view.LayoutInflater;
 import android.view.View;
 
diff --git a/app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java b/app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java
index 9722629..d0c2d12 100644
--- a/app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java
@@ -9,6 +9,7 @@
 import com.dayu.recharge.databinding.ActivityIpBinding;
 import com.dayu.recharge.dbBean.AdminDataBean;
 import com.dayu.recharge.dbBean.IpBean;
+import com.dayu.recharge.utils.DeviceNumberUtils;
 import com.dayu.recharge.utils.WSHelper;
 
 /**
@@ -47,10 +48,12 @@
         ipBinding.ipOk.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                String oldIp = WSHelper.getInstance(SysIpActivity.this).get("local_ip", "");
-                int oldPort = WSHelper.getInstance(SysIpActivity.this).get("local_port", 0);
-                if (!oldIp.equals(ipBinding.ip.getText().toString()) && oldPort != Integer.valueOf(ipBinding.port.getText().toString())) {
-                    WSHelper.getInstance(SysIpActivity.this).put("initCode", "");
+                if (ipBean != null) {
+                    String oldIp = ipBean.getIp();
+                    int oldPort = ipBean.getPort();
+                    if (!oldIp.equals(ipBinding.ip.getText().toString())|| oldPort != Integer.valueOf(ipBinding.port.getText().toString())) {
+                        DeviceNumberUtils.setDeviceNumber("");
+                    }
                 }
                 if (ipBean == null) {
                     ipBean = new IpBean();
diff --git a/app/src/main/java/com/dayu/recharge/card/ConfigurationPowerCard.java b/app/src/main/java/com/dayu/recharge/card/ConfigurationPowerCard.java
index 2ddbd0d..533edfa 100644
--- a/app/src/main/java/com/dayu/recharge/card/ConfigurationPowerCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/ConfigurationPowerCard.java
@@ -10,7 +10,7 @@
  * Copyright (C), 2023,
  * Author: zuo
  * Date: 2023-11-08 13:26
- * Description: 閰嶇疆璁惧娉ㄥ唽淇℃伅鍗★細
+ * Description: 閰嶇疆姘存车鍔熺巼鍗★細
  * <p>
  * 涓烘柟渚跨幇鍦烘洿鎹㈣澶囨椂閲嶆柊娉ㄥ唽鐨勯棶棰橈紝閰嶇疆璁惧淇℃伅鍗★紝棣栧厛鍒峰崱锛屾妸鍘熻澶囩殑娉ㄥ唽鍙峰拰ID鍙疯鍒板崱鍐咃紝
  * 鍚屾椂鍗$姸鎬佸垯00淇敼涓篎F锛屽啀鏂拌澶囦笂鍒锋鍗℃椂锛屾敞鍐屽彿鍜孖D鍙疯嚜鍔ㄥ啓鍒版帶鍒跺櫒鍐咃紝鍙互鐩存帴鍒峰崱浣跨敤
diff --git a/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java b/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
index 7b2198d..7942211 100644
--- a/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
+++ b/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
@@ -4,8 +4,10 @@
 import androidx.room.RoomDatabase;
 
 import com.dayu.recharge.dbBean.AdminDataBean;
+import com.dayu.recharge.dbBean.DeviceNumber;
 import com.dayu.recharge.dbBean.DomainBean;
 import com.dayu.recharge.dbBean.ElectricPriceBean;
+import com.dayu.recharge.dbBean.IdentityBean;
 import com.dayu.recharge.dbBean.IpBean;
 import com.dayu.recharge.dbBean.PassWordBean;
 import com.dayu.recharge.dbBean.PowerBean;
@@ -18,7 +20,7 @@
  * Date: 2023-11-05 16:23
  * Description:
  */
-@Database(entities = {DomainBean.class,ElectricPriceBean.class, IpBean.class, AdminDataBean.class, PassWordBean.class, UserCardBean.class, RechargeBean.class, PowerBean.class}, version = 1, exportSchema = false)
+@Database(entities = {DeviceNumber.class,IdentityBean.class,DomainBean.class,ElectricPriceBean.class, IpBean.class, AdminDataBean.class, PassWordBean.class, UserCardBean.class, RechargeBean.class, PowerBean.class}, version = 1, exportSchema = false)
 public abstract class AppDatabase extends RoomDatabase {
 
 
@@ -37,4 +39,8 @@
     public abstract ElectricPriceDao electricPriceDao();
 
     public abstract DomainPortDao domainPortDao();
+
+    public abstract IdentityDao identityDao();
+
+    public abstract DeviceNumberDao deviceNumberDao();
 }
diff --git a/app/src/main/java/com/dayu/recharge/dao/DeviceNumberDao.java b/app/src/main/java/com/dayu/recharge/dao/DeviceNumberDao.java
index 113ed9e..3bbd7a6 100644
--- a/app/src/main/java/com/dayu/recharge/dao/DeviceNumberDao.java
+++ b/app/src/main/java/com/dayu/recharge/dao/DeviceNumberDao.java
@@ -1,6 +1,13 @@
 package com.dayu.recharge.dao;
 
 import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import com.dayu.recharge.dbBean.DeviceNumber;
 
 /**
  * Copyright (C), 2023,
@@ -9,5 +16,16 @@
  * Description:鍚庡彴杩斿洖鐨勮澶囩爜
  */
 @Dao
-interface DeviceNumberDao {
+public interface DeviceNumberDao {
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    void insert(DeviceNumber deviceNumber);
+
+    @Update
+    void update(DeviceNumber IpBean);
+
+    @Delete
+    void delete(DeviceNumber IpBean);
+
+    @Query("select  * from DeviceNumber limit 1")
+    DeviceNumber findFirst();
 }
diff --git a/app/src/main/java/com/dayu/recharge/dao/IdentityDao.java b/app/src/main/java/com/dayu/recharge/dao/IdentityDao.java
new file mode 100644
index 0000000..0348d7c
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/dao/IdentityDao.java
@@ -0,0 +1,33 @@
+package com.dayu.recharge.dao;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import com.dayu.recharge.dbBean.IdentityBean;
+
+/**
+ * Created by Android Studio.
+ * author: zuo
+ * Date: 2023-11-20
+ * Time: 10:42
+ * 澶囨敞锛�
+ */
+@Dao
+public interface IdentityDao {
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    void insert(IdentityBean identityBean);
+
+    @Update
+    void update(IdentityBean identityBean);
+
+    @Delete
+    void delete(IdentityBean identityBean);
+
+    @Query("select  * from IdentityBean limit 1")
+    IdentityBean findFirst();
+}
diff --git a/app/src/main/java/com/dayu/recharge/dao/UserCardDao.java b/app/src/main/java/com/dayu/recharge/dao/UserCardDao.java
index 5e14cd2..ae09ac6 100644
--- a/app/src/main/java/com/dayu/recharge/dao/UserCardDao.java
+++ b/app/src/main/java/com/dayu/recharge/dao/UserCardDao.java
@@ -33,4 +33,6 @@
 
     @Query("select  * from UserCardBean where date>=:beginTime and date<=:endTime")
     List<UserCardBean> findByTime(long beginTime, long endTime);
+    @Query("select  * from UserCardBean where userName like :data or userID like :data or  phone like :data")
+    List<UserCardBean> findByData(String data);
 }
diff --git a/app/src/main/java/com/dayu/recharge/dbBean/IdentityBean.java b/app/src/main/java/com/dayu/recharge/dbBean/IdentityBean.java
new file mode 100644
index 0000000..6bc1a80
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/dbBean/IdentityBean.java
@@ -0,0 +1,34 @@
+package com.dayu.recharge.dbBean;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+/**
+ * Created by Android Studio.
+ * author: zuo
+ * Date: 2023-11-20
+ * Time: 10:35
+ * 澶囨敞锛氬崱鏍囪瘑
+ */
+@Entity
+public class IdentityBean {
+    @PrimaryKey(autoGenerate = true)
+    public long id;
+    private String identity = "";
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(String identity) {
+        this.identity = identity;
+    }
+}
diff --git a/app/src/main/java/com/dayu/recharge/net/SocketNet.java b/app/src/main/java/com/dayu/recharge/net/SocketNet.java
index b3c4c18..481b320 100644
--- a/app/src/main/java/com/dayu/recharge/net/SocketNet.java
+++ b/app/src/main/java/com/dayu/recharge/net/SocketNet.java
@@ -7,6 +7,7 @@
 
 import com.dayu.recharge.dao.BaseDaoSingleton;
 import com.dayu.recharge.dbBean.AdminDataBean;
+import com.dayu.recharge.dbBean.DeviceNumber;
 import com.dayu.recharge.dbBean.IpBean;
 import com.easysocket.EasySocket;
 import com.easysocket.entity.OriginReadData;
@@ -96,8 +97,8 @@
         @Override
         public void onSocketConnSuccess(SocketAddress socketAddress) {
             Log.i("SocketActionListener", "杩炴帴鎴愬姛");
-            String initCode = WSHelper.getInstance(MyApplication.myApplication).get("initCode", "");
-            if (TextUtils.isEmpty(initCode) && !MyApplication.myApplication.isDoInitMachine) {
+            DeviceNumber initCode = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst();
+            if (initCode==null && !MyApplication.myApplication.isDoInitMachine) {
                 new Handler().postDelayed(new Runnable() {
                     @Override
                     public void run() {
diff --git a/app/src/main/java/com/dayu/recharge/utils/DeviceNumberUtils.java b/app/src/main/java/com/dayu/recharge/utils/DeviceNumberUtils.java
new file mode 100644
index 0000000..47f0605
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/utils/DeviceNumberUtils.java
@@ -0,0 +1,36 @@
+package com.dayu.recharge.utils;
+
+import com.dayu.recharge.MyApplication;
+import com.dayu.recharge.dao.BaseDaoSingleton;
+import com.dayu.recharge.dbBean.DeviceNumber;
+
+/**
+ * Created by Android Studio.
+ * author: zuo
+ * Date: 2023-11-20
+ * Time: 16:33
+ * 澶囨敞锛� 鑾峰彇鏈嶅姟鍣ㄨ繑鍥炵殑璁惧鍙风殑宸ュ叿绫�
+ */
+public class DeviceNumberUtils {
+
+    public static String getDeviceNumber() {
+        DeviceNumber deviceNumber = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst();
+        if (deviceNumber != null) {
+            return deviceNumber.getDeviceRegistrationNumber();
+        } else {
+            return "";
+        }
+    }
+
+
+    public static void setDeviceNumber(String deviceRegistrationNumber) {
+        DeviceNumber deviceNumber = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst();
+        if (deviceNumber != null) {
+            deviceNumber.setDeviceRegistrationNumber(deviceRegistrationNumber);
+        } else {
+            deviceNumber = new DeviceNumber();
+            deviceNumber.setDeviceRegistrationNumber(deviceRegistrationNumber);
+        }
+        BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().insert(deviceNumber);
+    }
+}
diff --git a/app/src/main/java/com/dayu/recharge/view/EdtDialog.java b/app/src/main/java/com/dayu/recharge/view/EdtDialog.java
index f21ced5..db16808 100644
--- a/app/src/main/java/com/dayu/recharge/view/EdtDialog.java
+++ b/app/src/main/java/com/dayu/recharge/view/EdtDialog.java
@@ -24,11 +24,19 @@
 
     Intent intent;
     Context mContext;
+    DialogBack mDialogBack;
 
     public EdtDialog(Context context, Intent intent) {
         super(context, R.style.ws_pay_showSelfDialog);
         this.intent = intent;
         mContext = context;
+        initView();
+    }
+
+    public EdtDialog(Context context, DialogBack dialogBack) {
+        super(context, R.style.ws_pay_showSelfDialog);
+        mContext = context;
+        mDialogBack=dialogBack;
         initView();
     }
 
@@ -42,24 +50,32 @@
         textView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                if (TextUtils.isEmpty(editText.getText().toString())) {
-                    ToastUtil.show(mContext, "璇疯緭鍏ュ簭鍒楀彿");
-                } else {
-                    if(Integer.valueOf(editText.getText().toString())<=16777215){
+                if (intent!=null){
+                    if (TextUtils.isEmpty(editText.getText().toString())) {
+                        ToastUtil.show(mContext, "璇疯緭鍏ュ簭鍒楀彿");
+                    } else {
+                        if (Integer.valueOf(editText.getText().toString()) <= 16777215) {
 //                        EquipmentNumber equipmentNumber = (EquipmentNumber) intent.getSerializableExtra("equipmentNumber");
 //                        equipmentNumber.setNumber(Integer.valueOf(editText.getText().toString()));
-                        mContext.startActivity(intent);
-                        EdtDialog.this.dismiss();
-                    }else {
-                        ToastUtil.show(mContext, "杈撳叆鐨勬暟瀛椾笉鑳借秴杩�16777215");
-                    }
+                            mContext.startActivity(intent);
+                            EdtDialog.this.dismiss();
+                        } else {
+                            ToastUtil.show(mContext, "杈撳叆鐨勬暟瀛椾笉鑳借秴杩�16777215");
+                        }
 
+                    }
+                }
+                if (mDialogBack!=null){
+                    mDialogBack.onOk(editText.getText().toString());
                 }
             }
         });
         cannel.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                if (mDialogBack!=null){
+                    mDialogBack.onCancel();
+                }
                 EdtDialog.this.dismiss();
             }
         });
@@ -80,4 +96,9 @@
         getWindow().setAttributes(layoutParams);
     }
 
+    public interface DialogBack {
+        void onOk(String data);
+
+        void onCancel();
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dayu/recharge/view/PassWordDialog.java b/app/src/main/java/com/dayu/recharge/view/PassWordDialog.java
index 6a6da35..ae91165 100644
--- a/app/src/main/java/com/dayu/recharge/view/PassWordDialog.java
+++ b/app/src/main/java/com/dayu/recharge/view/PassWordDialog.java
@@ -42,7 +42,7 @@
             @Override
             public void onClick(View v) {
                 try {
-                    if (WSMD5.getMD5Str(editText.getText().toString()).equals("8af357996269a1b52b182a839150097d")) {
+                    if (WSMD5.getMD5Str(editText.getText().toString()).equals("c4ca4238a0b923820dcc509a6f75849b")) {
                         mContext.startActivity(intent);
                         PassWordDialog.this.dismiss();
                     } else {
diff --git a/app/src/main/res/layout/activity_admin_setup.xml b/app/src/main/res/layout/activity_admin_setup.xml
index 42e6538..4bc09db 100644
--- a/app/src/main/res/layout/activity_admin_setup.xml
+++ b/app/src/main/res/layout/activity_admin_setup.xml
@@ -35,7 +35,7 @@
                     android:text="璁惧搴忓垪鍙凤細"
                     android:textSize="@dimen/new_card_size" />
 
-                <EditText
+                <TextView
                     android:id="@+id/admin_serial"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/activity_domain.xml b/app/src/main/res/layout/activity_domain.xml
index a00ebd5..4bead98 100644
--- a/app/src/main/res/layout/activity_domain.xml
+++ b/app/src/main/res/layout/activity_domain.xml
@@ -55,6 +55,7 @@
         android:layout_marginTop="20dp"
         android:layout_marginEnd="20dp"
         android:layout_marginBottom="20dp"
+        android:maxLength="38"
         android:hint="璇疯緭鍏ユ柊鐨勫煙鍚�"
         android:inputType="textUri" />
 
diff --git a/app/src/main/res/layout/activity_identyfying.xml b/app/src/main/res/layout/activity_identyfying.xml
new file mode 100644
index 0000000..3828a17
--- /dev/null
+++ b/app/src/main/res/layout/activity_identyfying.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <com.dayu.recharge.view.TitleBar
+        android:id="@+id/titleBar"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dimen_title_height"
+        android:background="@drawable/title_bar_bg"
+        app:centerText="姘磋〃鑴夊啿璁剧疆"
+        app:leftImage="@mipmap/icon_back" />
+
+    <LinearLayout
+        android:id="@+id/electric_ll"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/titleBar"
+        android:layout_margin="20dp"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="褰撳墠鍗℃爣璇嗭細"
+            android:textSize="@dimen/text_size" />
+
+        <TextView
+            android:id="@+id/electric_oldNumber"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:textSize="@dimen/text_size" />
+
+    </LinearLayout>
+
+
+    <EditText
+        android:id="@+id/electric_newNum"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/electric_ll"
+        android:layout_alignParentStart="true"
+        android:layout_margin="20dp"
+        android:inputType="number"
+        android:hint="璇疯緭鍏ユ柊鐨勫崱鏍囪瘑" />
+
+    <TextView
+        android:id="@+id/electric_ok"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:layout_alignParentBottom="true"
+        android:background="@color/title_bg"
+        android:gravity="center"
+        android:text="纭�  瀹�"
+        android:textSize="@dimen/text_size" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 57aadfb..89bcd76 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -13,7 +13,7 @@
         android:layout_marginRight="20dp"
         android:layout_weight="1.5"
         android:gravity="center"
-        android:text="鍐滀笟姘翠环缁煎悎鏀归潻鏅鸿兘鍏呭�肩鐞嗙郴缁�"
+        android:text="@string/login_title"
         android:textSize="30sp"
         android:textStyle="bold" />
 
diff --git a/app/src/main/res/layout/activity_my.xml b/app/src/main/res/layout/activity_my.xml
index cb444b9..5763811 100644
--- a/app/src/main/res/layout/activity_my.xml
+++ b/app/src/main/res/layout/activity_my.xml
@@ -68,13 +68,12 @@
             </LinearLayout>
 
 
-
             <RelativeLayout
 
                 android:layout_width="match_parent"
-                android:visibility="visible"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="15dp">
+                android:layout_marginTop="15dp"
+                android:visibility="visible">
 
                 <TextView
                     android:id="@+id/my_newCardList_ll"
@@ -118,29 +117,36 @@
             </RelativeLayout>
 
 
+            <TextView
+                android:id="@+id/sys_ip"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="15dp"
+                android:text="IP璁剧疆"
+                android:textSize="@dimen/text_size" />
 
-                <TextView
-                    android:id="@+id/sys_ip"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="15dp"
-                    android:text="IP璁剧疆"
-                    android:textSize="@dimen/text_size" />
-
+            <TextView
+                android:id="@+id/card_replacement"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="15dp"
+                android:text="鐢ㄦ埛琛ュ崱"
+                android:textSize="@dimen/text_size" />
 
 
             <TextView
-                android:layout_marginTop="15dp"
                 android:id="@+id/my_psw"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="15dp"
                 android:text="瀵嗙爜璁剧疆"
                 android:textSize="@dimen/text_size" />
+
             <TextView
-                android:layout_marginTop="15dp"
                 android:id="@+id/my_testConnect"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="15dp"
                 android:text="鏈繛鎺ユ暟鎹腑蹇�"
                 android:textSize="@dimen/text_size" />
         </LinearLayout>
diff --git a/app/src/main/res/layout/activity_new_card.xml b/app/src/main/res/layout/activity_new_card.xml
index de64059..40d0c61 100644
--- a/app/src/main/res/layout/activity_new_card.xml
+++ b/app/src/main/res/layout/activity_new_card.xml
@@ -89,7 +89,7 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:digits="0123456789Xx"
-                    android:inputType="numberSigned"
+                    android:inputType="text"
                     android:maxLength="18"
                     android:textSize="@dimen/new_card_size" />
 
diff --git a/app/src/main/res/layout/activity_parameter.xml b/app/src/main/res/layout/activity_parameter.xml
index d19960c..d733b8c 100644
--- a/app/src/main/res/layout/activity_parameter.xml
+++ b/app/src/main/res/layout/activity_parameter.xml
@@ -41,8 +41,17 @@
         android:layout_marginLeft="20dp"
         android:layout_marginTop="20dp"
         android:padding="5dp"
-        android:text="鐢甸噺鍗曚环"
+        android:text="鐢甸噺鍗曚环璁剧疆"
         android:textSize="@dimen/text_size" />
 
+    <TextView
+        android:id="@+id/parameter_cardIdentifying"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="20dp"
+        android:layout_marginTop="20dp"
+        android:padding="5dp"
+        android:text="鍗℃爣璇嗙爜璁剧疆"
+        android:textSize="@dimen/text_size" />
 
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_replacement.xml b/app/src/main/res/layout/activity_replacement.xml
new file mode 100644
index 0000000..acbfa9c
--- /dev/null
+++ b/app/src/main/res/layout/activity_replacement.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <com.dayu.recharge.view.TitleBar
+        android:id="@+id/titleBar"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dimen_title_height"
+        android:background="@drawable/title_bar_bg"
+        app:centerText="鐢ㄦ埛鍒楄〃"
+        app:leftImage="@mipmap/icon_back"
+        app:rightText="绛涢��" />
+
+    <ListView
+        android:id="@+id/newCard_listView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:cacheColorHint="#ffffff"
+        android:divider="@null"
+        android:dividerHeight="0dp" />
+
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_write_text.xml b/app/src/main/res/layout/activity_write_text.xml
index 9f14327..691da23 100644
--- a/app/src/main/res/layout/activity_write_text.xml
+++ b/app/src/main/res/layout/activity_write_text.xml
@@ -14,11 +14,22 @@
         app:centerText="鍐欏崱"
         app:leftImage="@mipmap/icon_back" />
 
+
+    <TextView
+        android:id="@+id/cardData"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/titleBar"
+        android:gravity="center"
+        android:layout_marginTop="20dp"
+        android:textSize="@dimen/text_size" />
+
+
     <TextView
         android:id="@+id/textView"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_below="@id/titleBar"
+        android:layout_below="@id/cardData"
         android:layout_marginTop="20dp"
         android:gravity="center"
         android:text="璇峰皢鍗¤创鍦ㄨ澶囦笂杩涜鍐欏崱"
diff --git a/app/src/main/res/layout/edt_dialog.xml b/app/src/main/res/layout/edt_dialog.xml
index b4758da..4676039 100644
--- a/app/src/main/res/layout/edt_dialog.xml
+++ b/app/src/main/res/layout/edt_dialog.xml
@@ -20,9 +20,9 @@
             android:layout_width="300dp"
             android:layout_height="wrap_content"
             android:layout_marginTop="20dp"
-            android:hint="璇疯緭鍏ュ簭鍒楀彿"
-            android:maxLength="8"
+            android:hint="璇疯緭鍏ヤ俊鎭�"
             android:inputType="number"
+            android:maxLength="8"
             android:textColor="#000000" />
 
 
diff --git a/app/src/main/res/mipmap-xhdpi/icon_search.png b/app/src/main/res/mipmap-xhdpi/icon_search.png
new file mode 100644
index 0000000..82f755d
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/icon_search.png
Binary files differ
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 936b8c3..ddcbbe9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -25,5 +25,6 @@
     <string name="toast_7">AIDL 鏆傛椂鍙墦鍗板崟涓簩缁寸爜</string>
     <string name="toast_8">涓や釜浜岀淮鐮佸昂瀵告渶澶т负7</string>
     <string name="toast_9">鏉$爜绫诲瀷鎴栧唴瀹逛笉姝g‘!</string>
+    <string name="login_title">澶х鑺傛按\n鏅鸿兘鍏呭�肩鐞嗙郴缁�</string>
 
 </resources>

--
Gitblit v1.8.0