左晓为主开发手持机充值管理机
配置水泵功率卡
配置设备注册信息卡
测试卡
设置域名卡
删除全部用户卡
重新注册设备卡
等相关制作卡片代码
11个文件已修改
416 ■■■■ 已修改文件
app/src/main/java/com/dayu/recharge/activity/DomainActivity.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/ParameterActivity.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/PowerActivity.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/SysActivity.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/card/ConfigurationPowerCard.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/card/ConfigureDeviceRegistrationCrad.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/card/DomainCard.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/card/TestCard.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_admin.xml 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_parameter.xml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/DomainActivity.java
@@ -25,19 +25,19 @@
        super.onCreate(savedInstanceState);
        binding = ActivityDomainBinding.inflate(LayoutInflater.from(this));
        setContentView(binding.getRoot());
        domainBean = baseDao.domainPortDao().findFirst();
        if (domainBean != null) {
            binding.domainOldTV.setText(domainBean.getDomain() + ":" + domainBean.getPort());
        }else {
            domainBean=new DomainBean();
        }
        initData();
        binding.electricOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String domain = binding.domain.getText().toString();
                String port = binding.port.getText().toString();
                int portInt = Integer.valueOf(port);
                int portInt = 0;
                if (TextUtils.isEmpty(port)) {
                    ToastUtil.show("请输入正确的端口号");
                } else {
                    portInt = Integer.valueOf(port);
                }
                if (TextUtils.isEmpty(domain)) {
                    ToastUtil.show("请输入域名");
                    return;
@@ -45,14 +45,24 @@
                    ToastUtil.show("请输入正确的端口号");
                    return;
                }
                domainBean.setDomain(domain);
                domainBean.setPort(portInt);
                baseDao.domainPortDao().insert(domainBean);
                ToastUtil.show("保存成功");
                initData();
            }
        });
        initData();
    }
    private void initData() {
        domainBean = baseDao.domainPortDao().findFirst();
        if (domainBean != null) {
            binding.domainOldTV.setText(domainBean.getDomain() + ":" + domainBean.getPort());
        } else {
            domainBean = new DomainBean();
        }
    }
app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -11,8 +11,12 @@
import com.dayu.recharge.card.CleanCard;
import com.dayu.recharge.card.CleanUserCard;
import com.dayu.recharge.card.ConfigurationPowerCard;
import com.dayu.recharge.card.ConfigureDeviceRegistrationCrad;
import com.dayu.recharge.card.DomainCard;
import com.dayu.recharge.card.ManageCard;
import com.dayu.recharge.card.RegisteredCard;
import com.dayu.recharge.card.TestCard;
import com.dayu.recharge.card.UserCard;
import com.dayu.recharge.databinding.ActivityWriteTextBinding;
import com.dayu.recharge.dbBean.AdminDataBean;
@@ -65,12 +69,18 @@
    boolean registeredFlag = false;
    boolean administrativeCardFlag = false;
    boolean cleanUserCardFlag = false;
    volatile UserCard userCard;
    ManageCard manageCard;
    boolean domainCrdFlag = false;
    boolean testCardFlag = false;
    boolean configDeviceRegiestFlag = false;
    boolean configPowerFlag = false;
    UserCardBean userCardBean;
    CleanCard cleanCard;
    String morny;
    AdminDataBean adminData;
    RechargeBean rechargeBean;
@@ -79,7 +89,15 @@
    RegisteredCard registeredCard;
    CleanUserCard cleanUserCard;
    volatile UserCard userCard;
    ManageCard manageCard;
    DomainCard domainCard;
    CleanCard cleanCard;
    ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad;
    TestCard testCard;
    ConfigurationPowerCard configurationPowerCard;
    //打印
    MyApplication baseApp;
