手機MMI體繫結構及其實現

來源:互聯網
上載者:User

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))     

    {

    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軟體開發的整個過程模組可再用性好,便於開發小組分工合作。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.