手机MMI体系结构及其实现
摘自:http://blog.csdn.net/zc2007/article/details/2340436?
?
?? 1引言
??? MMI(ManMachineInter-face),即人機(jī)界面,它負(fù)責(zé)和用戶的交互,在必要的時(shí)候調(diào)用其它模塊的功能。MMI模塊在整個(gè)系統(tǒng)中處于最 高層,主要實(shí)現(xiàn)人機(jī)交互的功能,即解釋用戶的各種命令并發(fā)消息到相應(yīng)的處理模塊,同時(shí)將系統(tǒng)接收到的各種消息或系統(tǒng)所處的狀態(tài)以界面友好的方式反饋給用 戶。它由管理人機(jī)界面交互的任務(wù)實(shí)現(xiàn)。MMI軟件利用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,平臺采用消息循環(huán)驅(qū)動(dòng)機(jī)制,實(shí)現(xiàn)對下層核心代碼的抽象、隔離和封裝,從而使 得MMI軟件同硬件平臺和下層軟件的相關(guān)性降低。在完成大型的應(yīng)用軟件開發(fā)過程中,便于分組分工合作。
??? 目前,各個(gè)手機(jī)廠商正在將越來越多的注意力集中到人機(jī)界面的設(shè)計(jì)上,力爭提供給用戶一個(gè)美觀易用、功能齊全的操作平臺。顯示屏由原先的黑白小屏幕顯示,發(fā)展為現(xiàn)在的真彩色大屏幕,存儲容量也快速增長,硬件設(shè)備的高速發(fā)展,為人機(jī)接口的各種改進(jìn)提供了可靠性。
??? 為了更好地實(shí)現(xiàn)上述功能,手機(jī)MMI軟件應(yīng)該做到以下幾點(diǎn)。
??? ·軟件工作穩(wěn)定可靠,與低層軟件接口方便,以保證整機(jī)的性能。
??? ·選用代碼效率高,可移植性好的編程語言,以便提高產(chǎn)品的性能價(jià)格比,降低開發(fā)成本。
??? ·運(yùn)用圖形、動(dòng)畫、漢化界面及漢字功能,美化產(chǎn)品、方便使用。
??? ·精心組織程序結(jié)構(gòu),使軟件結(jié)構(gòu)清晰,各個(gè)模塊獨(dú)立性強(qiáng)、可擴(kuò)充性高、可封裝性好,便于開發(fā)小組分工合作以及各階段開發(fā)成果的充分利用,縮短產(chǎn)品開發(fā)周期。
??? 本文圍繞MMI軟件架構(gòu)和消息驅(qū)動(dòng)機(jī)制,結(jié)合短消息的發(fā)送,粗略地對手機(jī)軟件開發(fā)作介紹。
??? 2手機(jī)MMI應(yīng)用程序的分層結(jié)構(gòu)
??? 手機(jī)軟件的主體系統(tǒng)架構(gòu)由兩部分組成:底層的操作系統(tǒng)、協(xié)議棧、協(xié)議驅(qū)動(dòng)與上層的手機(jī)平臺。
圖1
??? 手機(jī)性能的好壞直接取決于手機(jī)平臺的搭建。好的平臺能實(shí)現(xiàn)模塊化管理,各個(gè)模塊之間的獨(dú)立性高,便于修改,節(jié)約成本。這里就涉及到人機(jī)界面的設(shè)計(jì),我們把MMI應(yīng)用程序自下而上分為三個(gè)層次,分別是抽象層、核心層和應(yīng)用層。如圖1所示。
??? 抽象層由操作系統(tǒng)抽象層(OSAL)、協(xié)議棧抽象層(PASL)和硬件抽象層(PSAL)組成。此模塊可以將目標(biāo)操作系統(tǒng)抽象出來,使核心層和應(yīng)用層與目標(biāo)操作系統(tǒng)無關(guān),實(shí)現(xiàn)良好的可移植性,縮短產(chǎn)品的開發(fā)周期,保證產(chǎn)品快速上市;也可以將目標(biāo)平臺的無線通信相關(guān)部分抽象出來,與協(xié)議棧通信,完成AT命令的交互,可以提供與電話功能和SIM卡功能相關(guān)的操作,包括語音通話、短消息、小區(qū)廣播、SIM卡數(shù)據(jù)訪問、STK、PLMN網(wǎng)絡(luò)注冊等;也可以完成設(shè)備抽象如液晶屏、鍵盤、音頻播放器等,綜合它們的共同點(diǎn),與下層隔離。
??? 核心層是MMI程序的靈魂,在軟件結(jié)構(gòu)中起承上啟下的作用。它主要由圖形用戶界面(GUI)、窗口管理、消息管理、應(yīng)用引擎組成。引擎與界面無關(guān),文件 I/O采用ANSIC標(biāo)準(zhǔn),方便在各種系統(tǒng)上的移植。如短消息的引擎專門負(fù)責(zé)短消息的接收、分發(fā)、發(fā)送、存儲和管理,它僅依賴于抽象層,向上層應(yīng)用程序提 供一整套短消息相關(guān)的API,從而達(dá)到簡化應(yīng)用程序編程的目的,使界面定制更加方便快捷。關(guān)于窗口管理和消息管理下文將作詳細(xì)的介紹。
??? 應(yīng)用層是手機(jī)多樣化的體現(xiàn),廠家可以針對不同的消費(fèi)群體量身定制。一般手機(jī)都提供短消息、通話、設(shè)置等基礎(chǔ)應(yīng)用,還包括照相、MP3等高級應(yīng)用。
??? 3MMI軟件的核心結(jié)構(gòu)——消息循環(huán)機(jī)制及窗口管理
圖2
??? MMI軟件有一個(gè)主程序,主要作用是建立消息循環(huán),負(fù)責(zé)分發(fā)消息。由于MMI軟件采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,平臺采用消息循環(huán)驅(qū)動(dòng)機(jī)制,實(shí)現(xiàn)對下層核心 代碼的抽象、隔離和封裝,從而應(yīng)用程序的運(yùn)行需要依靠外部發(fā)生的事件來驅(qū)動(dòng),即程序所做的一切都是響應(yīng)發(fā)送給窗口過程的消息。如圖2所示。
??? 一個(gè)簡單的消息環(huán)含有下列函數(shù)的調(diào)用:GetMessage、TranslateMessage和Dispatch-Message。
??? while(GetMessage(&msg,NULL, 0, 0)) 1引言
??? MMI(ManMachineInterface),即人機(jī)界面,它負(fù)責(zé)和用戶的交互,在必要的時(shí)候調(diào)用其它模塊的功能。MMI模塊在整個(gè)系統(tǒng)中處于最高 層,主要實(shí)現(xiàn)人機(jī)交互的功能,即解釋用戶的各種命令并發(fā)消息到相應(yīng)的處理模塊,同時(shí)將系統(tǒng)接收到的各種消息或系統(tǒng)所處的狀態(tài)以界面友好的方式反饋給用戶。 它由管理人機(jī)界面交互的任務(wù)實(shí)現(xiàn)。MMI軟件利用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,平臺采用消息循環(huán)驅(qū)動(dòng)機(jī)制,實(shí)現(xiàn)對下層核心代碼的抽象、隔離和封裝,從而使得 MMI軟件同硬件平臺和下層軟件的相關(guān)性降低。在完成大型的應(yīng)用軟件開發(fā)過程中,便于分組分工合作。
??? 目前,各個(gè)手機(jī)廠商正在將越來越多的注意力集中到人機(jī)界面的設(shè)計(jì)上,力爭提供給用戶一個(gè)美觀易用、功能齊全的操作平臺。顯示屏由原先的黑白小屏幕顯示,發(fā)展為現(xiàn)在的真彩色大屏幕,存儲容量也快速增長,硬件設(shè)備的高速發(fā)展,為人機(jī)接口的各種改進(jìn)提供了可靠性。
??? 為了更好地實(shí)現(xiàn)上述功能,手機(jī)MMI軟件應(yīng)該做到以下幾點(diǎn)。
??? ·軟件工作穩(wěn)定可靠,與低層軟件接口方便,以保證整機(jī)的性能。
??? ·選用代碼效率高,可移植性好的編程語言,以便提高產(chǎn)品的性能價(jià)格比,降低開發(fā)成本。
??? ·運(yùn)用圖形、動(dòng)畫、漢化界面及漢字功能,美化產(chǎn)品、方便使用。
??? ·精心組織程序結(jié)構(gòu),使軟件結(jié)構(gòu)清晰,各個(gè)模塊獨(dú)立性強(qiáng)、可擴(kuò)充性高、可封裝性好,便于開發(fā)小組分工合作以及各階段開發(fā)成果的充分利用,縮短產(chǎn)品開發(fā)周期。
??? 本文圍繞MMI軟件架構(gòu)和消息驅(qū)動(dòng)機(jī)制,結(jié)合短消息的發(fā)送,粗略地對手機(jī)軟件開發(fā)作介紹。
??? 2手機(jī)MMI應(yīng)用程序的分層結(jié)構(gòu)
??? 手機(jī)軟件的主體系統(tǒng)架構(gòu)由兩部分組成:底層的操作系統(tǒng)、協(xié)議棧、協(xié)議驅(qū)動(dòng)與上層的手機(jī)平臺。
??? 手機(jī)性能的好壞直接取決于手機(jī)平臺的搭建。好的平臺能實(shí)現(xiàn)模塊化管理,各個(gè)模塊之間的獨(dú)立性高,便于修改,節(jié)約成本。這里就涉及到人機(jī)界面的設(shè)計(jì),我們把MMI應(yīng)用程序自下而上分為三個(gè)層次,分別是抽象層、核心層和應(yīng)用層。如圖1所示。
??? 抽象層由操作系統(tǒng)抽象層(OSAL)、協(xié)議棧抽象層(PASL)和硬件抽象層(PSAL)組成。此模塊可以將目標(biāo)操作系統(tǒng)抽象出來,使核心層和應(yīng)用層與目 標(biāo)操作系統(tǒng)無關(guān),實(shí)現(xiàn)良好的可移植性,縮短產(chǎn)品的開發(fā)周期,保證產(chǎn)品快速上市;也可以將目標(biāo)平臺的無線通信相關(guān)部分抽象出來,與協(xié)議棧通信,完成AT命令 的交互,可以提供與電話功能和SIM卡功能相關(guān)的操作,包括語音通話、短消息、小區(qū)廣播、SIM卡數(shù)據(jù)訪問、STK、PLMN網(wǎng)絡(luò)注冊等;也可以完成設(shè)備 抽象如液晶屏、鍵盤、音頻播放器等,綜合它們的共同點(diǎn),與下層隔離。
??? 核心層是MMI程序的靈魂,在軟件結(jié)構(gòu)中起承上啟下的作用。它主要由圖形用戶界面(GUI)、窗口管理、消息管理、應(yīng)用引擎組成。引擎與界面無關(guān),文件 I/O采用ANSIC標(biāo)準(zhǔn),方便在各種系統(tǒng)上的移植。如短消息的引擎專門負(fù)責(zé)短消息的接收、分發(fā)、發(fā)送、存儲和管理,它僅依賴于抽象層,向上層應(yīng)用程序提 供一整套短消息相關(guān)的API,從而達(dá)到簡化應(yīng)用程序編程的目的,使界面定制更加方便快捷。關(guān)于窗口管理和消息管理下文將作詳細(xì)的介紹。
??? 應(yīng)用層是手機(jī)多樣化的體現(xiàn),廠家可以針對不同的消費(fèi)群體量身定制。一般手機(jī)都提供短消息、通話、設(shè)置等基礎(chǔ)應(yīng)用,還包括照相、MP3等高級應(yīng)用。
??? 3MMI軟件的核心結(jié)構(gòu)——消息循環(huán)機(jī)制及窗口管理
??? MMI軟件有一個(gè)主程序,主要作用是建立消息循環(huán),負(fù)責(zé)分發(fā)消息。由于MMI軟件采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,平臺采用消息循環(huán)驅(qū)動(dòng)機(jī)制,實(shí)現(xiàn)對下層核心 代碼的抽象、隔離和封裝,從而應(yīng)用程序的運(yùn)行需要依靠外部發(fā)生的事件來驅(qū)動(dòng),即程序所做的一切都是響應(yīng)發(fā)送給窗口過程的消息。如圖2所示。
??? 一個(gè)簡單的消息環(huán)含有下列函數(shù)的調(diào)用:GetMessage、TranslateMessage和DispatchMessage。
??? while(GetMessage(&msg,NULL, 0, 0))
??? {
??? TranslateMessage(&msg);
??? DispatchMessage(&msg);
??? }
??? 當(dāng)收到來自底層的開機(jī)消息時(shí),MMI軟件進(jìn)行初始化并創(chuàng)建基本窗口。基本窗口可以看作是MMI層所有窗口的“根”,其它窗口都是這個(gè)窗口的子窗口。到達(dá) MMI層的消息,其它窗口不處理時(shí),都送到基本窗口中作缺省處理。在基本窗口中,根據(jù)不同的情況,進(jìn)行狀態(tài)轉(zhuǎn)換,分別創(chuàng)建等待、充電、等待插入SIM卡、 等待輸入PIN(個(gè)人識別號)等子窗口,處理開機(jī)及關(guān)機(jī)過程中的各項(xiàng)工作。順利完成各項(xiàng)開機(jī)工作后,轉(zhuǎn)入待機(jī)狀態(tài),創(chuàng)建待機(jī)窗口。待機(jī)窗口可以完成撥號、 啟動(dòng)快捷鍵等工作,也可以進(jìn)一步創(chuàng)建電話本等子窗口。如果因接聽來電或撥打電話進(jìn)入通話狀態(tài),取消待機(jī)窗口,創(chuàng)建通話窗口。
??? 菜單窗口可以派生出一系列子窗口,形成一顆菜單樹,這個(gè)菜單樹把手機(jī)的各種功能有機(jī)組織在一起。各個(gè)菜單窗口都是菜單窗口類的實(shí)例。菜單的選擇、顯示等功能都在菜單類中完成。
??? GUI(圖形用戶界面)系統(tǒng)為MMI應(yīng)用程序提供了以窗口為核心的用戶界面和消息事件驅(qū)動(dòng)的實(shí)現(xiàn)機(jī)制。GUI窗口管理模塊為對話窗口、菜單、編輯及其他用 戶輸入輸出操作提供了一個(gè)基本框架,為消息處理提供了基本手段。窗口管理收集所有的輸入信息,然后把這些輸入信息以消息的形式送往合適的窗口,由該窗口的 處理函數(shù)處理。
??? 窗口消息在窗口函數(shù)中處理。每個(gè)窗口類都必須有一個(gè)窗口函數(shù)。MMI應(yīng)用程序只要負(fù)責(zé)創(chuàng)建窗口、處理窗口產(chǎn)生的高級事件及窗口的異常情況。在這個(gè)環(huán)境中, 用戶可以對消息作處理,也可以作缺省處理。窗口管理把來自鍵盤和軟件中其它實(shí)體的消息送到具有當(dāng)前焦點(diǎn)的窗口。在軟件的整個(gè)運(yùn)行過程中,總存在一個(gè)具有焦 點(diǎn)的窗口,它負(fù)責(zé)處理輸入消息,或者把消息沿著從子窗口到父窗口方向的鏈表送到一個(gè)可以處理該消息的窗口。
??? 應(yīng)用程序必須刪除和處理投遞到它的線程消息隊(duì)列中的消息,單一線程的應(yīng)用程序一般在它的入口函數(shù)中使用一個(gè)消息環(huán)來刪除消息,并把消息發(fā)送到相應(yīng)的窗口過程進(jìn)行處理。具有多重線程的應(yīng)用程序在創(chuàng)建窗口的每一個(gè)線程中使用一個(gè)消息環(huán)。
??? 4MMI層消息的產(chǎn)生及處理
??? MMI消息主要包括按鍵事件消息、協(xié)議棧消息及自定義消息等。GUI從幾個(gè)源產(chǎn)生和獲取消息,由底層鍵盤的輸入消息;也可以由GUI系統(tǒng)產(chǎn)生(如通過 GUI提供的API函數(shù)調(diào)用或GUI系統(tǒng)為了響應(yīng)應(yīng)用程序給系統(tǒng)帶來的變化,如窗口大小的改變),大多數(shù)這類消息是發(fā)送而不是投遞的;也可由應(yīng)用程序的運(yùn) 行來產(chǎn)生,一個(gè)應(yīng)用程序可以投遞消息到自己的隊(duì)列或其它應(yīng)用程序的隊(duì)列中去,也可以直接把消息發(fā)送到自己的窗口或其它應(yīng)用程序的窗口中去。
??? GUI系統(tǒng)有兩種方式向窗口過程發(fā)送消息:把消息投遞到一個(gè)先進(jìn)先出的消息隊(duì)列,它是系統(tǒng)定義的內(nèi)存塊用于臨時(shí)存儲消息;或是把消息直接發(fā)送給窗口過程。GUI系統(tǒng)要用到消息隊(duì)列,它要管理一個(gè)系統(tǒng)消息隊(duì)列和任意數(shù)目線程消息隊(duì)列,每個(gè)隊(duì)列對應(yīng)一個(gè)線程。
??? 5短消息的發(fā)送實(shí)例
圖3
??? 下面以短消息發(fā)送為例簡要說明。用戶點(diǎn)擊“短消息”菜單,進(jìn)入短消息列表窗體。按“OK”鍵進(jìn)入短消息編輯窗體,從而編寫短消息的內(nèi)容。編寫完畢,點(diǎn)擊“確定”,進(jìn)入聯(lián)系人窗體。最后,確認(rèn)聯(lián)系人號碼進(jìn)入發(fā)送窗體。傳遞的機(jī)制如圖3所示。
圖4
??? 短消息發(fā)送程序涉及到很多模塊,如何建立良好的通信機(jī)制是關(guān)鍵。程序中運(yùn)用了回調(diào)函數(shù)和事件傳送機(jī)制。如圖4所示。
??? 在回調(diào)函數(shù)的處理中,鍵盤事件的處理是最重要的。通常鍵盤事件被具有輸入焦點(diǎn)的窗體首先獲得,它如果處理這個(gè)鍵盤事件,在鍵盤回調(diào)函數(shù)中截獲該鍵盤事件, 否則將此鍵盤事件按照消息隊(duì)列,向上層窗口傳遞,直到有一個(gè)窗體將它截獲。由于編輯窗體使用的是編輯框窗口類,編輯框窗口類封裝良好,使得它本身可以處理 大部分鍵盤事件(如數(shù)字輸入、文字輸入等),但總有一些事件要進(jìn)行特殊的處理以滿足窗體的不同需求,這時(shí)需要與窗體之間進(jìn)行通信。
??? 6結(jié)束語
??? 本文介紹的這種軟件設(shè)計(jì)方法層次清晰、簡潔,結(jié)構(gòu)比較完善,有利于在較短的時(shí)間內(nèi)開發(fā)出符合要求的移動(dòng)終端軟件。同時(shí),進(jìn)行MMI軟件開發(fā)的整個(gè)過程模塊可再用性好,便于開發(fā)小組分工合作。
轉(zhuǎn)載于:https://www.cnblogs.com/jianghulang/archive/2012/04/03/2431257.html
總結(jié)
以上是生活随笔為你收集整理的手机MMI体系结构及其实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubunt 下 配置samba 服务器
- 下一篇: ubuntu下安装JDK和netbean