From 99b11059aedf616df4ed3b74300fa59417568bc3 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 08 四月 2025 16:37:38 +0800
Subject: [PATCH] feat: 添加单选按钮文本颜色资源文件

---
 henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java |  170 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 118 insertions(+), 52 deletions(-)

diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java
index b686627..ec248e1 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/card/DomainCard.java
@@ -1,5 +1,7 @@
 package com.dayu.henanlibrary.card;
 
+import android.text.TextUtils;
+
 import com.dayu.baselibrary.tools.BcdUtil;
 import com.dayu.baselibrary.tools.HexUtil;
 import com.dayu.henanlibrary.utils.CardCommon;
@@ -26,6 +28,16 @@
     //绔彛鍙蜂负5涓瓧鑺傦紝涓嶈冻5浣嶉珮浣嶈ˉ0銆傜鍙e彿涓庡煙鍚嶄箣闂寸敤鈥�,鈥濋殧寮�銆傜鍙e彿鏈�鍚庝互鈥�#鈥濈粨鏉�
     public String domainName;//鍩熷悕
     public int port;//绔彛
+
+    public int type;//鍩熷悕鍗℃柊涔1鍚庢湁01==0锛岄箍閭戞病鏈�01==1
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
 
     public String getDomainName() {
         return domainName;
@@ -71,34 +83,80 @@
 
     public static DomainCard toBean(List<byte[]> data) {
         try {
-            DomainCard domainCard = new DomainCard();
+            DomainCard domainXinXiangCard = new DomainCard();
             String domainNumber = BcdUtil.bcdToStr(data.get(0)[1]);
-            domainCard.domainNumber = domainNumber;
-            int domainLength = HexUtil.get16to10(HexUtil.byteToHex(data.get(0)[2]));
-            byte[] domainData = new byte[domainLength + 7];
-            int index = 0;
-            for (int i = 0; i < 3; i++) {
-                int jIndex;
-                if (i == 0) {
-                    jIndex = 3;
-                } else {
-                    jIndex = 0;
-                }
-                for (int j = jIndex; j < 15; j++) {
-                    if (index < domainData.length) {
-                        domainData[index] = data.get(i)[j];
-                        index++;
+            if ("00".equals(domainNumber)||"01".equals(domainNumber)||"02".equals(domainNumber)){//鍋囧搴忓彿灏忎簬绛変簬2灏辫涓烘槸鏂颁埂鐨�
+                domainXinXiangCard.setType(0);
+                domainXinXiangCard.domainNumber = domainNumber;
+                int domainLength = HexUtil.get16to10(HexUtil.byteToHex(data.get(0)[2]));
+                byte[] domainData = new byte[domainLength + 7];
+                int index = 0;
+                for (int i = 0; i < 3; i++) {
+                    int jIndex;
+                    if (i == 0) {
+                        jIndex = 3;
+                    } else {
+                        jIndex = 0;
                     }
+                    for (int j = jIndex; j < 15; j++) {
+                        if (index < domainData.length) {
+                            domainData[index] = data.get(i)[j];
+                            index++;
+                        }
+                    }
+                }
+                String domainStr = new String(domainData, StandardCharsets.US_ASCII);
+                if (!TextUtils.isEmpty(domainStr)){
+                    try {
+                        String[] parts = domainStr.split("#")[0].split(",");
+                        if (parts.length >= 2) {
+                            String domainName = parts[0];
+                            String port = parts[1].replace("#", "");
+                            domainXinXiangCard.setDomainName(domainName);
+                            domainXinXiangCard.setPort(Integer.valueOf(port));
+                        }
+                    } catch (NumberFormatException e) {
+                        e.printStackTrace();
+                    }
+                }
 
+            }else {
+                domainXinXiangCard.setType(1);
+                int domainLength = HexUtil.get16to10(HexUtil.byteToHex(data.get(0)[1]));
+                byte[] domainData = new byte[domainLength + 7];
+                int index = 0;
+                for (int i = 0; i < 3; i++) {
+                    int jIndex;
+                    if (i == 0) {
+                        jIndex = 2;
+                    } else {
+                        jIndex = 0;
+                    }
+                    for (int j = jIndex; j < 15; j++) {
+                        if (index < domainData.length) {
+                            domainData[index] = data.get(i)[j];
+                            index++;
+                        }
+                    }
+                }
+                String domainStr = new String(domainData, StandardCharsets.US_ASCII);
+
+                if (!TextUtils.isEmpty(domainStr)){
+                    try {
+                        String[] parts = domainStr.split("#")[0].split(",");
+                        if (parts.length >= 2) {
+                            String domainName = parts[0];
+                            String port = parts[1].replace("#", "");
+                            domainXinXiangCard.setDomainName(domainName);
+                            domainXinXiangCard.setPort(Integer.valueOf(port));
+                        }
+                    } catch (NumberFormatException e) {
+                        e.printStackTrace();
+                    }
                 }
             }
-            String domainStr = new String(domainData, StandardCharsets.US_ASCII);
-            String domainName = domainStr.split(",")[0];
-            String port = domainStr.split(",")[1].replace("#", "");
-            domainCard.setDomainName(domainName);
-            domainCard.setPort(Integer.valueOf(port));
 
-            return domainCard;
+            return domainXinXiangCard;
         } catch (Exception e) {
             e.printStackTrace();
             CrashReport.postCatchedException(e);
@@ -110,28 +168,39 @@
     /**
      * 鐢ㄦ埛鍗�0鍧�
      */
-    public class Zero extends BaseCard {
+    public class Zero extends HNBaseCard {
         public byte[] toByte() {
             byte[] data = new byte[16];
             data[0] = HexUtil.hexToByte(cardType);
-            if (domainNumber != null) {
-                byte[] domainNumbers = BcdUtil.strToBcd(domainNumber);
-                data[1] = domainNumbers[0];
-            }
             domainLength = domainName.length();
-            data[2] = HexUtil.hexToByte(HexUtil.get10to16(domainLength));
-            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);
+//            鍩熷悕鍗℃柊涔1鍚庢湁01==0锛岄箍閭戞病鏈�01==1
+            if (type == 0) {
+                if (domainNumber != null) {
+                    byte[] domainNumbers = BcdUtil.strToBcd(domainNumber);
+                    data[1] = domainNumbers[0];
+                }
+                data[2] = HexUtil.hexToByte(HexUtil.get10to16(domainLength));
+                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();
+                System.arraycopy(asciiByte, 0, data, 3, Math.min(asciiByte.length, 12));
             } else {
-                System.arraycopy(asciiByte, 0, data, 3, 12);
+                data[1] = HexUtil.hexToByte(HexUtil.get10to16(domainLength));
+                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();
+                System.arraycopy(asciiByte, 0, data, 2, Math.min(asciiByte.length, 13));
+
             }
+
             data[15] = getByteSum(data);
             return data;
         }
@@ -141,17 +210,16 @@
     /**
      * 鐢ㄦ埛鍗�1鍧�
      */
-    public class One extends BaseCard {
+    public class One extends HNBaseCard {
 
         public byte[] toBytes() {
             byte[] data = new byte[16];
-            if (asciiByte.length > 12) {
-                if (asciiByte.length - 12 < 15) {
-                    System.arraycopy(asciiByte, 12, data, 0, asciiByte.length - 12);
-                } else {
-                    System.arraycopy(asciiByte, 12, data, 0, 15);
-                }
+            int offset = (type == 0) ? 12 : 13;
+
+            if (asciiByte.length > offset) {
+                System.arraycopy(asciiByte, offset, data, 0, Math.min(asciiByte.length - offset, 15));
             }
+
             data[15] = getByteSum(data);
             return data;
         }
@@ -162,15 +230,13 @@
     /**
      * 鐢ㄦ埛鍗�2鍧�
      */
-    public class Two extends BaseCard {
+    public class Two extends HNBaseCard {
         public byte[] toBytes() {
             byte[] data = new byte[16];
-            if (asciiByte.length > (12 + 15)) {
-                if (asciiByte.length - (12 + 15) < 15) {
-                    System.arraycopy(asciiByte, 12, data, 0, asciiByte.length - (12 + 15));
-                } else {
-                    System.arraycopy(asciiByte, 12, data, 0, 15);
-                }
+            int offset = (type == 0) ? 27 : 28; // 12 + 15 and 13 + 15
+            if (asciiByte.length > offset) {
+                int lengthToCopy = Math.min(asciiByte.length - offset, 15);
+                System.arraycopy(asciiByte, offset, data, 0, lengthToCopy);
             }
             data[15] = getByteSum(data);
             return data;

--
Gitblit v1.8.0