# 快速开始 - Kiosk 模式自动启动 ## 🎯 目标 让 Kiosk 模式(禁用锁屏、防退出)在应用启动时自动激活,**无需在 JS 中调用任何代码**。 ## ✅ 已完成的工作 ### 1. 创建的文件 - ✅ `app/src/main/java/com/YuyeTech/HeartRate/MyApplication.java` - 自定义 Application - ✅ `app/src/main/java/com/YuyeTech/HeartRate/KioskHelper.java` - 锁屏控制工具 - ✅ `app/src/main/res/xml/device_admin.xml` - Device Admin 配置 ### 2. 修改的文件 - ✅ `app/src/main/AndroidManifest.xml` - Application 改为 `com.YuyeTech.HeartRate.MyApplication` - 添加 Kiosk 相关权限 - 添加 Device Admin Receiver - 添加 Boot Receiver ### 3. 创建的文档 - 📄 `README_KIOSK_INTEGRATION.md` - 集成方案总览 - 📄 `KIOSK_SETUP_GUIDE.md` - 详细配置指南 - 📄 `QUICK_TEST_GUIDE.md` - 快速测试指南 - 📄 `PROJECT_STRUCTURE.md` - 项目结构说明 - 📄 `快速开始.md` - 本文件 ## 🚀 下一步操作 ### 选项 1:快速测试(无需 Device Owner) 适用于快速验证功能是否正确集成。 ```bash # 1. 清理并编译 gradlew clean assembleDebug # 2. 安装到设备 adb install app/build/outputs/apk/debug/app-debug.apk # 3. 查看日志(新开一个终端) adb logcat | grep -E "MyApplication|KioskHelper|KioskManager" # 4. 启动应用 adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry ``` **期望看到的日志**: ``` D MyApplication: Application 初始化 D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry D KioskHelper: ✅ 屏幕保持常亮 W KioskHelper: ⚠️ 不是 Device Owner,无法禁用锁屏 ``` 如果看到以上日志,说明**自动初始化成功**!✅ **可用功能**: - ✅ 屏幕常亮 - ✅ 全屏沉浸 - ✅ 自动初始化(无需 JS 调用) - ⚠️ 锁屏禁用(需要 Device Owner) - ⚠️ LockTask 模式(需要 Device Owner) ### 选项 2:完整部署(设置 Device Owner) 适用于生产环境或完整功能测试。 ```bash # 1. 恢复出厂设置(重要!) # 手动操作:设置 → 系统 → 重置 → 恢复出厂设置 # 2. 不要登录任何账号(包括 Google 账号) # 3. 启用 USB 调试 # 设置 → 关于手机 → 连续点击版本号 7 次 → 开发者选项 → USB 调试 # 4. 编译并安装 gradlew assembleRelease adb install app/build/outputs/apk/release/app-release.apk # 5. 设置为 Device Owner adb shell dpm set-device-owner com.YuyeTech.HeartRate/com.ble.mylockview.admin.KioskDeviceAdminReceiver # 6. 验证是否成功 adb shell dumpsys device_policy | grep "Device Owner" # 7. 启动应用并查看日志 adb logcat -c adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry adb logcat | grep -E "MyApplication|KioskHelper|KioskManager" ``` **期望看到的日志**: ``` D MyApplication: Application 初始化 D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry D KioskHelper: ✅ 锁屏已禁用 D KioskHelper: ✅ 屏幕保持常亮 D KioskManager: ✅ LockTask 启用(一次) ``` **可用功能**: - ✅ 屏幕常亮 - ✅ 全屏沉浸 - ✅ 自动初始化(无需 JS 调用) - ✅ 锁屏禁用 - ✅ LockTask 模式(防止退出) - ✅ 拦截 Home/Back 键 ## 🔧 常用命令 ### 编译命令 ```bash # Debug 版本 gradlew assembleDebug # Release 版本 gradlew assembleRelease # 清理 gradlew clean ``` ### 日志查看 ```bash # 查看 Kiosk 相关日志 adb logcat | grep -E "KioskManager|MyApplication|KioskHelper" # 查看 WiFi 相关日志 adb logcat | grep WifiModule # 查看崩溃日志 adb logcat | grep -E "AndroidRuntime|FATAL" # 清空日志 adb logcat -c ``` ### Device Owner 管理 ```bash # 设置 Device Owner adb shell dpm set-device-owner com.YuyeTech.HeartRate/com.ble.mylockview.admin.KioskDeviceAdminReceiver # 验证 Device Owner adb shell dumpsys device_policy | grep "Device Owner" # 移除 Device Owner(应急) adb shell dpm remove-active-admin com.YuyeTech.HeartRate/com.ble.mylockview.admin.KioskDeviceAdminReceiver ``` ### 应用控制 ```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 # 卸载应用 adb uninstall com.YuyeTech.HeartRate ``` ## 🧪 验证清单 ### ✅ 基础验证(无需 Device Owner) - [ ] 编译成功 - [ ] 安装成功 - [ ] 应用启动正常 - [ ] 日志显示 "✅ 绑定 Kiosk 到: PandoraEntry" - [ ] 屏幕保持常亮不熄灭 - [ ] 状态栏和导航栏隐藏 ### ✅ 完整验证(需要 Device Owner) - [ ] Device Owner 设置成功 - [ ] 日志显示 "✅ 锁屏已禁用" - [ ] 日志显示 "✅ LockTask 启用" - [ ] 按 Home 键无法退出应用 - [ ] 按 Back 键无法退出应用 - [ ] 下拉状态栏后自动重新隐藏 - [ ] 五指长按 5 秒能弹出密码框 - [ ] 输入密码 9527 能退出 Kiosk 模式 ## 🐛 常见问题 ### Q: 编译失败,提示找不到 BuildConfig **A**: 清理重新编译 ```bash gradlew clean gradlew assembleDebug ``` ### Q: 安装失败,提示签名冲突 **A**: 卸载旧版本 ```bash adb uninstall com.YuyeTech.HeartRate adb install app/build/outputs/apk/debug/app-debug.apk ``` ### Q: 没有看到日志 **A**: 检查过滤条件 ```bash # 使用更宽松的过滤 adb logcat | grep -i kiosk # 或者查看所有日志 adb logcat ``` ### Q: Device Owner 设置失败 **错误信息**:`Not allowed to set the device owner because there are already several users on the device` **解决方法**: 1. 恢复出厂设置 2. 移除所有账号 3. 不要在初始设置中登录账号 4. 重新执行设置命令 ### Q: 应用卡死无法退出 **解决方法**: ```bash # 方法 1:退出 LockTask adb shell am task lock stop # 方法 2:强制停止 adb shell am force-stop com.YuyeTech.HeartRate # 方法 3:移除 Device Owner adb shell dpm remove-active-admin com.YuyeTech.HeartRate/com.ble.mylockview.admin.KioskDeviceAdminReceiver ``` ## 📚 详细文档 - **集成总览**:`README_KIOSK_INTEGRATION.md` - **详细配置**:`KIOSK_SETUP_GUIDE.md` - **快速测试**:`QUICK_TEST_GUIDE.md` - **项目结构**:`PROJECT_STRUCTURE.md` ## 🎯 核心代码位置 如果需要修改逻辑,关注以下文件: ### 自动初始化逻辑 **文件**:`app/src/main/java/com/YuyeTech/HeartRate/MyApplication.java` **位置**:`registerActivityLifecycleCallbacks()` → `onActivityCreated()` ### 锁屏控制 **文件**:`app/src/main/java/com/YuyeTech/HeartRate/KioskHelper.java` **方法**:`disableLockScreen()`, `keepScreenOn()`, `enableLockScreen()` ### Kiosk 管理 **文件**:`myLockView/src/main/java/com/ble/mylockview/admin/KioskManager.java` **关键方法**:`attach()`, `enableLockTask()`, `exitKiosk()`, `interceptTouch()` ## 💡 重要提示 1. **Debug vs Release** - Debug 模式:宽松,便于开发调试 - Release 模式:严格,需要 Device Owner 2. **密码安全** - 默认管理员密码:`9527` - 生产环境务必修改:`myLockView/.../KioskManager.java` 第 55 行 3. **开机自启动** - 已集成 BootReceiver - 设备重启后自动启动应用 - 可在 AndroidManifest.xml 中禁用 4. **WiFi 模块** - 需要通过 JS 调用(交互式功能) - 不会自动弹出 - 参考 `myWIFIView/src/main/java/com/ble/mywifiview/WifiModule.java` ## ✨ 成功标志 当你看到以下完整的日志序列时,说明集成成功: **Device Owner 模式**: ``` 01-22 16:30:00.123 D MyApplication: Application 初始化 01-22 16:30:00.234 D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry 01-22 16:30:00.345 D KioskHelper: ✅ 锁屏已禁用 01-22 16:30:00.456 D KioskHelper: ✅ 屏幕保持常亮 01-22 16:30:00.567 D KioskManager: ✅ LockTask 启用(一次) ``` **非 Device Owner 模式**: ``` 01-22 16:30:00.123 D MyApplication: Application 初始化 01-22 16:30:00.234 D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry 01-22 16:30:00.345 D KioskHelper: ✅ 屏幕保持常亮 01-22 16:30:00.456 W KioskHelper: ⚠️ 不是 Device Owner,无法禁用锁屏 01-22 16:30:00.567 D KioskManager: ❌ 非 DeviceOwner,Kiosk 无效(只会提示一次) ``` --- ## 📞 需要帮助? 如果遇到问题,请按照以下步骤: 1. **查看日志** ```bash adb logcat | grep -E "MyApplication|KioskHelper|KioskManager|ERROR" ``` 2. **检查配置** - `AndroidManifest.xml` 中 Application 是否为 `MyApplication` - Device Owner 是否设置成功 - 权限是否正确声明 3. **参考文档** - 详细错误排查:`KIOSK_SETUP_GUIDE.md` → 故障排查章节 - 快速测试流程:`QUICK_TEST_GUIDE.md` 4. **重置设备**(最后手段) ```bash # 移除 Device Owner adb shell dpm remove-active-admin com.YuyeTech.HeartRate/com.ble.mylockview.admin.KioskDeviceAdminReceiver # 卸载应用 adb uninstall com.YuyeTech.HeartRate # 恢复出厂设置 # 手动操作:设置 → 系统 → 重置 ``` --- **祝你好运!** 🚀 如果一切正常,你应该能在 **5 分钟内**完成基础测试,**15 分钟内**完成完整部署。