開發者做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模塊功能是否啓用,無線路由器是否正常工作,請注意無線網卡兼容性問題