Android TV开发笔记

1.必须在manifest 为activity匹配 Android.intent.category.LEANBACK_LAUNCHER 过滤器。添加这个主要是为了googleplay的区分识别,没有添加相 应过滤器的应用,googleplay是不允许上架的。其实 前段时间我自己做的TV应用没有添加这个过滤器(当时没看官方文档,纯属自己琢磨写的)安装到小米盒子上可完美运行。。

<span class="tag" style="color: rgb(0, 0, 136);"><application</span><span class="pln" style="color: rgb(0, 0, 0);">
  </span><span class="atn" style="color: rgb(136, 34, 136);">android:banner</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"@drawable/banner"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">></span><span class="pln" style="color: rgb(0, 0, 0);">
  ...
  </span><span class="tag" style="color: rgb(0, 0, 136);"><activity</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"com.example.android.MainActivity"</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:label</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"@string/app_name"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">></span><span class="pln" style="color: rgb(0, 0, 0);">

    </span><span class="tag" style="color: rgb(0, 0, 136);"><intent-filter></span><span class="pln" style="color: rgb(0, 0, 0);">
      </span><span class="tag" style="color: rgb(0, 0, 136);"><action</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">android:name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"android.intent.action.MAIN"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
      </span><span class="tag" style="color: rgb(0, 0, 136);"><category</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">android:name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"android.intent.category.LAUNCHER"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"></intent-filter></span><span class="pln" style="color: rgb(0, 0, 0);">
  </span><span class="tag" style="color: rgb(0, 0, 136);"></activity></span><span class="pln" style="color: rgb(0, 0, 0);">

  </span><span class="tag" style="color: rgb(0, 0, 136);"><activity</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"com.example.android.</span><span style="color: inherit;"><span class="atv" style="color: rgb(136, 0, 0);">TvActivity</span></span><span class="atv" style="color: rgb(136, 0, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:label</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"@string/app_name"</span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="atn" style="color: rgb(136, 34, 136);">android:theme</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"@style/Theme.Leanback"</span><span class="tag" style="color: rgb(0, 0, 136);">></span><span class="pln" style="color: rgb(0, 0, 0);">

    </span><span class="tag" style="color: rgb(0, 0, 136);"><intent-filter></span><span class="pln" style="color: rgb(0, 0, 0);">
      </span><span class="tag" style="color: rgb(0, 0, 136);"><action</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">android:name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"android.intent.action.MAIN"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
      </span><span class="tag" style="color: rgb(0, 0, 136);"><category</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">android:name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"</span><span style="color: inherit;"><span class="atv" style="color: rgb(136, 0, 0);">android.intent.category.LEANBACK_LAUNCHER</span></span><span class="atv" style="color: rgb(136, 0, 0);">"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"></intent-filter></span><span class="pln" style="color: rgb(0, 0, 0);">

  </span><span class="tag" style="color: rgb(0, 0, 136);"></activity></span><span class="pln" style="color: rgb(0, 0, 0);">
</span><span class="tag" style="color: rgb(0, 0, 136);"></application></span>
2.尽量避免使用viewpaper,我被这个坑了很久,各种小毛病,引用官方一句话  Sliding between screens can work great on a phone or tablet, but don't try this on a TV! 


3.如果你的应用打算在各个设备(手机、可穿戴、tv),将leanback的required的值设置为false;设置为ture的话你的应用只可以在使用Leanback的设备上。

<span class="tag" style="color: rgb(0, 0, 136);"><manifest></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><uses-feature</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">android:name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"android.software.leanback"</span><span class="pln" style="color: rgb(0, 0, 0);">
        </span><span class="atn" style="color: rgb(136, 34, 136);">android:required</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"false"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    ...
</span><span class="tag" style="color: rgb(0, 0, 136);"></manifest></span>
4.声明Touchscreen属性,这个看个人需要,主要是声明你的app需不需要支持触摸屏输入。值得注意的是,如果你的应用打算在googleplay上架,必须在你的manifest添加此段代码,否则不予上架。

<span class="tag" style="color: rgb(0, 0, 136);"><manifest></span><span class="pln" style="color: rgb(0, 0, 0);">
    </span><span class="tag" style="color: rgb(0, 0, 136);"><uses-feature</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="atn" style="color: rgb(136, 34, 136);">android:name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"android.hardware.touchscreen"</span><span class="pln" style="color: rgb(0, 0, 0);">
              </span><span class="atn" style="color: rgb(136, 34, 136);">android:required</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"false"</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="tag" style="color: rgb(0, 0, 136);">/></span><span class="pln" style="color: rgb(0, 0, 0);">
    ...
</span><span class="tag" style="color: rgb(0, 0, 136);"></manifest></span>

5.TV在上时间未接收到按键处理信号时,tv会周期性的进入休眠模式,关闭电源,通过manifest的重连配置避免此情况。

<span style="color: inherit;"><span class="atn" style="color: rgb(136, 34, 136);">android:configChanges</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="atv" style="color: rgb(136, 0, 0);">"keyboard|keyboardHidden|navigation"</span></span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值