改为dialogFragment弹窗
This commit is contained in:
parent
ba5f01a38d
commit
13a2bc5c00
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,151 +0,0 @@
|
||||
# 网络状态监听器使用说明
|
||||
|
||||
## 概述
|
||||
|
||||
网络状态监听器是一个用于监控Android设备网络连接状态的组件。当设备失去网络连接时,它能够自动显示提示信息,并在网络恢复时自动隐藏提示。
|
||||
|
||||
## 主要功能
|
||||
|
||||
1. 实时监听设备的网络连接状态
|
||||
2. 在网络断开时显示提示页面
|
||||
3. 在网络连接时显示提示页面
|
||||
4. 网络恢复时自动隐藏提示页面
|
||||
5. 支持多种网络类型检测(WiFi、移动网络、以太网)
|
||||
6. 支持自定义提示内容和图标
|
||||
7. 支持自定义页面显示持续时间
|
||||
8. 支持多种类型的提示页面(网络状态、电量、配置等)
|
||||
|
||||
## 核心组件
|
||||
|
||||
### NetworkState
|
||||
网络状态枚举,包含以下值:
|
||||
- NO_NETWORK:无网络连接
|
||||
- MOBILE_CONNECTED:移动网络连接
|
||||
- WIFI_CONNECTED:WiFi连接
|
||||
- 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秒的通知,然后自动隐藏
|
@ -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();
|
||||
}
|
||||
}
|
@ -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资源命名规范(小写字母、数字、下划线)
|
Loading…
x
Reference in New Issue
Block a user