支持 Android TV 并重用 main Activity

Posted

技术标签:

【中文标题】支持 Android TV 并重用 main Activity【英文标题】:Supporting Android TV and reusing main activity 【发布时间】:2016-02-25 21:06:55 【问题描述】:

我希望 android TV 支持我的应用(该应用目前支持手机和平板电脑)

主要活动非常基本,虽然它确实有两个文本输入(用于帐户登录),但我确信它可以在 Android TV 上使用(似乎可以在模拟器上运行,但要在真正的 Android TV 上进行测试)。

那么在这种情况下,在我的清单中,我应该为LAUNCHERLEANBACK_LAUNCHER 设置一个意图吗?

或者我应该只为LEANBACK_LAUNCHER 设置意图?

【问题讨论】:

如果你想为两种形式使用一个活动,是的,你可以设置两个意图过滤器。 【参考方案1】:

您需要指定两个类别:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

顺便说一句,不建议使用相同的活动布局:

如果您正在修改现有应用以在电视上使用,您的应用应该 不要对电视使用与手机相同的活动布局,并且 片剂。您的电视应用程序的用户界面(或您的电视部分 现有的应用程序)应该提供一个更简单的界面,可以很容易地 在沙发上使用遥控器进行导航。有关指南 为电视设计应用程序,请参阅TV Design 指南。了解更多信息 关于界面布局的最低实现要求 电视,见Building TV Layouts。

参考:http://developer.android.com/training/tv/start/start.html#tv-activity

【讨论】:

是的,但是 OP 可以将电视布局放在 layout-television 资源文件夹中,或者使用 UIManager 类来更改 Activity 的运行方式(如果它是电视)。 老实说,主要活动的界面非常简单。它目前是一个基本的登录表单,但在不久的将来,我将使用网络应用程序将其更改为“无钥匙”PIN 码登录系统(我已经将这种方法用于 webOS 应用程序) 当然,我只是提醒一下 Android TV 指南。在您的情况下,您可以指定答案中所述的两个类别。【参考方案2】:

不要忘记“声明 Leanback 支持”

来自开发者网站“如果您正在开发在移动设备(手机、可穿戴设备、平板电脑等)以及 Android TV 上运行的应用程序,请将 required 属性值设置为 false。如果您将 required 设置为属性值设为 true,您的应用将仅在使用 Leanback UI 的设备上运行。”

<manifest>
<uses-feature android:name="android.software.leanback"
    android:required="false" />
...

【讨论】:

以上是关于支持 Android TV 并重用 main Activity的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 上对 Android TV 的 Play 商店支持

android tv lollipop 支持 WebRTC 吗?

仅适用于 Android TV 的 Android 清单 - 支持的设备太少?

对 Android TV 和手机的多个 apk 支持

Android TV 应用程序不支持 Amazon FireTV

Ridaex TV的Android 4.4版本不支持应用程序