Browse Source

fix 6 for newwork check with detect

dev
赵明涛 4 days ago
parent
commit
4a2a8a1f5c
  1. 84
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java
  2. 36
      app/src/main/java/com/ouxuan/oxface/network/NetworkStatusIndicator.java

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

@ -590,6 +590,24 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
private void initNetworkStatusIndicator() {
try {
networkStatusIndicator = new NetworkStatusIndicator(this, relativeLayout);
// 设置网络恢复监听器
networkStatusIndicator.setNetworkRecoveryListener(new NetworkStatusIndicator.NetworkRecoveryListener() {
@Override
public void onNetworkRecovered() {
LogManager.logInfo(TAG, "接收到网络恢复通知,恢复摄像头预览");
// 网络恢复时恢复摄像头预览
resumeCamera();
}
@Override
public void onNetworkLost() {
LogManager.logWarning(TAG, "接收到网络断开通知");
// 网络断开时可以执行一些操作可选
// 例如清理缓存停止不必要的网络请求等
}
});
networkStatusIndicator.startMonitoring();
LogManager.logInfo(TAG, "网络状态指示器初始化完成");
} catch (Exception e) {
@ -1265,13 +1283,37 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
// 判断是进场还是离场场景
if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
// 离场场景调用离场校验
LogManager.logInfo(TAG, "检测到离场场景,执行离场校验");
performLeaveVerification(base64img);
// 离场场景先检查网络状态
if (isNetworkAvailable()) {
LogManager.logInfo(TAG, "检测到离场场景,网络可用,执行离场校验");
performLeaveVerification(base64img);
} else {
LogManager.logWarning(TAG, "检测到离场场景,但网络不可用,跳过离场校验");
showLoadingStatus("无网络...");
// 3秒后隐藏提示
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideLoadingStatus();
}
}, 3000);
}
} else {
// 进场场景调用原有的订单核销方法
LogManager.logInfo(TAG, "检测到进场场景,执行订单核销");
getCheckOrder();
// 进场场景先检查网络状态
if (isNetworkAvailable()) {
LogManager.logInfo(TAG, "检测到进场场景,网络可用,执行订单核销");
getCheckOrder();
} else {
LogManager.logWarning(TAG, "检测到进场场景,但网络不可用,跳过订单核销");
showLoadingStatus("无网络...");
// 3秒后隐藏提示
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideLoadingStatus();
}
}, 3000);
}
}
// 处理完成后重置标志
@ -1923,4 +1965,34 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
LogManager.logWarning(TAG, "摄像头已强制恢复,所有对话框已关闭");
}
/**
* 检查网络是否可用
* @return true 如果网络可用false 否则
*/
private boolean isNetworkAvailable() {
try {
// 使用NetworkUtils检查网络连接状态
if (!com.blankj.utilcode.util.NetworkUtils.isConnected()) {
LogManager.logWarning(TAG, "网络未连接");
return false;
}
// 进一步检查网络质量可选
if (networkStatusIndicator != null) {
NetworkStatusIndicator.NetworkStatus currentStatus = networkStatusIndicator.getCurrentNetworkStatus();
if (currentStatus == NetworkStatusIndicator.NetworkStatus.POOR) {
LogManager.logWarning(TAG, "网络状态不佳:" + currentStatus.getDescription());
return false;
}
}
LogManager.logDebug(TAG, "网络状态正常");
return true;
} catch (Exception e) {
LogManager.logError(TAG, "检查网络状态失败", e);
return false;
}
}
}

36
app/src/main/java/com/ouxuan/oxface/network/NetworkStatusIndicator.java

@ -43,6 +43,24 @@ public class NetworkStatusIndicator {
private NetworkStatus currentNetworkStatus = NetworkStatus.POOR; // 默认为异常状态
private boolean isMonitoring = false;
// 网络恢复监听器
private NetworkRecoveryListener networkRecoveryListener;
/**
* 网络恢复监听器接口
*/
public interface NetworkRecoveryListener {
/**
* 网络恢复时调用
*/
void onNetworkRecovered();
/**
* 网络断开时调用
*/
void onNetworkLost();
}
// 网络状态枚举
public enum NetworkStatus {
EXCELLENT(Color.parseColor("#00FF00"), "网络优秀"), // 绿色
@ -95,6 +113,14 @@ public class NetworkStatusIndicator {
}
/**
* 设置网络恢复监听器
* @param listener 监听器
*/
public void setNetworkRecoveryListener(NetworkRecoveryListener listener) {
this.networkRecoveryListener = listener;
}
/**
* 初始化网络文字显示
*/
private void initNetworkTextView() {
@ -225,11 +251,21 @@ public class NetworkStatusIndicator {
(currentNetworkStatus == NetworkStatus.EXCELLENT || currentNetworkStatus == NetworkStatus.GOOD)) {
Toast.makeText(context, "网络连接已恢复", Toast.LENGTH_SHORT).show();
LogManager.logInfo(TAG, "网络连接已恢复:" + currentNetworkStatus.getDescription());
// 通知监听器网络已恢复
if (networkRecoveryListener != null) {
networkRecoveryListener.onNetworkRecovered();
}
}
// 如果网络变为异常也显示提示
else if (currentNetworkStatus == NetworkStatus.POOR && oldStatus != NetworkStatus.POOR) {
Toast.makeText(context, "网络连接异常", Toast.LENGTH_SHORT).show();
LogManager.logWarning(TAG, "网络连接异常");
// 通知监听器网络已断开
if (networkRecoveryListener != null) {
networkRecoveryListener.onNetworkLost();
}
}
}
});

Loading…
Cancel
Save