# 知风雨 **Repository Path**: ljj2987145363/weaknow ## Basic Information - **Project Name**: 知风雨 - **Description**: No description available - **Primary Language**: Kotlin - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-28 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 知风雨 | WeaKnow
![Version](https://img.shields.io/badge/版本-0.9.5-blue.svg) ![Platform](https://img.shields.io/badge/平台-Android-green.svg) ![MinSDK](https://img.shields.io/badge/minSDK-26-orange.svg) ![License](https://img.shields.io/badge/许可证-GPL%20v3.0-red.svg) **一款简洁优雅的Android天气应用** [功能特性](#功能特性) • [技术栈](#技术栈) • [快速开始](#快速开始) • [架构设计](#架构设计) • [贡献指南](#贡献指南)
--- ## 📖 项目简介 知风雨(WeaKnow)是一款专注于提供准确、及时天气信息服务的Android应用。通过"本地化数据 + 多源API + 智能后台同步"的组合,为用户提供实时天气、逐小时/多日预报、空气质量与生活指数等一站式天气体验。 ### 设计理念 - **准确与及时**: 基于高德地图定位与和风天气API,结合本地数据库缓存与周期性后台同步,确保数据新鲜度与稳定性 - **多地点管理**: 支持添加、切换、删除多个城市或地点,满足跨城出行、关注家乡等多样化需求 - **视觉与交互**: 采用Material Design 3主题与Lottie动态背景,依据天气类型自动切换背景动画,增强用户体验 --- ## ✨ 功能特性 ### 核心功能 - 🌡️ **实时天气信息** - 当前温度、体感温度、天气现象、风向风力等实时数据 - ⏰ **逐小时天气预报** - 未来6-24小时天气趋势,温度曲线可视化展示 - 📅 **未来天气预报** - 7-15天天气预测,包含最高/最低温、降水概率、湿度等详细指标 - 🌬️ **空气质量监测** - AQI指数、主要污染物浓度、空气质量等级可视化 - 📊 **生活指数提醒** - 穿衣、洗车、紫外线、运动等多维度生活建议 - 📍 **多地点管理** - 支持添加、切换、删除多个城市,快速查看不同地区天气 - ⚠️ **天气预警通知** - 实时推送气象灾害预警信息 - 🎨 **智能背景动画** - 根据天气类型自动切换Lottie动态背景 ### 技术亮点 - 🔄 **智能后台同步** - 四级同步策略(实时/短时/中时/长时),平衡数据新鲜度与电量消耗 - 💾 **离线可用** - Room本地缓存,弱网或无网环境下仍可查看历史数据 - 🎯 **Material Design 3** - 遵循最新设计规范,支持动态色彩与深色模式 - ⚡ **协程并发** - 多接口并发请求,提升数据同步效率 - 🏗️ **MVVM架构** - 清晰的分层设计,易于维护与扩展 --- ## 🛠️ 技术栈 ### 核心技术 | 技术 | 说明 | |-----------------------|----------| | **Kotlin** | 主要开发语言 | | **Jetpack Compose** | 现代化UI工具包 | | **Material Design 3** | UI设计规范 | | **MVVM** | 架构模式 | | **Room** | 本地数据库 | | **Retrofit + OkHttp** | 网络请求 | | **WorkManager** | 后台任务调度 | | **Koin** | 依赖注入 | | **Coroutines + Flow** | 异步编程 | | **Lottie** | 动画渲染 | ### 第三方服务 - **和风天气API** - 天气数据源 - **高德地图API** - 定位与地理编码服务 --- ## 🚀 快速开始 ### 环境要求 - Android Studio Arctic Fox 或更高版本 - JDK 17+ - Android SDK 35 - Gradle 8.10.2 ### 克隆项目 ```bash git clone https://gitee.com/ljj2987145363/weaknow.git cd weaknow ``` ### 配置API密钥 1. 在项目根目录创建 `local.properties` 文件 2. 添加以下配置: ```properties # 和风天气API密钥 QWEATHER_WEB_API_KEY=your_qweather_api_key # 高德地图API密钥 AMAP_WEB_API_KEY=your_amap_api_key AMAP_ANDROID_API_KEY=your_amap_android_key # 应用签名SHA1 CERT_SHA1=your_cert_sha1 ``` ### 构建运行 1. 使用Android Studio打开项目 2. 等待Gradle同步完成 3. 连接Android设备或启动模拟器 4. 点击运行按钮 --- ## 🏗️ 架构设计 ### 分层架构 ``` ┌─────────────────────────────────────┐ │ UI Layer │ │ (Compose UI, Activity, Screen) │ └─────────────────┬───────────────────┘ │ ┌─────────────────▼───────────────────┐ │ ViewModel Layer │ │ (State Management, Logic) │ └─────────────────┬───────────────────┘ │ ┌─────────────────▼───────────────────┐ │ Repository Layer │ │ (Data Coordination, Cache) │ └─────┬───────────────────────┬───────┘ │ │ ┌─────▼────────┐ ┌──────▼───────┐ │ Remote API │ │ Local Database│ │ (Retrofit) │ │ (Room) │ └──────────────┘ └──────────────┘ ``` ### 核心模块 #### 数据层 - **Repository**: 封装数据访问逻辑,协调远程API与本地数据库 - **DAO**: Room数据访问对象,定义数据库操作 - **Entity**: 数据库实体模型 - **API Client**: Retrofit服务接口,封装网络请求 #### 业务层 - **ViewModel**: 管理UI状态,处理业务逻辑 - **Worker**: 后台同步任务,保障数据新鲜度 - **UseCase**: 业务用例封装(如有) #### 表现层 - **Activity**: 应用入口,权限管理,导航控制 - **Screen**: Compose页面组件 - **Component**: 可复用UI组件 - **Theme**: 主题与样式定义 ### 后台同步策略 | 同步类型 | 频率 | 数据内容 | |------|------|------------| | 实时同步 | 15分钟 | 实时天气、预警信息 | | 短时同步 | 30分钟 | 逐小时预报、空气质量 | | 中时同步 | 1小时 | 多日预报 | | 长时同步 | 6小时 | 天气指数 | --- ## 📱 应用截图 > 注: 实际截图请根据应用界面补充 --- ## 📂 项目结构 ``` app/src/main/ ├── kotlin/me/ljj/weaknow/ │ ├── application/ # Application类 │ ├── ui/ # UI层 │ │ ├── activity/ # Activity │ │ ├── screen/ # 页面组件 │ │ ├── component/ # 可复用组件 │ │ ├── layout/ # 布局组件 │ │ ├── dialog/ # 对话框 │ │ └── theme/ # 主题样式 │ ├── viewmodel/ # ViewModel │ ├── data/ # 数据层 │ │ ├── remote/ # 远程数据 │ │ │ ├── api/ # API接口 │ │ │ └── client/ # API客户端 │ │ ├── local/ # 本地数据 │ │ │ ├── database/ # 数据库 │ │ │ ├── dao/ # DAO │ │ │ └── entity/ # 实体 │ │ └── repository/ # 仓库 │ ├── domain/ # 领域层 │ │ ├── model/ # 业务模型 │ │ └── response/ # API响应模型 │ └── core/ # 核心工具 │ ├── constant/ # 常量 │ ├── util/ # 工具类 │ ├── extension/ # 扩展函数 │ ├── config/ # 配置 │ └── interfaze/ # 接口定义 ├── res/ # 资源文件 └── assets/ # 静态资源 └── ic_qweather/ # 天气图标 ``` --- ## 🔧 开发指南 ### 代码规范 - 遵循Kotlin官方编码规范 - 使用KDoc编写文档注释 - 遵循MVVM架构分层原则 - Compose UI组件采用函数式编程风格 ### 提交规范 ``` feat: 新功能 fix: 修复bug docs: 文档更新 style: 代码格式调整 refactor: 重构 test: 测试相关 chore: 构建/工具相关 ``` --- ## 🧪 测试 ### 运行单元测试 ```bash ./gradlew test ``` ### 运行UI测试 ```bash ./gradlew connectedAndroidTest ``` --- ## 📄 许可证 本项目采用 [GNU General Public License v3.0](LICENSE) 许可证。 ``` Copyright (C) 2024 吕钜进 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ``` --- ## 👨‍💻 作者 **吕钜进** - Gitee: [@ljj2987145363](https://gitee.com/ljj2987145363) --- ## 🤝 贡献指南 欢迎提交Issue和Pull Request! 1. Fork本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'feat: Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交Pull Request --- ## 📮 联系方式 如有问题或建议,欢迎通过以下方式联系: - 提交Issue: [Gitee Issues](https://gitee.com/ljj2987145363/weaknow/issues) - 项目主页: [https://gitee.com/ljj2987145363/weaknow](https://gitee.com/ljj2987145363/weaknow) --- ## 🙏 致谢 - [和风天气](https://www.qweather.com/) - 提供天气数据API - [高德地图](https://lbs.amap.com/) - 提供定位与地理编码服务 - [Material Design](https://m3.material.io/) - UI设计规范 - [Jetpack Compose](https://developer.android.com/jetpack/compose) - 现代化UI工具包 ---
**⭐ 如果这个项目对你有帮助,请给一个Star支持一下! ⭐** Made with ❤️ by 吕钜进