Files
XQKqueue/android/README.md

58 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Android 原生公示屏 APK
这是景区排队叫号系统的原生 Android 大屏应用。应用直接请求公开展示接口并使用 Android Views 绘制页面,不再加载网页,也不依赖 Android System WebView。
## 页面与数据流
- 默认打开总览页,对应 `https://queue.nianxx.cn/admin/display` 的业务数据。
- 总览每 5 秒请求 `GET /api/display/overview`,展示项目卡片;总览状态不会创建播报任务。
- 点击或使用遥控器确认项目卡片后,进入该项目详情,对应 `/display/{项目编号或公示 Token}`
- 项目详情每 3 秒请求一次 `GET /api/display/{identifier}/snapshot`。同一份快照同时更新界面并进行新叫号检测,不会重复请求。
- 返回键从项目详情回到总览;在总览再次返回会退出应用。
- 支持以 `https://queue.nianxx.cn/admin/display``https://queue.nianxx.cn/display/{identifier}` 作为 Android 深链启动。
## 现场能力
- 原生浅色景区大屏界面:总览自适应项目网格,详情显示当前叫号、四项统计和四行等候预估。
- 固定横屏、沉浸式全屏并保持屏幕常亮;布局使用 dp/sp 和可用窗口尺寸,适配 1920×1080 横屏及不同显示密度。
- 支持触摸、遥控器方向键、确认键和清晰的焦点状态。
- 有缓存数据时,断网不会清空大屏,而是在顶部显示连接状态和上次更新时间;首次加载失败可直接重试。
- 预告超过四行时每 6 秒翻页3 秒数据刷新不会重置当前页。
- 首次进入或从后台恢复时,第一份项目快照只建立叫号基线,避免重复播报屏幕上已有号码。
- 发现新叫号后使用 APK 内置普通话音频和媒体音量通道连续播报三遍;快速连续叫号时按批次顺序排队,确保每批都完整播报三遍。
- 播报通过流式 `AudioTrack` 输出并申请临时媒体音频焦点,避免与电视上的其他媒体源同时混播;若其他应用持续占用音频焦点,本次播报会失败并提示检查播放源。
- 离开项目页或应用进入后台时,立即停止轮询和当前/待播语音。
## 横屏兼容说明
应用通过 `screenOrientation="landscape"` 固定横屏。Android 16API 36默认可能在 `sw600dp` 及以上大屏忽略方向限制,因此 `MainActivity` 同时声明 Android 16 提供的临时兼容属性,使 targetSdk 36 的专用公示屏继续使用横屏兼容模式。
该兼容属性从 targetSdk 37 起不再生效;升级 targetSdk 前需要重新验证目标设备策略。设备厂商、设备所有者或桌面窗口模式仍可能覆盖应用方向请求。
## 设备要求
- 推荐 1920×1080 横屏。
- 叫号音频已内置在 APK 中,无需安装或启用系统中文 TTS 引擎。
- 设备媒体音量已打开,音频输出路由已连接到大屏扬声器。
- 设备能够通过 HTTPS 访问 `https://queue.nianxx.cn`
## 构建
需要 JDK 17+、Android SDK 36 和 Build Tools 36.1.0
```powershell
$env:ANDROID_HOME = 'C:\Users\你的用户名\AppData\Local\Android\Sdk'
.\gradlew.bat testDebugUnitTest lintDebug assembleDebug
```
可安装 APK 位于 `app/build/outputs/apk/debug/app-debug.apk`。当前版本为 `versionCode 9``versionName 1.5.2`
## 安装与深链验证
```powershell
& "$env:ANDROID_HOME\platform-tools\adb.exe" install -r .\app\build\outputs\apk\debug\app-debug.apk
& "$env:ANDROID_HOME\platform-tools\adb.exe" shell am start -a android.intent.action.VIEW -d 'https://queue.nianxx.cn/display/YYHHC'
```
Debug APK 适合现场安装验证;正式发布前应使用单位长期保管的 Android 签名证书构建 Release APK以便后续安全升级。