开发者做SMART TV应用开发适配,如何将现成的作品移植到智能电视平台,我们在日常和开发者的沟通中整理了开发者普遍提到的几类:《系统平台搭建SDK接口》、《UI交互适配》、《测试及上线》三方面和开发者就电视端Android项目移植开发展开交流!如果您在开发或适配中遇到任何问题,欢迎随时跟帖回复补充!以下问题回复可见,我们将不定期开展线下开发者沙龙活动,与各位开发者面对面交流;感谢欢网TV应用开发技术工程师王超、孙涛、张林对此次问题搜集整理的大力支持,欢迎开发者加入我们的开发者交流群:261722115,与我们专业的TV应用开发工程师线上交流;
系统开发平台搭建SDK接口
Q:智能电视能否支持GPS卫星定位系统?
A:智能电视不是智能手机gps卫星定位模块已经去掉,不支持该功能。
Q:支付对接中欢网给出的key无法使用,如何解决?
A:如果key是由欢网提供那么说明我们给你的key是测试服务器的。而你用来测试的支付jar应该是从官网下载的正式服务器的,因此你无法使用。使用正式支付你需要使用欢网会员帐号自己申请的key也就是从我们的社区平台注册签约成功申请key后方可使用。而在正式包中的demo也需要你使用自己的正式key而不是直接用demo的key来运行。
Q:TCL如何获取root权限?
A:这恐怕是不可能的,root无法达到!
UI交互适配
Q:智能电视有无内置摄像头?能否支持外接摄像头的调用?支持什么型号的外接摄像头?
A:智能电视里面没有内置摄像头,支持外接摄像头,但是不同电视支持的摄像头型号不同,比如tcl支持罗科 c270,
长虹测试需要摄像头支持USB-V4L2这种接口类型的。
Q:遥控器适配该适配哪些按键?部分键值为何无法实现跨终端匹配?
A:最低要适配遥控器的上下左右,返回,ok 菜单;比如ok键在tcl上它的适配键值是66;而在长虹上是23,在
海信上是66;而其他google自带按键值是相同的。除了厂家自定义的按键外,在做这些键值适配过程中:比如flash的适配,获取的键值就不一样,并且ok键无法获取,这就和flash支持有关了。
Q:应用软件适配了某一电视品牌的一个机型后,是否就能够成功适配该品牌的其它机型?
A:NO,系统版本的不一致会直接影响适配到不同机型上的效果差异巨大;有些终端虽然分辨率一致,但由于版本的不一致,很多功能的实现上是不一样的,就拿tcl和长虹来举例,在长虹上做到完全适配的应用运行非常流畅,但是拿同样版本和分辨率的应用到tcl上,直接报各种无响应,orm,这就是不同品牌的差异。而即使同一品牌上,我在做tcl的预装应用时,就遇到很奇怪的问题,同一系列的901电视只是终端类型不同但是用同一应用竟然无法运行。可见适配是非常难的。想达到适配全部覆盖的愿望是不可能的。尤其是视频播放器适配就更为困难了。
Q:摄像头应用无法启动摄像头,不显示影像,该怎么办?
A:其实这个问题在问题1中你基本就能了解到答案了。应该就是摄像头硬件不兼容的问题了。如果是摄像头显示图像了就是图像不是正理的
Q:屏幕适配有什么要求?
A:考虑几点;屏幕的分辨率,主流的 1920*1080 1280*720 1366*768屏幕的密度,图片处理(orm经常报)
Q:目前电视都有哪些交互方式?
A:遥控器为主,空鼠,摄像头,语音等需要特殊外设;
Q:TV端文字的字体设置有没有标准尺度,如何设置效果最好?
A:这个问题已经超出了应用移植适配的技术范畴,应是产品UI设计的事了。我们只能说在TV大屏上让用户感觉舒服的效果和尺寸是最好的,需要前端不断修改测试;
Q:文字字号的大小,是根据系统的dpi以象素为单位设置的,TV端以像素(px)为单位的合适大小是多少?dpi是多少?
A:dip: device(装置) independent pixels(象素)(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
这里要特别注意dip与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致dip不能正常显示。在屏幕密度为160的显示屏上,1dip=1px,有时候可能你的屏幕分辨率很大如480*800,但是屏幕密度没有正确设置比如说还是160,那么这个时候凡是使用dip的都会显示异常,基本都是显示过小。
dip的换算:
dip(value)=(int)(px(value)/1.5 + 0.5)
.dp: 很简单,和dip是一样的。
.px: pixels(像素),不同的设备不同的显示屏显示效果是相同的,这是绝对像素,是多少就永远是多少不会改变。
. sp: scaled(衡量) pixels(放大像素). 主要用于字体显示best for textsize。
备注: 根据google的推荐,像素统一使用dip,字体统一使用sp
举个例子区别px和dip:
px就是像素,如果用px,就会用实际像素画,比个如吧,用画一条长度为240px的横线,在480宽的模拟器上看就是一半的屏宽,而在320宽的模拟器上看就是2/3的屏宽了。
而dip,就是把屏幕的高分成480分,宽分成320分。比如你做一条160dip的横线,无论你在320还480的模拟器上,都是一半屏的长度。
publicstatic int dip2px(Context(环境) context, float dipValue){
final float scale(规模) =context.getResources().getDisplayMetrics().density(密度);
return (int)(dipValue * scale +0.5f);
}
public static int px2dip(Context context,float pxValue){
final float scale =context.getResources().getDisplayMetrics().density;
return (int)(pxValue / scale +0.5f);
}
Q:TV端该如何进行排版布局?
A:这个问题不知道你是处于什么角度考虑,建议你去把androi的布局好好学习学习就可以了。这里我就不做解说了。
Q:TV端图片大小如何设置效果最好?
A:这个问题问的不知所错了。这个图片大小设置问的是什么?背景?还是?这个应该是你们UI设计好大小规定的!效果最好?这个也和你们美工提供的图片有关。我想做手机应用的,应该都懂这个。
Q:TCL、长虹等各品牌电视都有哪几种分辨率?
A:1920*10801280*720 1366*768
Q:TCL、长虹遥控器的键值分别是多少,怎么适配?
长虹遥控器按键定义
|
|
|
|
| ||||
遥控按键漏印
|
键值定义
|
|
|
遥控器图片
|
|
|
|
|
红键、A
|
public static final int KEYCODE_RED = 2011;
|
|
|
|
|
|
|
|
绿键、B
|
public static final int KEYCODE_GREEN = 2012;
|
|
|
广播
|
音轨
|
声道
|
| |
黄键、C
|
public static final int KEYCODE_YELLOW = 2013;
|
|
|
A
|
B
|
C
|
D
| |
蓝键、D
|
public static final int KEYCODE_BLUE = 2014;
|
|
|
|
|
|
| |
菜单
|
public static final int KEYCODE_CHANGHONGIR_MENU = 4104;
|
|
|
3D
|
信息
|
指南
|
帮助
| |
返回
|
public static final int KEYCODE_BACK = 4;
|
|
|
应用
|
|
静音
| ||
上
|
public static final int KEYCODE_DPAD_UP = 19;
|
|
|
放大
|
主场景
|
|
缩小
| |
下
|
public static final int KEYCODE_DPAD_DOWN = 20;
|
|
|
|
|
|
| |
左
|
public static final int KEYCODE_DPAD_LEFT = 21;
|
|
|
菜单
|
|
|
返回
| |
右
|
public static final int KEYCODE_DPAD_RIGHT = 22;
|
|
|
|
|
|
| |
确定
|
public static final int KEYCODE_DPAD_CENTER = 23;
|
|
|
|
|
|
| |
左滑
|
public static final int KEYCODE_CHANGHONGIR_FLCK_SL = 4113;
|
|
|
|
|
|
| |
右滑
|
public static final int KEYCODE_CHANGHONGIR_FLCK_SR = 4114;
|
|
|
|
|
|
| |
节目+
|
public static final int KEYCODE_CHANNEL_UP = 2003;
|
|
|
|
|
|
| |
节目-
|
public static final int KEYCODE_CHANNEL_DOWN = 2004;
|
|
|
+
|
|
|
+
| |
音量+
|
public static final int KEYCODE_VOLUME_UP = 24;
|
|
|
节目
|
|
|
音量
| |
音量-
|
public static final int KEYCODE_VOLUME_DOWN = 25;
|
|
|
-
|
|
|
-
| |
数字键0
|
public static final int KEYCODE_0 = 7;
|
|
|
|
|
|
| |
数字键1
|
public static final int KEYCODE_1 = 8;
|
|
|
|
|
|
| |
数字键2
|
public static final int KEYCODE_2 = 9;
|
|
|
1
|
2
|
3
|
| |
数字键3
|
public static final int KEYCODE_3 = 10;
|
|
|
4
|
5
|
6
|
| |
数字键4
|
public static final int KEYCODE_4 = 11;
|
|
|
7
|
8
|
9
|
| |
数字键5
|
public static final int KEYCODE_5 = 12;
|
|
|
输入法
|
0
|
删除
|
| |
数字键6
|
public static final int KEYCODE_6 = 13;
|
|
|
|
|
|
| |
数字键7
|
public static final int KEYCODE_7 = 14;
|
|
|
|
|
|
| |
数字键8
|
public static final int KEYCODE_8 = 15;
|
|
|
|
|
|
| |
数字键9
|
public static final int KEYCODE_9 = 16;
|
|
|
|
|
|
| |
输入法
|
public static final int KEYCODE_CHANGHONGIR_INPUT = 4102;
|
|
|
|
|
|
| |
删除
|
public static final int KEYCODE_DEL = 67;
|
|
|
|
|
|
| |
静音
|
public static final int KEYCODE_MUTE = 91;
|
|
|
|
|
|
| |
指南
|
public static final int KEYCODE_CHANGHONGIR_EPG = 4123;
|
|
|
|
|
|
| |
3D
|
public static final int KEYCODE_CHANGHONGIR_3D = 4119;
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
| |
|
备注:长虹的遥控器有些按键复用,如颜色键A与广播等,在应用开发中必须要注意,不能同时处理。同时后续有些变动,一些按键服用情况也有变化,推荐第三方应用只用方向键、确定、菜单、返回、音量加减、频道加减, 数字键,主场景,静音键。
|
|
|
|
|
|
|
Q:适配后的应用在商店上线后能否自动升级?
A:是可以升级的。但是每次需要升级版本需要提供给我们最新版本上传至我们的服务器。
Q:内置的全景浏览器内核是什么版本的,是否会影响到应用对网页的调用?
A:全景浏览器基于android原生chrome
lite
(清淡的)扩展,调用参考android标准浏览器即可
Q:智能电视是否支持flash应用?
A:支持但是不同机型可能版本不同,适配起来比较麻烦!
Q:Flash应用做遥控器适配时,键值是多少?
A:这个问题请参见问题2《遥控器适配该适配哪些按键?部分键值为何无法实现跨终端匹配?》
Q:应用调用悬浮层时,焦点移动如何设置比较合理?
A:这样的问题出现,很奇怪。如果说是不知道怎么获取焦点还好!知道怎么获取焦点那你应该根据你项目的实际情况来处理,这块我就不做解释了。
Q:是否可适配并上线游戏大厅类型应用?
A:非技术类型问题,请与公司相关负责部门联系,或者直接联系公司商务。
测试及上线
Q:TCL开发板连接显示器时,有时会出现屏幕偏移的问题,如何解决?
A:这就需要用遥控器对电视机进行屏调整了(就是系统设置)。
Q:有的联网应用在电视上测试时,会提示“检测不到网络”,这一问题如何解决?
A:估计这个做的应用都是手机端的。在检测网络时间按的是手机端的方式来做检测的,那就让你失望了,手机端一般就是检测3g和wifi。而智能电视不是手机所以你用检测手机网络的方式来检测智能电视是检测不到网络的。具体方式请参照此贴
http://bbs.tvhuan.com/thread-556-1-1.html
Q:如何把apk安装到开发板上?
A:打开开发板,查看其网络连接,找到ip地址,使用adb命令操作。首先adbconnect ip,然后adb Install apk地址。就可以安装上了。
Q:tcl电视为什么搜不到无线网络?
A:WIFI模块功能是否启用,无线路由器是否正常工作,请注意无线网卡兼容性问题