# Kiosk 模式集成说明 - 文档索引 ## 🎯 你的问题 **问题**:在 UniApp 的离线 Android 工程里导入了 `myLockView` 和 `myWIFIView`,如何**不通过 JS 来调用** `disableLockScreen()` 等功能? **答案**:✅ 已完成!通过自定义 `Application` 类和 `ActivityLifecycleCallbacks`,实现了应用启动时自动调用这些功能,完全无需 JS 调用。 --- ## 📚 文档导航 根据你的需求,选择相应的文档: ### 🚀 我想快速开始 👉 **阅读顺序**: 1. **[快速开始.md](./快速开始.md)** ⭐⭐⭐⭐⭐ - 5 分钟了解如何测试 - 15 分钟完成完整部署 - 包含常用命令和验证清单 ### 📖 我想了解集成方案 👉 **阅读顺序**: 1. **[集成完成总结.md](./集成完成总结.md)** ⭐⭐⭐⭐⭐ - 了解改动了哪些文件 - 理解核心实现原理 - 查看执行流程图 2. **[README_KIOSK_INTEGRATION.md](./README_KIOSK_INTEGRATION.md)** ⭐⭐⭐⭐ - 完整的集成方案说明 - 功能对比表 - 最佳实践建议 ### 🔧 我要部署到生产环境 👉 **阅读顺序**: 1. **[KIOSK_SETUP_GUIDE.md](./KIOSK_SETUP_GUIDE.md)** ⭐⭐⭐⭐⭐ - 详细的部署步骤 - Device Owner 设置方法 - 故障排查指南 - 安全建议 ### 🧪 我想快速测试(无需 Device Owner) 👉 **阅读顺序**: 1. **[QUICK_TEST_GUIDE.md](./QUICK_TEST_GUIDE.md)** ⭐⭐⭐⭐ - 无需 Device Owner 的测试方法 - 验证自动初始化是否成功 - 调试技巧 - 成功标志 ### 📁 我想了解项目结构 👉 **阅读顺序**: 1. **[PROJECT_STRUCTURE.md](./PROJECT_STRUCTURE.md)** ⭐⭐⭐ - 完整的项目目录结构 - 各模块功能说明 - 模块依赖关系 - 关键代码位置 --- ## 🎯 核心问题快速解答 ### Q1: 如何实现"无需 JS 调用"? **A**: 通过自定义 `MyApplication` 类(继承 `DCloudApplication`),在 `onCreate()` 中注册 `ActivityLifecycleCallbacks`,当主 Activity 创建时自动调用 Kiosk 相关功能。 **核心代码位置**:`app/src/main/java/com/YuyeTech/HeartRate/MyApplication.java` ### Q2: 修改了哪些文件? **A**: - ✅ **新增 3 个文件**: - `MyApplication.java` - 自定义 Application - `KioskHelper.java` - 锁屏控制工具 - `device_admin.xml` - Device Admin 配置 - ✏️ **修改 1 个文件**: - `AndroidManifest.xml` - Application、权限、Receiver **详细说明**:参考 [集成完成总结.md](./集成完成总结.md) ### Q3: 如何验证功能是否生效? **A**: 编译安装后,查看日志: ```bash adb logcat | grep -E "MyApplication|KioskHelper|KioskManager" ``` 期望看到: ``` D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry D KioskHelper: ✅ 屏幕保持常亮 ``` **详细说明**:参考 [QUICK_TEST_GUIDE.md](./QUICK_TEST_GUIDE.md) ### Q4: Device Owner 是必须的吗? **A**: - ❌ **不是必须**:应用可以正常运行,部分功能可用(屏幕常亮、全屏) - ✅ **完整功能需要**:禁用锁屏、LockTask 模式必须是 Device Owner **详细说明**:参考 [KIOSK_SETUP_GUIDE.md](./KIOSK_SETUP_GUIDE.md) ### Q5: 如何退出 Kiosk 模式? **A**: - **用户退出**:5 指长按 5 秒 → 输入密码 `9527` - **开发者退出**:`adb shell am task lock stop` - **应急退出**:`adb shell am force-stop com.YuyeTech.HeartRate` **详细说明**:参考 [快速开始.md](./快速开始.md) ### Q6: WiFi 模块需要自动调用吗? **A**: ❌ **不需要**。WiFi 模块(`myWIFIView`)是交互式功能,需要用户选择 WiFi 和输入密码,所以仍需通过 JS 调用 `showWifiDialogView()`。 **详细说明**:参考 [PROJECT_STRUCTURE.md](./PROJECT_STRUCTURE.md) → myWIFIView 模块 --- ## 🔄 执行流程(简化版) ``` 应用启动 ↓ MyApplication.onCreate() ↓ 注册 ActivityLifecycleCallbacks ↓ PandoraEntry 创建 ↓ onActivityCreated() 触发 ↓ 自动调用(无需 JS): - KioskHelper.disableLockScreen() - KioskHelper.keepScreenOn() - KioskManager.attach() ↓ ✅ Kiosk 模式已激活 ``` **详细流程图**:参考 [集成完成总结.md](./集成完成总结.md) --- ## 📋 快速命令参考 ### 编译安装 ```bash # Debug 版本 gradlew assembleDebug adb install app/build/outputs/apk/debug/app-debug.apk # Release 版本 gradlew assembleRelease adb install app/build/outputs/apk/release/app-release.apk ``` ### 查看日志 ```bash adb logcat | grep -E "MyApplication|KioskHelper|KioskManager" ``` ### Device Owner 设置 ```bash # 设置 adb shell dpm set-device-owner com.YuyeTech.HeartRate/com.ble.mylockview.admin.KioskDeviceAdminReceiver # 验证 adb shell dumpsys device_policy | grep "Device Owner" ``` ### 应用控制 ```bash # 启动 adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry # 停止 adb shell am force-stop com.YuyeTech.HeartRate # 退出 LockTask adb shell am task lock stop ``` **更多命令**:参考 [快速开始.md](./快速开始.md) --- ## 📊 文档对比表 | 文档 | 页数 | 适用场景 | 推荐指数 | |------|------|---------|---------| | **快速开始.md** | 中 | 第一次使用 | ⭐⭐⭐⭐⭐ | | **集成完成总结.md** | 长 | 理解实现原理 | ⭐⭐⭐⭐⭐ | | **README_KIOSK_INTEGRATION.md** | 长 | 了解整体方案 | ⭐⭐⭐⭐ | | **KIOSK_SETUP_GUIDE.md** | 超长 | 生产环境部署 | ⭐⭐⭐⭐⭐ | | **QUICK_TEST_GUIDE.md** | 中 | 开发环境测试 | ⭐⭐⭐⭐ | | **PROJECT_STRUCTURE.md** | 长 | 理解代码结构 | ⭐⭐⭐ | | **README_集成说明索引.md** | 短 | 文档导航 | ⭐⭐⭐⭐⭐ | --- ## 🎯 推荐阅读路径 ### 路径 1:快速上手(推荐 ⭐⭐⭐⭐⭐) 1. 阅读 **快速开始.md** (5 分钟) 2. 执行"选项 1:快速测试" (5 分钟) 3. 查看日志验证功能 (2 分钟) 4. ✅ 完成基础验证 ### 路径 2:深入理解 1. 阅读 **集成完成总结.md** (10 分钟) 2. 阅读 **README_KIOSK_INTEGRATION.md** (15 分钟) 3. 查看核心代码文件 (10 分钟) 4. ✅ 理解实现原理 ### 路径 3:生产部署 1. 阅读 **KIOSK_SETUP_GUIDE.md** (20 分钟) 2. 准备测试设备(恢复出厂设置) 3. 执行完整部署流程 (15 分钟) 4. 验证所有功能 (10 分钟) 5. ✅ 完成生产部署 ### 路径 4:开发调试 1. 阅读 **QUICK_TEST_GUIDE.md** (10 分钟) 2. 执行快速测试流程 (5 分钟) 3. 参考调试技巧 (按需) 4. ✅ 开发环境配置完成 --- ## 🔑 关键文件位置 ### 核心代码 ``` app/src/main/java/com/YuyeTech/HeartRate/ ├── MyApplication.java # 自动初始化入口 └── KioskHelper.java # 锁屏控制工具 ``` ### 配置文件 ``` app/src/main/ ├── AndroidManifest.xml # Application、权限、Receiver └── res/xml/ └── device_admin.xml # Device Admin 策略 ``` ### 依赖模块 ``` myLockView/src/main/java/com/ble/mylockview/ └── admin/ ├── KioskManager.java # Kiosk 核心管理器 └── KioskDeviceAdminReceiver.java # Device Admin 接收器 ``` --- ## 💡 重要提示 ### ⚠️ 生产环境注意事项 1. **修改默认密码**:`myLockView/.../KioskManager.java` 第 55 行 2. **关闭 Debug 模式**:`MyApplication.java` 第 29 行 3. **测试逃生门**:确保能正常退出 4. **准备恢复方案**:保留 ADB 访问或物理按键 ### ✅ 开发环境建议 1. 使用 Debug 模式(已默认) 2. 不设置 Device Owner(方便调试) 3. 保留 ADB 访问权限 4. 随时查看日志 ### 📞 遇到问题? 1. 查看对应文档的"故障排查"章节 2. 检查日志输出 3. 参考"常见问题"部分 4. 确认 Device Owner 状态 --- ## 🎉 最后 你现在拥有了一个**完全自动化的 Kiosk 模式**,无需在 JS 中写任何代码! ### ✅ 实现的功能 - ✅ 应用启动自动禁用锁屏 - ✅ 应用启动自动进入 Kiosk 模式 - ✅ 屏幕自动保持常亮 - ✅ 全屏沉浸式界面 - ✅ 拦截系统按键 - ✅ 五指逃生门机制 - ✅ 开机自动启动 ### 🚀 立即开始 ```bash # 1. 编译 gradlew assembleDebug # 2. 安装 adb install app/build/outputs/apk/debug/app-debug.apk # 3. 查看日志 adb logcat | grep -E "MyApplication|KioskHelper" # 4. 启动应用 adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry ``` --- **创建时间**:2026-01-22 **文档版本**:1.0 **核心价值**:🎯 **零 JS 调用,自动进入 Kiosk 模式!** **祝你使用愉快!** 🎊