Android TV机顶盒开发总结

写在前面

前几天看了LOL洲际赛。好久没赢的LPL赢了,嗯对,抗韩成功了,心血澎拜到想写篇大作。然而总感觉怪怪的,想想算了吧。当LetMe传送拆塔偷掉对方基地的时候,解说忍不住哭了。是的,LPL太需要一个冠军了。然而成功的那一刻,所有观众内心激动波澜壮阔的时候,给LetMe镜头的时候他如孩子一样淡定若无其事,让我觉得这小伙子太他么帅了。

所以,操作很重要,套路和心态亦是如此。

写在前面之后

这是篇技术博客,请无视开头的那些话=。=趁着现在项目还没来,想把android tv开发的积累总结出来,也算是和上一家公司做个平静的道别吧。

公司是做智能机顶盒产品的,DVB+OTT,(DVB其实就是和传统广电合作的,那种有电缆线的,播放直播的流是广电提供的,OTT则完全是联网的智能机顶盒,就像小米,天猫魔盒那种),公司业务比较杂,客户也比较多,公司有那种做底层固件的,主要是在Android底层去兼容公司的那种DVB业务,具体我也不懂,另外就是改改framework,比如开机LOGO,开机广告啥的。

然而,我做上层应用开发,毫无优越感。

机顶盒应用说白了是非基于源码的系统应用,其和手机普通app有很多区别,界面少,嵌套少,动画少,逻辑多,进程通信多,Bug千奇百怪,调试不方便。

哈哈,其实这才是开始

  • 技术层面

    1.比较少的自定义view,多的是自定义组合ViewGroup较多。最近在看android谷歌源码,好多都是这种,其实就是java层面的封装。

    2.焦点问题!焦点问题!焦点问题!重要的事情说三遍,很多电视端的BUG源于此。掌握requestFocus,isFocused等api,以及selector用法,nextFocusDown/nextFocusUp/nextFocusLeft/nextFocusRight等xml属性。

    3.掌握ListView/GrideView子item焦点,嵌套scrollView按键冲突,掌握Activity/View的onkeyDown,onKeyUp回调方法

    4.掌握Android多进程通信,ContentProvider/AIDL,各种应用间隐式(Action/Uri)传递,因为你可能不止维护一个应用,多个应用之间可能会相互跳转界面。

    5.掌握广播,service,这种组件在系统应用中很常见,比如开机启动广播,系统升级!

  • 开发模式

    1.MVP模式,很适合电视端这种小而业务多的app。

    2.相对独立的功能模块独立成一个类,用单例模式。

    3.工厂模式。对于客户多,业务相似的场景尽量用工厂,后期好扩展和维护。

    4.观察者。用到不多,很简单实用,回调特别多,一定要掌握。

  • 调试

    1.eclipse开发,嗯对我觉得过时了,囿于当时技术有限,维护app太多,没敢迁移到as上,怕有风险;

    2.导出成未签名的apk,用系统签名,adb push/adb install -r;看日志adb logcat -s xxx

    3.公司BUG各种各样,有界面上的BUG(比如焦点),有业务上的,(比如和底层的交互,和其他应用的交互)。

待续。。。

你可能感兴趣的:(Android系统)