2011年2月22日 星期二

新一代智慧型手機平台Windows Phone 7特別報導

前言:
就在iPhone 4手機受到全球眾多使用者熱愛的同時,Android Market上的應用程式數量正在飛快地增長,意味著全球開發者投入更多心力在今年(2010)5月所推出的2.2新版本上。Windows Mobile 6.5喊了很久的下一代版本Windows Phone 7,已開始結合HTC手機在10月份發佈。這個新一代的Windows Phone 7,對手機應用程式開發者而言,需要知道哪些技術?又有什麼樣實質的意義?本文將帶領讀者進入到Windows Phone 7開發的世界。

 

千呼萬喚之後

 

        台北時間20101011號晚上九點三十分,一個再平常不過的夜晚。許多上班族才剛下班不久,吃過晚餐,整準備稍事休息,但當晚許多和我一樣的資訊從業人員,卻一反往常地離開電視機正在放送的政論或是戲劇節目,守在自己的NB上,透過即時視訊連線,緊盯著由微軟CEO Steve Ballmer親自上陣的Windows Phone 7發表會。
        在這一場發表會之後,微軟釋出消息很久的Windows Phone 7,就會在這個月正式上市。首先是歐美,再來是亞太,由我們所熟悉的台灣廠商HTC、還有SamsungDell第一波推出的近10款手機,將正式亮相與大家見面。

        我相信正在閱讀這篇文章的IT人,其中有相當大的比例,已經在過去幾年,慣於使用所謂的智慧型手機,諸如iPhoneAndroidSymbian或過去的Windows Mobile 6.5。我們慣於用智慧型手機來處理日常生活中的個人或商業事務,從上網瀏覽訂票購物、收發郵件、甚至主管或決策人員透過手機進行表單核決、查閱公司資料。在個人生活當中,智慧型手機也扮演著不可或缺的角色,GPSGameVideo/Audio…它已經成為我們平常生活的一部分,甚至,智慧型手機某種程度上也成為了科技人身分的象徵。

下一波軟體應用的主流在這裡

 

        過去幾年,不用我們提醒,大家都知道iPhone搶占了智慧型手機多大的市場,Android也以後起之秀想要迎頭趕上,反倒是最早跨入這個領域的Windows MobileSymbian,背腹受敵感受到無比的壓力。

        不僅如此,太多的新聞和故事讓開發人員突然之間發現,同樣是進行軟體開發工作,為何在iPhone智慧型手機平台上,聽到越來越多的成功案例,而同時間傳統的軟體開發似乎正在式微和轉型。付出同樣的心力寫程式,似乎智慧型手機上的系統總是得到較多的青睞,而各種應用開始如雨後春筍般出現在手機平台或平板電腦上,愈來越多客戶和企業用戶發現,在行動裝置上其實也可以達成過去笨重的NB所能完成的效果,而一台輕巧方便的智慧型手機,除了可以滿足工作上的需求,更能夠成為日常生活中多媒體娛樂的中心。

        而身為開發人員的我,也常常聽到身邊的朋友開始投入iPhoneAndroid應用程式的開發,反倒是傳統的商業應用在這變動異常的時代似乎越來越乏人問津。

結合雲端技術無所不能

 

        過去你可能以為,一台智慧型手機能做什麼?充其量不過就是加了PDA功能的陽春級計算器,能取代NB或是桌上型的PC? 是的,過去我也是這麼認為,但才不過數年,智慧型手機幾乎完全取代了PDA,而隨著3GWifi的成熟與普及,智慧型手機的應用層面越來越廣;隨著觸控技術的日漸成熟,智慧型手機對一般民眾的接受度則越來越高。

        再加上近來紅得發紫的雲端運算技術,智慧型手機幾乎無所不能,透過GPS抓取到你的所在位置,再利用網際網路取得你所在位置的天氣,附近的商店,含有街景的地圖,這都是搭配雲端運算服務的典型應用。

        拿到由HTC所生產的Windows Phone,開機登入你的Windows Live ID(就是MSN帳號)之後,隨時可以讀取Hotmail郵件、立即取得MSN聯絡人清單,這又是雲端運算的另一個具體呈現,而Windows Live中的行事曆與通訊錄都即時自動與手機進行同步。

        想進行搜尋時,可透過手機的語音功能,將說的話傳到遠端的語音伺服器進行辨識,再傳回手機進行搜尋動作,才不過幾年,過去在電影中才會看到的情節,現在已經在真實世界中上演。

        配合運端運算技術,以及各式各樣的雲端服務,現在的手機已經和過去不同,即便手機不具備像NB一樣的運算能力,不具備數百GB的儲存容量,但本質上已經是一個超強的作業平台,而輕巧易於攜帶,靈巧的觸控輸入,更是NB所不及的。這樣的改變,對於開發人員來說,智慧型手機上的軟體開發將會是我們無法忽視的一環。

