Google Code Prettify

星期二, 8月 16, 2011

W3C Widget介紹 - 聯網電視App平台技術

author: Grace 本文刊登於2011CTimes零組件雜誌8月號vol.238 (歡迎轉載,請著名出處)

前言:  由於資訊電腦化且網路電視興起,看電視的行為已漸漸產生了變化,根據MIC調查,預計2014年全球電視數位化滲透率突破五成,並以數位有線電視用戶為主,佔24.2%,約3.2億戶。
----------------
根據MIC調查,先進國家寬頻網路環境建全,加上服務業者積極推展影視加值應用吸引用戶,故預估2012年起至2014年網路視訊流量將超過有50%的成長空間。除了寬頻網路串流的爆發外,台灣數位電視也積極的部署,有線寬頻產業協會理事長簡仁德表示,台灣有線電視頭端數位化比例已經超過90%,整體數位化普及率僅約在7%上下,初步估計頭端數位化投資總額超過50-60億元。因此聯網電視設備接收到經數位化處理後傳輸的數位電視訊號影音畫面將更清晰,且具備電子節目表單與隱藏式字幕等功能,可接收寬頻網路、IPTV、MOD、手機、STB、OTT Box等設備組成的應用平台,如:Google TV和Samsung Smart TV(Android)、Apple TV、Panasonic公布的新Viera Connect與Intel之BOXEE(by D-Link)等平台,這樣提供雙向互動傳輸機制的設計,就是把電視訊號的控制權交給用戶,促進了信息合理的流動,預期刺激更多用戶行為,讓整個聯網電視平台應用體驗更多元。
概述聯網電視設備之整體架構
1 概述聯網電視設備之整體架構


Smart TVOTT Box聯網裝置業者而言,選用何種平台作為開發的基準,無非是看中聯網電視平台上App能帶入豐富的內容資源,根據MIC2011年的統計全球App軟體商業市場規模仍持續的成長,且2010年統計每個應用軟體平均付費價格為1.5美元,預計至2013年將超過有200億美元的收入,AppleApp store支援設備有行動電話、平板電腦與電視等設備,以及GoogleAndroid Market除了支援行動電話外還支援電視app軟體應用;此外,SPB TV也是一個聯網電視的解決方案,也在3.0平台提供有手機版的TV app商店。因此widgets便是為了提供各種內容製造者或軟體設計師,甚至系統整合商一個方便共通架構,參考圖1繪製的整個龐大跨越多種設備與接收複數種訊號的整體聯網電視app平台的軟體整合示意圖,widgets是小型互動多媒體應用,其設計直觀簡單且外型酷炫可用於桌上型電腦、行動電話與電視機、STB等設備,widget的類型相當的多,典型的例子有日曆、天氣、遊戲、便利貼、新聞等等,不管是鑲入網頁的設計方式,或使用於單機版的應用,皆使用相同的方式製作widgets,從2006年開始W3C持續的更新相關的widgets家族規格,目前規範性規格有7組,包含widgets標準化的配置格式與封裝格式(簡稱P&C)、定義儲存偏好與存取widget封裝內metadataAPIs規範(簡稱TWI)、定義widget封裝進行數位簽章時,使用到之自訂XML簽章語法與處理規格(簡稱DigSig)、當版本控制設計允許更新時,透過HTTP保持widget為最新版(Widget Updates over HTTP)widget可透過URI認證資源要求/存取網頁資料(簡稱WARP)、定義使用於widgets內的URI策略或使用於其他無法連網的網頁技術(Widgets 1.0: URI Scheme)以及定義媒體功能CSS媒體詢問相關的展現文件內容模式的規格(簡稱VMMF)


W3C widget引擎架構示意圖


Widget引擎組成介紹

