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 f062808..ecb3356 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 @@ -144,7 +144,7 @@ public class MqttManager { } catch (Exception e) { logs.info("Error in heartbeat scheduler: " + e.getMessage()); } - }, 0, 60, TimeUnit.SECONDS); + }, 10, 60, TimeUnit.SECONDS); } /** diff --git a/app/src/main/java/com/unibuy/smartdevice/ui/devs/vmc/VmcSlotListActivity.java b/app/src/main/java/com/unibuy/smartdevice/ui/devs/vmc/VmcSlotListActivity.java index 3d86a90..4ed4c65 100644 --- a/app/src/main/java/com/unibuy/smartdevice/ui/devs/vmc/VmcSlotListActivity.java +++ b/app/src/main/java/com/unibuy/smartdevice/ui/devs/vmc/VmcSlotListActivity.java @@ -57,6 +57,35 @@ public class VmcSlotListActivity extends AppCompatActivityAbstract { binding.buttonSave.setEnabled(true); } super.execute(context, commandCode, message); + // 上傳完成(同步成功)後自動返回前一頁 + if (commandCode == 200) { + finish(); + } else { + // 同步失敗,彈出確認對話框,提供「重試」與「直接返回」的後路,防止因返回鍵隱藏而卡死 + if (context instanceof android.app.Activity) { + android.app.Activity activity = (android.app.Activity) context; + if (!activity.isFinishing() && !activity.isDestroyed()) { + new android.app.AlertDialog.Builder(context) + .setTitle("同步失敗") + .setMessage("上傳貨道資料至後台失敗,請檢查網路連線。\n您要重新嘗試同步,或是直接返回上一頁?") + .setCancelable(false) // 避免誤觸外部關閉對話框 + .setPositiveButton("重新嘗試", (dialog, which) -> { + // 重新顯示進度條並鎖定按鈕,再次執行同步 + if (binding != null && binding.progressLayout != null) { + binding.progressLayout.setVisibility(View.VISIBLE); + binding.buttonBack.setEnabled(false); + binding.buttonSave.setEnabled(false); + } + updateSlotListNum(); + }) + .setNegativeButton("直接返回", (dialog, which) -> { + // 直接關閉頁面返回 + finish(); + }) + .show(); + } + } + } } }; } diff --git a/app/src/main/java/com/unibuy/smartdevice/ui/dialog/DispatchDialog.java b/app/src/main/java/com/unibuy/smartdevice/ui/dialog/DispatchDialog.java index cf8f074..d04ce0e 100644 --- a/app/src/main/java/com/unibuy/smartdevice/ui/dialog/DispatchDialog.java +++ b/app/src/main/java/com/unibuy/smartdevice/ui/dialog/DispatchDialog.java @@ -847,9 +847,9 @@ public class DispatchDialog extends DialogAbstract { // 隱藏底部倒數文字 binding.tvCountdown.setVisibility(View.GONE); - // 顯示取貨確認按鈕(讓使用者可以提前確認取貨) - binding.buttonOk.setVisibility(View.VISIBLE); - binding.buttonOk.setEnabled(true); + // 顯示取貨確認按鈕(讓使用者可以提前確認取貨) -> 依需求隱藏該按鈕 + binding.buttonOk.setVisibility(View.GONE); + binding.buttonOk.setEnabled(false); binding.buttonOk.setTextColor(Color.BLACK); setButtonOkText(0); // 顯示「取貨確認」不帶倒數 diff --git a/app/src/main/res/layout/activity_vmc_slot_list.xml b/app/src/main/res/layout/activity_vmc_slot_list.xml index 64174df..a26af67 100644 --- a/app/src/main/res/layout/activity_vmc_slot_list.xml +++ b/app/src/main/res/layout/activity_vmc_slot_list.xml @@ -64,6 +64,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" + android:visibility="gone" android:backgroundTint="@color/black" android:text="返回" android:textSize="28dp"/> @@ -74,7 +75,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:backgroundTint="@color/black" - android:text="@string/upload_to_backend" + android:text="@string/upload_to_backend_and_return" android:textSize="28dp" />