嶄新的開始

 

        之所以稱為Windows Phone 7 (WP7),當然無法忽略過去微軟所推出的幾代Windows Mobile產品,從過去率先踏入智慧型手機領域,一直到Windows Mobile 6.x在市場上節節敗退,這一次WP7的推出,可說是孤注一擲的一戰,不少人戲稱,這次微軟如果再要失敗,恐怕真得退出整個智慧型手機的市場,而這是微軟所承受不起的損失。

        也因此,WP7拋棄過去Windows Mobile的架構與包袱,整個重新再出發,也就不足為奇了。
        底下是WP7的開發架構:
        和過去相當不同的是,這次WP7的開發技術是以相較於傳統Windows應用程式設計來說,算是新成員的SilverlightXNA技術為主。Silverlight是微軟在2007年推出迎戰Flash/FlexRIA應用程式開發的新技術,而XNA則根本是撰寫Xbox GameFramework,使用這些技術整個重新來過,意味著放棄過去WM6.5以前所有的應用程式,破釜沉舟重新開始,企圖在已被iPhoneAndroid所瓜分的市場上,奪回一席之地。

        這樣的改變其實不令人意外,Silverlight已經是這幾年微軟開發技術的主流,而核心只需要5.7MB左右的run-time,本來就非常適合在行動裝置上執行,再加上Silverlight與生俱來地就重視UI的呈現效果與流暢性,這對於被iPhone打得落花流水的WM6.5來說,這次WP7在開發技術上的徹底改變看起來是正確的選擇。

        而微軟開發技術中,則沒有比XNA更適合開發多媒體與高互動性的遊戲軟體的技術了。也因此,定位相當明確,商業或一般個人應用程式,可透過Silverlight進行開發,而手機遊戲或是多媒體需求,則可以透過XNA技術來開發。

        WP7也類似Silverlight一樣,本身就具有輕量級且相容於.NET FrameworkClass Library,這讓.NET開發人員可以輕鬆地跨入WP7的開發領域。

        手機所特有的手機裝置應用相關API,則以類別庫的方式包裹在WP7 SDK當中(位於Microsoft.Phone命名空間下),開發人員只需要稍加熟悉即可。