目前已經有些領先市場的widget引擎(User Agent)參與W3C Widget的封裝與配置測試一致性的吻合度,如:Owrandroid(Opera Widgets Runtime for Android)、Wookie(Apache)、Aplix、Opera、BorqsWRT1.0與Obigo,其中Opera 11.10 Beta和Apache Wookie 0.9與W3C widget的一致性最高,可使用JQuery javascript函式庫撈進(mash up)所有公布於W3C網站上的測試案例,比對設計客製化的widget引擎與W3C widget標準的吻合度最高。圖2顯示一個widget引擎(User Agent)可分為五個基本組成技術,包含封裝發佈與佈署、metedata配置、腳本存取連結、使用者介面和權限以及展現與行為邏輯,其中打星號的部分封裝格式與數位簽章、媒體類型、配置文件以及Widget的APIs在W3C的widget家族成員之規範性的規格內,都已經定義運作的方式,因此對開發者而言,widget引擎幾乎就是仿造瀏覽器的行為,因此widget引擎也能繪製(render)網頁,同時藉由ECMAScript的轉譯可與其他瀏覽器元件併入運作,widget為了給最終用戶(end-user)帶來單一互動應用感受,提供顯示和/或更新本地數據或網頁數據,因此包裝法允許單一下載和安裝到用戶機(user's machine)、行動電話(mobile phone)、或上網設備(Internet-enabled device)。封裝widget的優點就是可以在用戶間共享widget包,而不需仰賴HTTP。

封裝widget包注意事項

所謂的widget包(參考圖3),就一個封裝了所有該widget的相關資源,包含metadata描述文件(CSS, DOM等等)、配置文件、HTML/XML頁面、圖片和其他文件整體包裹成的壓縮包,其封裝格式可採用ZIP壓縮的Deflate編碼或未壓縮僅封裝的ZIP檔案兩種封裝法,為了widget跨平台的互通性,這個ZIP檔內相關檔名的設計有些需要注意的事項,如同:須注意最長的關聯檔名長度建議是低於250字元,且為了避免檔名字元組在ZIP打包後,跨不同作業系統執行時產生不一致的狀況,建議採用Unicode編碼的檔名設計法(如:UTF-8編碼),還有此widget包內部的資料夾或個別檔名在命名時,應避免使用到ZIP禁止字元(作業系統的保留名稱,定義於URI規格),以及於檔案或資料夾名稱的最後一個字元也需要避免用到 “.” U+002E FULL STOP和空白字元,因為有些檔案系統在解壓縮widget包時,會主動移除這些字元。

widget包範例
Widget配置文件

每個widget包中包含一個metadata描述的XML配置文件,其檔名為config.xml,檔頭必須標明使用xml的版本與採用的編碼方式(),使用UTF-8的編碼格式可防止亂碼的產生,且在此組態文件檔案內,包含widget成員的宣告,以及widget的名稱、描述、版權、作者等等內容,同時指定起始檔(X)HTML/XML檔案名稱,預設起始檔名為index.htm、index.html、índex.svg、index.xhtml與index.xht五種,也可使用content成員宣告加入客製的起始檔,若要使用數位簽章也可放置於config.xml內,此配置文件有11個成員,以widget成員作為根成員因此其包含相當多的子成員,name成員則描述widget名稱,description成員是敘述widget的用途,author成員則標明此widget的作者資訊,license成員涵蓋此widget配送的所有平台,icon成員是使用圖像的方式呈現這個widget,content成員便是指名widget起始檔案的服務為輔助程序機制(bootstrapping mechanism),feature成員則是指要求進階可用的功能如同API(例如:與camera鏡頭的連結、或使用LBS地理位置的API、或widget引擎內部自訂的API等),preference成員為宣告widget運行時可用的名稱數值對(name-value pair)(例如:preference名稱為api-key其對應數值則為該key使用到的f6d3a312f9d742機器碼,還可指定存取屬性),以及param成員為宣告給某feature成員的子成員,還有span成員就是通用文本容器,為了國際化的目的而使用。以上所描述配置文件內使用到的11個成員與config.xml內文本節點(text node)間的親子屬性關係,且包含w3C網站上相關細部的屬性定義,可參考圖4與圖5成員間父子狀態圖。


widget、name、description、author、license和span成員與文本節點間關聯狀態
4 widgetnamedescriptionauthorlicensespan成員與文本節點間關聯狀態
widget、icon、content、preference與feature成員與param成員間的關聯性
5 widgeticoncontentpreferencefeature成員與param成員間的關聯性


Widget的腳本語言是採用Javascript的ECMAScript語法,可使用自動發現(Auto-discovery)啟動widget引擎去識別和安裝widget包,其與HTML網頁相關聯。當網頁指向widget包,widget引擎應對終端用戶(end-user)揭露存在的widget包且允許終端用戶安裝此widget。若此widget包預網站連結,可使用指定的aárea和link成員建立超連結(如:The Example Widget),關於widget做網路連結時,是採用XMLHttoRequest技術。

Widget使用者介面

圖6,關於使用者介面(UI)W3C是推薦使用CSS2的設計法,因為CSS2支援更多的媒體類型且有下載字體的支援,由於聯網電視整體最直接與用戶接觸便是UI的呈現方式,因此CSS3增加更多相容性的圓角設計、UI遮罩、陰影設計,且可實踐漸層、旋轉、字體效果以及三維變換,讓整體UI呈現更加流暢,故建議設計聯網電視的widget包時,若相對應的STB平台的widget引擎有支援時應加入CSS3的設計,或者採用內建API等達到多樣化的UI設計。

widget友善使用者介面示意圖
6 widget友善的使用者介面示意圖
結論
今年全美消費性電子展CES2011展出相當多聯網電視眾多的App平台電視平台外,周邊設備的互動機制如:觸碰平板電腦控制聯網電視,或體感的應用連接,甚至到家電的控制,都可整合到聯網電視的App平台,因此本文介紹互通的W3C widget介面包含Widget引擎組成介紹、封裝widget包注意事項、Widget配置文件以及友善的Widget使用者介面,期望這個簡單易上手的widget設計能讓更多的內容開發業者加入,提升聯網電視更流暢性的使用方式,預期將吸引更多的消費者更愉快舒適的客廳饗宴。

參考: 2011 W3C Widget封裝配置翻譯 + Widget包處理規則與步驟翻譯(source widget packaging and configuration 2010/10/5)

(本文作者任職於資策會智通所)

沒有留言: