From 54a8c79222bba0644b02fe1dbc5d75e26ea50b5d Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期二, 14 十一月 2023 18:17:58 +0800
Subject: [PATCH] 2023年11月14日18:17:48
---
app/src/main/java/com/hdl/photovoltaic/utils/LocalManageUtil.java | 339 ++++----------
app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java | 11
app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java | 3
app/src/main/java/com/hdl/photovoltaic/HDLApp.java | 13
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 230 +++++++++-
app/src/main/java/com/hdl/photovoltaic/internet/TcpClient.java | 225 +++++++++
app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java | 401 +++++++++++++++++
app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java | 12
HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java | 3
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java | 19
HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/core/api/HDLCloudHomeApi.java | 4
app/src/main/res/values-en/strings.xml | 6
app/build.gradle | 12
app/src/main/java/com/hdl/photovoltaic/base/CustomBaseActivity.java | 32 +
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 24 +
15 files changed, 1,048 insertions(+), 286 deletions(-)
diff --git a/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java b/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java
index 47347c1..4eb0581 100644
--- a/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java
+++ b/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java
@@ -169,6 +169,9 @@
}
+
+
+
/**
* 鍙戦�佸師鐢熼�忎紶鍛戒护鏁版嵁
*
diff --git a/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/core/api/HDLCloudHomeApi.java b/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/core/api/HDLCloudHomeApi.java
index 48d3783..65492ce 100644
--- a/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/core/api/HDLCloudHomeApi.java
+++ b/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/core/api/HDLCloudHomeApi.java
@@ -100,9 +100,9 @@
public static final String POST_OTA_GET_DeviceFirmwares = "/home-wisdom/program/device/ota/getDeviceFirmwares";
//璁惧鍥轰欢浜戠鐨勯┍鍔ㄥ垎椤靛垪琛ㄨ幏鍙�
public static final String POST_OTA_GET_CloudDeviceFirmwares = "/smart-footstone/firmware/firmwareVersion/getLastOne";
- //Link璁惧鍥轰欢鍗囩骇OTA鍛戒护涓嬪彂
+ //璁惧鍥轰欢鍗囩骇OTA鍛戒护
public static final String POST_OTA_DeviceFirmwareUpgrade = "/home-wisdom/program/device/ota/deviceFirmwareUpgrade";
- //LINK璁惧鑾峰彇鍥轰欢鍗囩骇鍖呬笅杞藉湴鍧�
+ //璁惧鑾峰彇鍥轰欢鍗囩骇鍖呬笅杞藉湴鍧�
public static final String POST_OTA_GET_LinkDeviceFirmwareDownloadUrl = "/smart-footstone/mgmt/device/ota/getLinkDeviceFirmwareDownloadUrl";
//鑾峰彇IARCC涓夋柟鍥轰欢鍒嗛〉
diff --git a/app/build.gradle b/app/build.gradle
index 60bdfa3..ed09318 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -50,6 +50,14 @@
dirs 'libs'
}
}
+ /**
+ * 鎵撳寘鑷姩鍛藉悕
+ */
+ android.applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
+ outputFileName = "photovoltaic_${name}_v${versionName}_${generateTime()}.apk"
+ }
+ }
buildTypes {
release {
@@ -70,6 +78,10 @@
targetCompatibility JavaVersion.VERSION_1_8
}
}
+//鏋勫缓鏃堕棿
+static def generateTime() {
+ return new Date().format("yyyyMMddHHmm")
+}
dependencies {
diff --git a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
index 9378b04..2abcc75 100644
--- a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
+++ b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -1,7 +1,11 @@
package com.hdl.photovoltaic;
import android.app.Application;
+import android.content.Context;
import android.content.Intent;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.util.DisplayMetrics;
import com.hdl.hdlhttp.HxHttpConfig;
@@ -15,12 +19,14 @@
import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.utils.LocalManageUtil;
+import com.hdl.photovoltaic.utils.SharedPreUtils;
import com.hdl.sdk.link.HDLLinkLocalSdk;
import com.hdl.sdk.link.core.connect.HDLUdpConnect;
import com.hdl.sdk.link.core.utils.QueueUtils;
import com.hdl.sdk.link.core.utils.mqtt.MqttRecvClient;
-import java.util.HashMap;import java.util.Locale;
+import java.util.HashMap;
+import java.util.Locale;
import java.util.Objects;
import io.dcloud.common.util.RuningAcitvityUtil;
@@ -186,8 +192,6 @@
}
-
-
// /**
// * 鍒濆鍖杣ni app mqtt
// */
@@ -201,4 +205,7 @@
// }
// }
+
+
+
}
diff --git a/app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java b/app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java
index 7824776..f74016b 100644
--- a/app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java
@@ -12,6 +12,7 @@
import com.hdl.photovoltaic.listener.BaseView;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.utils.AppManagerUtils;
+import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.widget.LoadingDialog;
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
@@ -28,7 +29,7 @@
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+ LocalManageUtil.changeAppLanguage("en", this);
_mActivity = this;
Object content = getContentView();
//娣诲姞Activity鍒板爢鏍�
diff --git a/app/src/main/java/com/hdl/photovoltaic/base/CustomBaseActivity.java b/app/src/main/java/com/hdl/photovoltaic/base/CustomBaseActivity.java
index 37526ce..6e363f4 100644
--- a/app/src/main/java/com/hdl/photovoltaic/base/CustomBaseActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/base/CustomBaseActivity.java
@@ -1,11 +1,15 @@
package com.hdl.photovoltaic.base;
+import android.content.Context;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.utils.LocalManageUtil;
+
+import java.util.Locale;
/**
* 鑷畾涔夋柟娉�,鐢ㄤ簬瀹炵幇涓�у寲
@@ -15,7 +19,8 @@
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setNotificationBarBackgroundColor(0);
+ setNotificationBarBackgroundColor(CustomColor.blue);
+
}
/**
@@ -23,15 +28,24 @@
*
* @param color 棰滆壊鍊�(0=钃濊壊;1=鐧借壊;)
*/
- public void setNotificationBarBackgroundColor(int color) {
-
- if (color == 0) {
- color = R.color.text_245EC3;
- } else if (color == 1) {
- if (color == 1) {
- color = R.color.text_FFFFFFFF;
+ public void setNotificationBarBackgroundColor(CustomColor color) {
+ switch (color) {
+ case blue: {
+ getWindow().setStatusBarColor(getColor(R.color.text_245EC3));
+ break;
+ }
+ case white: {
+ getWindow().setStatusBarColor(getColor(R.color.text_FFFFFFFF));
+ break;
}
}
- getWindow().setStatusBarColor(getColor(color));
+
+ }
+
+ public enum CustomColor {
+ blue,//钃濊壊
+ white,//鐧借壊
+
+
}
}
diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/TcpClient.java b/app/src/main/java/com/hdl/photovoltaic/internet/TcpClient.java
index 1057676..3abca1c 100644
--- a/app/src/main/java/com/hdl/photovoltaic/internet/TcpClient.java
+++ b/app/src/main/java/com/hdl/photovoltaic/internet/TcpClient.java
@@ -1,9 +1,19 @@
package com.hdl.photovoltaic.internet;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.hdl.log.utils.PointUtil;
import com.hdl.photovoltaic.other.HdlAccountLogic;
+import com.hdl.sdk.link.common.exception.HDLLinkException;
import com.hdl.sdk.link.core.callback.HDLLinkCallBack;
+import com.hdl.sdk.link.core.callback.ModbusCallBack;
+import com.hdl.sdk.link.core.connect.HDLModBusConnect;
import com.hdl.sdk.link.gateway.HDLLinkLocalGateway;
+
+import java.lang.reflect.Type;
+import java.util.Arrays;
/**
* 瀹㈡埛绔搷浣滈�昏緫
@@ -57,4 +67,219 @@
HDLLinkLocalGateway.getInstance().sendDataToLinkGateway(mac, topic, jObject, sendPath, callBack);
}
+
+ /**
+ * 鍙戦�丮odBus鏁版嵁鍒扮綉鍏�
+ * 涓嬪彂涓婚搴曞眰榛樿
+ *
+ * @param mac 缃戝叧mac
+ * @param oidAddresses oid閲岄潰Addresses鍦板潃
+ * @param functionCode 鍔熻兘鐮併��3=锛堣鍙栧涓瘎瀛樺櫒)锛�,6=锛堝啓鍏ュ崟涓瘎瀛樺櫒锛�,16=锛堝啓鍏ュ涓瘎瀛樺櫒锛夈��
+ * @param registerAddress 瀵勫瓨鍣ㄥ湴鍧�
+ * @param contentData 鍐呭鏁版嵁锛堜笉鍚瘎瀛樺櫒鍦板潃锛夈�愭敞鎰忥細鍔熻兘鐮�=3鏃�,濉暟鍊硷紱瀹為檯璇诲灏慴yte灏卞~澶氬皯锛屼緥濡傚~"20"銆�
+ */
+ public void SendModBusDataToLinkGateway(String mac, String oidAddresses, int functionCode, int registerAddress, String contentData, ModbusCallBack modbusCallBack) {
+ String s = "";
+ switch (functionCode) {
+ case 3: {
+ s = getReadModbusPassData(oidAddresses, registerAddress, functionCode, contentData);
+ }
+ break;
+ case 6: {
+ s = getWriteSingleModbusPassData(oidAddresses, registerAddress, functionCode, contentData);
+ }
+ break;
+ case 16: {
+ s = getWriteMultipleModbusPassData(oidAddresses, registerAddress, functionCode, contentData);
+ }
+ break;
+ }
+ HDLModBusConnect.getInstance().Send(mac, s.getBytes(), modbusCallBack);
+ }
+
+ /**
+ * 鑾峰彇璇诲彇銆恗odbus鍗忚銆戞嫾鎺ラ�忎紶鏁版嵁鐨勫瓧绗︿覆
+ * 涓嬪彂涓婚锛�/user/${gw_id}/custom/native/${driver}/down;
+ * 閫嗗彉鍣ㄥ洖澶嶄富棰橈細/user/${gw_id}/custom/native/${driver}/down_reply;
+ * Modbus ECU鍗忚锛氫簨浠禝D(2涓猙yte)->鍗忚[鍥哄畾:0,0](2涓猙yte)->闀垮害(2byte)->鏍囪瘑绗oid鐨刟ddresses鍊糫(4涓猙yte)->鍔熻兘鐮�(1涓猙yte)->璐熻浇鏁版嵁(N涓猙yte);
+ * 闀垮害(2涓猙yte)=鏍囪瘑绗�(4涓猙yte)+鍔熻兘鐮�(1涓猙yte)+璐熻浇鏁版嵁(N涓猙yte);
+ * 璐熻浇鏁版嵁=瀵勫瓨鍣ㄥ湴鍧�(2涓猙yte)+瀵勫瓨鍣ㄩ暱搴�(2涓猙yte)+鍐呭闀垮害(1涓猙yte)+鍐呭鏁版嵁(N涓猙yte)銆愭敞鎰�:鍗曚釜鍐欏叆瀵勫瓨鍣�-->鍘绘帀<瀵勫瓨鍣ㄩ暱搴�>鍜�<鍐呭闀垮害>銆�;
+ * 瀵勫瓨鍣ㄩ暱搴�=(鍐呭鏁版嵁/2);
+ * 渚嬪瓙:new byte[]{00,01,00,00,00,0x09,00,00,00,01,03,00,00,00,01};
+ *
+ * @param oidAddresses oid閲岄潰Addresses鐨勫��
+ * @param functionCode 鍔熻兘鐮併��3=锛堣鍙栧涓瘎瀛樺櫒)锛�,6=锛堝啓鍏ュ崟涓瘎瀛樺櫒锛�,16=锛堝啓鍏ュ涓瘎瀛樺櫒锛夈��
+ * @param registerAddress 瀵勫瓨鍣ㄥ湴鍧�
+ * @param contentData 鍐呭鏁版嵁锛堜笉鍚瘎瀛樺櫒鍦板潃锛�
+ */
+ public String getReadModbusPassData(String oidAddresses, int functionCode, int registerAddress, String contentData) {
+ String data = "";
+ try {
+ String eventID = to2ByteHexString(registerAddress);//浜嬩欢ID(2byte)
+ String agreement = "0000";//鍗忚锛�2byte锛�
+ String dataByteLength = "";//闀垮害锛圢 byte锛�
+ String oidAddresses_1 = oidAddresses;//鏍囪瘑绗︼紙4byte锛�
+ String functionCode_1 = to1ByteHexString(functionCode);//鍔熻兘鐮侊紙=1byte锛�
+ String registerAddress_1 = to2ByteHexString(registerAddress);//瀵勫瓨鍣ㄥ湴鍧�锛�2byte锛�
+ String registerLength_1 = to2ByteHexString(Integer.getInteger(contentData) / 2);//瀵勫瓨鍣ㄩ暱搴︼紙2byte锛�
+ byte[] bytes = (oidAddresses_1 + functionCode_1 + registerAddress_1 + registerLength_1).getBytes();
+ dataByteLength = to1ByteHexString(bytes.length / 2);
+ data = eventID + agreement + dataByteLength + oidAddresses_1 + functionCode_1 + registerAddress_1 + registerLength_1;
+ return data;
+ } catch (Exception ignored) {
+ return data;
+ }
+ }
+
+
+ /**
+ * 鑾峰彇鍐欏叆鍗曚釜銆恗odbus鍗忚銆戞嫾鎺ラ�忎紶鏁版嵁鐨勫瓧绗︿覆
+ * 涓嬪彂涓婚锛�/user/${gw_id}/custom/native/${driver}/down;
+ * 閫嗗彉鍣ㄥ洖澶嶄富棰橈細/user/${gw_id}/custom/native/${driver}/down_reply;
+ * Modbus ECU鍗忚锛氫簨浠禝D(2涓猙yte)->鍗忚[鍥哄畾:0,0](2涓猙yte)->闀垮害(2byte)->鏍囪瘑绗oid鐨刟ddresses鍊糫(4涓猙yte)->鍔熻兘鐮�(1涓猙yte)->璐熻浇鏁版嵁(N涓猙yte);
+ * 闀垮害(2涓猙yte)=鏍囪瘑绗�(4涓猙yte)+鍔熻兘鐮�(1涓猙yte)+璐熻浇鏁版嵁(N涓猙yte);
+ * 璐熻浇鏁版嵁=瀵勫瓨鍣ㄥ湴鍧�(2涓猙yte)+瀵勫瓨鍣ㄩ暱搴�(2涓猙yte)+鍐呭闀垮害(1涓猙yte)+鍐呭鏁版嵁(N涓猙yte)銆愭敞鎰�:鍗曚釜鍐欏叆瀵勫瓨鍣�-->鍘绘帀<瀵勫瓨鍣ㄩ暱搴�>鍜�<鍐呭闀垮害>銆�;
+ * 瀵勫瓨鍣ㄩ暱搴�=(鍐呭鏁版嵁/2);
+ * 渚嬪瓙:new byte[]{[0, 11, 0, 0, 0, 30, 0, 0, 0, 26, 6, 0, 11, 49, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32]};
+ *
+ * @param oidAddresses oid閲岄潰Addresses鐨勫��
+ * @param functionCode 鍔熻兘鐮併��3=锛堣鍙栧涓瘎瀛樺櫒)锛�,6=锛堝啓鍏ュ崟涓瘎瀛樺櫒锛�,16=锛堝啓鍏ュ涓瘎瀛樺櫒锛夈��
+ * @param registerAddress 瀵勫瓨鍣ㄥ湴鍧�
+ * @param contentData 鍐呭鏁版嵁锛堜笉鍚瘎瀛樺櫒鍦板潃锛�
+ */
+ public String getWriteSingleModbusPassData(String oidAddresses, int functionCode, int registerAddress, String contentData) {
+ String data = "";
+ try {
+ String eventID = to2ByteHexString(registerAddress);//浜嬩欢ID(2byte)
+ String agreement = "0000";//鍗忚锛�2byte锛�
+ String dataByteLength = "";//闀垮害锛圢 byte锛�
+ String oidAddresses_1 = oidAddresses;//鏍囪瘑绗︼紙4byte锛�
+ String functionCode_1 = to1ByteHexString(functionCode);//鍔熻兘鐮侊紙=1byte锛�
+ String registerAddress_1 = to2ByteHexString(registerAddress);//瀵勫瓨鍣ㄥ湴鍧�锛�2byte锛�
+ String contentData_1 = contentData;//鍐呭鏁版嵁锛圢 byte锛�
+ byte[] bytes = (oidAddresses_1 + functionCode_1 + registerAddress_1 + contentData_1).getBytes();
+ dataByteLength = to1ByteHexString(bytes.length / 2);
+ data = eventID + agreement + dataByteLength + oidAddresses_1 + functionCode_1 + registerAddress_1 + contentData_1;
+ return data;
+ } catch (Exception ignored) {
+ return data;
+ }
+ }
+
+ /**
+ * 鑾峰彇鍐欏叆澶氫釜銆恗odbus鍗忚銆戞嫾鎺ラ�忎紶鏁版嵁鐨勫瓧绗︿覆
+ * 涓嬪彂涓婚锛�/user/${gw_id}/custom/native/${driver}/down;
+ * 閫嗗彉鍣ㄥ洖澶嶄富棰橈細/user/${gw_id}/custom/native/${driver}/down_reply;
+ * Modbus ECU鍗忚锛氫簨浠禝D(2涓猙yte)->鍗忚[鍥哄畾:0,0](2涓猙yte)->闀垮害(2byte)->鏍囪瘑绗oid鐨刟ddresses鍊糫(4涓猙yte)->鍔熻兘鐮�(1涓猙yte)->璐熻浇鏁版嵁(N涓猙yte);
+ * 闀垮害(2涓猙yte)=鏍囪瘑绗�(4涓猙yte)+鍔熻兘鐮�(1涓猙yte)+璐熻浇鏁版嵁(N涓猙yte);
+ * 璐熻浇鏁版嵁=瀵勫瓨鍣ㄥ湴鍧�(2涓猙yte)+瀵勫瓨鍣ㄩ暱搴�(2涓猙yte)+鍐呭闀垮害(1涓猙yte)+鍐呭鏁版嵁(N涓猙yte)銆愭敞鎰�:鍗曚釜鍐欏叆瀵勫瓨鍣�-->鍘绘帀<瀵勫瓨鍣ㄩ暱搴�>鍜�<鍐呭闀垮害>銆�;
+ * 瀵勫瓨鍣ㄩ暱搴�=(鍐呭鏁版嵁/2);
+ * 渚嬪瓙:new byte[]{[0, 11, 0, 0, 0, 30, 0, 0, 0, 26, 16, 0, 11, 0, 10, 20, 49, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32]};
+ *
+ * @param oidAddresses oid閲岄潰Addresses鐨勫��
+ * @param functionCode 鍔熻兘鐮併��3=锛堣鍙栧涓瘎瀛樺櫒)锛�,6=锛堝啓鍏ュ崟涓瘎瀛樺櫒锛�,16=锛堝啓鍏ュ涓瘎瀛樺櫒锛夈��
+ * @param registerAddress 瀵勫瓨鍣ㄥ湴鍧�
+ * @param contentData 鍐呭鏁版嵁锛堜笉鍚瘎瀛樺櫒鍦板潃锛�
+ */
+ public String getWriteMultipleModbusPassData(String oidAddresses, int functionCode, int registerAddress, String contentData) {
+
+ String data = "";
+ try {
+ String eventID = to2ByteHexString(registerAddress);//浜嬩欢ID(2byte)
+ String agreement = "0000";//鍗忚锛�2byte锛�
+ String dataByteLength = "";//闀垮害锛圢 byte锛�
+ String oidAddresses_1 = oidAddresses;//鏍囪瘑绗︼紙4byte锛�
+ String functionCode_1 = to1ByteHexString(functionCode);//鍔熻兘鐮侊紙=1byte锛�
+ String registerAddress_1 = to2ByteHexString(registerAddress);//瀵勫瓨鍣ㄥ湴鍧�锛�2byte锛�
+ String registerLength_1 = to2ByteHexString(contentData.length() / 2);//瀵勫瓨鍣ㄩ暱搴︼紙2byte锛�
+ String contentLength_1 = to1ByteHexString(contentData.length());//鍐呭闀垮害锛�1byte锛�
+ String contentData_1 = contentData;//鍐呭鏁版嵁锛圢 byte锛�
+ byte[] bytes = (oidAddresses_1 + functionCode_1 + registerAddress_1 + registerLength_1 + contentLength_1 + contentData_1).getBytes();
+ dataByteLength = to1ByteHexString(bytes.length / 2);
+ data = eventID + agreement + dataByteLength + oidAddresses_1 + functionCode_1 + registerAddress_1 + registerLength_1 + contentLength_1 + contentData_1;
+ return data;
+ } catch (Exception ignored) {
+ return data;
+ }
+ }
+
+
+ /**
+ * 鑾峰彇鍗佸叚杩涘埗瀛楃涓�(涓嶅涓や綅鍓嶉潰琛�0)
+ *
+ * @param value 瀵勫瓨鍣ㄥ湴鍧�(鍗佽繘鍒�)
+ * @return (2byte)鍗佸叚杩涘埗瀛楃涓�
+ */
+ public String to2ByteHexString(int value) {
+ String high = "";
+ String low = "";
+ if (value > 255) {
+ high = to1ByteHexString(value / 256);
+
+ low = to1ByteHexString(value % 256);
+ } else {
+ high = "00";
+ low = to1ByteHexString(value);
+ }
+ return high + low;
+ }
+
+ /**
+ * 鑾峰彇鍗佸叚杩涘埗瀛楃涓�(涓嶅涓や綅鍓嶉潰琛�0)
+ *
+ * @param value 鍗佽繘鍒�
+ * @return (1byte)鍗佸叚杩涘埗瀛楃涓�
+ */
+ public String to1ByteHexString(int value) {
+ try {
+ String hexString = Integer.toHexString(value);
+ if (hexString.length() == 1) {
+ return "0" + hexString;
+ }
+ return hexString;
+ } catch (Exception e) {
+ return "00";
+ }
+ }
+
+
+ /**
+ * 鑾峰彇鍗佸叚杩涘埗瀛楃涓�(涓嶅涓や綅鍓嶉潰琛�0)
+ *
+ * @param dataBytes 鏁扮粍
+ * @return -(n byte)鍗佸叚杩涘埗瀛楃涓�
+ */
+ public String toNByteHexString(byte[] dataBytes) {
+ StringBuilder stringBuilder = new StringBuilder();
+ for (byte dataByte : dataBytes) {
+ String dataB = Integer.toHexString(dataByte & 0xFF);
+ if (dataB.length() == 1) {
+ dataB = "0" + dataB;
+ }
+ stringBuilder.append(dataB);
+ }
+ return stringBuilder.toString();
+ }
+
+ /**
+ * 鑾峰彇鍗佸叚杩涘埗瀛楃涓�(涓嶅涓や綅鍓嶉潰琛�0)
+ *
+ * @param value 瀵勫瓨鍣ㄥ湴鍧�(鍗佽繘鍒�)
+ * @return (2byte)鍗佸叚杩涘埗瀛楃涓�
+ */
+ private String getByteHexString(int value) {
+ String high = "";
+ String low = "";
+ if (value > 255) {
+ high = to1ByteHexString(value / 256);
+
+ low = to1ByteHexString(value % 256);
+ } else {
+ high = "00";
+ low = to1ByteHexString(value);
+ }
+ return high + low;
+ }
+
+
}
diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
index 843c02d..9cfbc16 100644
--- a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
+++ b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -32,6 +32,25 @@
public static final String POST_Device_Oid = "/home-wisdom/program/device/oid/add";
//鑾峰彇閫嗗彉鍣�(鑾峰彇璁惧杩滅▼閫氳淇℃伅)
public static final String POST_Device_RemoteInfo = "/home-wisdom/program/device/remoteInfo";
+ //璁惧鍩烘湰淇℃伅鍒楄〃(oid)鑾峰彇
+ public static final String POST_DEVICE_OID_LIST_GET = "/home-wisdom/program/device/oid/list";
+ //璁惧鍥轰欢鍒楄〃鑾峰彇
+ public static final String POST_OTA_GET_DeviceFirmwares = "/home-wisdom/program/device/ota/getDeviceFirmwares";
+ //璁惧鍥轰欢浜戠鐨勯┍鍔ㄥ垎椤靛垪琛ㄨ幏鍙�
+ public static final String POST_OTA_GET_CloudDeviceFirmwares = "/smart-footstone/firmware/firmwareVersion/getLastOne";
+ //璁惧鍥轰欢鍗囩骇OTA鍛戒护
+ public static final String POST_OTA_DeviceFirmwareUpgrade = "/home-wisdom/program/device/ota/deviceFirmwareUpgrade";
+ //璁惧鑾峰彇鍥轰欢鍗囩骇鍖呬笅杞藉湴鍧�
+ public static final String POST_OTA_GET_LinkDeviceFirmwareDownloadUrl = "/smart-footstone/mgmt/device/ota/getLinkDeviceFirmwareDownloadUrl";
+ //褰撳墠缃戝叧椹卞姩鍒楄〃鑾峰彇
+ public static final String POST_OTA_GET_GatewayDrivers = "/home-wisdom/program/device/ota/getGatewayDrivers";
+ //缃戝叧浜戠鐨勯┍鍔ㄥ垎椤靛垪琛ㄨ幏鍙�
+ public static final String POST_OTA_GET_CloudGatewayDrivers = "/smart-footstone/driver/buspro/download";
+ //缃戝叧椹卞姩鍗囩骇OTA鍛戒护涓嬪彂
+ public static final String POST_OTA_GatewayDriverUpgrade = "/home-wisdom/program/device/ota/gatewayDriverUpgrade";
+ //LINK璁惧鑾峰彇椹卞姩鍗囩骇鍖呬笅杞藉湴鍧�
+ public static final String POST_OTA_GET_LinkDeviceDriverDownloadUrl = "/smart-footstone/mgmt/device/ota/getLinkDeviceDriverDownloadUrl";
+
//endregion
//endregion
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
index 607bb82..88f735e 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -6,7 +6,22 @@
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
+import com.hdl.hdlhttp.HxHttp;
+import com.hdl.linkpm.sdk.core.api.HDLCloudHomeApi;
+import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack;
+import com.hdl.linkpm.sdk.core.callback.IResponseCallBack;
import com.hdl.linkpm.sdk.core.exception.HDLException;
+import com.hdl.linkpm.sdk.core.response.HDLResponse;
+import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean;
+import com.hdl.linkpm.sdk.device.bean.GatewayCloudBean;
+import com.hdl.linkpm.sdk.ota.HDLLinkPMOta;
+import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean;
+import com.hdl.linkpm.sdk.ota.bean.CloudGatewayDriversBean;
+import com.hdl.linkpm.sdk.ota.bean.DeviceFirmwareBean;
+import com.hdl.linkpm.sdk.ota.bean.DownloadUrlBean;
+import com.hdl.linkpm.sdk.ota.bean.GatewayDriverBean;
+import com.hdl.linkpm.sdk.project.HDLLinkPMProject;
+import com.hdl.linkpm.sdk.utils.HDLExceptionSubmitUtils;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.internet.HttpClient;
@@ -29,10 +44,15 @@
import com.hdl.sdk.link.gateway.HDLLinkLocalGateway;
import com.hdl.sdk.link.gateway.type.GatewayMasterType;
+import org.json.JSONException;
+
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
+
+import io.dcloud.feature.unimp.DCUniMPJSCallback;
+import io.reactivex.rxjava3.disposables.Disposable;
/**
@@ -97,6 +117,8 @@
}
return null;
}
+
+
/**
* 閫嗗彉鍣ㄤ笂浼犳暟鎹埌浜戠(鍖呮嫭:sid锛宱id)
@@ -801,7 +823,7 @@
* @param deviceRemoteInfo 璁惧杩滅▼閫氳淇℃伅
* @param cloudInverterDeviceBean 閫嗗彉鍣�
*/
- private static void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo) {
+ private void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo) {
//鏈湴鏌ユ壘閫嗗彉鍣�
GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(cloudInverterDeviceBean.getOsn());
if (gatewayBean == null) {
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
index b0b7b8f..fb26833 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
@@ -25,7 +25,7 @@
private static volatile HdlFileLogic sHdlFileLogic;
/**
- * 琛ㄧず1m鏁版嵁
+ * 琛ㄧず1m澶у皬鏁版嵁
*/
private final int m = 1;
@@ -61,32 +61,32 @@
* 鑾峰彇鎵嬫満鍐呴儴瀛樺偍鏂囦欢璺緞
*/
public String getAPPInternalStoreFilesPath() {
- return HDLApp.getInstance().getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS).getPath();
+ return Objects.requireNonNull(HDLApp.getInstance().getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS)).getPath();
}
/**
- * 鑾峰彇瀛樻斁銆愮敤鎴枫�戞枃浠跺す鏍硅矾寰�
+ * 鑾峰彇瀛樻斁銆愮敤鎴锋枃浠跺す銆戞牴璺緞
*/
public String getCurrentUserRootPath() {
return getAPPInternalStoreFilesPath() + "/" + getUserId();
}
/**
- * 鑾峰彇瀛樻斁銆愪綇瀹呫�戞枃浠跺す鏍硅矾寰�
+ * 鑾峰彇瀛樻斁銆愪綇瀹呮枃浠跺す銆戞牴璺緞
*/
public String getCurrentHomeRootPath() {
return getCurrentUserRootPath() + "/" + "home_" + getHomeId();
}
/**
- * 鑾峰彇銆愭棩蹇椼�戞枃浠跺叏璺緞
+ * 鑾峰彇銆愭棩蹇楁枃浠躲�戝叏璺緞
*/
public String getLogFilePath() {
return getCurrentHomeRootPath() + "/Log.txt";
}
/**
- * 鑾峰彇銆愮敤鎴枫�戞枃浠跺叏璺緞
+ * 鑾峰彇銆愮敤鎴锋枃浠躲�戝叏璺緞
*/
public String getUserFilePath() {
return getAPPInternalStoreFilesPath() + "/UserConfigManage.txt";
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java
new file mode 100644
index 0000000..ca50153
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java
@@ -0,0 +1,401 @@
+package com.hdl.photovoltaic.other;
+
+import android.text.TextUtils;
+
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
+import com.hdl.linkpm.sdk.core.exception.HDLException;
+import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean;
+import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean;
+import com.hdl.linkpm.sdk.ota.bean.CloudGatewayDriversBean;
+import com.hdl.linkpm.sdk.ota.bean.DeviceFirmwareBean;
+import com.hdl.linkpm.sdk.ota.bean.DownloadUrlBean;
+import com.hdl.linkpm.sdk.ota.bean.GatewayDriverBean;
+import com.hdl.photovoltaic.config.UserConfigManage;
+import com.hdl.photovoltaic.internet.HttpClient;
+import com.hdl.photovoltaic.internet.api.HttpApi;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * ota鍗囩骇閫昏緫
+ */
+public class HdlOtaLogic {
+ private static volatile HdlOtaLogic sHdlOtaLogic;
+
+ /**
+ * 鑾峰彇褰撳墠瀵硅薄
+ *
+ * @return HdlDeviceLogic
+ */
+ public static synchronized HdlOtaLogic getInstance() {
+ if (sHdlOtaLogic == null) {
+ synchronized (HdlOtaLogic.class) {
+ if (sHdlOtaLogic == null) {
+ sHdlOtaLogic = new HdlOtaLogic();
+ }
+ }
+
+ }
+ return sHdlOtaLogic;
+ }
+
+ //region -----鍥轰欢鍗囩骇---------
+
+ /**
+ * 鍚戜簯绔幏鍙栭�嗗彉鍣╫id鍒楄〃
+ * 鍓嶆彁鏉′欢:瑕佷笂浼犻�嗗彉鍣╫id鍒楄〃缁欎簯绔�
+ *
+ * @param callBack -
+ */
+ public void getCloudOidList(CloudCallBeak<List<DeviceOidInfoBean>> callBack) {
+ String requestUrl = HttpApi.POST_DEVICE_OID_LIST_GET;
+ JsonObject json = new JsonObject();
+ json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+
+ if (TextUtils.isEmpty(json)) {
+ if (callBack != null) {
+ callBack.onSuccess(new ArrayList<>());
+ }
+ return;
+ }
+ Gson gson = new Gson();
+ Type typeOfT = new TypeToken<List<DeviceOidInfoBean>>() {
+ }.getType();
+ List<DeviceOidInfoBean> list = gson.fromJson(json, typeOfT);
+ if (callBack != null) {
+ callBack.onSuccess(list);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+
+ }
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愬綋鍓嶈澶囧浐浠躲�戝垪琛�
+ * 鍓嶆彁鏉′欢:璁惧鑷姩涓婃姤oid淇℃伅缁欎簯绔�
+ *
+ * @param deviceOidId oid浜戠id
+ * @param callBack -
+ */
+ public void getCurrentDeviceFirmwares(String deviceOidId, CloudCallBeak<List<DeviceFirmwareBean>> callBack) {
+ String requestUrl = HttpApi.POST_OTA_GET_DeviceFirmwares;
+ JsonObject json = new JsonObject();
+ json.addProperty("deviceOidId", deviceOidId);
+ json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+
+ if (TextUtils.isEmpty(json)) {
+ if (callBack != null) {
+ callBack.onSuccess(new ArrayList<>());
+ }
+ return;
+ }
+ Gson gson = new Gson();
+ Type typeOfT = new TypeToken<List<DeviceFirmwareBean>>() {
+ }.getType();
+ List<DeviceFirmwareBean> list = gson.fromJson(json, typeOfT);
+ if (callBack != null) {
+ callBack.onSuccess(list);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+ }
+
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愯澶囨柊鍥轰欢銆戝垪琛�
+ * 鍓嶆彁鏉′欢:瑕侀�氳繃骞冲彴杞欢涓婁紶鏂板浐浠�
+ *
+ * @param hardwareModel 纭欢鍨嬪彿
+ * @param osImageId 绯荤粺闀滃儚id
+ * @param callBack -
+ */
+ public void getNewDeviceFirmwares(String hardwareModel, String osImageId, CloudCallBeak<List<CloudDeviceFirmwaresBean>> callBack) {
+ String requestUrl = HttpApi.POST_OTA_GET_CloudDeviceFirmwares;
+ JsonObject json = new JsonObject();
+ json.addProperty("hardwareModel", hardwareModel);
+ json.addProperty("osImageId", osImageId);
+ json.addProperty("protocolType", "ZIGBEE");//鍗忚绫诲瀷,鍙敤鍊�:BUSPRO,KNX,ZIGBEE,OTHER
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+
+ if (TextUtils.isEmpty(json)) {
+ if (callBack != null) {
+ callBack.onSuccess(new ArrayList<>());
+ }
+ return;
+ }
+ Gson gson = new Gson();
+ Type typeOfT = new TypeToken<List<CloudDeviceFirmwaresBean>>() {
+ }.getType();
+ List<CloudDeviceFirmwaresBean> list = gson.fromJson(json, typeOfT);
+ if (callBack != null) {
+ callBack.onSuccess(list);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+ }
+
+
+ /**
+ * 鍚戜簯绔彂璧枫�愯澶囧浐浠躲�戝崌绾TA鎸囦护
+ *
+ * @param deviceOidId 璁惧id
+ * @param firmwareVersionId 鍥轰欢鐗堟湰id
+ * @param callBack-
+ */
+ public void upgradeDeviceFirmware(String deviceOidId, String firmwareVersionId, CloudCallBeak<Boolean> callBack) {
+ String requestUrl = HttpApi.POST_OTA_DeviceFirmwareUpgrade;
+ JsonObject json = new JsonObject();
+ json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
+ json.addProperty("deviceOidId", deviceOidId);
+ json.addProperty("firmwareVersionId", firmwareVersionId);
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+ if (callBack != null) {
+ callBack.onSuccess(true);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+
+ }
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愯澶囧浐浠躲�戝崌绾у寘涓嬭浇鍦板潃
+ *
+ * @param firmwareVersionId 鍥轰欢鐗堟湰Id
+ */
+ public void getDeviceFirmwareDownloadUrl(String firmwareVersionId, CloudCallBeak<DownloadUrlBean> callBack) {
+ String requestUrl = HttpApi.POST_OTA_GET_LinkDeviceFirmwareDownloadUrl;
+ JsonObject json = new JsonObject();
+ json.addProperty("firmwareVersionId", firmwareVersionId);
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+
+ if (TextUtils.isEmpty(json)) {
+ if (callBack != null) {
+ callBack.onSuccess(new DownloadUrlBean());
+ }
+ return;
+ }
+ Gson gson = new Gson();
+ Type typeOfT = new TypeToken<DownloadUrlBean>() {
+ }.getType();
+ DownloadUrlBean downloadUrlBean = gson.fromJson(json, typeOfT);
+ if (callBack != null) {
+ callBack.onSuccess(downloadUrlBean);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+ }
+
+ //endregion
+
+ //region -----椹卞姩鍗囩骇---------
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愬綋鍓嶈澶囬┍鍔ㄣ�戝垪琛�
+ * 鍓嶆彁鏉′欢:璁惧鑷姩涓婃姤oid淇℃伅缁欎簯绔�
+ *
+ * @param oid 缃戝叧璁惧oid
+ * @param callBack -
+ */
+ public void getCurrentGatewayDrivers(String oid, CloudCallBeak<List<GatewayDriverBean>> callBack) {
+ String requestUrl = HttpApi.POST_OTA_GET_GatewayDrivers;
+ JsonObject json = new JsonObject();
+ json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
+ json.addProperty("oid", oid);
+
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+
+ if (TextUtils.isEmpty(json)) {
+ if (callBack != null) {
+ callBack.onSuccess(new ArrayList<>());
+ }
+ return;
+ }
+ Gson gson = new Gson();
+ Type typeOfT = new TypeToken<List<GatewayDriverBean>>() {
+ }.getType();
+ List<GatewayDriverBean> list = gson.fromJson(json, typeOfT);
+ if (callBack != null) {
+ callBack.onSuccess(list);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+
+ }
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愯澶囨柊椹卞姩銆戝垪琛�
+ * 鍓嶆彁鏉′欢:瑕侀�氳繃骞冲彴杞欢涓婁紶鏂伴┍鍔�
+ *
+ * @param driveCode 椹卞姩缂栧彿鎴栭┍鍔ㄥ悕绉�
+ * @param osImageId 椹卞姩绫诲瀷id
+ * @param callBack -
+ */
+ public void getNewGatewayDrivers(String driveCode, String osImageId, CloudCallBeak<CloudGatewayDriversBean> callBack) {
+ String requestUrl = HttpApi.POST_OTA_GET_CloudGatewayDrivers;
+ JsonObject json = new JsonObject();
+ json.addProperty("driveCode", driveCode);
+ json.addProperty("osImageId", osImageId);
+
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+
+ if (TextUtils.isEmpty(json)) {
+ if (callBack != null) {
+ callBack.onSuccess(new CloudGatewayDriversBean());
+ }
+ return;
+ }
+ Gson gson = new Gson();
+ Type typeOfT = new TypeToken<CloudGatewayDriversBean>() {
+ }.getType();
+ CloudGatewayDriversBean cloudGatewayDriversBean = gson.fromJson(json, typeOfT);
+ if (callBack != null) {
+ callBack.onSuccess(cloudGatewayDriversBean);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+
+
+ }
+
+ /**
+ * 浜戠鍙戣捣銆愯澶囬┍鍔ㄣ�戝崌绾TA鎸囦护
+ *
+ * @param oid 缃戝叧璁惧oid
+ * @param driverVersionId 椹卞姩鐗堟湰id
+ * @param callBack -
+ */
+ public void upgradeGatewayDriver(String oid, String driverVersionId, CloudCallBeak<Boolean> callBack) {
+ String requestUrl = HttpApi.POST_OTA_GatewayDriverUpgrade;
+ JsonObject json = new JsonObject();
+ json.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
+ json.addProperty("oid", oid);
+ json.addProperty("driverVersionId", driverVersionId);
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+ if (callBack != null) {
+ callBack.onSuccess(true);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+ }
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愯澶囬┍鍔ㄣ�戝崌绾у寘涓嬭浇鍦板潃
+ *
+ * @param driverVersionId 椹卞姩鐗堟湰Id
+ */
+ public void getDeviceDriverDownloadUrl(String driverVersionId, CloudCallBeak<DownloadUrlBean> callBack) {
+ String requestUrl = HttpApi.POST_OTA_GET_LinkDeviceDriverDownloadUrl;
+ JsonObject json = new JsonObject();
+ json.addProperty("driverVersionId", driverVersionId);
+ HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+ @Override
+ public void onSuccess(String json) {
+
+ if (TextUtils.isEmpty(json)) {
+ if (callBack != null) {
+ callBack.onSuccess(new DownloadUrlBean());
+ }
+ return;
+ }
+ Gson gson = new Gson();
+ Type typeOfT = new TypeToken<DownloadUrlBean>() {
+ }.getType();
+ DownloadUrlBean downloadUrlBean = gson.fromJson(json, typeOfT);
+ if (callBack != null) {
+ callBack.onSuccess(downloadUrlBean);
+ }
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ if (callBack != null) {
+ callBack.onFailure(e);
+ }
+ }
+ });
+ }
+
+
+ //endregion
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
index 9cf071e..ff4307a 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -6,6 +6,11 @@
import com.google.gson.Gson;
import com.hdl.linkpm.sdk.core.exception.HDLException;
+import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean;
+import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean;
+import com.hdl.linkpm.sdk.ota.bean.CloudGatewayDriversBean;
+import com.hdl.linkpm.sdk.ota.bean.DeviceFirmwareBean;
+import com.hdl.linkpm.sdk.ota.bean.GatewayDriverBean;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.bean.ModBusBean;
import com.hdl.photovoltaic.config.UserConfigManage;
@@ -187,6 +192,46 @@
break;
}
+ } else if (HDLUniMP.UNI_EVENT_REPLY_OTA_MODEL.equals(event)) {
+ //OTA鍗囩骇妯″潡
+ switch (type) {
+ //鍚戜簯绔幏鍙杘id鍒楄〃
+ case HDLUniMP.UNI_EVENT_REPLY_OTA_CLOUD_OID_LIST: {
+ this.uniGetCloudOidList(data, callback);
+ }
+ break;
+ //褰撳墠璁惧鍥轰欢鍒楄〃
+ case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_LIST: {
+ this.uniGetCurrentDeviceFirmwares(data, callback);
+ }
+ break;
+ //璁惧鏂板浐浠跺垪琛�
+ case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_NEW_LIST: {
+ this.uniGetNewDeviceFirmwares(data, callback);
+ }
+ break;
+ //璁惧鍥轰欢鍗囩骇
+ case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_UPGRADE: {
+ this.uniUpgradeDeviceFirmware(data, callback);
+ }
+ break;
+ //褰撳墠璁惧椹卞姩鍒楄〃
+ case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_LIST: {
+ this.uniGetCurrentGatewayDrivers(data, callback);
+ }
+ break;
+ //璁惧鏂伴┍鍔ㄥ垪琛�
+ case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_NEW: {
+ this.uniGetNewGatewayDrivers(data, callback);
+ }
+ break;
+ //璁惧椹卞姩鍗囩骇
+ case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_UPGRADE: {
+ this.uniUpgradeGatewayDriver(data, callback);
+ }
+ break;
+
+ }
}
HdlLogLogic.print("uni===鍘熺敓鎺ユ敹uni鍙戞潵鐨勬暟鎹�===" + event + "\r\n" + data, false);
} catch (Exception e) {
@@ -203,10 +248,9 @@
* @param jsonObject 闄勪欢鏁版嵁(娌℃湁鏁版嵁濉玭ull)
*/
public void openUniMP(String path, JSONObject jsonObject) {
-
- JSONObject json = this.createdJsonDate(jsonObject, true);
- HdlLogLogic.print("uni===缁勮uni鍙戦�佹暟鎹牸寮�===" + json, false);
+ JSONObject json = this.createdJSONObject(jsonObject, true);
HDLUniMPSDKManager.getInstance().openUniMP(HDLUniMP.UNI_APP_ID, path, json, HdlUniLogic.this);
+ HdlLogLogic.print("uni===缁勮uni鍙戦�佹暟鎹牸寮�===" + json, false);
}
/**
@@ -232,7 +276,143 @@
}
//endregion
- //region ******uni閫昏緫鏂规硶******
+ //region ******uni鎺ュ彛鏂规硶******
+
+ /**
+ * 鍚戜簯绔幏鍙栭�嗗彉鍣╫id鍒楄〃
+ * 鍓嶆彁鏉′欢:瑕佷笂浼犻�嗗彉鍣╫id鍒楄〃缁欎簯绔�
+ *
+ * @param callback -
+ */
+ private void uniGetCloudOidList(Object data, DCUniMPJSCallback callback) {
+ HdlOtaLogic.getInstance().getCloudOidList(new CloudCallBeak<List<DeviceOidInfoBean>>() {
+ @Override
+ public void onSuccess(List<DeviceOidInfoBean> obj) {
+ uniCallbackData(obj, callback);
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ uniCallbackData(null, e.getCode(), e.getMsg(), callback);
+ }
+ });
+ }
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愬綋鍓嶈澶囧浐浠躲�戝垪琛�
+ * 鍓嶆彁鏉′欢:璁惧鑷姩涓婃姤oid淇℃伅缁欎簯绔�
+ */
+ private void uniGetCurrentDeviceFirmwares(Object data, DCUniMPJSCallback callback) {
+ String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));
+ HdlOtaLogic.getInstance().getCurrentDeviceFirmwares(deviceOidId, new CloudCallBeak<List<DeviceFirmwareBean>>() {
+ @Override
+ public void onSuccess(List<DeviceFirmwareBean> obj) {
+ uniCallbackData(obj, callback);
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ uniCallbackData(null, e.getCode(), e.getMsg(), callback);
+ }
+ });
+ }
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愯澶囨柊鍥轰欢銆戝垪琛�
+ * 鍓嶆彁鏉′欢:瑕侀�氳繃骞冲彴杞欢涓婁紶鏂板浐浠�
+ */
+ private void uniGetNewDeviceFirmwares(Object data, DCUniMPJSCallback callback) {
+ String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//纭欢鍨嬪彿
+ String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//绯荤粺闀滃儚id
+ HdlOtaLogic.getInstance().getNewDeviceFirmwares(hardwareModel, osImageId, new CloudCallBeak<List<CloudDeviceFirmwaresBean>>() {
+ @Override
+ public void onSuccess(List<CloudDeviceFirmwaresBean> obj) {
+ uniCallbackData(obj, callback);
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ uniCallbackData(null, e.getCode(), e.getMsg(), callback);
+ }
+ });
+ }
+
+ /**
+ * 鍚戜簯绔彂璧枫�愯澶囧浐浠躲�戝崌绾TA鎸囦护
+ */
+ private void uniUpgradeDeviceFirmware(Object data, DCUniMPJSCallback callback) {
+ String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//璁惧id
+ String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//鍥轰欢鐗堟湰id
+ HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() {
+ @Override
+ public void onSuccess(Boolean obj) {
+ uniCallbackData(obj, callback);
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ uniCallbackData(null, e.getCode(), e.getMsg(), callback);
+ }
+ });
+ }
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愬綋鍓嶈澶囬┍鍔ㄣ�戝垪琛�
+ * 鍓嶆彁鏉′欢:璁惧鑷姩涓婃姤oid淇℃伅缁欎簯绔�
+ */
+ private void uniGetCurrentGatewayDrivers(Object data, DCUniMPJSCallback callback) {
+ String deviceOid = getKeyValue("oid", getKeyValue("data", data));
+ HdlOtaLogic.getInstance().getCurrentGatewayDrivers(deviceOid, new CloudCallBeak<List<GatewayDriverBean>>() {
+ @Override
+ public void onSuccess(List<GatewayDriverBean> obj) {
+ uniCallbackData(obj, callback);
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ uniCallbackData(null, e.getCode(), e.getMsg(), callback);
+ }
+ });
+ }
+
+ /**
+ * 鍚戜簯绔幏鍙栥�愯澶囨柊椹卞姩銆戝垪琛�
+ * 鍓嶆彁鏉′欢:瑕侀�氳繃骞冲彴杞欢涓婁紶鏂伴┍鍔�
+ */
+ private void uniGetNewGatewayDrivers(Object data, DCUniMPJSCallback callback) {
+ String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//椹卞姩缂栧彿鎴栭┍鍔ㄥ悕绉�
+ String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//椹卞姩绫诲瀷id
+ HdlOtaLogic.getInstance().getNewGatewayDrivers(driveCode, osImageId, new CloudCallBeak<CloudGatewayDriversBean>() {
+ @Override
+ public void onSuccess(CloudGatewayDriversBean obj) {
+ uniCallbackData(obj, callback);
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ uniCallbackData(null, e.getCode(), e.getMsg(), callback);
+ }
+ });
+ }
+
+ /**
+ * 鍚戜簯绔彂璧枫�愯澶囬┍鍔ㄣ�戝崌绾TA鎸囦护
+ */
+ private void uniUpgradeGatewayDriver(Object data, DCUniMPJSCallback callback) {
+ String deviceOid = getKeyValue("oid", getKeyValue("data", data));//缃戝叧璁惧oid
+ String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//椹卞姩鐗堟湰id
+ HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() {
+ @Override
+ public void onSuccess(Boolean obj) {
+ uniCallbackData(obj, callback);
+ }
+
+ @Override
+ public void onFailure(HDLException e) {
+ uniCallbackData(null, e.getCode(), e.getMsg(), callback);
+ }
+ });
+ }
/**
* 閫嗗彉鍣ㄦ竻绌轰綇瀹卛d
@@ -354,22 +534,17 @@
uniCallbackData(null, -100, "鏈湴鎵句笉鍒扮綉鍏�", callback);
return;
}
- HdlDeviceLogic.getInstance().addInverterDeviceToCloud(mac,
- gatewayBean.getGatewayType(),
- gatewayBean.getSid(),
- gatewayBean.getOid(),
- gatewayBean.getDevice_name(),
- new CloudCallBeak<Boolean>() {
- @Override
- public void onSuccess(Boolean obj) {
- uniCallbackData(null, callback);
- }
+ HdlDeviceLogic.getInstance().addInverterDeviceToCloud(mac, gatewayBean.getGatewayType(), gatewayBean.getSid(), gatewayBean.getOid(), gatewayBean.getDevice_name(), new CloudCallBeak<Boolean>() {
+ @Override
+ public void onSuccess(Boolean obj) {
+ uniCallbackData(null, callback);
+ }
- @Override
- public void onFailure(HDLException e) {
- uniCallbackData(null, e.getCode(), e.getMsg(), callback);
- }
- });
+ @Override
+ public void onFailure(HDLException e) {
+ uniCallbackData(null, e.getCode(), e.getMsg(), callback);
+ }
+ });
}
@Override
@@ -461,11 +636,19 @@
/**
* 鍙戦�乵odbus鍗忚鏁版嵁
+ * 閫忎紶鍗忚
+ * 涓嬪彂涓婚锛�/user/${gw_id}/custom/native/${driver}/down;
+ * 閫嗗彉鍣ㄥ洖澶嶄富棰橈細/user/${gw_id}/custom/native/${driver}/down_reply;
+ * Modbus ECU鍗忚锛氫簨浠禝D(2涓猙yte)->鍗忚[鍥哄畾:0,0](2涓猙yte)->闀垮害(2byte)->鏍囪瘑绗oid鐨刟ddresses鍊糫(4涓猙yte)->鍔熻兘鐮�(1涓猙yte)->璐熻浇鏁版嵁(N涓猙yte);
+ * 闀垮害(2涓猙yte)=鏍囪瘑绗�(4涓猙yte)+鍔熻兘鐮�(1涓猙yte)+璐熻浇鏁版嵁(N涓猙yte);
+ * 璐熻浇鏁版嵁=瀵勫瓨鍣ㄥ湴鍧�(2涓猙yte)+瀵勫瓨鍣ㄩ暱搴�(2涓猙yte)+鍐呭闀垮害(1涓猙yte)+鍐呭鏁版嵁(N涓猙yte)銆愭敞鎰�:鍗曚釜鍐欏叆瀵勫瓨鍣�-->鍘绘帀<瀵勫瓨鍣ㄩ暱搴�>鍜�<鍐呭闀垮害>銆�;
+ * 瀵勫瓨鍣ㄩ暱搴�=(鍐呭鏁版嵁/2);
+ * 渚嬪瓙:new byte[]{00,01,00,00,00,0x09,00,00,00,01,03,00,00,00,01};
*
* @param data modbus鏁版嵁
* @param callback 鍥炶皟
*/
- void sendModBus(Object data, DCUniMPJSCallback callback) {
+ private void sendModBus(Object data, DCUniMPJSCallback callback) {
String tempData = getKeyValue("data", data);
if (TextUtils.isEmpty(tempData)) {
HdlLogLogic.print("data鍐呭涓虹┖", false);
@@ -506,11 +689,11 @@
/**
* 缁勮uni鍙戦�佹暟鎹牸寮�
*
- * @param data -闄勪欢鏁版嵁(娌℃湁鏁版嵁濉玭ull)
+ * @param data 闄勫姞鏁版嵁(娌℃湁鏁版嵁濉玭ull)
* @param isTokenAndRefreshToken (true=搴曞眰榛樿娣诲姞token鍜宺efreshToken;false=涓嶅姞)
- * @return JSONObject
+ * @return JSONObject uni鏂规硶鍚嶉噷闈㈠弬鏁伴渶瑕佺殑JSONObject瀵硅薄
*/
- private JSONObject createdJsonDate(JSONObject data, boolean isTokenAndRefreshToken) {
+ private JSONObject createdJSONObject(JSONObject data, boolean isTokenAndRefreshToken) {
HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
try {
if (data == null) {
@@ -604,6 +787,7 @@
} catch (Exception e) {
return "";
}
+
}
//endregion
diff --git a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
index 82f9b4a..c6adc55 100644
--- a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
+++ b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
@@ -42,6 +42,17 @@
public final static String UNI_EVENT_REPLY_DEVICE_UPLOADING_DATA = "uploading_data";//璁惧涓婁紶鏁版嵁
public final static String UNI_EVENT_REPLY_DEVICE_MODBUS_SEND = "modbus_send";//modbus鍗忚
+ /*********OTA妯″潡*********/
+ public final static String UNI_EVENT_REPLY_OTA_MODEL = "uni_ota_model";//鍗囩骇妯″潡(澶х被)
+ public final static String UNI_EVENT_REPLY_OTA_CLOUD_OID_LIST = "cloud_oid_list";//鍚戜簯绔幏鍙杘id鍒楄〃
+ public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_LIST = "firmwares_list";//褰撳墠璁惧鍥轰欢鍒楄〃
+ public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_NEW_LIST = "firmwares_new_list";//璁惧鏂板浐浠跺垪琛�
+ public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_UPGRADE = "firmwares_upgrade";//璁惧鍥轰欢鍗囩骇
+ public final static String UNI_EVENT_REPLY_OTA_DRIVER_LIST = "driver_list";//褰撳墠璁惧椹卞姩鍒楄〃
+ public final static String UNI_EVENT_REPLY_OTA_DRIVER_NEW = "driver_new";//璁惧鏂伴┍鍔ㄥ垪琛�
+ public final static String UNI_EVENT_REPLY_OTA_DRIVER_UPGRADE = "driver_upgrade";//璁惧椹卞姩鍗囩骇
+
+
/*********Wifi妯″潡*********/ //鍗敠瀹氫箟
public final static String UNI_EVENT_REPLY_WIFI_MODEL = "uni_wifi_model";//wifi妯″潡(澶х被)
public final static String UNI_EVENT_REPLY_WIFI_LIST = "list";//鑾峰彇wifi鍒楄〃
diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/LocalManageUtil.java b/app/src/main/java/com/hdl/photovoltaic/utils/LocalManageUtil.java
index f3909c2..955fd3d 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/LocalManageUtil.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/LocalManageUtil.java
@@ -1,238 +1,23 @@
package com.hdl.photovoltaic.utils;
import android.content.Context;
+import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.LocaleList;
+import android.text.TextUtils;
+import android.util.DisplayMetrics;
+
+
import java.util.Locale;
/**
- * Created by hxb on 2022/6/7.
- * desc : 澶氳瑷�閫傞厤鏂规锛岄�傞厤鍚勭鐗堟湰锛屾牳蹇冩湭鏇挎崲涓婁笅鏂嘋ontext涓殑Local
+ * 澶氳瑷�閫傞厤
*/
public class LocalManageUtil {
-// private static final String TAG = "LanguageUtil";
-//
-// /**
-// * 榛樿鏀寔鐨勮瑷�锛岃嫳璇�佹硶璇�侀樋鎷変集璇�
-// */
-// private static HashMap<String, Locale> supportLanguage = new HashMap<String, Locale>(4) {{
-// put(Language.ENGLISH, Locale.ENGLISH);
-// }};
-//
-// /**
-// * 搴旂敤澶氳瑷�鍒囨崲锛岄噸鍐橞aseActivity涓殑attachBaseContext鍗冲彲
-// * 閲囩敤鏈湴SP瀛樺偍鐨勮瑷�
-// *
-// * @param context 涓婁笅鏂�
-// * @return context
-// */
-// public static Context attachBaseContext(Context context) {
-// String language = LanguageSp.getLanguage(context);
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
-// return createConfigurationContext(context, language);
-// } else {
-// return updateConfiguration(context, language);
-// }
-// }
-//
-// /**
-// * 搴旂敤澶氳瑷�鍒囨崲锛岄噸鍐橞aseActivity涓殑attachBaseContext鍗冲彲
-// *
-// * @param context 涓婁笅鏂�
-// * @param language 璇█
-// * @return context
-// */
-// public static Context attachBaseContext(Context context, String language) {
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
-// return createConfigurationContext(context, language);
-// } else {
-// return updateConfiguration(context, language);
-// }
-// }
-//
-// /**
-// * 鑾峰彇Local,鏍规嵁language
-// *
-// * @param language 璇█
-// * @return Locale
-// */
-// private static Locale getLanguageLocale(String language) {
-// if (supportLanguage.containsKey(language)) {
-// return supportLanguage.get(language);
-// } else {
-// Locale systemLocal = getSystemLocal();
-// for (String languageKey : supportLanguage.keySet()) {
-// if (TextUtils.equals(supportLanguage.get(languageKey).getLanguage(), systemLocal.getLanguage())) {
-// return systemLocal;
-// }
-// }
-// }
-// return Locale.ENGLISH;
-// }
-//
-// /**
-// * 鑾峰彇褰撳墠鐨凩ocal锛岄粯璁よ嫳璇�
-// *
-// * @param context context
-// * @return Locale
-// */
-// public static Locale getCurrentLocale(Context context) {
-// String language = LanguageSp.getLanguage(context);
-// if (supportLanguage.containsKey(language)) {
-// return supportLanguage.get(language);
-// } else {
-// Locale systemLocal = getSystemLocal();
-// for (String languageKey : supportLanguage.keySet()) {
-// if (TextUtils.equals(supportLanguage.get(languageKey).getLanguage(), systemLocal.getLanguage())) {
-// return systemLocal;
-// }
-// }
-// }
-// return Locale.ENGLISH;
-// }
-//
-// /**
-// * 鑾峰彇绯荤粺鐨凩ocal
-// *
-// * @return Locale
-// */
-// private static Locale getSystemLocal() {
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-// return Resources.getSystem().getConfiguration().getLocales().get(0);
-// } else {
-// return Locale.getDefault();
-// }
-// }
-//
-// /**
-// * Android 7.1 浠ヤ笅閫氳繃 updateConfiguration
-// *
-// * @param context context
-// * @param language 璇█
-// * @return Context
-// */
-// private static Context updateConfiguration(Context context, String language) {
-// Resources resources = context.getResources();
-// Configuration configuration = resources.getConfiguration();
-// Locale locale = getLanguageLocale(language);
-// Log.e(TAG, "updateLocalApiLow==== " + locale.getLanguage());
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-// // apply locale
-// configuration.setLocales(new LocaleList(locale));
-// } else {
-// // updateConfiguration
-// configuration.locale = locale;
-// DisplayMetrics dm = resources.getDisplayMetrics();
-// resources.updateConfiguration(configuration, dm);
-// }
-// return context;
-// }
-//
-// /**
-// * Android 7.1浠ヤ笂閫氳繃createConfigurationContext
-// * N澧炲姞浜嗛�氳繃config.setLocales鍘讳慨鏀瑰璇█
-// *
-// * @param context 涓婁笅鏂�
-// * @param language 璇█
-// * @return context
-// */
-// @RequiresApi(api = Build.VERSION_CODES.N_MR1)
-// private static Context createConfigurationContext(Context context, String language) {
-// Resources resources = context.getResources();
-// Configuration configuration = resources.getConfiguration();
-// Locale locale = getLanguageLocale(language);
-// Log.d(TAG, "current Language locale = " + locale);
-// LocaleList localeList = new LocaleList(locale);
-// configuration.setLocales(localeList);
-// return context.createConfigurationContext(configuration);
-// }
-//
-// /**
-// * 鍒囨崲璇█
-// *
-// * @param language 璇█
-// * @param activity 褰撳墠鐣岄潰
-// * @param cls 璺宠浆鐨勭晫闈�
-// */
-// public static void switchLanguage(String language, Activity activity, Class<?> cls) {
-// LanguageSp.setLanguage(activity, language);
-// Intent intent = new Intent(activity, cls);
-// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
-// activity.startActivity(intent);
-// activity.finish();
-// }
-//
-// /**
-// * 鍒囨崲璇█锛屾惡甯︿紶閫掓暟鎹�
-// *
-// * @param language 璇█
-// * @param activity 褰撳墠鐣岄潰
-// * @param cls 璺宠浆鐨勭晫闈�
-// */
-// public static void switchLanguage(String language, Activity activity, Class<?> cls, Bundle bundle) {
-// LanguageSp.setLanguage(activity, language);
-// Intent intent = new Intent(activity, cls);
-// if (bundle != null) {
-// intent.putExtras(bundle);
-// }
-// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
-// activity.startActivity(intent);
-// activity.finish();
-// }
-//
-// /**
-// * 鑾峰彇鏂拌瑷�鐨� Context,淇浜哸ndroidx.appCompact 1.2.0鐨勯棶棰�
-// *
-// * @param newBase newBase
-// * @return Context
-// */
-// public static Context getNewLocalContext(Context newBase) {
-// try {
-// // 澶氳瑷�閫傞厤
-// Context context = LanguageUtil.attachBaseContext(newBase);
-// // 鍏煎appcompat 1.2.0鍚庡垏鎹㈣瑷�澶辨晥闂
-// final Configuration configuration = context.getResources().getConfiguration();
-// return new ContextThemeWrapper(context, R.style.Theme_AppCompat_Empty) {
-// @Override
-// public void applyOverrideConfiguration(Configuration overrideConfiguration) {
-// if (overrideConfiguration != null) {
-// overrideConfiguration.setTo(configuration);
-// }
-// super.applyOverrideConfiguration(overrideConfiguration);
-// }
-// };
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// return newBase;
-// }
-//
-// /**
-// * 鏇存柊Application鐨凴esource local锛屽簲鐢ㄤ笉閲嶅惎鐨勬儏鍐垫墠璋冪敤锛屽洜涓洪儴鍒嗕細鐢ㄥ埌application涓殑context
-// * 鍒囪涓嶈兘璧版柊api createConfigurationContext锛屼翰娴�
-// *
-// * @param context context
-// * @param newLanguage newLanguage
-// */
-// public static void updateApplicationLocale(Context context, String newLanguage) {
-// Resources resources = context.getResources();
-// Configuration configuration = resources.getConfiguration();
-// Locale locale = getLanguageLocale(newLanguage);
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-// // apply locale
-// configuration.setLocales(new LocaleList(locale));
-// } else {
-// configuration.setLocale(locale);
-// }
-// DisplayMetrics dm = resources.getDisplayMetrics();
-// resources.updateConfiguration(configuration, dm);
-// }
-
- private static Locale locale;
-
+// private static Locale mLocale;
/**
* 鑾峰彇绯荤粺鐨刲ocale
@@ -248,28 +33,106 @@
}
return locale;
}
+//
+// public static Context setLocal(Context context) {
+// return updateResources(context, mLocale);
+// }
+//
+// public static Context updateResources(Context context, Locale locale) {
+// if (locale == null) {
+// return context;
+// }
+// LocalManageUtil.mLocale = locale;
+// Locale.setDefault(locale);
+//
+// Resources res = context.getResources();
+// Configuration config = new Configuration(res.getConfiguration());
+// config.setLocale(locale);
+// context = context.createConfigurationContext(config);
+// return context;
+// }
- public static Context setLocal(Context context) {
- return updateResources(context, locale);
+
+ /**
+ * 搴旂敤鍐呭垏鎹㈣瑷�
+ *
+ * @param language language (zh锛氭眽璇�;en锛氳嫳璇�)
+ * @param context 涓婁笅鏂�
+ */
+ public static void changeAppLanguage(String language, Context context) {
+ Locale locale = getLocale(language);
+ updateResources(locale, context);
}
- public static Context updateResources(Context context, Locale locale) {
- if (locale == null) {
- return context;
- }
- LocalManageUtil.locale = locale;
- Locale.setDefault(locale);
- Resources res = context.getResources();
- Configuration config = new Configuration(res.getConfiguration());
- if (Build.VERSION.SDK_INT >= 17) {
- config.setLocale(locale);
- context = context.createConfigurationContext(config);
+ /**
+ * 鑾峰彇绯荤粺褰撳墠璇█
+ *
+ * @return _
+ */
+ public static Locale getDefaultLocale() {
+ return Resources.getSystem().getConfiguration().locale;
+ }
+
+ /**
+ * 鑾峰彇Locale
+ *
+ * @param language (zh锛氭眽璇�;en锛氳嫳璇�)
+ * @return Locale
+ */
+ public static Locale getLocale(String language) {
+ try {
+ if (TextUtils.isEmpty(language)) {
+ return getDefaultLocale();
+ }
+ return new Locale(language);
+ } catch (Exception e) {
+ return getDefaultLocale();
+ }
+
+
+ }
+
+ /**
+ * 鏇存柊璧勬簮鏁版嵁
+ *
+ * @param locale 璇█瀹炰綋绫�
+ * @param context 涓婁笅鏂�
+ * @return -
+ */
+ private static void updateResources(Locale locale, Context context) {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
+ //7.0浠ヤ笅绯荤粺
+ DisplayMetrics metrics = context.getResources().getDisplayMetrics();
+ Configuration configuration = context.getResources().getConfiguration();
+ configuration.setLocale(locale);
+ context.getResources().updateConfiguration(configuration, metrics);
+// Locale.setDefault(locale);
} else {
- config.locale = locale;
- res.updateConfiguration(config, res.getDisplayMetrics());
+ //7.0鍙婁互涓婄郴缁�
+ Configuration configuration = context.getResources().getConfiguration();
+ configuration.setLocale(locale);
+ configuration.setLocales(new LocaleList(locale));
+ context.createConfigurationContext(configuration);
}
- return context;
+
}
+
+ /**
+ * 璁剧疆褰撳墠APP鐨勮瑷�妯″紡
+ *
+ * @param context 涓婁笅鏂�
+ */
+ private static void setCurrLanguageMode(Context context) {
+ String language = SharedPreUtils.getSharedPreferencesKey("languege", context);
+ Locale local = getLocale(language);
+ Resources res = context.getResources();
+ DisplayMetrics dm = res.getDisplayMetrics();
+ Configuration conf = res.getConfiguration();
+ conf.locale = local;
+ res.updateConfiguration(conf, dm);
+ }
+
}
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index e18dc60..4feae6e 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -19,10 +19,10 @@
<string name="home_login_input_phone">璇疯緭鍏ユ墜鏈哄彿</string>
<string name="home_login_email_address">閭鍙�</string>
<string name="home_login_input_psw">璇疯緭鍏ュ瘑鐮�</string>
- <string name="home_login_register">娉ㄥ唽</string>
+ <string name="home_login_register">register</string>
<string name="home_login_forget_password">蹇樿瀵嗙爜</string>
<string name="home_login_change_password">淇敼瀵嗙爜</string>
- <string name="home_login_logoin">鐧诲綍</string>
+ <string name="home_login_logoin">log in</string>
<string name="home_login_be_logging_in">鐧诲綍涓��</string>
<string name="home_login_power_station">浣撻獙鐢电珯</string>
<string name="home_login_consent_service_agreement">鍚屾剰銆婃湇鍔″崗璁�嬪拰銆婄敤鎴蜂俊鎭繚鎶よ瀹氥��</string>
@@ -65,7 +65,7 @@
<!--鎴戠殑鐢电珯-->
<string name="power_station">鐢电珯</string>
- <string name="power_station_me">鎴戠殑</string>
+ <string name="power_station_me">my</string>
<string name="my_power_station">鎴戠殑鐢电珯</string>
<string name="power_station_generated_power">鍙戠數鍔熺巼:</string>
<string name="power_station_Power_generation_today">浠婃棩鍙戠數</string>
--
Gitblit v1.8.0