改为dialogFragment弹窗

This commit is contained in:
peng 2025-09-16 17:50:48 +08:00
parent ba5f01a38d
commit 13a2bc5c00
4 changed files with 0 additions and 290 deletions

View File

@ -1,73 +0,0 @@
package com.ismart.ib86.feature.network;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import com.ismart.ib86.app.R;
import com.ismart.ib86.common.notification.NotificationType;
/**
* 网络状态监听器测试Activity
*/
public class NetworkStateTestActivity extends Activity {
private static final String TAG = "NetworkStateTestActivity";
private NetworkStateManager networkStateManager;
private TextView tvNetworkStatus;
private Button btnShowNotification;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_network_state_test);
initializeViews();
initializeNetworkStateManager();
}
private void initializeViews() {
tvNetworkStatus = findViewById(R.id.tv_network_status);
btnShowNotification = findViewById(R.id.btn_show_notification);
btnShowNotification.setOnClickListener(v -> {
if (networkStateManager != null) {
networkStateManager.showNotification(
com.ismart.ib86.common.notification.NotificationType.NETWORK_LOST,
"这是一个测试通知消息",
android.R.drawable.ic_dialog_alert,
3
);
}
});
}
private void initializeNetworkStateManager() {
networkStateManager = new NetworkStateManager(this);
networkStateManager.initialize();
// 更新网络状态显示
NetworkState currentState = networkStateManager.getCurrentNetworkState();
updateNetworkStatusDisplay(currentState);
// 设置网络状态变化监听
// 注意NetworkStateManager已经在内部设置了回调这里只是为了更新UI显示
}
private void updateNetworkStatusDisplay(NetworkState state) {
runOnUiThread(() -> {
String statusText = "当前网络状态: " + state.name();
tvNetworkStatus.setText(statusText);
Log.d(TAG, statusText);
});
}
@Override
protected void onDestroy() {
super.onDestroy();
if (networkStateManager != null) {
networkStateManager.destroy();
}
}
}

View File

