Преглед на файлове

[WallPadMain]
1. 최신 Jar등록
2. utf-16 처리 추가
3. 버전업
- 2024.09.30.01 -> 2024.11.07.01

jglee преди 5 месеца
родител
ревизия
a722e36a9e

BIN
WallPadMain/libs/WallPadAPI.jar


+ 1 - 1
WallPadMain/src/main/AndroidManifest.xml

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadmain"
     android:versionCode="17"
-    android:versionName="2024.09.30.01">
+    android:versionName="2024.11.07.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

+ 41 - 9
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java

@@ -93,6 +93,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.ServerSocket;
 import java.net.Socket;
+import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -3428,7 +3429,22 @@ public class iMapServer extends Service {
 				imapsvrlog( "Socket read end accept </imap>\n"+strRcvMSG);
 				DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 				DocumentBuilder builder = factory.newDocumentBuilder();
-				InputStream istream = new ByteArrayInputStream(strRcvMSG.getBytes());
+
+				//jglee - 2024.11.07 여기서 utf-16 체크하기
+                boolean isutf16 = strRcvMSG.toLowerCase().contains("utf-16");
+                byte[] inputdata = null;
+                if(isutf16)
+                {
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+                        inputdata = strRcvMSG.getBytes(StandardCharsets.UTF_16);
+                    }
+                }
+                else
+                {
+                    inputdata = strRcvMSG.getBytes();
+                }
+
+				InputStream istream = new ByteArrayInputStream(inputdata);
 				doc = builder.parse(istream);
 				Element elelist = doc.getDocumentElement();
 				NodeList items = elelist.getElementsByTagName("service");
@@ -3635,7 +3651,7 @@ public class iMapServer extends Service {
                         }
 						else if (cmd.equalsIgnoreCase("remote_access_livinglight")) {
 						    if (ModelType == MODEL_TYPE.IHN_1020GL || ModelType == MODEL_TYPE.IHN_1010GL || ModelType == MODEL_TYPE.IHN_1010GL_I
-                                    || ModelType == Version.MODEL_TYPE.IHN_1010GL_I_2443 || ModelType == Version.MODEL_TYPE.IHN_1010GL_I_6410) {
+                                    || ModelType == MODEL_TYPE.IHN_1010GL_I_2443 || ModelType == MODEL_TYPE.IHN_1010GL_I_6410) {
                                 retXML = iCMDProc_I_LightControl(doc);
                             }
 						    else {
@@ -3643,13 +3659,13 @@ public class iMapServer extends Service {
                             }
 						}
 						else if (cmd.equalsIgnoreCase("remote_access_electric")) {
-						    if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I
+						    if (ModelType == MODEL_TYPE.IHN_D101 || ModelType == MODEL_TYPE.IHN_D101_I
+                                    || ModelType == MODEL_TYPE.IHN_D101K || ModelType == MODEL_TYPE.IHN_D101K_I
                                     || ModelType == MODEL_TYPE.IHN_D101_I_OCF) {
 						        retXML = iCMDProcSDPConcentControl(doc);
 						    }
 						    else if (ModelType == MODEL_TYPE.IHN_1020GL || ModelType == MODEL_TYPE.IHN_1010GL || ModelType == MODEL_TYPE.IHN_1010GL_I
-                                    || ModelType == Version.MODEL_TYPE.IHN_1010GL_I_2443 || ModelType == Version.MODEL_TYPE.IHN_1010GL_I_6410) {
+                                    || ModelType == MODEL_TYPE.IHN_1010GL_I_2443 || ModelType == MODEL_TYPE.IHN_1010GL_I_6410) {
                                 retXML = iCMDProcEnergyMeterConcentControl(doc);
                             }
 						    else {
@@ -3673,7 +3689,7 @@ public class iMapServer extends Service {
                         }
 						else if (cmd.equalsIgnoreCase("remote_access_light")) {
                             if (ModelType == MODEL_TYPE.IHN_1020GL || ModelType == MODEL_TYPE.IHN_1010GL || ModelType == MODEL_TYPE.IHN_1010GL_I
-                                    || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I_2443 || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I_6410) {
+                                    || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I_2443 || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I_6410) {
                                 WallpadDeviceSet devSet = new WallpadDeviceSet(getApplicationContext());
                                 nEnergyProductionUse = devSet.Get_Energy_Devices_Info(); //에너지 제품군
                                 devSet.closeDB();
@@ -3745,8 +3761,8 @@ public class iMapServer extends Service {
                             retXML = iCMDProcOnePass(elelist);
                         }
                         else if( cmd.equalsIgnoreCase("remote_entire_access_light_control")) {
-                            if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
-                                    || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
+                            if (Version.getModelType() == MODEL_TYPE.IHN_D101 || Version.getModelType() == MODEL_TYPE.IHN_D101_I
+                                    || Version.getModelType() == MODEL_TYPE.IHN_D101K || Version.getModelType() == MODEL_TYPE.IHN_D101K_I
                                     || Version.getModelType() == MODEL_TYPE.IHN_D101_I_OCF) {
                                 retXML = iCMDProcEntireLightControl(doc); // 전체 조명 제어
                             }
@@ -3903,7 +3919,23 @@ public class iMapServer extends Service {
                 imapsvrlog( "Socket read end accept </imap>\n"+strRcvMSG);
                 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                 DocumentBuilder builder = factory.newDocumentBuilder();
-                InputStream istream = new ByteArrayInputStream(strRcvMSG.getBytes());
+                
+                //jglee - 2024.10.17 utf-16도 지원하도록 수정
+                //여기서 utf-16 체크하기
+                boolean isutf16 = strRcvMSG.toLowerCase().contains("utf-16");
+                byte[] inputdata = null;
+                if(isutf16)
+                {
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+                        inputdata = strRcvMSG.getBytes(StandardCharsets.UTF_16);
+                    }
+                }
+                else
+                {
+                    inputdata = strRcvMSG.getBytes();
+                }
+
+                InputStream istream = new ByteArrayInputStream(inputdata);
                 doc = builder.parse(istream);
                 Element elelist = doc.getDocumentElement();
                 NodeList items = elelist.getElementsByTagName("service");