http://dev.21tx.com 2005年07月26日 Yesky 楚云風(fēng)
自從五年前踏入編程領(lǐng)域以來(lái),觸目所及,Micrsoft的彩色小旗在
臺式機、
筆記本、
掌上電腦、平板電腦上四處飄揚,如今,Microsoft又把旗幟插入了
手機領(lǐng)域,這就是今天我們要談的主角,Microsoft的智能手機操作平臺Smartphone。
本文將從程序開(kāi)發(fā)角度對Smartphone進(jìn)行整體的說(shuō)明,希望能給你一個(gè)Smartphone開(kāi)發(fā)的大概印象。
從開(kāi)發(fā)角度看Smartphone
Smartphone是一個(gè)智能手機操作平臺,它基于Microsoft的嵌入式實(shí)時(shí)
操作系統Windows CE進(jìn)行設計,因為它的應用定位在手機上,因此Microsoft在底層對它的無(wú)線(xiàn)通訊以及語(yǔ)音文本信息通訊模塊做了大量的優(yōu)化。下面是一款使用Smartphone 2003簡(jiǎn)體中文版的設備,多普達565的主界面。
對開(kāi)發(fā)人員來(lái)說(shuō),在開(kāi)發(fā)過(guò)程中,我們能夠看到熟悉的開(kāi)發(fā)環(huán)境界面、熟悉的消息體系、熟悉的API函數、以及熟悉的內存管理與進(jìn)程管理,根據個(gè)人經(jīng)驗,我認為如果你曾經(jīng)在桌面Windows或者Pocket PC上開(kāi)發(fā)過(guò)軟件,那么你所需要關(guān)注的只是一些注意事項再加上一個(gè)入門(mén),然后就可以象進(jìn)行桌面程序開(kāi)發(fā)一樣進(jìn)行Smartphone的開(kāi)發(fā)了,當然,時(shí)刻參考MSDN肯定是少不了的,呵呵,這個(gè)相信大家都很熟悉。
1、Smartphone平臺的基礎架構
下面是Smartphone平臺的基礎架構圖:
無(wú)線(xiàn)堆棧層:手機的本質(zhì)功能當然是無(wú)線(xiàn)通訊了,這個(gè)層次負責最終的數據發(fā)送與接收處理,它對進(jìn)行接收和發(fā)送的
硬件細節進(jìn)行控制,突出無(wú)線(xiàn)通訊這個(gè)核心內容,是Smartphone操作平臺最低的一層。
核心API:和我們普通開(kāi)發(fā)所說(shuō)的API大致是一樣的,開(kāi)發(fā)人員利用它們來(lái)進(jìn)行與無(wú)線(xiàn)通訊與語(yǔ)音服務(wù)相關(guān)的開(kāi)發(fā)。這部分內容可以在開(kāi)發(fā)的時(shí)候參照MSDN來(lái)使用。
邏輯:這一層在核心API層的上面,系統為了簡(jiǎn)化開(kāi)發(fā),會(huì )將一些API包裝成各個(gè)功能塊供你調用,類(lèi)似于我們平常所說(shuō)的控件,這一層就是提供各種控件的接口。
應用層:系統中面向用戶(hù)提供服務(wù)的應用程序。
2、Smartphone編程的整體框架
Smartphone開(kāi)發(fā)框架和一般的桌面Windows開(kāi)發(fā)區別不大,你可以使用可視化編譯工具(eMbedded Visual
C++ 或者Visual Studio 2003
.net中的
VB.net、
C#)結合Smartphone的SDK來(lái)開(kāi)發(fā)適用于Smartphone手機的軟件。
主框架處理是:
·注冊窗口類(lèi),連接窗口過(guò)程
·初始化應用程序實(shí)例
·建立程序主窗口
·進(jìn)入消息循環(huán)
消息循環(huán)相關(guān)處理是:
·收到消息分發(fā)到窗口過(guò)程處理
·窗口過(guò)程處理自己需要處理的消息
·不需要處理的消息則調用系統缺省處理函數來(lái)實(shí)現
·如果接收到消息是退出消息,就退出消息循環(huán),結束程序
編程工作主要是:
·為自己需要處理的消息增加消息映射入口
·實(shí)現消息處理函數
3、Smartphone開(kāi)發(fā)與PocketPC開(kāi)發(fā)
因為兩者都基于Windows CE操作系統而設計,因此Pocket PC和Smartphone在開(kāi)發(fā)上是非常相像的,有許多Pocket PC的程序可以輕松移植到Smartphone上來(lái),對于開(kāi)發(fā)而言,兩者最重要的相同點(diǎn)是:Smartphone的開(kāi)發(fā)環(huán)境和所使用的Win CE API與Pocket PC是相同的。
兩者之間的不同主要表現在用戶(hù)界面的關(guān)聯(lián)上,這主要表現在兩個(gè)方面,一個(gè)是分辨率: Pocket PC具有分辨率為240*320像素的界面而Smartphone則是176*220像素。另外一個(gè)需要注意的是應用程序導航,Pocket PC使用觸摸屏和觸摸筆而Smartphone則使用硬件按鈕導航。
如果你關(guān)注并且修改了相關(guān)的代碼,你可以發(fā)現,你的Pocket PC代碼大部分可以移植到Smartphone設備上來(lái)。
3、Smartphone開(kāi)發(fā)與windows桌面開(kāi)發(fā)
如果你有過(guò)Windows桌面開(kāi)發(fā)經(jīng)驗,你會(huì )發(fā)現Smartphone開(kāi)發(fā)具有大致相同的應用程序結構,但是,你需要注意Smartphone上適用的API(稱(chēng)之為Win CE API),比起桌面Windows所提供的API來(lái),有很多功能被精簡(jiǎn),有些API甚至徹底消失了,所有這些意味著(zhù)你不能隨心所欲使用你在Windows桌面開(kāi)發(fā)所獲得的經(jīng)驗;你需要始終在Windows CE幫助和Smartphone SDK 幫助中獲得這些API的精確信息。
另外,你也會(huì )發(fā)覺(jué)程序的用戶(hù)界面設計會(huì )有些不同,比如Smartphone的分辨率被規定為176*220像素,比如你需要注意用戶(hù)輸入字母和文字比在桌面Windows中困難得多等,這些下面我會(huì )進(jìn)行詳細地分析,當然,也不用太擔心,因為有很多知識是照樣可用的。
Smartphone
軟件開(kāi)發(fā)原則
1、審視Smartphone硬件
開(kāi)發(fā)基于Smartphone操作平臺的軟件,第一步應該是了解Smartphone設備,這主要是因為在手機上面的程序開(kāi)發(fā)與硬件本身有非常密切的關(guān)系,當然我們重點(diǎn)關(guān)注的是與開(kāi)發(fā)有關(guān)系的硬件內容,這主要表現在硬件控制與顯示屏幕兩個(gè)部分。
1) 硬件控制
Smartphone設計的宗旨是方便用戶(hù)使用單手進(jìn)行操作,因此,Smartphone放棄了觸摸筆,改用按鍵來(lái)控制導航。
Microsoft 規定,使用Smartphone的手機必須具備如下9個(gè)程序控制按鍵,當然,因為各手機廠(chǎng)家設計風(fēng)格不同,按鍵的位置形狀可以由廠(chǎng)家自行設置。我們設計程序時(shí)可以充分利用這9個(gè)按鍵的功能。
·五向控制鍵:包括上、下、左、右四個(gè)方向鍵 和 中間的一個(gè)"執行"鍵;中間的這個(gè)"執行"鍵用來(lái)執行當前的操作。
·主頁(yè)鍵:按此按鈕可以返回手機的主屏幕(就是手機剛剛啟動(dòng)時(shí)所顯示的那個(gè)屏幕,類(lèi)似于windows的桌面)。
·后退鍵:退回到上一個(gè)狀態(tài)(或者說(shuō)上一個(gè)屏幕)。它有一個(gè)特殊的作用,就是在編輯框中時(shí),它的作用是刪除前一個(gè)輸入的字符,想想也有道理,因為這時(shí)我們可以認為上一個(gè)屏幕就是輸入當前字符之前的那個(gè)屏幕^_^。
·兩個(gè)多功能鍵:手機上有左、右兩個(gè)多功能鍵,常常被稱(chēng)為"軟"鍵,這是因為他們的功能會(huì )隨著(zhù)使用場(chǎng)合的不同而動(dòng)態(tài)變化,對應執行的功能一般會(huì )在上面運行的軟件底部顯示。
開(kāi)發(fā)的時(shí)候要充分利用這些硬件控制鍵的功能,但因為這些控制鍵意義明確,所以,一般不能改變這些按鍵的默認功能。
此外,對于程序開(kāi)發(fā)來(lái)說(shuō),"*"和"#"這兩個(gè)按鍵也可以在程序作靈活運用,因為這兩個(gè)鍵在程序中一般沒(méi)有系統默認的含義(例外是在有字符輸入的時(shí)候),賦予它們自己需要的功能不會(huì )引起用戶(hù)的疑惑。
2) 顯示屏幕
對開(kāi)發(fā)人員而言,屏幕的分辨率是對開(kāi)發(fā)最有影響的因素,Microsoft規定使用Smartphone的手機必須具備一個(gè)176*220分辨率的LCD屏幕,顏色為16位色。在開(kāi)發(fā)的時(shí)候我們需要時(shí)時(shí)提醒自己這一點(diǎn),比較極端的做法是,在設計Smartphone上的程序時(shí),將顯示屏幕的設計尺度精確到像素級別。
2、Smartphone上的軟件開(kāi)發(fā)原則
大致了解了Smartphone的硬件后,結合Microsoft對Smartphone上開(kāi)發(fā)的設計白皮書(shū),我們來(lái)看看在Smartphone上開(kāi)發(fā)所應該遵循的原則:
1) 保持軟件的一致性原則
讓用戶(hù)"學(xué)一次,到處可用"是微軟桌面操作系統Windows大獲成功的一個(gè)關(guān)鍵,要保持軟件的一致性,最主要的就是大家都要遵循一定的開(kāi)發(fā)規則,下面我略談一下,給大家一個(gè)初步的印象,具體請參考Smartphone 2003 SDK幫助中"Smartphone User Interface Guidelines"一章。
1、 每一個(gè)程序最下面都固定有兩個(gè)內容敏感的按鈕,這兩個(gè)按鈕使用手機上的兩個(gè)軟鍵對應觸發(fā)。
原則是:需要直接執行的操作或者當前場(chǎng)景下最常用的操作一般放在左軟鍵,需要提供彈出菜單選擇的操作一般放在右軟鍵;不要使用這兩個(gè)軟鍵(對應手機下面的兩個(gè)硬件button)作程序的導航使用,導航最好使用五方向的導航按鈕。
2、每一個(gè)form都用menu來(lái)完成
除了Internet explorer頁(yè)面中,普通的button不被使用在Smartphone平臺上,左右軟鍵菜單項被使用在一些需要隨著(zhù)環(huán)境而變得場(chǎng)合,超過(guò)兩種則彈出菜單,否則,平鋪(如按鈕)菜單。
2) 時(shí)刻考慮硬件限制條件原則
在手機上開(kāi)發(fā)軟件,硬件限制必須要被時(shí)刻考慮,這個(gè)限制主要有如下幾種:
限制1、手機內存小,CPU速度相對慢。這要求程序效率高內存節省。
限制2、屏幕比較小。
限制3、手機操作比使用鍵盤(pán)和鼠標困難的多。因此我們需要考慮我們的軟件是否用起來(lái)足夠簡(jiǎn)單,從一定意義上講,這是手機上開(kāi)發(fā)軟件的首要原則。
下面是一些依據本原則而來(lái)的建議:
1、 MFC不被Smartphone支持,因為限制1。
2、 Smartphone是個(gè)多任務(wù)處理系統,但程序被切換到后臺執行時(shí),最好釋放多余的資源,因為限制1。
3、 Smartphone上的message box,要求顯示在全屏窗口,因為限制2.。
4、 控件排列規則:需要放置多個(gè)控件的時(shí)候,最好每行只放置一個(gè)控件,這樣用戶(hù)可以只是使用上下鍵來(lái)切換控件,如果有標簽之類(lèi),最好將標簽單獨放置一行。另外,在每個(gè)控件中,最好只有單個(gè)方向(或者上下/或者左右)的操作,因此在Smartphone中不提供combox控件。因為限制3。
5、 窗口布局規則:為了簡(jiǎn)單,每個(gè)窗口中的控件不要太多,如果需要更多的控件,你可以使用滾動(dòng)式的窗口,不推薦使用層疊(tabbed)窗口,這也是SDK中不提供TAB控件的原因。因為限制2與3,操作要簡(jiǎn)單,窗口布局要簡(jiǎn)單&清晰,這也是我們在Smartphone上進(jìn)行程序設計的原則。
上面是進(jìn)行Smartphone開(kāi)發(fā)最重要的兩條原則,如果你想要更詳細的解釋?zhuān)埧?Smartphone SDK"上的"UI Guidelines "。
上一篇: 智能手機Smartphone開(kāi)發(fā)從零起步