@@ -128,6 +146,19 @@
            if (this.getIntent().hasExtra("cleanUserCard")) {
                cleanUserCard = (CleanUserCard) this.getIntent().getSerializableExtra("cleanUserCard");
            }
            if (this.getIntent().hasExtra("domainCard")) {
                domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard");
            }
            if (this.getIntent().hasExtra("testCard")) {
                testCard = (TestCard) this.getIntent().getSerializableExtra("testCard");
            }
            if (this.getIntent().hasExtra("configureDeviceRegistrationCrad")) {
                configureDeviceRegistrationCrad = (ConfigureDeviceRegistrationCrad) this.getIntent().getSerializableExtra("configureDeviceRegistrationCrad");
            }
            if (this.getIntent().hasExtra("configurationPowerCard")) {
                configurationPowerCard = (ConfigurationPowerCard) this.getIntent().getSerializableExtra("configurationPowerCard");
            }
            morny = this.getIntent().getStringExtra("morny");
            try {
                adminData = baseDao.adminDao().findFirst();
@@ -182,7 +213,11 @@
    private void saveData() {
        try {
            startAnim();
            if (userCard != null || cleanCard != null || manageCard != null || registeredCard != null || cleanUserCard != null) {
            if (userCard != null || cleanCard != null || manageCard != null
                    || registeredCard != null || cleanUserCard != null
                    || domainCard != null || testCard != null
                    || configureDeviceRegistrationCrad != null
                    || configurationPowerCard != null) {
                if (userCard != null) {
                    setUser(intent, userCard);
                }
@@ -198,8 +233,19 @@
                if (cleanUserCard != null) {
                    setCleanUserCard(intent, cleanUserCard);
                }
                if ((userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag)) {
                if (domainCard != null) {
                    setDomainCard(intent, domainCard);
                }
                if (testCard != null) {
                    setTestCard(intent, testCard);
                }
                if (configureDeviceRegistrationCrad != null) {
                    setConfigDeviceRegiest(intent, configureDeviceRegistrationCrad);
                }
                if (configurationPowerCard != null) {
                    setConfigurationPower(intent, configurationPowerCard);
                }
                if ((configPowerFlag || configDeviceRegiestFlag || testCardFlag || domainCrdFlag || userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag || cleanUserCardFlag)) {
                    try {
                        if (userFlag && userCardBean != null) {
                            baseDao.userCardDao().insert(userCardBean);
@@ -456,12 +502,18 @@
                userFlag = flag;
            }
        });
        if (!userFlag) {
            return;
        }
        NFCWriteHelper.getInstence(intent).writeData(userCard.getOneBytes(), 1, 1, new NFCWriteHelper.NFCCallback() {
            @Override
            public void isSusses(boolean flag) {
                userFlag = flag;
            }
        });
        if (!userFlag) {
            return;
        }
        NFCWriteHelper.getInstence(intent).writeData(userCard.getTwoBytes(), 1, 2, new NFCWriteHelper.NFCCallback() {
            @Override
            public void isSusses(boolean flag) {
@@ -485,6 +537,12 @@
        });
    }
    /**
     * 删除全部用户卡
     *
     * @param intent
     * @param cleanUserCard
     */
    private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) {
        NFCWriteHelper.getInstence(intent).writeData(cleanUserCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
            @Override
@@ -495,6 +553,78 @@
    }
    /**
     * 设置域名卡
     *
     * @param intent
     * @param domainCard
     */
    private void setDomainCard(Intent intent, DomainCard domainCard) {
        try {
            NFCWriteHelper.getInstence(intent).writeData(domainCard.getZeroByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
                @Override
                public void isSusses(boolean flag) {
                    domainCrdFlag = flag;
                }
            });
            if (!domainCrdFlag) {
                return;
            }
            NFCWriteHelper.getInstence(intent).writeData(domainCard.getOneByte(), 1, 1, new NFCWriteHelper.NFCCallback() {
                @Override
                public void isSusses(boolean flag) {
                    domainCrdFlag = flag;
                }
            });
            if (!domainCrdFlag) {
                return;
            }
            NFCWriteHelper.getInstence(intent).writeData(domainCard.getTwoByte(), 1, 2, new NFCWriteHelper.NFCCallback() {
                @Override
                public void isSusses(boolean flag) {
                    domainCrdFlag = flag;
                }
            });
        } catch (Exception e) {
            domainCrdFlag = false;
            throw new RuntimeException(e);
        }
    }
    private void setTestCard(Intent intent, TestCard testCard) {
        NFCWriteHelper.getInstence(intent).writeData(testCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
            @Override
            public void isSusses(boolean flag) {
                testCardFlag = flag;
            }
        });
    }
    private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) {
        NFCWriteHelper.getInstence(intent).writeData(configureDeviceRegistrationCrad.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
            @Override
            public void isSusses(boolean flag) {
                configDeviceRegiestFlag = flag;
            }
        });
    }
    private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) {
        try {
            NFCWriteHelper.getInstence(intent).writeData(configurationPowerCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
                @Override
                public void isSusses(boolean flag) {
                    configPowerFlag = flag;
                }
            });
        } catch (Exception e) {
            configPowerFlag = false;
            throw new RuntimeException(e);
        }
    }
    /**
     * @param initPeasantCode 农户注册编号
     */
    private void selectBalance(String initPeasantCode) {
app/src/main/java/com/dayu/recharge/activity/ParameterActivity.java
@@ -33,5 +33,13 @@
                startActivity(intent);
            }
        });
        binding.parameterPower.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ParameterActivity.this, PowerActivity.class);
                startActivity(intent);
            }
        });
    }
}
app/src/main/java/com/dayu/recharge/activity/PowerActivity.java
@@ -17,14 +17,23 @@
 */
