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

浙公網安備 33010602011771號