diff --git a/app/src/main/java/com/unibuy/smartdevice/MyApp.java b/app/src/main/java/com/unibuy/smartdevice/MyApp.java index 6009a86..e920199 100644 --- a/app/src/main/java/com/unibuy/smartdevice/MyApp.java +++ b/app/src/main/java/com/unibuy/smartdevice/MyApp.java @@ -440,6 +440,9 @@ public class MyApp extends Application { logs.info("initialSettingData Machine:" + setting.toString()); MyApp.getInstance().getMachine().setApiKey(setting.getData(0)); MyApp.getInstance().getMachine().setMachineID(setting.getData(1)); + if (setting.getDataCount() >= 3 && setting.getData(2) != null && !setting.getData(2).isEmpty()) { + MyApp.getInstance().getMachine().setMqttEnv(setting.getData(2)); + } } } diff --git a/app/src/main/java/com/unibuy/smartdevice/external/StarCloudAPI.java b/app/src/main/java/com/unibuy/smartdevice/external/StarCloudAPI.java index 80310bd..e4a004e 100644 --- a/app/src/main/java/com/unibuy/smartdevice/external/StarCloudAPI.java +++ b/app/src/main/java/com/unibuy/smartdevice/external/StarCloudAPI.java @@ -35,8 +35,13 @@ import java.util.ArrayList; public class StarCloudAPI { private static final String TAG = "StarCloudAPI"; - // Star-Cloud API 基礎路徑 - private static final String BASE_URL = "https://demo-cloud.setdomains.work/api/v1/app/"; + private String getBaseUrl() { + if ("prod".equals(MyApp.getInstance().getMachine().getMqttEnv())) { + return "https://starcloud.taiwan-star.com.tw/api/v1/app/"; + } else { + return "https://demo-cloud.setdomains.work/api/v1/app/"; + } + } private HandlerMain handlerMain; private HandlerMain srcHandlerMain; @@ -51,7 +56,7 @@ public class StarCloudAPI { */ public void login(final String account, final String password) { Log.i(TAG, "login() called for account: " + account); - final String url = BASE_URL + "admin/login/B000"; + final String url = getBaseUrl() + "admin/login/B000"; Log.i(TAG, "Starting B000 request to: " + url); // 不依賴 FormPostMainScheduler (會靜默吞掉 IO exception) @@ -156,7 +161,7 @@ public class StarCloudAPI { return; } - final String url = BASE_URL + "machine/setting/B014?machine=" + machineId; + final String url = getBaseUrl() + "machine/setting/B014?machine=" + machineId; Log.i(TAG, "Starting B014 request to: " + url); new Thread(new Runnable() { @@ -242,7 +247,7 @@ public class StarCloudAPI { * 需要 Bearer Token 認證。 */ public void downloadProductInfo() { - final String url = BASE_URL + "machine/products/B012"; + final String url = getBaseUrl() + "machine/products/B012"; Log.i(TAG, "Starting B012 request to: " + url); new Thread(new Runnable() { @@ -336,7 +341,7 @@ public class StarCloudAPI { * 需要 Bearer Token 認證。 */ public void reportSlotList(final ReportSlotListStructure data) { - final String url = BASE_URL + "products/supplementary/B009"; + final String url = getBaseUrl() + "products/supplementary/B009"; Log.i(TAG, "Starting B009 request to: " + url); new Thread(new Runnable() { @@ -449,7 +454,7 @@ public class StarCloudAPI { */ public void verifyStaffCard(final String cardNo, final VerificationCallback callback) { final String machineId = MyApp.getInstance().getMachine().getMachineID(); - final String url = BASE_URL + "machine/staff/verify/B680"; + final String url = getBaseUrl() + "machine/staff/verify/B680"; Log.i(TAG, "Starting B680 request for card: " + cardNo); new Thread(new Runnable() { @@ -595,7 +600,8 @@ public class StarCloudAPI { settingsDao.insertOne(new SettingStructure(MyApp.getInstance().getMachine().getClass().getSimpleName(), new String[] { MyApp.getInstance().getMachine().getApiKey(), - MyApp.getInstance().getMachine().getMachineID() + MyApp.getInstance().getMachine().getMachineID(), + MyApp.getInstance().getMachine().getMqttEnv() })); settingsDao.insertOne(new SettingStructure(MyApp.getInstance().getEsunpay().getClass().getSimpleName(), @@ -689,7 +695,7 @@ public class StarCloudAPI { } public void downloadAdvertisement(final Runnable onComplete) { - final String url = BASE_URL + "machine/ad/B005"; + final String url = getBaseUrl() + "machine/ad/B005"; Log.i(TAG, "Starting B005 request to: " + url); new Thread(new Runnable() { diff --git a/app/src/main/java/com/unibuy/smartdevice/external/mqtt/MqttManager.java b/app/src/main/java/com/unibuy/smartdevice/external/mqtt/MqttManager.java index ef339bc..f062808 100644 --- a/app/src/main/java/com/unibuy/smartdevice/external/mqtt/MqttManager.java +++ b/app/src/main/java/com/unibuy/smartdevice/external/mqtt/MqttManager.java @@ -78,10 +78,15 @@ public class MqttManager { } } + String serverHost = "mqtt.setdomains.work"; + if ("prod".equals(MyApp.getInstance().getMachine().getMqttEnv())) { + serverHost = "emqx.taiwan-star.com.tw"; + } + client = MqttClient.builder() .useMqttVersion3() .identifier(clientId) - .serverHost("mqtt.setdomains.work") + .serverHost(serverHost) .serverPort(443) .useSslWithDefaultConfig() .webSocketConfig() diff --git a/app/src/main/java/com/unibuy/smartdevice/structure/MachineStructure.java b/app/src/main/java/com/unibuy/smartdevice/structure/MachineStructure.java index 10d5e76..b6d3cc8 100644 --- a/app/src/main/java/com/unibuy/smartdevice/structure/MachineStructure.java +++ b/app/src/main/java/com/unibuy/smartdevice/structure/MachineStructure.java @@ -3,6 +3,7 @@ package com.unibuy.smartdevice.structure; public class MachineStructure { private String apiKey = "KahnEwjhfDBHUYS7"; private String machineID; + private String mqttEnv = "demo"; public MachineStructure(String machineID) { this.machineID = machineID; } @@ -27,4 +28,12 @@ public class MachineStructure { public void setMachineID(String machineID) { this.machineID = machineID; } + + public String getMqttEnv() { + return mqttEnv; + } + + public void setMqttEnv(String mqttEnv) { + this.mqttEnv = mqttEnv; + } } diff --git a/app/src/main/java/com/unibuy/smartdevice/ui/SettingActivity.java b/app/src/main/java/com/unibuy/smartdevice/ui/SettingActivity.java index 563b37d..659ac00 100644 --- a/app/src/main/java/com/unibuy/smartdevice/ui/SettingActivity.java +++ b/app/src/main/java/com/unibuy/smartdevice/ui/SettingActivity.java @@ -96,6 +96,11 @@ public class SettingActivity extends AppCompatActivityAbstract { case DATA_RELOAD: binding.buttonBack.setVisibility(View.INVISIBLE); MyApp.getInstance().getMachine().setMachineID(binding.editMachineID.getText().toString()); + if (binding.radioProd.isChecked()) { + MyApp.getInstance().getMachine().setMqttEnv("prod"); + } else { + MyApp.getInstance().getMachine().setMqttEnv("demo"); + } binding.progressLayout.setVisibility(View.VISIBLE); // 確保進度條顯示 try { starCloudAPI.downloadSetting(); @@ -167,6 +172,12 @@ public class SettingActivity extends AppCompatActivityAbstract { binding.buttonReload.setText("重新綁定"); } + if ("prod".equals(MyApp.getInstance().getMachine().getMqttEnv())) { + binding.radioProd.setChecked(true); + } else { + binding.radioDemo.setChecked(true); + } + if (statusList.isEmpty()) { SettinglogsDao settinglogsDao = new SettinglogsDao(this); for (String data : settinglogsDao.getAll()) { diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index e5b3dde..6bf830d 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -29,13 +29,36 @@ android:inputType="text" /> + + + + + + app:layout_constraintTop_toBottomOf="@+id/radioGroupMqttEnv">