public class PowerActivity extends BaseActivity {
    ActivityPowerBinding powerBinding;
    PowerBean powerBean = new PowerBean();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        powerBinding = ActivityPowerBinding.inflate(LayoutInflater.from(this));
        setContentView(powerBinding.getRoot());
        initData();
        initView();
    }
    private void initData() {
        PowerBean powerBean = baseDao.powerDao().findFirst();
        if (powerBean != null) {
            this.powerBean = powerBean;
            powerBinding.villageOldNumber.setText(powerBean.getPower());
        }
    }
    private void initView() {
@@ -33,7 +42,6 @@
            public void onClick(View v) {
                String data = powerBinding.villageNewNum.getText().toString();
                if (!TextUtils.isEmpty(data)) {
                    PowerBean powerBean = new PowerBean();
                    powerBean.setPower(data);
                    baseDao.powerDao().insert(powerBean);
                    ToastUtil.show("保存成功");
app/src/main/java/com/dayu/recharge/activity/SysActivity.java
@@ -7,10 +7,16 @@
import com.dayu.recharge.card.CleanCard;
import com.dayu.recharge.card.CleanUserCard;
import com.dayu.recharge.card.ConfigurationPowerCard;
import com.dayu.recharge.card.ConfigureDeviceRegistrationCrad;
import com.dayu.recharge.card.DomainCard;
import com.dayu.recharge.card.ManageCard;
import com.dayu.recharge.card.RegisteredCard;
import com.dayu.recharge.card.TestCard;
import com.dayu.recharge.databinding.ActivityAdminBinding;
import com.dayu.recharge.dbBean.DomainBean;
import com.dayu.recharge.dbBean.PowerBean;
import com.dayu.recharge.utils.ToastUtil;
/**
 * Copyright (C), 2023,
@@ -31,12 +37,14 @@
        initView();
    }
    private void initView() {
        Intent intent = new Intent(this, NFCWreatActivity.class);
        adminBinding.adminAdmin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
                ManageCard manageCard = new ManageCard();
                intent.putExtra("manageCard", manageCard);
                startActivity(intent);
@@ -46,6 +54,7 @@
        adminBinding.adminCleanZero.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
                CleanCard cleanCard = new CleanCard();
                intent.putExtra("cleanCard", cleanCard);
                startActivity(intent);
@@ -54,6 +63,7 @@
        adminBinding.adminRegistered.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
                RegisteredCard registeredCard = new RegisteredCard();
                intent.putExtra("registeredCard", registeredCard);
                startActivity(intent);
@@ -63,6 +73,7 @@
        adminBinding.adminCleanUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
                CleanUserCard cleanUserCard = new CleanUserCard();
                intent.putExtra("cleanUserCard", cleanUserCard);
                startActivity(intent);
@@ -72,11 +83,56 @@
        adminBinding.adminDomain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DomainCard domainCard = new DomainCard();
                intent.putExtra("domainCard", domainCard);
                Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
                DomainBean domainBean = baseDao.domainPortDao().findFirst();
                if (domainBean != null) {
                    DomainCard domainCard = new DomainCard();
                    domainCard.setDomainName(domainBean.getDomain());
                    domainCard.setPort(domainBean.getPort());
                    intent.putExtra("domainCard", domainCard);
                    startActivity(intent);
                } else {
                    ToastUtil.show("请先设置域名");
                }
            }
        });
        adminBinding.adminTest.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
                TestCard testCard = new TestCard();
                intent.putExtra("testCard", testCard);
                startActivity(intent);
            }
        });
        adminBinding.adminConfigDeviceRegistration.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
                ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad = new ConfigureDeviceRegistrationCrad();
                intent.putExtra("configureDeviceRegistrationCrad", configureDeviceRegistrationCrad);
                startActivity(intent);
            }
        });
        adminBinding.adminConfigPower.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PowerBean powerBean = baseDao.powerDao().findFirst();
                if (powerBean != null) {
                    Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class);
                    ConfigurationPowerCard configurationPowerCard = new ConfigurationPowerCard();
                    configurationPowerCard.setPower(powerBean.getPower());
                    intent.putExtra("configurationPowerCard", configurationPowerCard);
                    startActivity(intent);
                } else {
                    ToastUtil.show("请先设置水泵功率");
                }
            }
        });
    }
app/src/main/java/com/dayu/recharge/card/ConfigurationPowerCard.java
@@ -2,6 +2,8 @@
import com.dayu.recharge.tools.HexUtil;
import java.io.Serializable;
/**
 * Copyright (C), 2023,
 * Author: zuo
@@ -11,7 +13,7 @@
 * 为方便现场更换设备时重新注册的问题,配置设备信息卡,首先刷卡,把原设备的注册号和ID号读到卡内,
 * 同时卡状态则00修改为FF,再新设备上刷此卡时,注册号和ID号自动写到控制器内,可以直接刷卡使用
 */
public class ConfigurationPowerCard {
public class ConfigurationPowerCard implements Serializable {
    public String cardType = "BD";//卡类型
@@ -19,20 +21,37 @@
    public String power;//功率
    public String getPower() {
        return power;
    }
    public void setPower(String power) {
        this.power = power;
    }
    public byte[] toByte() {
        Zero zero = new Zero();
        return zero.toByte();
    }
    public class Zero extends BaseCard {
        public void toByte() {
        public byte[] toByte() {
            byte[] data = new byte[16];
            data[0] = HexUtil.hexToByte(cardType);
            byte[] cardDatas = HexUtil.hexToByteArray(cardData);
            for (int i = 0; i < 4; i++) {
                data[i + 1] = cardDatas[i];
            }
            float floatPower = Float.parseFloat(power);
            int intPower = (int) Math.ceil(floatPower); // 将浮点数向上取整并转换为整数
            String hexPower = HexUtil.get10to16(intPower);
            byte bytePower = HexUtil.hexToByte(hexPower);
            data[5] = bytePower;
            if (power != null) {
                float floatPower = Float.parseFloat(power);
                int intPower = (int) Math.ceil(floatPower); // 将浮点数向上取整并转换为整数
                String hexPower = HexUtil.get10to16(intPower);
                byte bytePower = HexUtil.hexToByte(hexPower);
                data[5] = bytePower;
            }
            data[15] = getByteSum(data);
            return data;
        }
    }
app/src/main/java/com/dayu/recharge/card/ConfigureDeviceRegistrationCrad.java
@@ -2,35 +2,37 @@
import com.dayu.recharge.tools.HexUtil;
import java.io.Serializable;
/**
 * Created by Android Studio.
 * author: zuo
 * Date: 2023-11-13
 * Time: 18:11
 * 备注:配置设备注册信息卡
 *
 * <p>
 * 为方便现场更换设备时重新注册的问题,配置设备信息卡,首先刷卡,把原设备的注册号和ID号读到卡内,同时卡状态则00修改为FF,再新设备上刷此卡时,注册号和ID号自动写到控制器内,可以直接刷卡使用
 */
public class ConfigureDeviceRegistrationCrad {
public class ConfigureDeviceRegistrationCrad implements Serializable {
    public String cardType = "BC";//卡类型
    public String cardData = "A0B1C289";//标识码
    public String power;//功率
    public byte[] toByte() {
        Zero zero = new Zero();
        return zero.toByte();
    }
    public class Zero extends BaseCard {
        public void toByte() {
        public byte[] toByte() {
            byte[] data = new byte[16];
            data[0] = HexUtil.hexToByte(cardType);
            byte[] cardDatas = HexUtil.hexToByteArray(cardData);
            for (int i = 0; i < 4; i++) {
                data[i + 1] = cardDatas[i];
            }
            float floatPower = Float.parseFloat(power);
            int intPower = (int) Math.ceil(floatPower); // 将浮点数向上取整并转换为整数
            String hexPower = HexUtil.get10to16(intPower);
            byte bytePower = HexUtil.hexToByte(hexPower);
            data[5] = bytePower;
            data[15] = getByteSum(data);
            return data;
        }
    }
app/src/main/java/com/dayu/recharge/card/DomainCard.java
@@ -23,7 +23,24 @@
    //端口号为5个字节,不足5位高位补0。端口号与域名之间用”,”隔开。端口号最后以”#”结束
    public String domainName;//域名
    public String port;//端口
    public int port;//端口
    public String getDomainName() {
        return domainName;
    }
    public void setDomainName(String domainName) {
        this.domainName = domainName;
    }
    public int getPort() {
        return port;
    }
    public void setPort(int port) {
        this.port = port;
    }
    private byte[] asciiByte;//当前域名和端口号数组
@@ -50,10 +67,18 @@
        public byte[] toByte() {
            byte[] data = new byte[16];
            data[0] = HexUtil.hexToByte(cardType);
            byte[] domainNumbers = BcdUtil.strToBcd(domainNumber);
            data[1] = domainNumbers[0];
            if (domainNumber != null) {
                byte[] domainNumbers = BcdUtil.strToBcd(domainNumber);
                data[1] = domainNumbers[0];
            }
            domainLength = domainName.length();
            data[2] = HexUtil.hexToByte(HexUtil.get10to16(domainLength));
            String ascii = IDN.toASCII(domainName + "," + port + "#");
            String portStr = String.valueOf(port);
            int lenght = portStr.length();
            for (int i = 0; i < 5 - lenght; i++) {
                portStr = "0" + portStr;
            }
            String ascii = IDN.toASCII(domainName + "," + portStr + "#");
            asciiByte = ascii.getBytes();
            if (asciiByte.length < 12) {
                System.arraycopy(asciiByte, 0, data, 3, asciiByte.length);
@@ -75,9 +100,9 @@
            byte[] data = new byte[16];
            if (asciiByte.length > 12) {
                if (asciiByte.length - 12 < 15) {
                    System.arraycopy(asciiByte, 12, data, 3, asciiByte.length - 12);
                    System.arraycopy(asciiByte, 12, data, 0, asciiByte.length - 12);
                } else {
                    System.arraycopy(asciiByte, 12, data, 3, 15);
                    System.arraycopy(asciiByte, 12, data, 0, 15);
                }
            }
            data[15] = getByteSum(data);
@@ -95,9 +120,9 @@
            byte[] data = new byte[16];
            if (asciiByte.length > (12 + 15)) {
                if (asciiByte.length - (12 + 15) < 15) {
                    System.arraycopy(asciiByte, 12, data, 3, asciiByte.length - (12 + 15));
                    System.arraycopy(asciiByte, 12, data, 0, asciiByte.length - (12 + 15));
                } else {
                    System.arraycopy(asciiByte, 12, data, 3, 15);
                    System.arraycopy(asciiByte, 12, data, 0, 15);
                }
            }
            data[15] = getByteSum(data);
app/src/main/java/com/dayu/recharge/card/TestCard.java
@@ -2,18 +2,25 @@
import com.dayu.recharge.tools.HexUtil;
import java.io.Serializable;
/**
 * Copyright (C), 2023,
 * Author: zuo
 * Date: 2023-11-08 13:23
 * Description: 测试卡
 */
public class TestCard {
public class TestCard implements Serializable {
    public String cardType = "A4";//卡类型
    public String cardData = "A0B1C289";//标识码
    public byte[] toByte() {
        Zero zero = new Zero();
        return zero.toByte();
    }
    public class Zero extends BaseCard {
        public void toByte() {
        public byte[] toByte() {
            byte[] data = new byte[16];
            data[0] = HexUtil.hexToByte(cardType);
            byte[] cardDatas = HexUtil.hexToByteArray(cardData);
@@ -21,6 +28,7 @@
                data[i + 1] = cardDatas[i];
            }
            data[15] = getByteSum(data);
            return data;
        }
    }
app/src/main/res/layout/activity_admin.xml
@@ -27,7 +27,8 @@
                android:id="@+id/admin_admin"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:padding="5dp"
                android:text="制作管理卡"
                android:textSize="@dimen/text_size" />
@@ -36,7 +37,8 @@
                android:id="@+id/admin_cleanZero"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:padding="5dp"
                android:text="制作清零卡"
                android:textSize="@dimen/text_size" />
@@ -45,7 +47,8 @@
                android:id="@+id/admin_registered"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:padding="5dp"
                android:text="制作重新注册设备卡"
                android:textSize="@dimen/text_size" />
@@ -54,7 +57,8 @@
                android:id="@+id/admin_CleanUser"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:padding="5dp"
                android:text="制作删除全部用户卡"
                android:textSize="@dimen/text_size" />
@@ -63,15 +67,42 @@
                android:id="@+id/admin_domain"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:padding="5dp"
                android:text="制作设置域名卡"
                android:textSize="@dimen/text_size" />
            <TextView
                android:id="@+id/admin_test"
                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" />
            <TextView
                android:id="@+id/admin_configDeviceRegistration"
                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" />
            <TextView
                android:id="@+id/admin_configPower"
                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_parameter.xml
@@ -17,18 +17,29 @@
        android:id="@+id/parameter_domain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
         android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
        android:padding="5dp"
        android:text="域名卡设置"
        android:textSize="@dimen/text_size" />
    <TextView
        android:id="@+id/parameter_power"
        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" />
    <TextView
        android:id="@+id/parameter_electricPrice"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
         android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
        android:padding="5dp"
        android:text="电量单价"
        android:textSize="@dimen/text_size"