還記得小時候剛學電腦的時候,所以為的電腦,最多充其量是擺在桌子上,讓人坐在前面透過鍵盤來操作的那種。從來都沒有想過,有朝一日,電話、電視,也都變成了電腦,而且還跑著差不多的作業系統。那時更沒有想到的是,還有一種叫做「網路」的東西,可以讓電腦間互相的交換資料。
而現在,「電腦」、電視、電話,全都可以憑藉著網路全部連接在一塊。這完全是當初完全沒辦法想像到的局面。同樣的,我們在學寫程式時,也從來都沒有想過,我們會寫程式在電話上執行,當然更不會想到在電視上開發軟體的那麼一天。
現在,以智慧型電話為代表的行動裝置應用開發已成當代顯學,iOS和Android平臺已經深入許多人的生活當中。現在的智慧型電話,骨子裡就是電腦,其硬體機能之強大,更是遠勝三十年前大家初學程式設計時的個人電腦。現行的開發工具,也讓這些小型的行動裝置的開發方式,和個人電腦上的開發幾乎沒有什麼兩樣。就像透過你會同時利用XCode,來開發Mac OS X及iPhone 上的應用軟體一樣,他們或許在SDK,在API的內容上有所差別,但是開發的模式、使用的語言,都是相同的。
不過,在以智慧型電話為代表的行動裝置之外,還有另一類的「電腦」,也相當需要應用程式的開發,那就是「智慧型電視」上的應用開發。但相較於行動裝置而言,智慧型電視上的應用開發,卻是比較少人介紹和接觸。若是將現在的行動裝置視為比「個人電腦」還個人的電腦,被用來滿足許許多多個人的資訊需求,那麼,智慧型電視就傾向於是被放在客廳或房間,滿足一些適合用大尺寸螢幕來呈現、甚至是多人一起共同觀看的應用。
相較於行動裝置上的開發者數量之龐大,智慧型電視上的開發者,可以說是少得太多了。這一回,就讓我們來談談智慧型電視上的軟體開發吧。
在智慧電視領域當中,包含多種硬體裝置與系統平臺
現今的智慧型電視,當然不折不扣的也是一部功能完整的電腦,只不過,多附加了一些接收現有「電視訊號源」的功能。即使人們或許主要還是利用它來觀看電視節目,但是伴隨著有吸引力的應用程式愈來愈多,尤其是在連網的先天優勢之下,人們未來勢必會在智慧型電視上,進行更多其他類型的應用。
因此,與其把我們要討論的應用,局限在「智慧型電視」的應用開發,不如把範圍放大到「透過大尺寸螢幕呈現」的應用開發。
最起碼有三種硬體裝置,會被放到「透過大尺寸螢幕呈現」的這個分類,它們是「智慧型電視」(或稱連網電視)、智慧型機上盒、以及電視棒(HDMI dongle),而電視棒又可以分出所謂的 Cast Dongle,和所謂的智慧型電視棒之間,彼此有著不同的特性。
不論如何,這些裝置的共通點是,它們的應用,最後主要都是以大尺寸螢幕(最主要就是電視),來呈現內容。
智慧型電視,基本上就是本身就能連網、就是執行相關應用的電視。在目前,以Android作業系統的智慧型電視恐怕還是主流,搭載Android作業系統的電視,其主要優勢即在於,有著相當豐富的第三方應用。
因為搭配 Android 作業系統的行動裝置上,市面上已經有著眾多的App,意謂著這些應用有很高的機會,可以同樣的運行在 Android 電視之上。即使這些App在Android電視上,可能會有相容性的問題,但是因為有許多的開發人員已經熟悉了Android平臺,因此即使是要調整或開發,都容易許多。
除了Android電視之外,另外還有一些智慧型電視上所搭載的作業系統,包括了 LG 所主推的 WebOS 、以Panasonic為代表的Firefox OS,還有Samsung的Tizen OS。
所以,這些作業系統,或許都支援了若干種其他不同的裝置,例如手錶、手機,但是,並沒有辦法像 Android一樣的有著普遍的開發者,因此,使得在這些平臺上,目前可取用的應用並不多。
另外,這些作業系統主要都是以網頁的相關技術(例如 HTML5),來做為主要的使用者介面呈現及操作,另外再搭配一些專屬的API,或是允許以C語言撰寫原生的程式碼。這些平臺上的應用,目前看起來,都是傾向於提供和電視廠商專門配合的協力廠商,來做專屬的開發,比較沒有百家爭鳴的情況。
對於程式設計者而言,除了熟悉Web應用開發的程式員,可以在使用者介面上快速入門之外,其餘該作業系統特定的API,仍然需要花點時間適應。
在機上盒與電視棒設備端,也有許多相關的軟體應用
除了智慧型電視之外,智慧型機上盒也是目前很普遍的裝置。不論家裡的電視是否有連網的智慧功能,只要接上機上盒,就可以「連網又智慧」。
除了Apple TV之外,現今所謂的智慧型機上盒,可以說是幾乎以 Android 作業系統為主,所以,其應用的特性,也都和智慧型電視差相彷彿,我們幾乎可以說,智慧型電視目前是把機上盒的功能,內建在電視裡了。
因此,Android 機上盒可使用的應用,也是相當繁多。姑且不論其操作介面是否適合在電視上使用,但許多針對行動裝置開發的App,也都能透過Android機上盒在電視使用,對許多使用者來說,提供了相當大的便利性。
除了機上盒外,還有所謂的「電視棒」,早期最常看見的型態,便是一端為HDMI接頭,接上電視的影音輸入,另外透過USB來供電。這類的電視棒,即使外觀和機上盒相比起來輕薄短小,但是本質還是機上盒,絕大多數都執行著Android作業系統,它們只是把機上盒做得體積更小,另外改為 USB 供電罷了,因此,就特性而言,也和機上盒沒有什麼兩樣。
除了這類的電視棒之外,還有一類的電視棒和Android機上盒不同,它們被稱為Cast Dongle,最具代表性的例子,就是Google的Chromecast 了。
這類的電視棒有個主要的特性,那便是讓使用者以行動裝置做為最主要的操作介面,使用者在行動裝置上透過App來操作,等到需要將畫面呈現在大尺寸上的電視上時,便會透過某個通訊協定讓Cast Dongle執行對應的動作。
例如,使用者可以在手機上操作、選取 YouTube 的影片,而等到要播放的時候,才透過專門的通訊協定啟動Cast Dongle,自行連網至 YouTube ,並於電視上播放影片。這並不同於所謂的鏡像輸出──即直接把手機上的畫面及聲音經過擷取,傳輸至Cast Dongle上呈現,而是直接由Cast Dongle獨力來完成。這使得使用者一方面可以透過手機便利的操作,二方面又可以將主要的內容,呈現在自己最大尺寸的螢幕之上。當然,也有一些Cast Dongle支援鏡像輸出,但真正好用的地方,還是在所謂Casting的行為。
想要開發支援Cast Dongle的應用,可以透過這些Dongle專屬的 SDK。
例如,Chromecast即釋出其 SDK,使得行動裝置的第三方開發人員,可以憑藉著這 SDK,來使自己的應用支援 Chromecast。
以上,便是最常見的幾種電視應用裝置的介紹,在下一回中,我們會進一步討論電視應用上開發的諸般特性。