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