本次更新为 LUT 应用添加了设置持久化功能,解决了每次重启应用都需要重新设置文件夹路径的问题。
新增了 SettingsManager 类,位于 cn.jetNest.lut.data 包中,负责管理应用的所有设置项:
- 监控目录 (
watchDirectory) - 输出目录 (
outputDirectory) - 选中的LUT文件 (
selectedLutFile) - 强度设置 (
strength) - 质量设置 (
quality) - 抖动类型 (
ditherType)
使用 Android 的 SharedPreferences 进行数据持久化存储:
- 设置文件名:
lut_settings - 存储模式:
Context.MODE_PRIVATE - 支持实时数据更新,使用
StateFlow提供响应式数据流
- 强度:60
- 质量:90
- 其他设置项:null(未设置状态)
UI Layer (Compose)
↕
MainViewModel
↕
SettingsManager
↕
SharedPreferences
setWatchDirectory(path: String)setOutputDirectory(path: String)setSelectedLutFile(filename: String)setStrength(value: Int)setQuality(value: Int)setDitherType(type: String?)
- 所有设置项都通过
StateFlow提供响应式数据流 - 支持实时监听设置变化
clearAllSettings()- 清除所有设置
设置持久化功能已自动集成到现有的 UI 中,用户无需额外操作:
- 在设置页面配置文件夹路径
- 设置会自动保存到本地存储
- 重启应用后,之前的设置会自动恢复
添加了基础的单元测试 SettingsManagerTest,验证:
- 类的存在性和可实例化性
- 默认值的正确性
- 设置键名的正确定义
- SharedPreferences 文件名的正确性
- 最低 Android API 24
- 向后兼容,不影响现有功能
- 首次使用时会使用默认值,之后会记住用户设置
app/src/main/java/cn/jetNest/lut/data/SettingsManager.ktapp/src/test/java/cn/jetNest/lut/data/SettingsManagerTest.kt
app/src/main/java/cn/jetNest/lut/viewmodel/MainViewModel.ktgradle/libs.versions.tomlapp/build.gradle.kts
- 设置数据存储在应用私有目录,卸载应用时会一并删除
- 强度和质量设置有范围限制(强度:0-100,质量:1-100)
- 所有设置操作都是线程安全的