AdpotTV数字标牌播放器:Flutter打造Android TV广告屏,支持离线缓存与实时远程管理
在数字化营销与户外广告快速发展的今天,企业对远程可控、稳定运行、支持离线播放的数字标牌解决方案需求日益增长。传统的广告播放方式往往存在内容更新不及时、设备管理分散、网络依赖过高等问题。
AdpotTV 正是为解决这些痛点而生的专业数字标牌与广告播放应用。它基于 Flutter 框架开发,专为 Android TV 及 Amazon Fire TV 设备设计。应用通过连接后端服务器接收并管理广告活动,在电视屏幕上循环播放图片和视频内容,并将详细的播放数据分析回传至服务器。同时,该应用还支持完整的离线播放、WebSocket实时广告更新以及电视端优化的全屏界面。

- 扫码/授权码配对:通过管理后台生成的6位授权码完成电视设备绑定
- 安全加密认证:设备重启后自动保持登录状态,令牌加密存储
- 自动设备注册:上报硬件元数据(型号、制造商、系统版本)至服务器
- 支持多种媒体格式:
媒体类型 支持格式 图片广告 JPEG、PNG、WebP 视频广告 MP4 - 可配置播放时长:每则广告独立设置显示时长
- 定时排期:支持按开始/结束时间、时区规则自动切换广告
- 自动轮播与循环:广告内容按排期自动循环播放
- 平滑过渡效果:广告切换时支持淡入淡出转场动画
- 空闲画面:无排期广告时显示默认待机画面
| 功能 | 说明 |
|---|---|
| WebSocket实时推送 | 通过Socket.IO接收广告更新,无需手动刷新 |
| 断线重连机制 | 网络断开后自动重连,采用指数退避策略 |
| 离线媒体缓存 | 广告内容下载至本地存储,断网后继续播放 |
| 连接状态指示 | 屏幕悬浮显示网络连接状态(可隐藏) |
| 服务器不可用降级 | 后端不可达时播放本地已缓存内容 |
- 广告播放时长追踪:记录每则广告的实际观看时长
- 心跳服务:每30秒向服务器上报设备运行状态
- 批量事件上传:聚合分析数据后批量发送,减少网络开销
- 本地SQLite队列:断网时分析数据暂存本地,恢复后自动补传
- 全屏沉浸式显示:自动隐藏系统状态栏和导航栏
- 强制横屏锁定:适配电视横屏使用场景
- 常亮屏幕唤醒锁:24/7不间断广告播放
- D-pad遥控器兼容:配对界面支持遥控器方向键操作
- 深色渐变主题:视觉友好,适合长时间展示
- 秘密调试面板:通过Konami指令(上上下下左右左右BA)激活隐藏调试层
- 实时状态显示:当前播放内容索引、播放状态、离线状态
- 结构化日志系统:便于问题排查
- 多环境配置:支持生产、预发布、本地开发环境快速切换
| 层级 | 技术栈 | 说明 |
|---|---|---|
| 框架 | Flutter 3.41 + Dart 3 | 跨平台高性能UI框架 |
| 状态管理 | Riverpod 2.0(代码生成) | 响应式状态管理 |
| 路由导航 | go_router | 声明式路由管理 |
| HTTP客户端 | Dio | 网络请求拦截与日志 |
| 实时通信 | Socket.IO Client | WebSocket长连接 |
| 视频播放 | video_player | MP4视频解码与播放 |
| 媒体缓存 | flutter_cache_manager | 图片/视频本地缓存 |
| 本地数据库 | sqflite | 离线分析数据存储 |
| 安全存储 | flutter_secure_storage | 令牌加密存储 |
| 网络监测 | connectivity_plus | 实时网络状态检测 |
| 数据模型 | Freezed + JSON Serializable | 不可变数据模型 |
| 设备信息 | device_info_plus | 获取硬件参数 |
| 屏幕常亮 | wakelock_plus | 阻止系统休眠 |
| 组件 | 版本要求 |
|---|---|
| Flutter SDK | 3.41.0 或更高 |
| Dart | 3.0.0 或更高 |
| Android SDK | API Level 21+(Android 5.0+) |
| 目标设备 | Android TV / Amazon Fire TV |
| 后端服务 | Adpot Pro REST API + Socket.IO |
| 适用对象 | 说明 |
|---|---|
| 户外广告网络运营商 | 远程管理分布在多个地点的广告屏,实时更新广告内容 |
| 连锁零售门店 | 统一或分区推送产品促销、新品上市等店内广告 |
| 餐厅与咖啡厅 | 数字菜单看板、特价推荐、品牌宣传视频轮播 |
| 酒店与度假村 | 大堂欢迎信息、会议活动指引、周边景点推荐 |
| 机场与交通枢纽 | 航班信息与商业广告混合播放 |
| 企业办公环境 | 内部通知、企业文化宣传、员工活动展示 |
| 医疗机构 | 候诊区健康宣教、专家介绍、科室指引 |
| 健身房与运动中心 | 课程表、教练介绍、会员活动推广 |
- 场景一(连锁快餐店数字菜单板):20家门店各配置一台Android TV设备,总部通过Adpot Pro后台统一管理早餐/午餐/晚餐时段的菜单广告,早餐时段自动播放套餐组合图,午餐时段切换为新品汉堡视频广告,非营业时段显示品牌Logo待机画面。
- 场景二(购物中心多楼层广告网络):商场在电梯口、中庭、走廊部署30块屏幕,分别归属不同广告位资源。广告主购买特定时段和屏幕组,系统自动按排期推送对应的视频广告,播放数据回传用于广告结算。
- 场景三(公交站台信息屏):设备部署于户外候车亭,偶发网络不稳定情况下,设备仍可播放昨日缓存的广告内容。网络恢复后自动上报离线期间的播放记录,确保数据完整性。
购买后获得的完整资源包括:
| 内容 | 说明 |
|---|---|
| Flutter完整源码 | 42个Dart文件,清晰的MVVM式架构 |
| Riverpod状态管理 | 含代码生成配置 |
| API集成层 | REST + Socket.IO通信封装 |
| 本地SQLite数据库 | 分析数据持久化 |
| 媒体缓存系统 | 离线播放核心实现 |
| 心跳与数据同步服务 | 自动定时任务 |
| 完整UI界面 | 配对页、播放页、空闲页、调试叠层 |
| HTML文档 | 安装与配置指南 |
- 必须先部署后端:购买并部署AdSpot Pro后端(独立于本项目的CodeCanyon产品)
- 修改服务器地址:在
lib/core/config/app_config.dart中设置后端API地址 - 运行代码生成器:执行
dart run build_runner build - 构建APK:使用Flutter构建Android TV专用的APK或App Bundle
- 侧载安装:通过U盘或ADB将APK安装至Android TV设备
- 真正离线可用:广告内容缓存至本地,断网后继续播放无需干预。
- 实时远程更新:WebSocket推送,修改广告内容后屏幕即刻生效,无需派人现场操作。
- 完整的分析追踪:播放时长、设备心跳、断网数据补传,广告投放效果可量化。
- 电视端深度优化:全屏沉浸、遥控器适配、常亮锁定、横屏强制,专为公共显示场景设计。
- 稳定的网络容错:断线重连(指数退避)+ 离线队列 + 优雅降级,适应复杂网络环境。
- 开发友好:Flutter跨平台架构 + Riverpod状态管理 + 多环境配置 + 隐藏调试面板,便于二次开发和问题定位。
- 轻量高效:仅42个Dart文件,代码结构清晰,易于定制品牌UI。
| 限制项 | 说明 |
|---|---|
| 设备平台 | 专为Android TV和Fire TV设计,不适用于手机或平板电脑 |
| 后端依赖 | 必须配合AdSpot Pro后端使用,无法独立运行 |
| 网络要求 | 首次运行需要网络完成设备配对与内容下载 |
| 应用商店 | 本项目为源码,需自行编译并侧载安装,不通过Google Play分发 |
| 硬件兼容性 | 建议使用原生Android TV设备(如NVIDIA Shield、小米电视、索尼电视等) |
AdpotTV 是一款专业级、企业就绪的数字标牌播放器应用,基于Flutter构建,运行于Android TV硬件平台。它以完整的离线播放能力、实时远程管理、精准的数据分析为核心竞争力,满足了从单店到成百上千屏幕的广告网络运营需求。
对于户外广告运营商、连锁零售品牌、餐饮企业、酒店集团以及任何需要远程管理公共屏幕内容的组织,AdpotTV 提供了一套成熟、稳定、可定制的技术解决方案。配合Adpot Pro后端,您可以快速搭建覆盖全渠道的数字标牌网络,实现广告内容的集中管控与播放效果的可量化追踪。
如果您正在为Android TV设备寻找一套支持离线播放、实时更新、数据分析的数字标牌播放器源码,Adpot TV值得深入评估。
