目录
一、TIF 基本概念
1. TIF的概念
TIF(TV Input Framework) 是 Google 为 Android TV 设计的标准化开发框架,旨在统一电视信号源(如 HDMI、DTV、IPTV)的管理和交互。其核心目标包括:
-
硬件抽象:通过 HAL(Hardware Abstraction Layer)层屏蔽不同电视信号硬件的差异。
-
协议标准化:定义输入模块(TV Input)的开发接口,支持第三方扩展。
-
系统集成:与 Android TV 系统深度整合,支持元数据驱动、全局搜索、多屏联动等功能。
2. TIF 的历史演进
- 2014 年(Android 5.0 Lollipop):TIF 首次随 Android TV 发布,支持 HDMI 和 DTV 输入。
- 2016 年(Android 7.0 Nougat):引入
Tuner HAL
,优化调谐器资源管理。 - 2020 年(Android 11):增强对云游戏和虚拟输入源的支持,优化低延迟渲染。
二、TIF 核心架构与模块
1.系统架构分层
TIF 采用分层设计,分为四层:
-
应用层:TV 应用(如系统默认的 Live Channels)和第三方应用。
-
框架层:
TvInputManager
、TvProvider
和 Leanback 支持库。 -
服务层:
TvInputManagerService
、TvInputHardwareManager
。 -
硬件层:
tv_input.hal
、调谐器驱动、HDMI-CEC 控制器。
2.TIF 的底层实现原理
TIF 的实现基于以下核心技术:
- AIDL(Android Interface Definition Language)
用于跨进程通信(IPC),例如:
// TvInputManagerService 与输入模块的通信接口
interface ITvInputService {
void createSession(IBinder sessionToken, ITvInputSessionCallback callback);
void notifyHardwareAdded(TvInputHardwareInfo hardwareInfo);
}
- Content Provider 机制
通过 TvProvider
(URI:content://android.media.tv
)管理频道、节目元数据:
-- 频道表结构
CREATE TABLE channels (
_id INTEGER PRIMARY KEY,
package_name TEXT, -- 输入模块所属应用
input_id TEXT, -- 输入源 ID
type TEXT -- 类型(如 HDMI、TUNER)
);
三、TIF 核心组件详解
1. 组件架构图
+-------------------+ +-------------------+
| TV 应用 |<--->| TvInputManager |
+-------------------+ +-------------------+
↑ ↓
+-----------------------+
| TvInputManagerService |
+-----------------------+
↑ ↓
+-------------------+ +-------------------+
| TvInputService | | TvInputHardware |
| (第三方输入模块) | | (HAL 实现层) |
+-------------------+ +-------------------+