xiaji 4415f28d08 Add release build configuration with automatic signing
- Configure release build type with minify and shrink resources
- Add signing configuration using keystore
- Use gradle.properties for secure password storage
- Add keystore to .gitignore for security
2026-03-15 21:47:31 +08:00

CheckShot - Android 图片检查与拼图工具

CheckShot 是一个面向 Android 的图片处理与检查工具,包含水印处理、拼图合成、以及丰富的设置能力,配合 AirTest 自动化测试用例,帮助实现端到端的图像工作流。

核心功能

  • 水印设置
    • 时间水印:拍摄后在左下角叠加时间戳,格式固定为 "yyyy年-MM月-dd日 HH:mm:ss"。
    • 地点水印:优先通过 Geocoder 联网解析地址,失败时回落显示经纬度。可在设置中配置校准方式。
    • 样式:提供三种预设样式(默认/简约/醒目),并可在设置中预览和应用。
  • 多图拼图(合成)模块
    • 布局规则:支持 2x2 和 3x3 两种网格布局,图片自动缩放裁剪以适配网格。
    • 核心能力:图片拼接、模板化布局编辑(替换/删除图片)、合成质量控制(分辨率/清晰度)。
    • 交互:支持替换网格中的图片、删除图片、添加新图片、设置合成质量和文本水印文本。
  • 设置与通用配置
    • 水印设置、合成设置、通用设置、关于等配置项,均可通过设置界面调整。
  • 测试与自动化
    • 集成 AirTest 测试用例,覆盖水印、相册、拼图、设置等场景,便于回归验证。

通用拼图布局组件技术规格

1. 逻辑结构

采用“上-中-下”三段式布局:

┌─────────────────────────┐
│      标题区 (Title)     │  高度自适应,支持 1 行文本
├─────────────────────────┤
│                         │
│      图片网格区         │  2x2 或 3x3 栅格布局
│      (Grid Area)        │
│                         │
├─────────────────────────┤
│    底部文字区 (Text)    │  200dp 高度,包含标题+内容
└─────────────────────────┘

2. 核心布局参数化

参数 说明 当前值
Grid_Columns 列数 2 或 3
Grid_Rows 行数 2 或 3
S 单元格间距 4dp
P 容器内边距 16dp

布局模板自动匹配:根据图片数量自动选择最接近的栅格模板。

3. 内容渲染规则

  • 标题区:位于顶部,高度自适应,支持 1 行文本
  • 图片网格区:位于栅格正下方,由图片组成
  • 内容区:位于底部,由 Title加粗和 Content常规组成

4. 缩放算法规格

等比缩放 (Proportional Scaling)

  • 锁定原始宽高比,严禁 X 或 Y 轴独立拉伸
  • 计算缩放比例:k = max(Wt / W_orig, Ht / H_orig)

其中:

  • Wt = 目标单元格宽度(物理像素)
  • Ht = 目标单元格高度(物理像素)
  • W_orig = 原始图片宽度
  • H_orig = 原始图片高度

填充模式

  • Aspect Fill图片须完全覆盖单元格区域不允许出现留白Gap-free

采样策略

  • 下采样 (Downsampling)针对大图缩小采用双线性Bilinear过滤避免出现锯齿或摩尔纹

对齐规则

  • Center Aligned:初始加载时,图片几何中心与单元格几何中心重合

分辨率限制

  • Max DPI 限制:缩小后的图片逻辑像素密度不低于 320dpi确保在高分屏下的视觉清晰度

5. 布局通用适配规则

  1. 系统根据当前选定的布局模板2x2 或 3x3计算出单个单元格的目标物理像素 (Wt, Ht)
  2. 原始图片输入后,自动计算缩放比例 k = max(Wt/W_orig, Ht/H_orig)
  3. 图片按 k 倍数进行等比缩小
  4. 缩小后的图片根据单元格中心进行溢出裁切,确保视觉上的严丝合缝

架构与实现要点

  • Watermark时间文本来自系统时间地点文本通过 LocationHelper/Geocoder 获取。
  • Puzzle通过 Bitmap 拼接与 Canvas/Matrix 实现多种布局,支持图片替换、删除与质量控制。
  • Settings使用 DataStore 保存用户偏好。

快速开始

  • 构建与运行
    • 构建调试 APK./gradlew assembleDebug
    • 在设备/模拟器上安装:adb install -r app/build/outputs/apk/debug/app-debug.apk
  • AirTest 测试
    • 运行测试用例(需安装 AirTest 及依赖):airtest run test/airtest/... --device Android:///

项目结构与升级

  • 主要代码位于:
    • app/src/main/... 业务代码与 UI 组件
    • app/src/test/... 单元测试
    • test/airtest/... AirTest 的 UI 测试用例
  • README 作为版本演进的记录,后续变更请同步更新。

持续集成与发布

  • 建议在 CI 中执行编译、单元测试、AirTest 测试并在通过后打包发行版。

联系与贡献

  • 如需进一步定制文档结构,或需要将某些部分拆分为单独的开发指南,请告知偏好。
Description
一个巡检的app工具
Readme 142 MiB
Languages
Kotlin 87.4%
Python 12.6%