SeeGreen 是一款帮助用户快速识别垃圾分类的 Android 应用。通过拍照识别,用户可以轻松了解垃圾的类别和处理方式,为环保贡献一份力量。
- 拍照识别 - 对准垃圾拍照,即刻获取分类结果
- 识别历史 - 自动保存识别记录,方便随时查看
- 统计面板 - 记录识别次数和环保贡献值
- 简洁界面 - Material Design 设计语言,操作流畅自然
通过相机拍摄垃圾照片,应用会自动调用识别服务,返回垃圾的类别信息和处理建议。
每次识别结果都会自动保存,用户可以在历史页面查看过往的识别记录,方便学习和回顾。
实时统计用户的识别次数和环保贡献值,让垃圾分类变得更有成就感。
分层架构模式
- 采用清晰的分层架构,将 API 层、业务逻辑层、数据层和 UI 层分离
- 通过
api包统一管理网络请求,便于后期维护和扩展 - 使用
model包封装数据模型,提高代码复用性
模块化设计
- 每个 Activity 职责单一,主页负责导航,结果页专注展示,历史页独立管理记录
- 工具类统一放置在
utils包中,实现代码的高内聚低耦合
流畅的交互流程
- 实现了启动页(SplashActivity)过渡,提升应用启动体验
- 采用 ActivityResultLauncher 替代传统的 startActivityForResult,符合最新 Android 开发规范
- 权限请求采用现代化的 API,用户体验更友好
数据持久化方案
- 通过 StorageHelper 统一管理本地数据存储
- 实时更新统计数据,用户每次返回主页都能看到最新的识别次数和贡献值
- 历史记录自动保存,无需用户手动操作
安全的文件处理
- 使用 FileProvider 替代传统的 file:// URI,符合 Android 安全规范
- 避免了 FileUriExposedException,确保应用在 Android 7.0+ 系统上稳定运行
- 照片文件统一存储在应用私有目录,保护用户隐私
高效的图片加载
- 集成 Glide 图片加载框架,自动处理图片缓存和内存管理
- 避免了传统 Bitmap 加载可能导致的 OOM 问题
网络请求优化
- 使用 OkHttp 进行网络请求,支持连接池复用,提高请求效率
- 采用 Gson 进行 JSON 解析,代码简洁且性能优异
规范的命名和注释
- 遵循 Java 命名规范,代码可读性强
- 关键逻辑添加注释说明,便于团队协作和后期维护
合理的异常处理
- 对文件操作、网络请求等可能出错的地方进行异常捕获
- 通过 Toast 向用户反馈操作结果,提升用户体验
- 语言: Java
- 最低版本: Android 9.0 (API 28)
- 目标版本: Android 14 (API 36)
- 构建工具: Gradle 8.x
| 库名称 | 版本 | 用途 |
|---|---|---|
| AndroidX AppCompat | 1.7.0 | 兼容性支持 |
| Material Components | 1.12.0 | UI 组件 |
| OkHttp | 4.12.0 | 网络请求 |
| Gson | 2.10.1 | JSON 解析 |
| Glide | 4.16.0 | 图片加载 |
| RecyclerView | 1.3.2 | 列表展示 |
- Android Studio Hedgehog (2023年1月1日) 或更高版本
- JDK 11 或更高版本
- Android SDK API 28+
git clone https://github.com/yourusername/SeeGreen1.git
cd SeeGreen1- 使用 Android Studio 打开项目
- 等待 Gradle 同步完成
- 连接 Android 设备或启动模拟器
- 点击运行按钮
# Windows gradlew.bat assembleDebug # Linux/Mac ./gradlew assembleDebug
生成的 APK 文件位于 app/build/outputs/apk/debug/ 目录下。
SeeGreen1/
├── app/
│ ├── src/
│ │ └── main/
│ │ ├── java/com/zjf/seegreen1/
│ │ │ ├── api/ # API 接口层
│ │ │ │ ├── ApiConfig.java
│ │ │ │ └── ApiService.java
│ │ │ ├── model/ # 数据模型
│ │ │ │ └── GarbageResult.java
│ │ │ ├── utils/ # 工具类
│ │ │ │ └── StorageHelper.java
│ │ │ ├── MainActivity.java # 主页面
│ │ │ ├── ResultActivity.java # 结果页面
│ │ │ ├── HistoryActivity.java # 历史记录页面
│ │ │ └── SplashActivity.java # 启动页
│ │ ├── res/ # 资源文件
│ │ └── AndroidManifest.xml
│ └── build.gradle.kts
├── gradle/
└── build.gradle.kts
应用需要以下权限:
CAMERA- 拍照识别READ_EXTERNAL_STORAGE- 读取图片INTERNET- 网络请求ACCESS_NETWORK_STATE- 网络状态检测
使用 FileProvider 安全地处理相机拍摄的照片,避免文件 URI 暴露问题。
通过 SharedPreferences 存储用户的识别历史和统计数据。
待添加应用截图
功能完善
- 支持从相册选择图片进行识别,不局限于拍照
- 优化识别结果展示页面,增加更详细的垃圾处理建议
- 添加识别结果分享功能,方便用户分享到社交平台
- 实现历史记录的搜索和筛选功能
性能优化
- 优化图片压缩算法,减少网络传输时间
- 实现图片识别的本地缓存机制,相同图片无需重复请求
- 优化应用启动速度和页面切换流畅度
- 减少应用包体积,提升下载安装体验
智能化升级
- 集成本地 AI 模型,实现离线识别功能
- 支持批量识别,一次拍摄多个垃圾物品
- 添加语音识别功能,通过语音描述识别垃圾类别
- 实现智能推荐,根据用户历史记录提供个性化建议
知识体系建设
- 构建完整的垃圾分类知识库,包含各类垃圾的详细信息
- 添加垃圾分类小课堂,以图文并茂的方式普及环保知识
- 实现每日一题功能,通过答题方式加深用户对垃圾分类的理解
- 增加垃圾处理流程可视化展示
社区化发展
- 建立用户社区,用户可以分享垃圾分类心得和经验
- 实现用户等级和成就系统,增加应用趣味性
- 开发排行榜功能,展示环保达人榜单
- 支持用户上传新的垃圾类别,共同完善数据库
生态拓展
- 与本地环保部门合作,接入官方垃圾分类数据
- 对接智能垃圾桶设备,实现物联网功能
- 开发小程序版本,降低使用门槛
- 支持多语言,推广到更多地区
技术演进
- 迁移到 Kotlin 语言,提升开发效率
- 引入 Jetpack Compose 构建现代化 UI
- 实现深色模式和主题自定义
- 采用 MVVM 架构,提升代码可维护性
环保教育 通过应用的普及,帮助更多人掌握正确的垃圾分类方法,培养环保意识,为建设绿色家园贡献力量。
数据积累 收集用户识别数据(匿名化处理),为环保部门提供决策参考,优化垃圾分类政策。
技术创新 探索 AI 技术在环保领域的应用,为智慧城市建设提供技术支持。
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目采用 MIT 协议开源,详见 LICENSE 文件。
占俊凡
来自光明区长育学校,在校初三生
联系方式:[zjf20110511@qq.com]
让垃圾分类变得更简单
Made with passion by 占俊凡