这是一个展示多种相机和图像保存方法的Android应用示例。该应用提供了两种不同的拍照方式和三种不同的图片保存方法,适合学习Android相机操作和存储机制。
- 自定义相机界面 - 使用CameraX API自定义实现的相机预览和拍照功能,需要获取相机权限
- 系统相机 - 调用设备上安装的系统相机应用拍照,无需单独请求权限
- Files API - 使用Java文件操作API将图像保存到公共目录,适用于Android 10(API 29)以下版本
- MediaStore API - 使用MediaStore将图像保存到媒体库,适用于所有Android版本,是Android 10及以上版本推荐的方法
- Document API - 通过系统文件选择器让用户自行决定保存位置,支持将图片保存到第三方存储应用,是非常推荐的方式
保存方式 | 优点 | 缺点 | 适用版本 |
---|---|---|---|
传统文件IO | 简单直观,完全控制存储位置 | 需要存储权限,在新版Android上受限制 | 主要适用于Android 9(API 28)及以下版本,在新版本可能存在越权等问题 |
MediaStore API | 不需要存储权限,符合新版Android隐私要求 | 必须保存到系统媒体库指定的位置 | Android 1.5(API 3)及以上,其中Android 10(API 29)及以上推荐使用,因为不再可以使用Files API 去访问共享目录 |
Document API (Storage Access Framework) | 用户可以选择任何位置保存,包括云存储 | 需要用户交互,实现稍微复杂 | Android 4.4(API 19)及以上,推荐在Android 10(API 29)及以上使用,因为可以避免存储权限问题 |
- 使用Jetpack Compose构建用户界面
- CameraX API进行相机操作
- 多种存储方式的实现和对比
- 权限请求处理
- 适配不同Android版本的存储访问策略
- 使用Android Studio打开项目
- 确保已安装最新的Android SDK
- 使用Gradle构建项目
- 在模拟器或实际设备上运行应用
- Android 8.0 (API 26) 或更高版本
- 设备必须有相机