diff --git a/README.md b/README.md new file mode 100644 index 0000000..debb3cc --- /dev/null +++ b/README.md @@ -0,0 +1,217 @@ +# BandTOTP 身份验证器 + +
+ +![App Screenshot](https://img.shields.io/badge/Platform-Android-green) +![Kotlin](https://img.shields.io/badge/Language-Kotlin-orange) +![Compose](https://img.shields.io/badge/UI-Jetpack%20Compose-blue) +![API Level](https://img.shields.io/badge/API-28+-brightgreen) + +**一款现代化的TOTP身份验证器应用,支持小米手环同步** + +*安全 • 美观 • 高效 • 现代化* + +
+ +--- + +## 🌟 项目概述 + +BandTOTP 是一款基于 Google Authenticator 设计风格的现代化双因子身份验证器应用,采用 Material Design 3 设计语言,不仅支持传统的TOTP验证码生成,更具备与小米手环的无缝同步功能,让您的验证码随时随地触手可及。 + +### ✨ 核心特性 + +- **🎨 现代化UI**: 基于 Jetpack Compose + Material Design 3 +- **📱 多种添加方式**: 二维码扫描、文件导入、手动添加 +- **⌚ 手环同步**: 完整的小米手环双向同步功能 +- **🔒 安全可靠**: 本地存储,支持多种TOTP算法 +- **🎯 用户友好**: 直观的界面设计和流畅的动画效果 + +--- + +## 📸 应用截图 + +> 注:可在此处添加应用的实际截图展示主要功能界面 + +--- + +## 🚀 功能特色 + +### 🔐 验证码管理 +- **实时生成**: 支持标准TOTP和Steam格式验证码 +- **智能识别**: 自动识别服务类型并显示对应图标 +- **倒计时显示**: 圆形进度条,剩余时间直观可见 +- **拖拽排序**: 长按拖拽自定义账户顺序 + +### 📲 多样化添加方式 +- **📷 相机扫码**: 集成 CameraX + ML Kit 专业扫码体验 +- **📁 文件导入**: 支持标准格式和Steam JSON导入 +- **✏️ 手动添加**: 完整参数配置,支持自定义算法 + +### ⌚ 智能手环同步 +- **双向同步**: 手机与手环账户互相同步 +- **状态可视化**: 实时显示同步状态(仅手机/仅手环/已同步) +- **批量操作**: 一键同步所有账户到指定设备 +- **冲突处理**: 智能合并去重,避免数据冲突 + +### 🎨 用户体验 +- **Material You**: 动态主题色彩系统 +- **流畅动画**: 精心设计的页面转场和交互动画 +- **手势操作**: 支持左滑删除、双指缩放等直观操作 +- **无障碍支持**: 完整的无障碍功能支持 + +--- + +## 🛠 技术架构 + +### 核心技术栈 +- **开发语言**: Kotlin 2.0.21 +- **UI框架**: Jetpack Compose + Material Design 3 +- **架构模式**: MVVM + Repository +- **异步处理**: Kotlin Coroutines +- **相机扫码**: CameraX + ML Kit Barcode Scanning +- **数据存储**: SharedPreferences + JSON序列化 +- **小米手环**: XMS Wearable SDK + +### 项目结构 +``` +app/src/main/java/cn/deepfal/band/TOTPauthenticator/ +├── MainActivity.kt # 主Activity - 现代化设计 +├── data/ +│ └── TOTPInfo.kt # TOTP数据模型 +├── components/ +│ ├── ModernTOTPCard.kt # 现代化验证码卡片 +│ ├── AddComponents.kt # 添加相关组件 +│ ├── ReorderableBandAccountsList.kt # 可重排序手环账户列表 +│ └── SyncScreen.kt # 同步管理界面 +├── scanner/ +│ └── QRCodeScanner.kt # 专业二维码扫描器 +├── sync/ +│ └── SyncManager.kt # 同步逻辑管理 +├── ui/theme/ # Material Design主题配置 +└── utils/ + ├── LocalAccountManager.kt # 本地存储管理 + └── TOTPGenerator.kt # TOTP算法实现 +``` + +### 关键依赖 +```kotlin +// Jetpack Compose 生态 +implementation(platform("androidx.compose:compose-bom:2024.12.01")) +implementation("androidx.compose.material3:material3") +implementation("androidx.compose.material:material-icons-extended") + +// 相机与扫码 +implementation("androidx.camera:camera-camera2:1.3.1") +implementation("com.google.mlkit:barcode-scanning:17.2.0") + +// 小米可穿戴SDK +implementation(files("libs/xms-wearable-lib_1.4_release.aar")) + +// 拖拽排序 +implementation("org.burnoutcrew.composereorderable:reorderable:0.9.6") +``` + +--- + +## 📦 构建与运行 + +### 环境要求 +- **Android Studio**: Hedgehog | 2023.1.1 或更高版本 +- **Gradle**: 8.12.0 +- **Kotlin**: 2.0.21 +- **目标SDK**: 36 (Android 14) +- **最低SDK**: 28 (Android 9.0) + +### 快速开始 + +1. **克隆项目** + ```bash + git clone https://github.com/your-username/BandTOTP-APP.git + cd BandTOTP-APP + ``` + +2. **配置签名** (可选) + + 创建 `keystore.properties` 文件: + ```properties + debug.store.file=keystore/keystore.jks + debug.store.password=your_password + debug.key.alias=your_alias + debug.key.password=your_password + + release.store.file=keystore/keystore.jks + release.store.password=your_password + release.key.alias=your_alias + release.key.password=your_password + ``` + +3. **构建运行** + ```bash + ./gradlew assembleDebug + ./gradlew installDebug + ``` + +### 小米手环配置 + +要使用手环同步功能,需要: + +1. **安装手环应用**: 在小米手环上安装对应的TOTP应用 +2. **权限配置**: 应用会自动申请必要的蓝牙和设备管理权限 +3. **设备配对**: 确保手环已通过小米穿戴应用正确配对 + +--- + +## 🔧 配置说明 + +### 权限说明 +```xml + + + + + + + + + +``` + +### 支持的导入格式 + +- **标准TOTP URL**: `otpauth://totp/Service:user@example.com?secret=...` +- **Steam JSON**: Steam Guard导出的JSON格式 +- **文本文件**: 包含上述格式的纯文本文件 + +--- + +## 📱 使用说明 + +### 基本操作 + +1. **添加账户** + - 点击右下角"+"按钮 + - 选择扫码、导入文件或手动添加 + - 按照提示完成添加流程 + +2. **管理账户** + - 左滑账户卡片查看编辑/删除选项 + - 长按进入排序模式,拖拽调整顺序 + - 点击验证码自动复制到剪贴板 + +3. **手环同步** + - 点击同步按钮进入同步界面 + - 查看手机和手环的账户状态 + - 使用批量同步功能管理设备间数据 + +### 高级功能 + +- **Steam账户**: 自动识别Steam格式,生成5位验证码 +- **自定义参数**: 手动添加时可配置算法、位数、周期等 +- **重复检测**: 导入时自动去重,避免重复账户 + +--- + +## 🤝 贡献指南 + +我们欢迎所有形式的贡献!无论是bug报告、功能建议、代码提交还是文档改进。 \ No newline at end of file