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 16(API 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:
$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。
安装与深链验证
& "$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,以便后续安全升级。