左晓为主开发手持机充值管理机
zuoxiao
2023-11-21 fc6048b630901058ccd90529e32e031e612b8384
补卡相关
33个文件已修改
10个文件已添加
793 ■■■■ 已修改文件
app/build.gradle 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/dycz.jks 补丁 | 查看 | 原始文档 | blame | 历史
app/libs/oaid_sdk_1.0.25.aar 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/MyApplication.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/DomainActivity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/HomeActivity.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/IdentifyingActivity.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/MyActivity.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/ParameterActivity.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/PassWordActivity.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/PowerActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/SysActivity.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/card/ConfigurationPowerCard.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/dao/AppDatabase.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/dao/DeviceNumberDao.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/dao/IdentityDao.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/dao/UserCardDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/dbBean/IdentityBean.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/net/SocketNet.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/utils/DeviceNumberUtils.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/view/EdtDialog.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/view/PassWordDialog.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_admin_setup.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_domain.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_identyfying.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_login.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_my.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_new_card.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_parameter.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_replacement.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_write_text.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/edt_dialog.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/icon_search.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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'
app/dycz.jks
Binary files differ
app/libs/oaid_sdk_1.0.25.aar
Binary files differ
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
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错误
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;
        }
    }
}
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();
    }
}
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需要您同意以下权限才能正常使用"
                })
                .request((allGranted, grantedList, deniedList) -> {
                    if (allGranted) {//所有申请的权限都已通过
                    } else {//您拒绝了如下权限:$deniedList
                    }
                });
    }
    private void initView() {
app/src/main/java/com/dayu/recharge/activity/IdentifyingActivity.java
New file
@@ -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("请输入卡标识");
                }
            }
        });
    }
}
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 {
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);
                                //与socket服务器通信后进行后续操作
                                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);
                                //与socket服务器通信后进行后续操作
                                recharge(initPeasantCode);
                                stateText.append("启用");
                                return;
                            } else if ("01".equals(state)) {
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 {
        // 正则表达式定义只能输入数字和字母 "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; // 允许输入字符
        }
    }
}
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() {
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);
            }
        });
    }
}
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;
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;
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));
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());
                    }
app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java
New file
@@ -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() {
                    }
                });
            }
        });
    }
}
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;
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();
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修改为FF,再新设备上刷此卡时,注册号和ID号自动写到控制器内,可以直接刷卡使用
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();
}
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();
}
app/src/main/java/com/dayu/recharge/dao/IdentityDao.java
New file
@@ -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();
}
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);
}
app/src/main/java/com/dayu/recharge/dbBean/IdentityBean.java
New file
@@ -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;
    }
}
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() {
app/src/main/java/com/dayu/recharge/utils/DeviceNumberUtils.java
New file
@@ -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);
    }
}
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();
    }
}
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 {
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"
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" />
app/src/main/res/layout/activity_identyfying.xml
New file
@@ -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>
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" />
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>
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" />
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>
app/src/main/res/layout/activity_replacement.xml
New file
@@ -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>
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="请将卡贴在设备上进行写卡"
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" />
app/src/main/res/mipmap-xhdpi/icon_search.png
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">条码类型或内容不正确!</string>
    <string name="login_title">大禹节水\n智能充值管理系统</string>
</resources>