aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/devices/tv/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'zh-cn/devices/tv/index.html')
-rw-r--r--zh-cn/devices/tv/index.html38
1 files changed, 19 insertions, 19 deletions
diff --git a/zh-cn/devices/tv/index.html b/zh-cn/devices/tv/index.html
index 7a0436f6..ca727188 100644
--- a/zh-cn/devices/tv/index.html
+++ b/zh-cn/devices/tv/index.html
@@ -22,7 +22,7 @@
<img style="float: right; margin: 0px 15px 15px 15px;" src="images/ape_fwk_hal_tv.png" alt="Android TV HAL 图标"/>
-<p>Android TV Input Framework (TIF) 简化了向 Android TV 传送直播内容的过程。Android TIF 为制造商提供了一个标准 API,用于创建能够控制 Android TV 的输入模块,并让他们可以通过 TV Input 发布的元数据来搜索和推荐直播电视内容。</p>
+<p>Android TV 输入框架 (TIF) 简化了向 Android TV 传送直播内容的过程。Android TIF 为制造商提供了一个标准 API,用于创建能够控制 Android TV 的输入模块,并让他们可以通过 TV Input 发布的元数据来搜索和推荐直播电视内容。</p>
<p>此框架的目的并不在于实施电视标准或区域性要求,而是在于让设备制造商不必重新实现就能够更轻松地满足区域性数字电视广播标准。对于想要创建自定义 TV Input 的第三方应用开发者来说,本部分文档可能也非常实用。</p>
<h2 id="components">组件</h2>
@@ -53,7 +53,7 @@
<ol>
<li>用户看到 TV 应用(一款第三方应用无法替代的系统应用)并与该应用进行互动。
</li><li>TV 应用显示来自 TV Input 的 AV 内容。
- </li><li>TV 应用无法直接与 TV Input 通信。TV Input Manager 可为 TV 应用识别 TV Input 的状态。有关使用限制的更多详情,请参阅下文的“TV Input Manager”部分。<em></em>
+ </li><li>TV 应用无法直接与 TV Input 通信。TV Input Manager 可为 TV 应用识别 TV Input 的状态。有关相关限制的更多详情,请参阅下文的“TV Input Manager”部分。<em></em>
</li></ol>
<h2 id="permissions">权限</h2>
@@ -63,7 +63,7 @@
</li><li>只有系统 TV Input 可以通过 TV Input Manager Service 访问 TV Input HAL。系统通过 TV Input Manager 会话对 TV Input 进行一对一访问。
</li><li>第三方 TV Input 拥有对 TV Provider 数据库的访问权限(软件包已锁定),只能对匹配的软件包行进行读写。
</li><li>第三方 TV Input 可以显示自己的内容,也可显示来自设备制造商提供的直通 TV Input(如 HDMI1)上的内容。它们不能显示来自非直通 TV Input(如内置调谐器或 IPTV 调谐器)的内容。
- </li><li>硬件 TV Input 应用的 <code>TV_INPUT_HARDWARE</code> 权限,向 TV Input Manager Service 发送信号,以通知 TV Input Service 在启动时调用 TV Input Manager Service 并添加其 TV Input。借助此权限,硬件 TV Input 应用可通过一个 TV Input Service 支持多个 TV Input,并能够动态地添加和移除支持的 TV Input。
+ </li><li>硬件 TV Input 应用的 <code>TV_INPUT_HARDWARE</code> 权限,向 TV Input Manager Service 发送信号,以通知 TV Input Service 在启动时调用 TV Input Manager Service 并添加其 TV Input。借助此权限,硬件 TV Input 应用可通过一项 TV Input Service 支持多个 TV Input,并能够动态地添加和移除支持的 TV Input。
</li></ul>
<h2 id="tv_provider">TV Provider</h2>
@@ -88,14 +88,15 @@
<p>TV Provider 支持频道 (<code>android.provider.TvContract.Channels</code>) 和节目 (<code>android.provider.TvContract.Programs</code>) 表格中的结构化数据。这些表格由 TV Input 和系统应用(如 TV 应用)进行填充和访问。这些表格具有四种类型的字段:</p>
<ul>
- <li><strong>显示</strong>:显示字段包含应用可能希望向用户显示的信息,如频道名称 (<code>COLUMN_DISPLAY_NAME</code>) 或编号 (<code>COLUMN_DISPLAY_NUMBER</code>) 或正在观看的节目的标题。
+ <li><strong>显示</strong>:显示字段包含应用可能希望向用户显示的信息,如频道名称 (<code>COLUMN_DISPLAY_NAME</code>) 或编号 (<code>COLUMN_DISPLAY_NUMBER</code>) 或正在观看的节目的名称。
</li><li><strong>元数据</strong>:根据相关标准,有三个字段可用于识别内容,如频道的传输流 ID (<code>COLUMN_TRANSPORT_STREAM_ID</code>)、原始网络 ID (<code>COLUMN_ORIGINAL_NETWORK_ID</code>) 和服务 ID (<code>COLUMN_SERVICE_ID</code>)。
- </li><li><strong>内部数据</strong>:用于自定义 TV Input 用途的字段。<br />某些字段(如 <code>COLUMN_INTERNAL_PROVIDER_DATA</code>)是可自定义的 BLOB 字段,TV Input 可以在这些字段中存储有关其频道或节目的任意元数据。
+ </li><li><strong>内部数据</strong>:用于 TV Input 自定义用途的字段。<br />
+ 某些字段(如 <code>COLUMN_INTERNAL_PROVIDER_DATA</code>)是可自定义的 BLOB 字段,TV Input 可以在这些字段中存储有关其频道或节目的任意元数据。
</li><li><strong>标记</strong>:标记字段表示是否应禁止搜索、浏览或查看某个频道。只能在频道级别进行此设置。所有节目均应遵循此项频道设置。
<ul>
<li><code>COLUMN_SEARCHABLE</code>:在某些地区可能要求禁止搜索某些频道。<code>COLUMN_SEARCHABLE = 0</code> 表示不应在搜索结果中显示此频道。
</li><li><code>COLUMN_BROWSABLE</code>:仅对系统应用可见。禁止应用浏览频道。<code>COLUMN_BROWSABLE = 0</code> 表示频道列表中不应包含此频道。
- </li><li><code>COLUMN_LOCKED</code>:仅对系统应用可见。禁止未输入 PIN 码的无效帐号观看频道。<code>COLUMN_LOCKED = 1</code> 表示此频道应受家长控制保护。
+ </li><li><code>COLUMN_LOCKED</code>:仅对系统应用可见。禁止未输入 PIN 码的无效帐号查看频道。<code>COLUMN_LOCKED = 1</code> 表示此频道应受家长控制保护。
</li></ul>
</li></ul>
@@ -118,7 +119,7 @@
<ul>
<li>列出 TV Input 并查看其状态</li><li>创建会话并管理监听器</li></ul>
-<p>对于会话,TV Input(除了可使用 <code>TvContract.buildChannelUriForPassthroughInput()</code> 调谐的直通 TV Input)只能由 TV 应用调谐至已被 TV 应用添加到 TV Provider 数据库中的 URI。TV Input 也可以自己设置音量。由设备制造商(签名应用)或安装于系统分区中的其他应用提供和签名的 TV Input 具有对整个 TV Provider 数据库的访问权限。此访问权限可用于构建应用,以浏览和搜索所有可用的电视频道和节目。</p>
+<p>对于会话,TV Input(除了可使用 <code>TvContract.buildChannelUriForPassthroughInput()</code> 调谐到的直通 TV Input)只能由 TV 应用调谐至已被 TV 应用添加到 TV Provider 数据库中的 URI。TV Input 也可以自己设置音量。由设备制造商(签名应用)或安装于系统分区中的其他应用提供和签名的 TV Input 可以访问整个 TV Provider 数据库。此访问权限可用于构建应用,以在所有可用的电视频道和节目中进行浏览和搜索。</p>
<p>应用可以通过 <code>android.media.tv.TvInputManager</code> 创建和注册一个 <code>TvInputCallback</code>,并在 TV Input 的状态发生改变或添加/移除 TV Input 时进行该回调。例如,TV 应用可以在 TV Input 断开连接时做出以下响应:显示该 TV Input 已断开连接并阻止它被选中。</p>
@@ -135,7 +136,7 @@
<img src="images/TIF_HDMI_TV_Input.png" alt="Android TV 系统输入源"/>
<p class="img-caption"><strong>图 3.</strong> Android TV 系统输入源</p>
-<p>在上述示例中,由设备制造商提供的 TV Input 是可信输入源,并拥有对 TV Provider 的完全访问权限。作为直通 TV Input,它不会向 TV Provider 注册任何频道或节目。要获取用于引用直通输入源的 URI,请使用 <code>android.media.tv.TvContract</code> 实用程序方法 <code>buildChannelUriForPassthroughInput(String inputId)</code>。TV 应用与 TV Input Manager 进行通信,从而访问 HDMI TV Input。</p>
+<p>在上述示例中,由设备制造商提供的 TV Input 是可信输入源,并拥有对 TV Provider 的完全访问权限。作为直通 TV Input,它不会向 TV Provider 注册任何频道或节目。要获取用于引用直通输入源的 URI,请使用 <code>android.media.tv.TvContract</code> 实用程序方法 <code>buildChannelUriForPassthroughInput(String inputId)</code>。TV 应用会与 TV Input Manager 进行通信,从而访问 HDMI TV Input。</p>
<h3 id="built-in_tuner_example">内置调谐器示例</h3>
@@ -158,13 +159,13 @@
<img src="images/TIF_PIP-PAP.png" alt="Android TV KeyEvent"/>
<p class="img-caption"><strong>图 6.</strong> Android TV KeyEvent</p>
-<p>上图显示了遥控器上的按钮事件如何传递到特定的 TV Input,从而实现画中画 (PIP) 显示。按下按钮的操作由设备制造商提供的硬件驱动程序进行解析,从而将硬件扫描码转换为 Android 键码,并将它们作为 <a href="http://developer.android.com/reference/android/view/KeyEvent.html">KeyEvent</a> 传递到标准的 Android <a href="/devices/input/overview.html">输入通道</a> <code>InputReader</code> 和 <code>InputDispatcher</code> 函数。当 TV 应用获得焦点时,它们就会在 TV 应用上触发事件。</p>
+<p>上图显示了遥控器上的按钮事件如何传递到特定的 TV Input,从而实现画中画 (PIP) 显示。按下按钮的操作由设备制造商提供的硬件驱动程序进行解析,从而将硬件扫描码转换为 Android 键码,并将它们作为 <a href="http://developer.android.com/reference/android/view/KeyEvent.html">KeyEvent</a> 传递到标准的 Android <a href="/devices/input/overview.html">输入管道</a> <code>InputReader</code> 和 <code>InputDispatcher</code> 函数。当 TV 应用获得焦点时,它们就会在 TV 应用上触发事件。</p>
-<p>只有系统 TV Input 才有资格接收 <code>InputEvents</code>(前提是这些系统 TV Input 具有 <code>RECEIVE_INPUT_EVENT</code> 系统权限)。TV Input 负责确定要消费哪些 InputEvent,并允许 TV 应用处理它不需要消费的按键。</p>
+<p>只有系统 TV Input 才有资格接收 <code>InputEvents</code>(前提是这些系统 TV Input 具有 <code>RECEIVE_INPUT_EVENT</code> 系统权限)。TV Input 负责确定要消耗哪些 InputEvent,并允许 TV 应用处理它不需要消耗的按键。</p>
<p>TV 应用负责确定哪些系统 TV Input 处于有效状态(即用户已选择)、区分传入的 <code>KeyEvents</code> 并将它们路由到正确的 TV Input Manager 会话,以及调用 <code>dispatchInputEvent()</code> 以将事件传递到相关联的 TV Input。</p>
-<h3 id="mheg-5_input_example">MHEG-5 输入源示例</h3>
+<h3 id="mheg-5_input_example">MHEG-5 输入示例</h3>
<p>下图详细说明了 <code>KeyEvents</code> 如何通过 Android TIF 进行路由。</p>
@@ -182,7 +183,7 @@
</li><li><code>KeyEvents</code>(例如:红色按钮)作为 <code>InputEvents.</code> 被传递到处于有效状态的 TV Input。
</li><li>系统 TV Input 与 MHEG-5 堆栈进行集成,并拥有 <code>RECEIVE_INPUT_EVENT</code> 系统权限。
</li><li>TV Input 在接收到激活键码(例如:红色按钮)后激活广播应用。
- </li><li>TV Input 将 <code>KeyEvents</code> 当做 <code>InputEvents</code> 进行消费,然后广播应用获得焦点并处理 <code>InputEvents</code> 直到应用被关闭。
+ </li><li>TV Input 将 <code>KeyEvents</code> 当做 <code>InputEvents</code> 进行消耗,然后广播应用获得焦点并处理 <code>InputEvents</code> 直到应用被关闭。
</li></ol>
<p class="note"><strong>注意</strong>:第三方 TV Input 从不接收按键事件。</p>
@@ -193,8 +194,7 @@
<h2 id="tv_app">TV 应用</h2>
-<p>系统 TV 应用向用户呈现直播电视内容。Android 平台提供了一个参考 TV 应用 (Live TV),设备制造商可以直接按原样使用该应用、对其进行定制、扩展或将其替换掉。
-Android 开源项目中提供了<a href="https://android.googlesource.com/platform/packages/apps/TV/">源代码</a>,您可以按照<a href="/devices/tv/reference-tv-app.html">参考 TV 应用</a>一文中的说明开始构建 TV 应用。</p>
+<p>系统 TV 应用向用户呈现直播电视内容。Android 平台提供了一个参考 TV 应用 (Live TV),设备制造商可以直接按原样使用该应用、对其进行定制、扩展或将其替换掉。Android 开源项目中提供了<a href="https://android.googlesource.com/platform/packages/apps/TV/">源代码</a>,您可以按照<a href="/devices/tv/reference-tv-app.html">参考 TV 应用</a>一文中的说明开始构建 TV 应用。</p>
<p>设备制造商可以扩展他们的 TV 应用来实现适用于特定设备制造商或国家/地区的功能,但这不属于 TIF 或参考 TV 应用的职责范畴。</p>
@@ -265,7 +265,7 @@ Android 开源项目中提供了<a href="https://android.googlesource.com/platfo
<p class="img-caption"><strong>图 12.</strong> 表示有可用新频道来源的通知。</p>
<p>如果用户通过通知进行操作,他们可以选择设置频道来源,如图 10 所示。</p>
-<p>请参阅<a href="http://developer.android.com/training/tv/tif/tvinput.html#setup">定义您的 TV Input Service</a>,了解开发者对此领域的期望。</p>
+<p>请参阅<a href="http://developer.android.com/training/tv/tif/tvinput.html#setup">定义您的 TV Input Service</a>,了解相关的开发者要求。</p>
<h4 id="customize_the_channel_list">自定义频道列表</h4>
@@ -287,7 +287,7 @@ Android 开源项目中提供了<a href="https://android.googlesource.com/platfo
<p>为确保最佳用户体验,制造商必须实现以下 TV 应用功能:纳入能够满足全局搜索请求的搜索结果。Live TV 提供了一种实现方法(请参阅 <a href="https://android.googlesource.com/platform/packages/apps/TV/+/android-live-tv/src/com/android/tv/search/TvProviderSearch.java">com.android.tv.search.TvProviderSearch</a>),它可提供来自第三方输入源(对于平台兼容性而言是必要的)以及内置输入源的结果。</p>
-<h4 id="time-shifting">时移</h4>
+<h4 id="time-shifting">时光平移</h4>
<p>对于运行 Android 6.0 及更高版本的设备,TV 应用必须支持 Android 框架<a href="https://developer.android.com/reference/android/media/tv/TvView.html">时移 API</a>。此外,制造商必须在 TV 应用中实现播放控件,让用户可以对播放内容执行暂停、继续、快退和快进播放等操作。
</p>
<p>对于支持时移的 TV Input,TV 应用需显示播放控件。
@@ -333,8 +333,8 @@ Android 开源项目中提供了<a href="https://android.googlesource.com/platfo
<ul>
<li><a href="/compatibility/android-cdd.pdf">Android CDD</a> 和开发者 API 文档是最具权威性的参考资料。
- </li><li>CTS 验证程序会在兼容性测试计划过程中执行 API。对照 Live TV 运行 CTS 验证程序可能是一种在第三方输入源环境中查看 EPG、搜索、家长控制和其他要求的实用方法。
- </li><li>请参阅<a href="http://developer.android.com/training/tv/tif/tvinput.html#setup">定义您的 TV Input Service</a>,了解开发者对此领域的期望。
+ </li><li>CTS 验证程序会在兼容性测试计划过程中执行 API。对 Live TV 运行 CTS 验证程序可能是一种在第三方输入源环境中查看 EPG、搜索、家长控制和其他要求的实用方法。
+ </li><li>请参阅<a href="http://developer.android.com/training/tv/tif/tvinput.html#setup">定义您的 TV Input Service</a>,了解相关的开发者要求。
</li></ul>
<h2 id="parental_control">家长控制</h2>
@@ -406,7 +406,7 @@ Android 开源项目中提供了<a href="https://android.googlesource.com/platfo
<ul>
<li>MHEG:原生堆栈
</li><li>电视文字广播:原生堆栈
- </li><li>HbbTV:由 Opera 浏览器修改过的 webkit
+ </li><li>HbbTV:Vewd Software 提供的 HbbTV 解决方案
</li></ul>
<p>在 Android L 版本中,Android TV 希望设备制造商针对区域性电视堆栈使用系统集成器或 Android 解决方案,将 Surface 传递到电视软件堆栈,或传递与传统堆栈进行交互所需的按键代码。</p>