前言
安卓开发不仅限于 android phone开发,还包括 android wear、android car app、android things等一系列安卓设备。在这里结合官方文档以及自己遇见的坑总结下。帮助大家少踩点坑。嘿嘿!!!
一、智能TV简介
1、 简介
如果你用过智能电视你就会发现这个页面是比较常见的,和手机的home一样,他就是常见智能电视机的home页。
1、上述的Apps 、Play Next、Play Movie &TV 你可以理解为不同的
频道
。
2、每个频道内部都有许多卡片,这些卡片就是不同的
节目
。
3、其实我们开发一款app也可以吧app添加到频道,这时系统的桌面会在频道行末尾再添加一个我们自己的频道行。
4、我们还可以为频道添加节目卡片,同时这些节目卡片还可以添加到 watch next 系统频道中。也就是同一个节目可以添加到不同的频道。
2、TV优点
Android 提供了针对在大屏设备(如高清电视)上运行的应用进行优化的丰富用户体验。TV 应用带来了新的体验,让用户可以舒服地躺在沙发上愉悦地享受。
二、模拟器 & Hello World
TV不像手机,人手一台。所以要写demo模拟器就是必选装备啦。
ps:模拟器和真机还是有区别的,千万不要依赖模拟器,比如真机TV是没有GPS硬件的然而模拟器模拟提供了GPS硬件。(有关TV不支持的硬件功能后面会总结)
1、模拟器
这个很简单,作为安卓开发者想必模拟器的创建大家都熟悉了吧,这里我们使用studio的AVD模拟个TV模拟器即可。
2、Hello World
其实,手机项目的hello world项目就 so easy 啦!这里我们就创建个手机项目即可,一样可以运行在TV智能电视上。后面我们再修改这个项目,使他成为个真正的TV项目。
三、TV应用入门
1、同是安卓设备,所以我们可以根据自身所掌握的安卓知识来构建TV应用。我们也可以根据TV设计的规则来拓展当前的app,使其支持TV设备。但是
TV 与手机和平板电脑设备在用户交互模式上差异很大。手机平板一般通过触摸屏来进行交互。但是TV上您必须设计新的布局,并且只需使用方向键和选择按钮便可完成导航(因为TV使用遥控器)。
2、
下面就把我们的手机版hello world 改为合格的TV应用.
1、必须满足条件
- 将您的 SDK 工具更新为 24.0.0 或更高版本
- 将您的 SDK 平台更新为 Android 5.0 (API 21) 或更高版本
2、把Activity声明为TV Activity
1、声明:很简单,
给我们的activity添加一个category即可
(LEANBACK_LAUNCHER,具体参看下xml代码)
2、解释:intent过滤器可将您的应用
标识为支持 TV 模式
,并让 Google Play 将其识别为 TV 应用。这个category就是个重要的标识。
ps:注意:如果您不在应用中包含 CATEGORY_LEANBACK_LAUNCHER intent 过滤器,那么用户在 TV 设备上运行 Google Play 时将看不到您的应用。此外,如果您的应用没有此过滤器,那么当您使用开发者工具将其加载到 TV 设备上时,该应用不会出现在 TV 界面中。
<activity
android:name=".MainActivity"
android:banner="@drawable/app_icon_your_company"
android:icon="@drawable/app_icon_your_company"
android:label="@string/app_name"
android:logo="@drawable/app_icon_your_company"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW"/>
<action android:name="android.intent.category.LAUNCHER"/>
// 添加这个category
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
3、Leanback 支持
Android TV 要求满足Leanback 界面设计规则
。如果您要开发一款在移动设备(手机、穿戴式设备、平板电脑等)以及 Android TV 上都可运行的应用,请将 required 属性值设为 false。如果您将 required 属性值设为 true。表名您的应用将只能在使用 Leanback 界面的设备上运行。
<manifest>
<uses-feature android:name="android.software.leanback"
android:required="false" />
...
</manifest>
4、声明触屏为非必须条件
TV不支持触摸屏硬件。您必须在应用清单中声明触摸屏并非必备条件(如本示例代码中所示),否则您的应用将不会出现在 TV 设备上的 Google Play 中。
<manifest>
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
...
</manifest>
5、提供主屏幕横幅
1、当你的应用设置了 Leanback 启动器(android.intent.category.LEANBACK_LAUNCHER)你还需要提供一张banner图片。banner可以设置在application节点,也可以单独设置给每个activity节点。
2、横幅建议为 xhdpi 资源,尺寸为 320 x 180 像素。
3、
banner出现位置
为
主屏幕的应用
和
游戏行中的应用启动点。
<application
...
android:banner="@drawable/banner" >
...
</application>
6、run app
经过上述更改后你的app就差不多成为一个合格的TV应用了。是不是和手机桌面的图标优点差异,哈哈这就是banner的效果。
四、补充
1、安卓TV支持的编码器、协议和格式
2、androidX支持库
Jetpack 包含用于 TV 应用的 androidx 软件包库。这些库为 TV 设备提供了 API 和用户界面微件。
The end