Browse Source

fix 5 alert

dev
赵明涛 9 hours ago
parent
commit
55891ee1ac
  1. 100
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java
  2. 8
      app/src/main/java/com/ouxuan/oxface/abgate/GateUnavailableDialog.java

100
app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java

@ -699,13 +699,20 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
public void onGateUnavailable(String reason) { public void onGateUnavailable(String reason) {
LogManager.logWarning(TAG, "触发门禁不可用弹窗(触发时机1): " + reason); LogManager.logWarning(TAG, "触发门禁不可用弹窗(触发时机1): " + reason);
// 执行checkShow()判断是否显示弹窗
boolean shouldShow = gateUnavailableDialog.checkShow(OXFaceOnlineActivity.this, isNetworkAvailable());
if (shouldShow) {
// 显示门状态异常弹窗
gateUnavailableDialog.showGateStateError(reason);
// 先检查并取消已存在的弹窗避免重复弹窗
if (gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
LogManager.logInfo(TAG, "检测到已有门禁不可用弹窗,先取消后显示新弹窗");
gateUnavailableDialog.hide();
// 等待一小段时间确保旧弹窗完全关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
showNewGateUnavailableDialog(reason);
}
}, 100);
} else { } else {
LogManager.logInfo(TAG, "根据业务规则,不显示门禁不可用弹窗");
// 没有已存在的弹窗直接显示新弹窗
showNewGateUnavailableDialog(reason);
} }
} }
@ -754,6 +761,47 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
} }
/** /**
* 显示新的门禁不可用弹窗
* @param reason 不可用原因
*/
private void showNewGateUnavailableDialog(String reason) {
try {
// 执行checkShow()判断是否显示弹窗
boolean shouldShow = gateUnavailableDialog.checkShow(OXFaceOnlineActivity.this, isNetworkAvailable());
if (shouldShow) {
// 显示门状态异常弹窗
gateUnavailableDialog.showGateStateError(reason);
LogManager.logInfo(TAG, "已显示门禁不可用弹窗: " + reason);
} else {
LogManager.logInfo(TAG, "根据业务规则,不显示门禁不可用弹窗");
}
} catch (Exception e) {
LogManager.logError(TAG, "显示门禁不可用弹窗失败", e);
}
}
/**
* 显示新的人数异常弹窗
* @param isLeaveScene 是否为离场场景
* @param peopleNum 门内人数
*/
private void showNewPeopleCountDialog(boolean isLeaveScene, int peopleNum) {
try {
// 执行checkShow()判断是否显示弹窗
boolean shouldShow = gateUnavailableDialog.checkShow(OXFaceOnlineActivity.this, isNetworkAvailable());
if (shouldShow) {
// 显示人数异常弹窗
gateUnavailableDialog.showPeopleCountError(isLeaveScene, peopleNum);
LogManager.logWarning(TAG, "触发门禁不可用弹窗(触发时机2): 人数异常, 场景=" + (isLeaveScene ? "离场" : "进场") + ", 人数=" + peopleNum);
} else {
LogManager.logInfo(TAG, "根据业务规则,不显示门禁不可用弹窗");
}
} catch (Exception e) {
LogManager.logError(TAG, "显示人数异常弹窗失败", e);
}
}
/**
* 检查是否开启AB门检测 * 检查是否开启AB门检测
*/ */
private void checkGateCheckEnabled() { private void checkGateCheckEnabled() {
@ -1527,14 +1575,20 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
gateABController.get485PeopleNum(new GateABController.PeopleNumCallback() { gateABController.get485PeopleNum(new GateABController.PeopleNumCallback() {
@Override @Override
public void onSuccess(int peopleNum) { public void onSuccess(int peopleNum) {
// 执行checkShow()判断是否显示弹窗
boolean shouldShow = gateUnavailableDialog.checkShow(OXFaceOnlineActivity.this, isNetworkAvailable());
if (shouldShow) {
// 显示人数异常弹窗
gateUnavailableDialog.showPeopleCountError(isLeaveScene, peopleNum);
LogManager.logWarning(TAG, "触发门禁不可用弹窗(触发时机2): 人数异常, 场景=" + (isLeaveScene ? "离场" : "进场") + ", 人数=" + peopleNum);
// 先检查并取消已存在的弹窗避免重复弹窗
if (gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
LogManager.logInfo(TAG, "检测到已有门禁不可用弹窗,先取消后显示人数弹窗");
gateUnavailableDialog.hide();
// 等待一小段时间确保旧弹窗完全关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
showNewPeopleCountDialog(isLeaveScene, peopleNum);
}
}, 100);
} else { } else {
LogManager.logInfo(TAG, "根据业务规则,不显示门禁不可用弹窗");
// 没有已存在的弹窗直接显示新弹窗
showNewPeopleCountDialog(isLeaveScene, peopleNum);
} }
} }
@ -1542,12 +1596,20 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
public void onError(String errorMessage) { public void onError(String errorMessage) {
LogManager.logError(TAG, "获取人数失败,无法显示具体人数: " + errorMessage); LogManager.logError(TAG, "获取人数失败,无法显示具体人数: " + errorMessage);
// 即使获取人数失败也可以显示一个通用的人数异常弹窗
boolean shouldShow = gateUnavailableDialog.checkShow(OXFaceOnlineActivity.this, isNetworkAvailable());
if (shouldShow) {
String reason = "门禁内人数不符合要求,请等待";
gateUnavailableDialog.showGateStateError(reason);
LogManager.logWarning(TAG, "触发门禁不可用弹窗(触发时机2): " + reason);
// 先检查并取消已存在的弹窗避免重复弹窗
if (gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
LogManager.logInfo(TAG, "检测到已有门禁不可用弹窗,先取消后显示通用人数异常弹窗");
gateUnavailableDialog.hide();
// 等待一小段时间确保旧弹窗完全关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
showNewGateUnavailableDialog("门禁内人数不符合要求,请等待");
}
}, 100);
} else {
// 没有已存在的弹窗直接显示新弹窗
showNewGateUnavailableDialog("门禁内人数不符合要求,请等待");
} }
} }
}); });

8
app/src/main/java/com/ouxuan/oxface/abgate/GateUnavailableDialog.java

@ -141,10 +141,6 @@ public class GateUnavailableDialog {
* @param reason 不可用原因 * @param reason 不可用原因
*/ */
public void showGateStateError(String reason) { public void showGateStateError(String reason) {
if (isShowing) {
return;
}
LogManager.logInfo(TAG, "显示门状态异常弹窗: " + reason); LogManager.logInfo(TAG, "显示门状态异常弹窗: " + reason);
tvTitle.setText("门禁不可用"); tvTitle.setText("门禁不可用");
@ -159,10 +155,6 @@ public class GateUnavailableDialog {
* @param peopleCount 门内人数 * @param peopleCount 门内人数
*/ */
public void showPeopleCountError(boolean isLeaveScene, int peopleCount) { public void showPeopleCountError(boolean isLeaveScene, int peopleCount) {
if (isShowing) {
return;
}
String message; String message;
if (isLeaveScene) { if (isLeaveScene) {
// 离场场景检测到门内有人 // 离场场景检测到门内有人

Loading…
Cancel
Save