【導讀】汽車計算機的設計者明白,駕駛員只能看儀表板顯示屏幾秒鐘。由于汽車計算機的操作員也可能正在開車,因此汽車計算機給計算世界帶來了新的安全問題。
汽車計算機的設計者明白,駕駛員只能看儀表板顯示屏幾秒鐘。由于汽車計算機的操作員也可能正在開車,因此汽車計算機給計算世界帶來了新的安全問題。
在為嵌入式板載系統(tǒng)創(chuàng)建圖形用戶界面 (GUI) 時,您必須考慮許多不斷發(fā)展的設計問題。為了使駕駛員能夠快速瀏覽屏幕,顯示內容必須明確、明顯且數(shù)量有限??刂茖拥目蚣軕摵唵?,這樣驅動程序就不會迷失在結構中。
嵌入式顯示器中經(jīng)常使用的線條圖和簡單的窗口輪廓不足以為您的 GUI 提供獨特的、定制的外觀和感覺。
一線汽車供應商需要能夠使用生產(chǎn)的定制圖形和獨特的字體,以幫助區(qū)分其產(chǎn)品品牌并創(chuàng)造精美的外觀和感覺。顯示增強型嵌入式技術使您可以編寫應用程序行為,并將應用程序的特定外觀應用于面向品牌的主題,例如目前在 MP3 音樂播放器中實現(xiàn)的“皮膚”概念。
汽車界面設計的另一個關鍵是能夠使用快速響應的用戶輸入模式,例如觸摸屏和語音技術。
為了創(chuàng)建具有使用儀表板顯示屏的 GUI 的實用且適銷對路的嵌入式汽車應用程序,您必須能夠成功解決所有這些問題。
直到近,現(xiàn)有的面向對象的 Java GUI 框架還沒有充分滿足這些嵌入式需求。然而,現(xiàn)在有一個 GUI 框架專門為開發(fā)人員提供一種經(jīng)典的面向對象的方式來為嵌入式 Java 應用程序創(chuàng)建圖形界面。
OO GUI 框架的結構
任何 GUI 系統(tǒng)的基本構建塊的一個示例是 IBM VisualAge Micro Edition MicroView 框架中的 Application 類。Application 類創(chuàng)建并布局由任意數(shù)量的視圖/控制器對組成的屏幕,這些視圖/控制器對在顯示設備上呈現(xiàn)應用程序數(shù)據(jù)。要通過視圖呈現(xiàn)的數(shù)據(jù)在模型類中定義,這使應用程序本身相對獨立于數(shù)據(jù)的呈現(xiàn)。向用戶呈現(xiàn)或從用戶呈現(xiàn)的數(shù)據(jù)填充這些模型,這些模型控制視圖的狀態(tài)。
圖 1:從對象被放置在屏幕上并被個人查看到個人響應和屏幕更新之間發(fā)生的事件。
ApplicationManager 類協(xié)調用戶對各種模塊化、開發(fā)人員定義的應用程序的導航,這些應用程序保存在其注冊表中。ApplicationManager 根據(jù)需要在屏幕上打開和關閉應用程序,并協(xié)調設備中所有應用程序的視圖創(chuàng)建。
MicroView 應用程序始終與一個視圖關聯(lián),該視圖是 MicroViews ContainerView 類的實例;該視圖又包含構成應用程序視覺布局的其他視圖。ApplicationManager 還包含一個ScreenApplication,它是其余應用程序擴展的根對象。
為了構建一個 GUI 系統(tǒng),您必須首先定義必要的應用程序類,以及所有必需的模型、視圖和控制器對象(模型控制視圖的狀態(tài))。模型、視圖和控制器對象是通過創(chuàng)建默認 MicroView 框架類的新實例來定義的。
對于復雜的 GUI 系統(tǒng),您還可以創(chuàng)建自定義的模型、視圖和控制器類。默認視圖包括按鈕視圖、拉貝視圖、列表視圖和段落視圖等。默認控制器包括按鈕控制器、鍵盤控制器和菜單控制器。
除了創(chuàng)建視圖/控制器對并將它們放置在設備屏幕上之外,每個應用程序還實現(xiàn)必要的偵聽器接口,以響應通過操作(即更改模型和視圖類的狀態(tài)的操作)發(fā)送到這些控制器/控制器類的用戶輸入事件)。然后這些操作作為消息傳遞給應用程序。
MicroView 應用程序與大多數(shù)常見的 GUI 系統(tǒng)一樣,使用基于事件的機制來指導用戶和應用程序之間的交互。MicroView 事件系統(tǒng)本質上類似于作為標準 Java 開發(fā)工具包 (JDKTM) 一部分的 AWT 庫中公開的基于委托的事件模型。
在 MicroView 事件處理模型中,Application 類的實例為它們需要處理的每種事件類型實現(xiàn)偵聽器接口。當具有已注冊偵聽器的事件來自底層輸入系統(tǒng)時,該事件將被路由到該類進行處理。
在標準 AWT 基于委托的事件模型中,事件從源對象傳播到偵聽器以進行處理,以響應某些用戶交互。在 MicroView 框架(如標準 AWT 委托事件模型中)中,事件源通常是 UI 組件,偵聽器是 Application 對象,該對象根據(jù)應用程序的特定需求實現(xiàn)適當?shù)膫陕犉鹘涌凇?br style="padding: 0px; margin: 0px auto;"/>
在模型/視圖/控制器(MVC)范例的 MicroView 實現(xiàn)中,控制器充當應用程序和底層事件子系統(tǒng)之間的中介;因此,MicroView 框架中的事件類型要么是 com.events.events 的直接后代,要么是間接后代。IBM。伊維奧加斯。控制器事件類。
每個事件都是從其源創(chuàng)建的,并由輸入組件子系統(tǒng)路由到充當偵聽器部分的應用程序對象,以及基于所請求的特定類型的用戶交互的相應事件的實例。
憑借相應偵聽器接口中指定的一個或多個方法的實現(xiàn),偵聽器對象(在本例中為應用程序對象)可能會以某種有意義的方式響應事件。此時,輸入組件通過返回值通知該特定偵聽器對象是否消耗了此事件,并且輸入組件繼續(xù)響應用戶交互,對每個被認為感興趣的事件重復此循環(huán)。
同樣,MicroView 框架中事件對象的基類是 com. ibrn.ive,脫氣??刂破魇录?。這個類是java的直接后代。實用程序。EventObject,它是標準 AWT 委托事件模型中的基本事件對象。MicroView 框架提供了以下四種基本事件類型:
ButtonEvents—當用戶單擊或點擊按鈕視圖用戶界面組件時發(fā)送
ListEvents—當用戶點擊 ListView 組件中的選項時發(fā)生
MenuEvents——用戶從菜單中進行了選擇
KeypadEvents — 導致用戶從模擬鍵盤的自定義視圖中進行選擇。
MicroView 不包含代表菜單或鍵盤的特定 View 對象。然而,它確實提供了自定義控制器對象,可以與自定義視圖對象一起使用來模仿這些對象的外觀和/或功能。
MicroView 事件偵聽器框架與上面定義的標準事件層次結構松散對應。每種類型的標準事件都存在以下偵聽器:
ButtonListener,定義了一個方法,
public Boolean handleEvent(ButtonEvent e)
ListListener,它定義了一個方法
public Boolean handleEvent(ListEvent e)
MenuListener,定義
public void handleEvent(ListEvent e)
KeypadListener,定義方法
public void handleEvent(KeypadEvent e)。
與 AWT 一樣,MicroView 框架對低級事件和(通常稱為“語義”)事件進行了區(qū)分。低級事件的特征是輸入或其他窗口系統(tǒng)事件,而語義(即)事件的特征是輸入或其他窗口系統(tǒng)事件。級別)事件通常是組件模型本身的某種語義的結果;換句話說,是不需要用戶干預的組件到組件的消息。
雖然 MicroView 框架包含低級事件,但它們的功能幾乎完全封裝在低級事件處理框架代碼中,并且不會在 API 級別向開發(fā)人員公開。應用程序開發(fā)人員使用的常見 MicroView 事件本質上是語義的。
與 Aw’r 一樣,MicroView 框架中的事件傳遞是同步的;事件由輸入系統(tǒng)按照接收順序傳遞給組件。
盡管 MicroView 定義了一組基本的事件和偵聽器,但您可以自由地實現(xiàn)自己的自定義事件類型和偵聽器,作為應用程序語義接口的一部分。
MicroView 和 AWT 之間的另一個區(qū)別是 MicroView 開發(fā)人員可以安全地假設所有事件偵聽器分派將在同一線程上進行。然而,這是由于底層輸入子系統(tǒng)的實現(xiàn)而導致的,嚴格來說并不是事件系統(tǒng)的設計功能。
解決汽車特定問題您可以使用 MicroView 通過您選擇的捆綁位圖圖像和默認或自定義字體來創(chuàng)建視圖,而不是限制自己創(chuàng)建代碼繪制的 GUI。
現(xiàn)有的位圖圖稿可以從圖形軟件(例如Adobe Photoshop)導入,以創(chuàng)建圖標、背景、操作小部件(例如按鈕)等。
默認EgBitmapBundle類的子類 用作位圖的表示。然后,您將子類轉換為 ROM 資源格式,為它們提供物理文件名定義,并將它們與可從應用程序訪問的 ID 相關聯(lián)。要在顯示中使用默認或自定義字體,請遵循類似的過程,使用EGBitmapFontsBundle類的實例 并為捆綁字體指定各種大小和樣式。
這種靈活性有助于設計高度精致、以品牌為中心的獨特展示。使用圖形軟件創(chuàng)建圖稿的能力還可以實現(xiàn)更快速的開發(fā),并限度地減少應用程序中所需的 Java 代碼量。
事件利用各種用戶輸入模式,包括觸摸屏和語音數(shù)據(jù)。定義應用程序行為時,多個事件可以鏈接到同一視圖/控制器對。從應用程序中包含的視圖接收事件通知僅需要您實現(xiàn)適當?shù)膫陕犉鹘涌凇J录幚淼囊粋€示例是當視圖中的數(shù)據(jù)發(fā)生變化時,導致模型發(fā)生變化,或者當用戶觸摸屏幕區(qū)域時。
例如,如果應用程序包含按鈕視圖,并且應用程序類需要從這些視圖接收事件通知,則應用程序應該實現(xiàn) ButtonListener 接口。還可以使用利用語音和其他輸入模式的類似收聽者接口(例如,按鈕監(jiān)聽器、列表監(jiān)聽器、鍵盤監(jiān)聽器、菜單監(jiān)聽器等)。
語音/語音數(shù)據(jù)
通過語音控制用戶界面有兩種方法。種是使用語音數(shù)據(jù)來控制屏幕界面本身。例如,語音輸入用于從一個字段切換到另一個字段、激活按鈕、激活菜單、選擇列表中的項目等。
由于同時操作車輛以及查看和操作觸摸屏涉及的特殊困難,您可能會發(fā)現(xiàn)考慮為視力障礙或失明用戶設計界面很有用。對于視力障礙用戶以及儀表板汽車界面來說,語音交互和語音識別是 GUI 開發(fā)的關鍵方面。
一些歐洲國家現(xiàn)在正在考慮制定法律,要求所有新開發(fā)的設備為殘疾用戶(包括視力障礙)提供無障礙功能。語音和語音數(shù)據(jù)在未來有可能變得比現(xiàn)在更加重要和廣泛。
用語音控制用戶界面的第二種方法可能更適合汽車和其他 GUI 應用。在這種方法中,創(chuàng)建了兩個用戶界面:語音和圖形觸摸面板。用戶可以與使用語音識別和反饋的應用程序進行直接交互,但如果使用語音輸入與應用程序交互,則屏幕的反應方式與使用觸摸數(shù)據(jù)時的反應方式不同。
例如,為了查找地址,應用程序可能會使用語音來提示用戶輸入每個數(shù)據(jù)字段(例如,城市、州等)。幾次來回的應用程序交互會用用戶通過語音輸入提供的信息填寫“表格”。每個響應都會提供聲音反饋,用戶無需查看屏幕即可確認應用程序對語音輸入的理解。語音交互改變模型(即內部數(shù)據(jù)),視圖自動反映改變的數(shù)據(jù)。
O0 GUI 框架同樣適用于基于觸摸板和基于語音的界面。MicroView 事件框架是一種熟悉的、一致的事件處理模型,它為嵌入式系統(tǒng)開發(fā)人員提供了功能的實現(xiàn)。
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯(lián)系小編進行處理。
推薦閱讀:
UCODE標簽存儲器擴展對供應鏈及工業(yè)物聯(lián)網(wǎng)的影響