一致性的開發工具

 

        一直以來,最讓微軟居於不敗之地的,就是投資甚久的Visual Studio開發工具,而這一次,微軟要迎頭趕上iPhone,除了讓手機流暢度可以和iPhone並駕齊驅之外,更重要的是,iPhoneApp Store上那些成千上萬的應用軟體,才是WP7需要挑戰的重點。

        毫無疑問,選擇一個適合、容易學習、好用的開發技術是重點之一(而這微軟已經做到了),而開發工具呢? 當然就是我們所熟悉的Visual Studio 2010
        開發人員只需要在App Hub(微軟在WP7發表會之後正式推出的網站)上,下載安裝單一的開發套件,即可自動安裝好所有開發WP7所需要的開發工具,包含精簡版的VS2010 Express(如果你沒有完整版的VS2010),以及Expression Blend for WP7, XNA Framework…等。

 (下載網址為:http://create.msdn.com/en-us/home/getting_started)

        和建立其他專案一樣,在VS2010當中有完整的專案範本,可輕易的建立出豐富的WP7應用程式,除此之外,微軟甚至還針對WP7推出了一系列的控制項(Silverlight Toolkit for WP7),讓開發人員大大提高生產力。
       
例如:可輕易做到流暢的全景檢視功能的Panorama Control
        可以多頁檢視的pivot Control、可接收多點觸控手勢(諸如拖曳、放大縮小、捲動)專用的Gesture Listener、各式各樣的控制項,讓WP7手機的程式開發比起iPhoneAndroid更加地容易。

        同時,每一個控制項也已針對多點觸控智慧型手機常用的行為有所調整,例如我們所熟悉的ListBox或是ScrollViewer控制項,本身就支援手指拖曳捲動的功能,完全不需要額外撰寫程式碼,即可在觸控螢幕上實現拖曳捲動的行為。

        而筆者要特別強調的是,如果你已經是Silverlight的開發人員,那真要恭喜你,整個WP7應用程式設計的方式,幾乎和Silverlight完全相同,過去有Silverlight開發經驗的程式設計師,將可以輕易的無痛移轉和上手,你可以用一樣的設計經驗,迅速的開發出豐富的WP7應用程式,甚至過去在Silverlight上部分已經開發好的UserControl也可以幾乎不需要修改地移植到WP7上。

        當然,這對於過去熟悉WM6.5的開發人員來說,可能並非是好消息,除了過去的應用程
式在WP7無法運行之外,整個開發技術的改變,也讓WM6.5的開發人員需要重新學習Silverlight,才能跨入WP7的世界。但就如同前面所說的,iPhone的出現,多多少少也讓微軟認清了現實,改變是必要的,否則將會面臨市場上無情地淘汰。

應用程式的開發循環

 

        和過去不同的不只是開發方式的改變,如同iPhone一樣,WP7的作業系統也可透過Zune軟體進行升級,當您的手機連上了PC之後,會自動喚起Zune軟體進行Sync動作(該軟體可在www.Zune.net下載),如果有需要更新,則可透過Zune進行系統更新動作。

        對於開發人員來說,該軟體也是不可或缺的,開發好的專案,我們可以透過Visual Studio 2010以模擬器來執行測試,但若您希望在實機上進行測試,也可以在執行(或佈署)時選擇Windows Phone 7 device,而VS2010則會透過Zune將建置好的xap佈署到手機上執行:

        但,並非開發人員可以這樣地把軟體佈署到每一台手機上,佈署是透過VS2010配合Zune來進行的,而這也意味著在WP7上,應用程式開發、測試和佈署等動作和過去有著相當大的不同。

        在一般的WP7應用程式開發與銷售的程序中,應用程式開發完成之後,開發人員必須透過先前提過的App Hub網站,將程式發佈到微軟的Marketplace,再由手機用戶透過手機藉由網際網路連上Marketplace上,將需要的應用程式下載到手機上來執行,而開發人員只能將程式發佈到Marketplace,或在『特定』的手機上進行測試。
怎麼說是在『特定』的手機上進行測試呢?

每一台手機都有一個序號,開發人員必須先在App Hub上以Windows Live ID註冊成為會員,接著必須透過Developer Phone Registration軟體,以註冊好的帳號登入,再(透過Zune)連上接在NB上的手機將該手機解鎖:
解鎖後的手機才能夠作為你的測試機,你也只能透過VS2010(配合Zune)將開發完成後的XAP佈署到你曾經解鎖過的那台手機上執行。

你會發現,你解鎖的手機將會出現在App Hub網站上的registered devices中,而一個Windows Live ID只能解鎖一定數量(例如下圖中是三台)的手機:
        所以,開發人員並無法自由地將應用程式隨意佈署到任意一台手機上,而是只能佈署到特定的(註冊過的)測試機上進行測試。

Submit你的應用程式

 

        一旦應用程式開發完成並且測試無誤後,開發人員即可將封裝好的XAP包,上傳(Submit)Marketplace
        只要你註冊在App Hub的帳號經過身分驗證無誤,即可將自己開發好的WP7軟體,發佈到微軟Marketplace上,並且標訂售價,讓使用者付費下載,而下載的費用則會匯入你的銀行帳戶(但目前尚未開放亞太地區)

        從上面的描述中您也會發現,開發人員(或公司)要開發WP7應用程式,勢必先透過Windows Live ID帳號至App Hub網站上登記成為會員,並且通過身分查驗,才能夠順利的在測試機上進行測試,並且將測試好的應用程式發佈到Marketplace上讓使用者付費(或免費)下載。
身分查驗需要數天的時間,若是個人身份的開發人員,需要提供護照(或其他由政府發放的正式證件)由微軟所委託的第三方認證公司(GeoTrust)進行確認,這會需要一段時間(大約幾個工作天),因此建議對於開發WP7有興趣的開發人員,可以及早進行註冊以利後續作業順暢。

        備註:特別提醒開發人員,若以個人身分註冊,請務必留意由於個人資料登記後就很難修改,因此建議在一開始登記App Hub網站時,登記的姓名(First name Last name)採用與護照(或其他證件)相同的英文拼音,由於台灣人大多有一個慣用的英文名字,但和護照(或證件)上的不同,筆者曾因為一開始填寫註冊時使用David,但護照上則是中文名字的英文拼音,導致必須多次與認證單位溝通解釋,最後才得以通過身分查驗。

 

實際開發


        在登記註冊好了App Hub帳戶之後,即可放心的透過Visual Studio 2010進行WP7應用程式的開發工作。前面提過,整個WP7應用程式的開發採取的方式和開發Silverlight應用程式幾乎完全相同,你可以很輕易地就建立出一個WP7的應用程式。

        例如,底下這段簡單的程式碼可呼叫WP7中的SmsComposeTask進行簡訊傳送動作:

private void buttonSend_Click(object sender, RoutedEventArgs e)
{
    //呼叫簡訊傳送作業
    Microsoft.Phone.Tasks.SmsComposeTask s =
        new Microsoft.Phone.Tasks.SmsComposeTask();
    //傳送對象手機號碼
    s.To = textBoxPhoneNumber.Text;
    //簡訊內容
    s.Body = this.inputMethodTextBox1.Text;
    //顯示作業視窗
    s.Show();
}


執行的結果如下:
        當然,在這個階段不管是模擬器或是實機,都是屬於Multi-Language的英文版本,也就是說,可以正確的顯示中文,但卻沒有內建的中文輸入法。這導致,您所撰寫的程式碼可以使用中文作為訊息呈現或是按鈕文字,但卻無法讓使用者輸入中文。
        因此,在這個階段的解決方案則是自行在開發的應用程式中設計相關的中文輸入功能,您也可以參考光岩資訊所開發的WP7中文輸入控制項套件(http://www.arock.com.tw/ProductsInfo/WP7.aspx),做為過渡階段的替代方案。

        更完整的WP7應用程式開發方式與流程,可參考筆者Blog上的教學影片,未來在Run!PC專欄中,我們也會為您更詳細的介紹WP7應用程式的開發技術。

 

結語


        總括來說,微軟這次的出擊,可說是抱著背水一戰的決心,雖然不至於如同坊間說的若失敗等同於準備退出市場,但依照目前智慧型手機的發展趨勢,這一仗恐怕是微軟輸不起的戰役。相較於iPhoneAndroid,微軟一貫的擁有開發工具上的優勢,加上這次徹頭徹尾的改變了開發技術,在實機測試的效能和操控性上較之以往有顯著的提升,幾可說和iPhone不相上下。
而對於開發人員來說,即將面對的是各種不同平台(iPhone, Android, WP7, Symbian…)之間的競爭與抉擇,由於開發方式截然不同,除非財力雄厚的大企業,不然鮮少能夠擁有同時跨足目前四大平台的開發團隊,這也使得智慧型手機裝置平台的競爭日趨白熱化。WP7的進入將讓戰局有著新的變化,但也使開發人員將面對更多平台的挑戰。但毫無疑問的,WM6.5時代的開發人員,是必須要面對較大的衝擊。
        而雲端運算的愈受重視將使得智慧型手機的應用層面將會越來越廣泛,從WP7內建的People Hub應用程式即可發現,整個手機運作時的資料來源與存取,將和雲端運算技術(與概念)密切的結合,手機將會成為資訊呈現或蒐集的終端工作平台,而雲端強大的運算能力則可和智慧型手機互補,讓比爾蓋茲十五年前所說的『資訊彈指可得』在現今社會實現地更加貼切。
        隨著雲端運算以及行動上網技術的普及,毫無疑問的,智慧型手機的應用程式將會更加的蓬勃發展,對於WP7有興趣的開發人員,在華文手機尚未正式上市的這個階段,剛好提供了開發人員一些喘息與學習的空間, Silverlight技術是接下來最重要的進入點與學習重心,而雲端運算的概念與搭配應用,則是未來要將智慧型手機應用程式發揮至極致的重要技術。
當然,面對這麼多平台的競爭,也不免令人覺得無所適從,同時代工多家平台手機的HTC執行長,在受訪時說的話相當中肯,『Google的網路體驗度比較強,而微軟在生產力工具的表現佔優勢,但兩者也都看到對方的優點,所以怎麼提供最多樣的產品讓消費者選擇才是重要的...
        消費者將會在這場戰役中以實際的行動為每一個平台投下自己的一票,而開發人員所建立出來的應用程式,則有著左右消費者選擇平台的能力。不僅如此,事實上,由開發人員所建構出的應用程式,才是真正智慧型手機的靈魂。如何建構出輕巧好用的程式,讓智慧型手機這個行動工作與個人娛樂平台發揮最大的價值,則是開發人員所要挑戰的重點。當然,一套熱門的智慧型手機應用程式,背後所將帶出的驚人獲利,也確實相當地吸引人。
        在智慧型行動裝置的世界裡,已然為開發人員開啟了騁馳創意的無限空間,現在就等著你的加入了。
 

沒有留言:

張貼留言