@ -1,151 +0,0 @@
# 网络状态监听器使用说明
## 概述
网络状态监听器是一个用于监控Android设备网络连接状态的组件。当设备失去网络连接时它能够自动显示提示信息并在网络恢复时自动隐藏提示。
## 主要功能
1. 实时监听设备的网络连接状态
2. 在网络断开时显示提示页面
3. 在网络连接时显示提示页面
4. 网络恢复时自动隐藏提示页面
5. 支持多种网络类型检测WiFi、移动网络、以太网
6. 支持自定义提示内容和图标
7. 支持自定义页面显示持续时间
8. 支持多种类型的提示页面(网络状态、电量、配置等)
## 核心组件
### NetworkState
网络状态枚举,包含以下值:
- NO_NETWORK无网络连接
- MOBILE_CONNECTED移动网络连接
- WIFI_CONNECTEDWiFi连接
- ETHERNET_CONNECTED以太网连接
### NotificationType
通知类型枚举,包含以下值:
- NETWORK_LOST网络断开
- NETWORK_CONNECTED网络连接
- NETWORK_CONFIG网络配置
- BATTERY_LOW电量低
- OTHER其他类型
> 注意NotificationType现在位于`com.ismart.ib86.common.notification`包中,而不是网络包中。
### NetworkStateCallback
网络状态变化回调接口,包含以下方法:
- onNetworkStateChanged(NetworkState state):网络状态变化回调
- onNetworkLost():网络断开回调
- onNetworkAvailable():网络可用回调
### NetworkStateMonitor
核心网络状态监听器,负责监听网络状态变化。
### NetworkStateManager
网络状态管理器,负责状态判断和提示显示。
### CommonNotificationActivity
通用提示页面Activity用于显示各种类型的提示信息。
> 注意CommonNotificationActivity现在位于`com.ismart.ib86.common.notification`包中,而不是网络包中。
### NotificationManager
通知管理器,专门负责通知的显示和隐藏。
> 注意NotificationManager现在位于`com.ismart.ib86.common.notification`包中,而不是网络包中。
支持的参数包括:
- 图标icon显示在通知页面的图标
- 提醒文字message显示在通知页面的文字信息
- MP3播放文件路径soundPath自定义提示音文件路径
- 持续时间duration通知页面显示的持续时间
## 音频文件存放位置
1. **应用内嵌音效**:存放在`res/raw/`目录下,作为应用资源的一部分
2. **自定义音效**:可以存放在外部存储目录中,如`/sdcard/`目录下
每种通知类型都有默认的音效文件:
- 网络断开:`res/raw/network_lost_notification.wav`
- 网络连接:`res/raw/notification_network_connected.wav`
- 网络配置:`res/raw/network_config_notification.wav`
- 电量低:`res/raw/battery_low_notification.wav`
- 其他:`res/raw/default_notification.wav`
## 使用方法
### 1. 初始化网络状态管理器
```java
NetworkStateManager networkStateManager = new NetworkStateManager(context);
networkStateManager.initialize();
```
### 2. 显示自定义通知
```java
// 基本用法
networkStateManager.showNotification(
com.ismart.ib86.common.notification.NotificationType.NETWORK_LOST,
"设备已断开网络连接",
android.R.drawable.ic_dialog_alert,
5
);
// 带自定义音效的用法
networkStateManager.showNotification(
com.ismart.ib86.common.notification.NotificationType.NETWORK_LOST,
"设备已断开网络连接",
android.R.drawable.ic_dialog_alert,
5,
"/sdcard/notification.mp3"
);
```
### 3. 销毁网络状态管理器
```java
networkStateManager.destroy();
```
## 集成到项目
1. 确保AndroidManifest.xml中已添加必要的权限
```xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
```
2. 在AndroidManifest.xml中注册Activity
```xml
<activity
android:name="com.ismart.ib86.common.notification.CommonNotificationActivity"
android:exported="false"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
```
## 注意事项
1. 需要在Activity或Application的生命周期适当时机调用initialize()和destroy()方法
2. NetworkStateManager会自动处理网络状态变化无需手动干预
3. 通知页面会在指定时间后自动关闭也可以通过hideNotification()方法手动关闭
4. 为避免内存泄漏请确保在适当时机调用destroy()方法
5. 修复了在应用进入后台时通知被意外关闭的问题,现在通知会在指定时间内持续显示
## 测试
项目包含了NetworkStateMonitorTest单元测试可以验证基本功能的正确性。
## 更新日志
### 2025-09-15
- 修复了当应用进入后台时通知被意外关闭的问题
- 网络状态监听现在会在应用后台运行时持续工作
- 优化了通知显示状态的管理机制
### 2025-09-16
- 新增网络连接通知功能
- 添加NETWORK_CONNECTED通知类型
- 网络连接时会显示5秒的通知然后自动隐藏

View File

@ -1,30 +0,0 @@
package com.ismart.ib86.feature.network;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
/**
* 测试BSSID功能的Activity
*/
public class TestBSSIDActivity extends Activity {
private static final String TAG = "TestBSSIDActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "=== 开始测试BSSID功能 ===");
// 测试格式化WiFi扫描结果包含BSSID
TestWiFiScanResultWithBSSID.testFormatScanResultWithBSSID();
// 测试发送WiFi扫描结果包含BSSID
TestWiFiScanResultWithBSSID.testSendScanResultWithBSSID();
Log.i(TAG, "=== BSSID功能测试完成 ===");
// 结束Activity
finish();
}
}

View File

@ -1,36 +0,0 @@
# 音频资源说明
## 目录结构
```
res/raw/
├── battery_low_notification.wav # 电量低提示音
├── default_notification.wav # 默认提示音
├── network_config_notification.wav # 网络配置提示音
└── network_lost_notification.wav # 网络断开提示音
```
## 使用说明
### 1. 应用内嵌音效
将音频文件放在`res/raw/`目录下构建系统会自动将其编译到APK中。
- 文件名应使用小写字母和下划线
- 支持的格式MP3, WAV, OGG等
### 2. 自定义音效
支持从外部存储加载自定义音效文件:
- 路径格式:`/sdcard/your_sound.wav`
- 需要相应的存储权限
### 3. 默认音效映射
每种通知类型都有对应的默认音效:
- NETWORK_LOST → network_lost_notification.wav
- NETWORK_CONFIG → network_config_notification.wav
- BATTERY_LOW → battery_low_notification.wav
- OTHER → default_notification.wav
## 注意事项
1. 音频文件应尽量小以减少APK体积
2. 建议使用WAV格式以获得较好的兼容性
3. 音频文件命名应遵循Android资源命名规范小写字母、数字、下划线