淺談GSM手機(jī)的MMI軟件開發(fā)
摘要:采用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)用C語(yǔ)言開發(fā)窗口結(jié)構(gòu)的GSM手機(jī)MMI(人機(jī)
接口)軟件,程序結(jié)構(gòu)清晰,代碼效率高,模塊可再用性好。本文粗淺地談了GW手
機(jī)MMI軟件開發(fā)的功能模塊組織、窗口管理等技術(shù),并以快捷功能為例,說(shuō)明具體功
能的實(shí)現(xiàn)方法。
關(guān)鍵詞:人機(jī)接口(MMI) 功能模塊組織 窗口管理
GSM手機(jī)是直接為移動(dòng)用戶服務(wù)的移動(dòng)通信終端。其組成一般包括4個(gè)部分:射
頻單元、基帶單元、人機(jī)接口(Man Machine Interface,縮寫MMI)和軟件。
1 MMI的功能及對(duì)軟件的要求
MMI是進(jìn)行移動(dòng)通信的人與提供移動(dòng)通信服務(wù)的手機(jī)之間交往的界面。它包括硬
件和軟件:硬件有鍵盤、顯示器、話筒、耳機(jī)和SIM卡等;軟件有基本人機(jī)界面功能、
用戶SIM卡功能、公眾移動(dòng)網(wǎng)功能、菜單與電話本功能等。
MMI主要有以下功能:
(1)輸入用戶操作信息。
(2)以聲、光、振動(dòng)等手段顯示手機(jī)及網(wǎng)絡(luò)的狀態(tài)、輸出操作結(jié)果。
(3)實(shí)現(xiàn)GSM相關(guān)協(xié)議,如DRAFT pr ETS 300 906珍動(dòng)臺(tái)特性,ETS300 907移動(dòng)
臺(tái)MMI等標(biāo)準(zhǔn)對(duì)MMI的各項(xiàng)要求。
(4)提供合理、方便的操作方法。
(5)對(duì)眾多的功能進(jìn)行分類、組織,以方便用戶使用。
(6)增加計(jì)算器等附加功能,提高手機(jī)的實(shí)用性。
(7)加入動(dòng)畫、圖標(biāo)、問(wèn)候語(yǔ)等修飾功能,使產(chǎn)品界面美觀、友好。
為了滿足上述功能,對(duì)MMI軟件的開發(fā)工作提出了以下相關(guān)要求:
(1)充分消化GSM協(xié)議,完整地實(shí)現(xiàn)協(xié)議要求的各項(xiàng)基本功能。
(2)軟件工作穩(wěn)定可靠,與底層軟件接口方便,以保證整機(jī)的性能。
(3)選用代碼效率高,表達(dá)能力強(qiáng),可移植性好的編程語(yǔ)言,以便提高產(chǎn)品的性
能價(jià)格比,降低開發(fā)成本。
(4)根據(jù)GSM手機(jī)界面的具體情況,充分利用LCD顯示器的表達(dá)能力,借鑒、采用
最新的軟件開發(fā)技術(shù),運(yùn)用圖形、動(dòng)畫及漢化界面、漢字功能,美化產(chǎn)品、方便使用。
(5)精心組織程序結(jié)構(gòu),使軟件結(jié)構(gòu)清晰,各模塊獨(dú)立性強(qiáng),可擴(kuò)充性、可封裝
性好,便于開發(fā)小組分工合作以及各階段開發(fā)成果的充分利用,達(dá)到縮短產(chǎn)品開發(fā)周
期、豐富產(chǎn)品功能的目的。
(6)發(fā)揮創(chuàng)造性,開發(fā)特色功能、實(shí)用功能,提高產(chǎn)品吸引力。
2 MMI軟件功能模擬的組織結(jié)構(gòu)
GSM手機(jī)的MMI軟件有一個(gè)主程序,主要作用是建立消息循環(huán),負(fù)責(zé)分發(fā)消息。當(dāng)
收到來(lái)自底層的開機(jī)消息時(shí),MMI層軟件進(jìn)行初始化,并創(chuàng)建基本窗口。
窗口(window)是一個(gè)術(shù)語(yǔ),它可以接收消息,可能在顯示屏上有一個(gè)對(duì)應(yīng)的顯
示區(qū)域,也可以沒(méi)有。字符顯示區(qū),編輯域,或者既有字符顯示區(qū)又有編輯域的對(duì)話
窗口都是窗口的例子。
基本窗口是MMI層所有窗口的“根”,其它窗口都是這個(gè)窗口的子窗口。到達(dá)MMI
層的GSM消息,其它窗口不處理時(shí),都送到基本窗口中作缺省處理。在基本窗口中,
根據(jù)不同情況,進(jìn)行狀態(tài)轉(zhuǎn)換,分別創(chuàng)建等待關(guān)機(jī)、充電、等待插入SIM卡、等待輸
入PIN、等待SIM卡解鎖等子窗口,處理開機(jī)及關(guān)機(jī)過(guò)程中的各項(xiàng)工作。順利完成各項(xiàng)
開機(jī)工作后,轉(zhuǎn)人待機(jī)狀態(tài),創(chuàng)建待機(jī)窗口。如果因接聽來(lái)電或撥打電話進(jìn)入通話狀
態(tài),則取消待機(jī)窗口,創(chuàng)建通話窗口。
待機(jī)窗口可以完成撥號(hào)、啟動(dòng)快捷功能等工作,也可以進(jìn)一步創(chuàng)建電話本、功能
菜單等子窗口。
菜單窗口可以派生一系列子菜單窗口,形成一棵菜單樹。這棵菜單村把手機(jī)的眾
多功能有機(jī)地組織在一起。各個(gè)菜單窗口都是菜單窗口類的實(shí)例,菜單的選擇、顯示
等功能都在菜單類中完成。
3 MMI軟件的核心結(jié)構(gòu)——窗口管理
根據(jù)GSM手機(jī)MMI軟件開發(fā)的具體情況,采用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),用C語(yǔ)言
以窗口方式和消息驅(qū)動(dòng)機(jī)制來(lái)組織軟件結(jié)構(gòu),可以滿足對(duì)MMI軟件開發(fā)工作的各項(xiàng)要
求。在這個(gè)技術(shù)方案中,窗口管理是整個(gè)MMI軟件的核心結(jié)構(gòu)。
窗口管理為對(duì)話窗口、菜單、編輯及其它用戶輸入輸出操作提供了一個(gè)基本框架,
為消息處理提供了基本手段。由于使用了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,MMI軟件采用消
息驅(qū)動(dòng)機(jī)制。窗口管理收集所有的輸人信息,然后把這些輸入信息以消息的形式送往
合適的窗口。這些消息的執(zhí)行結(jié)果又可能產(chǎn)生新的消息,新消息的傳送仍由窗口管理
負(fù)責(zé)。窗口管理通過(guò)調(diào)用窗口函數(shù),向窗口函數(shù)傳遞消息參數(shù),把消息送到目的窗口。
窗口函數(shù)是其所屬窗口在窗口管理中注冊(cè)的系統(tǒng)函數(shù),是窗口最重要的屬性。窗
口管理調(diào)用窗口函數(shù)對(duì)窗口進(jìn)行操作,處理窗口接收到的所有消息。窗口函數(shù)對(duì)消息
的處理方法確定了窗口的表現(xiàn)和行為特征。
窗口管理調(diào)用標(biāo)準(zhǔn)的窗口函數(shù),自動(dòng)處理窗口的許多特性,應(yīng)用程序只要負(fù)責(zé)創(chuàng)
建窗口、處理窗口產(chǎn)生的高級(jí)事件及窗口的異常情況。在這個(gè)環(huán)境中,用戶可以對(duì)GSM
消息作處理,也可以讓系統(tǒng)對(duì)GSM消息作缺省處理。窗口管理把來(lái)自鍵盤和軟件中其它
實(shí)體的消息送到具有當(dāng)前焦點(diǎn)的窗口。在軟件的整個(gè)運(yùn)行過(guò)程中,總存在一個(gè)具有焦
點(diǎn)的窗口,它負(fù)責(zé)處理輸人消息,或者把消息沿著從子窗口到父窗口方向遞送的傳遞
鏈送到一個(gè)可以處理該消息的窗口。
MMI層主要有兩類輸入消息:它們是來(lái)自系統(tǒng)其它部分的鍵盤事件消息和GSM協(xié)議
棧消息。窗口消息按一定的規(guī)則選擇傳遞路徑。鍵盤消息是由按鍵的按下和釋放產(chǎn)生
的,被送往具有焦點(diǎn)的窗口。鍵盤消息最多只能傳到父窗口,不能再往上傳送。GSM協(xié)
議棧消息可以從子窗口到父窗口按窗口層次結(jié)構(gòu)一直傳遞,直到有一個(gè)窗口接受這條
消息為止。
窗口管理也提供了一種使消息直達(dá)某一窗口的機(jī)制,使消息可以直接送往請(qǐng)求這
個(gè)消息的窗口。這個(gè)方法在某條消息只有一個(gè)特定的窗口感興趣的情況下非常有用。
MMI層內(nèi)部產(chǎn)生的消息,一般不按窗口層次結(jié)構(gòu)由于窗口向父窗口傳送。如果要
把該類消息從子窗口向父窗口傳送,子窗口要負(fù)責(zé)這項(xiàng)工作。未處理的消息如何傳送,
由缺省的消息處理函數(shù)負(fù)責(zé)。
系統(tǒng)提供了一些窗口類。如文本類,用于顯示固定字符;菜單類,用于菜單的顯
示和處理;編輯類,用于字符的編輯等。應(yīng)用程序可以向窗口管理注冊(cè)新的窗口類。
窗口類實(shí)現(xiàn)了許多窗口的共同特性。向窗口管理注冊(cè)后的窗口類,可以生成窗口
實(shí)例,很方便地為許多窗口再用。例如,菜單窗口的工作方式相同,只有當(dāng)菜單窗口
的一個(gè)菜單項(xiàng)被選定時(shí),才需要一段特定的程序來(lái)處理這特定的選擇。菜單類窗口的
每個(gè)實(shí)例在選定特定的菜單項(xiàng)前的窗口管理都可以用窗口類中的同一段程序管理。這
里強(qiáng)調(diào)一下,只有向窗口管理注冊(cè)了的窗口類,才能生成窗口實(shí)例。
窗口實(shí)例繼承了窗口類的特性,也可以增加自己的特性,還可以通過(guò)重載消息處
理函數(shù)改變從窗口類繼承來(lái)的特性。生成窗口實(shí)例時(shí),要把窗口類名、窗口名、窗口
識(shí)別號(hào)、窗口函數(shù)名、窗口位置數(shù)據(jù)、父窗口、窗口風(fēng)格、窗口狀態(tài)、窗口鍵盤和窗
口私有數(shù)據(jù)等參數(shù)送往窗口管理。
為了方便,預(yù)先定義了一些通用的對(duì)話窗口生成函數(shù)。如通知消息對(duì)話窗口,可
以顯示通知信息;開/關(guān)選擇對(duì)話窗口,可以用于類似“開”或“關(guān)”等開關(guān)量的選
擇;PIN輸入對(duì)話窗口,可以用于輸入PIN碼等等。
窗口消息在窗口函數(shù)中處理。窗口消息送往一個(gè)窗口時(shí),實(shí)際上是送往這個(gè)窗口
的窗口函數(shù)。每個(gè)窗口類都必須有一個(gè)窗口函數(shù)。在窗口實(shí)例中不處理的消息一般用
缺省消息處理函數(shù)自動(dòng)送往該窗口的窗口類的窗口函數(shù)中處理。某些在窗口類中不處
理的消息,如GSM事件消息,則沿著從子窗口到父窗口方向遞送的傳遞鏈自動(dòng)送往父
窗口處理。對(duì)話窗口的子窗口可能會(huì)有一個(gè)子類窗口過(guò)程,這時(shí)窗口消息首先送往具
有焦點(diǎn)的子窗口,如在待機(jī)窗口中,數(shù)字鍵消息首先送往電話號(hào)碼編輯子窗口的窗口
函數(shù)中處理。
下面以快捷功能為例,說(shuō)明如何實(shí)現(xiàn)具體功能。
4快捷功能及其實(shí)現(xiàn)
菜單一般按功能分類編排,有時(shí)常用的功能安排在較深的菜單下面,使用時(shí)常感
不便。為了方便用戶訪問(wèn)常用功能,許多手機(jī)都有快捷功能。幾種不同方法都可以實(shí)
現(xiàn)快速訪問(wèn)菜單項(xiàng)的目的。
4.1功能編號(hào)法
給每個(gè)菜單項(xiàng)一個(gè)功能編號(hào),在主菜單下鍵入這個(gè)編號(hào),就可以進(jìn)入這項(xiàng)菜單。
例如主菜單第五項(xiàng)一子菜單第四項(xiàng)一下一級(jí)子菜單第一項(xiàng)的功能編
號(hào)為5-4-1。只要在主菜單下鍵人5、4、1,就
可以進(jìn)入這項(xiàng)功能。
每項(xiàng)菜單在其所屬窗口中都有一個(gè)編號(hào)。這種方法其實(shí)是每次按下數(shù)字鍵時(shí),選
中當(dāng)前窗口中該數(shù)字鍵所代表的菜單項(xiàng),逐級(jí)進(jìn)入,直至調(diào)出所需的功能。這項(xiàng)功能
可以在菜單類中實(shí)現(xiàn),這樣,任何菜單窗口就都有用數(shù)字鍵選擇菜單項(xiàng)的功能。只要
在菜單類的窗口函數(shù)中,加人數(shù)字鍵鍵盤消息的處理代碼就可以實(shí)現(xiàn)這項(xiàng)功能。
4.2快捷菜單法
在主菜單下增加一個(gè)子菜單,把原來(lái)分布在各級(jí)子菜單下的常用功能收集到這個(gè)
子菜單中,就組成一個(gè)快捷菜單。這些功能除了可以在各級(jí)子菜單中找到,也可以從
快捷菜單直接進(jìn)入。快捷菜單的處理方法與普通菜單一樣。
快捷菜單本身也可以設(shè)計(jì)成用快捷鍵進(jìn)入,其實(shí)現(xiàn)方法參看下面的快捷鍵法。
4.3快捷鍵法
快捷鍵法一般是設(shè)法利用鍵盤上的某些鍵進(jìn)入快捷功能。由于鍵的用途很多,必
須滿足一定的條件才能進(jìn)入快捷功能。比如在待機(jī)狀態(tài)下,連續(xù)按住某個(gè)鍵約2秒進(jìn)
入快捷功能?旖萱I功能一般在待機(jī)窗口中實(shí)現(xiàn),基本方法如下:
1)在待機(jī)窗口的電話號(hào)碼編輯子窗口中,當(dāng)收到有鍵壓下的消息時(shí),啟動(dòng)按鍵
計(jì)時(shí)器;當(dāng)收到按鍵釋放的消息時(shí),按鍵計(jì)時(shí)器停止工作。
2)按鍵計(jì)時(shí)器利用每秒一次到達(dá)待機(jī)窗口的定時(shí)器消息進(jìn)行計(jì)時(shí)。
3)按鍵時(shí)間超過(guò)2秒時(shí),調(diào)用按鍵所代表的功能的實(shí)現(xiàn)函數(shù),啟動(dòng)快捷功能。
5結(jié)束語(yǔ)
GSM手機(jī)MMI軟件的開發(fā)是一項(xiàng)復(fù)雜的軟件工程。采用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)用
C語(yǔ)言開發(fā)窗口結(jié)構(gòu)的MMI軟件,程序結(jié)構(gòu)清晰,代碼效率高,模塊可再用性好,便于
增加產(chǎn)品功能,便于開發(fā)小組編程時(shí)分工合作。