oxFaceAndroid
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.8 KiB

网络状态指示器实现说明

功能概述

在OXFaceOnlineActivity的视频流界面右上角实现了网络状态指示器,用于实时显示网络连接状态。

功能特性

1. 网络状态显示

  • 位置: 屏幕右上角(24dp大小)
  • 绿色满格: WiFi/以太网连接良好且主域名可达
  • 黄色中等: 4G/5G连接良好且主域名可达
  • 红色X: 网络异常或主域名不可达

2. 网络检测机制

  • 检测频率: 每10秒检测一次
  • 检测内容:
    • 基础连接状态(WiFi/以太网/移动数据)
    • 主域名可达性(ping testmanager.ouxuanzhineng.cn)
    • 网络类型判断
  • 使用工具: UtilCode库的NetworkUtils

3. 交互功能

  • 图标显示: 一直显示当前网络状态
  • 点击详情: 点击图标显示详细网络信息弹窗
  • 恢复提示: 网络从异常恢复时显示Toast提示
  • 异常提示: 网络变为异常时显示Toast提示

4. 详细信息弹窗内容

  • 网络状态描述
  • 连接状态(已连接/未连接)
  • 网络类型(WiFi/以太网/4G/5G等)
  • IP地址
  • 网关信息(WiFi时)
  • 主域名状态(可达/不可达)
  • 检测时间

技术实现

1. 核心类

  • NetworkStatusIndicator: 网络状态指示器主类
  • 集成在OXFaceOnlineActivity

2. 使用的库

  • com.blankj.utilcode:1.30.7:网络检测功能
  • 项目现有的NetworkConfig:获取主域名配置

3. 生命周期管理

  • onCreate: 初始化指示器
  • onResume: 启动网络监控
  • onStop: 停止网络监控
  • onDestroy: 销毁资源

4. 线程管理

  • 后台线程执行网络检测(ScheduledExecutorService)
  • 主线程更新UI显示
  • 异常处理和日志记录

测试验证

1. 网络状态测试

  • WiFi连接正常时显示绿色图标
  • 移动数据连接时显示黄色图标
  • 网络断开时显示红色图标
  • 网络恢复时显示Toast提示

2. 交互测试

  • 点击图标显示详细信息弹窗
  • 弹窗3秒后自动关闭
  • 详细信息包含所有必要字段

3. 性能测试

  • 每10秒检测一次,不影响界面流畅度
  • 后台运行时正确停止监控
  • 资源正确释放,无内存泄漏

使用说明

1. 启动应用

应用启动OXFaceOnlineActivity后,网络状态指示器会自动开始工作

2. 查看网络状态

观察右上角的图标颜色:

  • 绿色:网络状态优秀
  • 黄色:网络状态良好
  • 红色:网络状态异常

3. 查看详细信息

点击网络状态图标,会显示包含以下信息的弹窗:

  • 当前网络状态
  • IP地址和网关
  • 主域名连通性
  • 检测时间戳

4. 网络恢复提示

当网络从异常状态恢复正常时,会显示"网络连接已恢复"的Toast提示

配置说明

1. 检测间隔调整

NetworkStatusIndicator.java中修改CHECK_INTERVAL常量

2. 图标位置调整

initNetworkIcon()方法中修改RelativeLayout.LayoutParams

3. 图标大小调整

修改SizeUtils.dp2px(24)中的数值

4. 主域名配置

主域名从NetworkConfig.BASE_URL获取,可在该配置文件中修改

注意事项

  1. 权限要求: 需要网络访问权限(已在AndroidManifest.xml中配置)
  2. 性能影响: 每10秒执行一次ping操作,对性能影响很小
  3. 异常处理: 所有网络检测都有完整的异常处理和日志记录
  4. 生命周期: 严格按照Activity生命周期管理资源,避免内存泄漏

扩展功能

未来可以考虑添加:

  1. 网络质量评分显示
  2. 网络速度测试
  3. 历史网络状态记录
  4. 可配置的检测间隔
  5. 更多网络类型的支持

日志记录

所有关键操作都会记录到LogManager中,包括:

  • 网络状态变化
  • 检测异常
  • 用户交互行为
  • 生命周期事件