# sdg_panel_android_java **Repository Path**: dai-beifeng/sdg_panel_android_java ## Basic Information - **Project Name**: sdg_panel_android_java - **Description**: sdg智慧粮仓 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-08 - **Last Updated**: 2025-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智慧粮仓监控系统 ## 项目简介 智慧粮仓监控系统是一个基于Android平台的粮食仓储智能化解决方案,提供安全、高效的粮食仓储管理功能。 ## 主要功能 - 智能通风控制 - 空调控温管理 - 能耗检测监控 - 环流控温系统 - 气体检测分析 - 系统配置管理 - 设备管理 - 粮情检测 ## 主题系统 ### 概述 系统支持多种主题颜色,用户可以根据个人喜好或使用场景选择不同的主题。 ### 主题配置文件 所有主题配置都在 `app/src/main/assets/css/theme.css` 文件中定义,包含以下主题: - **默认蓝色主题**: #0A3A8F → #0E1D47 渐变 - **绿色主题**: #0A8F3A → #0E4727 渐变 - **紫色主题**: #5A0A8F → #2E0E47 渐变 - **橙色主题**: #FF7E00 → #A13800 渐变 - **暗色主题**: #2A2A2A → #121212 渐变 ### 使用方法 #### 1. 引入主题文件 在HTML页面中引入主题CSS文件: ```html ``` #### 2. 使用主题变量 在CSS中使用预定义的主题变量: ```css body { background: linear-gradient(130deg, var(--theme-gradient-start) 0%, var(--theme-gradient-end) 100%); color: var(--theme-text-color); } .card { background-color: var(--theme-card-bg); border: 1px solid var(--theme-card-border); box-shadow: 0 4px 24px var(--theme-card-shadow); } ``` #### 3. 实现主题切换 添加主题切换按钮和JavaScript代码: ```html
``` #### 4. 主题变量说明 - `--theme-gradient-start`: 背景渐变起始颜色 - `--theme-gradient-end`: 背景渐变结束颜色 - `--theme-text-color`: 主要文字颜色 - `--theme-card-bg`: 卡片背景颜色 - `--theme-card-border`: 卡片边框颜色 - `--theme-card-shadow`: 卡片阴影颜色 ### 新页面开发规范 1. 所有新生成的页面都应该引入 `theme.css` 文件 2. 使用主题变量替代硬编码的颜色值 3. 实现一键换主题功能 4. 支持主题记忆功能(使用localStorage保存用户选择) ### 扩展主题 如需添加新主题,在 `theme.css` 中添加新的主题类: ```css .theme-custom { --theme-gradient-start: #your-color; --theme-gradient-end: #your-color; --theme-text-color: #your-color; --theme-card-bg: rgba(255, 255, 255, 0.08); --theme-card-border: rgba(255, 255, 255, 0.1); --theme-card-shadow: rgba(0, 0, 0, 0.1); } ``` ## 技术栈 - Android Java - WebView - HTML5/CSS3/JavaScript - Layui UI框架 - ECharts图表库 - j2mod Modbus通信库 ## 开发环境 - Android Studio - JDK 8+ - Gradle 6.0+ ## 项目结构 该项目使用标准的Android架构组织,遵循模块化和关注点分离原则。主要包括以下目录: ### 数据层 (Data Layer) - **database**: 数据库相关类 - `SdgDatabase.java` - SQLite数据库管理类 - **model**: 数据实体类 - `PlcDataEntity.java` - PLC数据实体类 - `PlcDeviceEntity.java` - PLC设备实体类 - **dao**: 数据访问对象 - `PlcDataDao.java` - PLC数据DAO接口 - `PlcDataDao_Impl.java` - PLC数据DAO实现 - `PlcDeviceDao.java` - PLC设备DAO接口 - `PlcDeviceDao_Impl.java` - PLC设备DAO实现 - **repository**: 数据仓库 - `PlcDataRepository.java` - PLC数据仓库,提供数据访问的高级接口 - `PlcDeviceRepository.java` - PLC设备仓库,提供设备管理的高级接口 ### 业务层 (Domain Layer) - **service**: 服务类 - `PlcDataService.java` - PLC数据采集服务,负责后台数据采集任务 - **util**: 工具类 - `ModbusHelper.java` - Modbus协议通信帮助类 - `ModbusTcpClient.java` - Modbus TCP客户端 - `J2modFix.java` - J2mod库的修复类 - `WebViewWrapper.java` - WebView包装器,提供JavaScript交互功能 - `PlcUnitMapper.java` - PLC单位映射工具 - `SqliteLoader.java` - SQLite加载器 - `ReflectionHelper.java` - 反射工具类 - **callback**: 回调接口 - `DataCallback.java` - 通用数据回调接口 - `DataListener.java` - PLC数据监听器接口 - `PlcDataListener.java` - PLC数据变化监听器接口 - `ConnectionListener.java` - Modbus连接监听器接口 - `WebViewJsCallback.java` - WebView JavaScript回调接口 ### 表示层 (Presentation Layer) - **ui/activity**: Activity类 - `MainActivity.java` - 主Activity - `ModbusDemoActivity.java` - Modbus通信演示Activity - `ModbusDemoActivity2.java` - Modbus通信演示Activity2(主界面) - `WebViewDemoActivity.java` - WebView演示Activity - `PlcDataViewActivity.java` - PLC数据浏览Activity - **adapter**: 适配器类 - `ModbusFileAdapter.java` - Modbus配置文件适配器 - `PlcDataAdapter.java` - PLC数据列表适配器 ## 架构说明 该项目采用了类似于MVVM架构,但不完全相同: 1. **数据层** 负责从各种数据源(SQLite数据库、网络API等)获取和管理数据。 2. **业务层** 包含业务逻辑,如服务类和工具类,处理数据转换和业务规则。 3. **表示层** 负责UI展示,包括Activity和适配器。 数据流向:UI -> Repository -> DAO -> Database -> Entity -> DAO -> Repository -> UI ## 设计原则 1. **单一职责原则**:每个类只负责一项功能 2. **关注点分离**:将业务逻辑、数据访问和UI展示分离 3. **依赖倒置原则**:高层模块不应依赖低层模块,都应该依赖抽象(如DAO接口) 4. **接口隔离原则**:将大接口拆分为小接口,使用不同的回调接口处理不同的场景