汽车计算机的设计者明白,驾驶员只能看仪表板显示屏几秒钟。由于汽车计算机的操作员也可能正在开车,因此汽车计算机给计算世界带来了新的安全问题。
在为嵌入式板载系统创建图形用户界面 (GUI) 时,您必须考虑许多不断发展的设计问题。为了使驾驶员能够快速浏览屏幕,显示内容必须明确、明显且数量有限。控制层的框架应该简单,这样驱动程序就不会迷失在结构中。
嵌入式显示器中经常使用的线条图和简单的窗口轮廓不足以为您的 GUI 提供独特的、定制的外观和感觉。
一线汽车供应商需要能够使用生产的定制图形和独特的字体,以帮助区分其产品品牌并创造精美的外观和感觉。显示增强型嵌入式技术使您可以编写应用程序行为,并将应用程序的特定外观应用于面向品牌的主题,例如目前在 MP3 音乐播放器中实现的“皮肤”概念。
汽车界面设计的另一个关键是能够使用快速响应的用户输入模式,例如触摸屏和语音技术。
为了创建具有使用仪表板显示屏的 GUI 的实用且适销对路的嵌入式汽车应用程序,您必须能够成功解决所有这些问题。
直到近,现有的面向对象的 Java GUI 框架还没有充分满足这些嵌入式需求。然而,现在有一个 GUI 框架专门为开发人员提供一种经典的面向对象的方式来为嵌入式 Java 应用程序创建图形界面。
OO GUI 框架的结构
任何 GUI 系统的基本构建块的一个示例是 IBM VisualAge Micro Edition MicroView 框架中的 Application 类。Application 类创建并布局由任意数量的视图/控制器对组成的屏幕,这些视图/控制器对在显示设备上呈现应用程序数据。要通过视图呈现的数据在模型类中定义,这使应用程序本身相对独立于数据的呈现。向用户呈现或从用户呈现的数据填充这些模型,这些模型控制视图的状态。
图 1:从对象被放置在屏幕上并被个人查看到个人响应和屏幕更新之间发生的事件。
ApplicationManager 类协调用户对各种模块化、开发人员定义的应用程序的导航,这些应用程序保存在其注册表中。ApplicationManager 根据需要在屏幕上打开和关闭应用程序,并协调设备中所有应用程序的视图创建。
MicroView 应用程序始终与一个视图关联,该视图是 MicroViews ContainerView 类的实例;该视图又包含构成应用程序视觉布局的其他视图。ApplicationManager 还包含一个ScreenApplication,它是其余应用程序扩展的根对象。
为了构建一个 GUI 系统,您必须首先定义必要的应用程序类,以及所有必需的模型、视图和控制器对象(模型控制视图的状态)。模型、视图和控制器对象是通过创建默认 MicroView 框架类的新实例来定义的。
对于复杂的 GUI 系统,您还可以创建自定义的模型、视图和控制器类。默认视图包括按钮视图、拉贝视图、列表视图和段落视图等。默认控制器包括按钮控制器、键盘控制器和菜单控制器。
除了创建视图/控制器对并将它们放置在设备屏幕上之外,每个应用程序还实现必要的侦听器接口,以响应通过操作(即更改模型和视图类的状态的操作)发送到这些控制器/控制器类的用户输入事件)。然后这些操作作为消息传递给应用程序。
MicroView 应用程序与大多数常见的 GUI 系统一样,使用基于事件的机制来指导用户和应用程序之间的交互。MicroView 事件系统本质上类似于作为标准 Java 开发工具包 (JDKTM) 一部分的 AWT 库中公开的基于委托的事件模型。
在 MicroView 事件处理模型中,Application 类的实例为它们需要处理的每种事件类型实现侦听器接口。当具有已注册侦听器的事件来自底层输入系统时,该事件将被路由到该类进行处理。
在标准 AWT 基于委托的事件模型中,事件从源对象传播到侦听器以进行处理,以响应某些用户交互。在 MicroView 框架(如标准 AWT 委托事件模型中)中,事件源通常是 UI 组件,侦听器是 Application 对象,该对象根据应用程序的特定需求实现适当的侦听器接口。
在模型/视图/控制器(MVC)范例的 MicroView 实现中,控制器充当应用程序和底层事件子系统之间的中介;因此,MicroView 框架中的事件类型要么是 com.events.events 的直接后代,要么是间接后代。IBM。伊维奥加斯。控制器事件类。
每个事件都是从其源创建的,并由输入组件子系统路由到充当侦听器部分的应用程序对象,以及基于所请求的特定类型的用户交互的相应事件的实例。
凭借相应侦听器接口中指定的一个或多个方法的实现,侦听器对象(在本例中为应用程序对象)可能会以某种有意义的方式响应事件。此时,输入组件通过返回值通知该特定侦听器对象是否消耗了此事件,并且输入组件继续响应用户交互,对每个被认为感兴趣的事件重复此循环。
同样,MicroView 框架中事件对象的基类是 com. ibrn.ive,脱气。控制器事件类。这个类是java的直接后代。实用程序。EventObject,它是标准 AWT 委托事件模型中的基本事件对象。MicroView 框架提供了以下四种基本事件类型:
ButtonEvents—当用户单击或点击按钮视图用户界面组件时发送
ListEvents—当用户点击 ListView 组件中的选项时发生
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 框架对低级事件和(通常称为“语义”)事件进行了区分。低级事件的特征是输入或其他窗口系统事件,而语义(即)事件的特征是输入或其他窗口系统事件。级别)事件通常是组件模型本身的某种语义的结果;换句话说,是不需要用户干预的组件到组件的消息。
虽然 MicroView 框架包含低级事件,但它们的功能几乎完全封装在低级事件处理框架代码中,并且不会在 API 级别向开发人员公开。应用程序开发人员使用的常见 MicroView 事件本质上是语义的。
与 Aw’r 一样,MicroView 框架中的事件传递是同步的;事件由输入系统按照接收顺序传递给组件。
尽管 MicroView 定义了一组基本的事件和侦听器,但您可以自由地实现自己的自定义事件类型和侦听器,作为应用程序语义接口的一部分。
MicroView 和 AWT 之间的另一个区别是 MicroView 开发人员可以安全地假设所有事件侦听器分派将在同一线程上进行。然而,这是由于底层输入子系统的实现而导致的,严格来说并不是事件系统的设计功能。
解决汽车特定问题您可以使用 MicroView 通过您选择的捆绑位图图像和默认或自定义字体来创建视图,而不是限制自己创建代码绘制的 GUI。
现有的位图图稿可以从图形软件(例如Adobe Photoshop)导入,以创建图标、背景、操作小部件(例如按钮)等。
默认EgBitmapBundle类的子类 用作位图的表示。然后,您将子类转换为 ROM 资源格式,为它们提供物理文件名定义,并将它们与可从应用程序访问的 ID 相关联。要在显示中使用默认或自定义字体,请遵循类似的过程,使用EGBitmapFontsBundle类的实例 并为捆绑字体指定各种大小和样式。
这种灵活性有助于设计高度精致、以品牌为中心的独特展示。使用图形软件创建图稿的能力还可以实现更快速的开发,并限度地减少应用程序中所需的 Java 代码量。
事件利用各种用户输入模式,包括触摸屏和语音数据。定义应用程序行为时,多个事件可以链接到同一视图/控制器对。从应用程序中包含的视图接收事件通知仅需要您实现适当的侦听器接口。事件处理的一个示例是当视图中的数据发生变化时,导致模型发生变化,或者当用户触摸屏幕区域时。
例如,如果应用程序包含按钮视图,并且应用程序类需要从这些视图接收事件通知,则应用程序应该实现 ButtonListener 接口。还可以使用利用语音和其他输入模式的类似收听者接口(例如,按钮监听器、列表监听器、键盘监听器、菜单监听器等)。
语音/语音数据
通过语音控制用户界面有两种方法。种是使用语音数据来控制屏幕界面本身。例如,语音输入用于从一个字段切换到另一个字段、激活按钮、激活菜单、选择列表中的项目等。
由于同时操作车辆以及查看和操作触摸屏涉及的特殊困难,您可能会发现考虑为视力障碍或失明用户设计界面很有用。对于视力障碍用户以及仪表板汽车界面来说,语音交互和语音识别是 GUI 开发的关键方面。
一些欧洲国家现在正在考虑制定法律,要求所有新开发的设备为残疾用户(包括视力障碍)提供无障碍功能。语音和语音数据在未来有可能变得比现在更加重要和广泛。
用语音控制用户界面的第二种方法可能更适合汽车和其他 GUI 应用。在这种方法中,创建了两个用户界面:语音和图形触摸面板。用户可以与使用语音识别和反馈的应用程序进行直接交互,但如果使用语音输入与应用程序交互,则屏幕的反应方式与使用触摸数据时的反应方式不同。
例如,为了查找地址,应用程序可能会使用语音来提示用户输入每个数据字段(例如,城市、州等)。几次来回的应用程序交互会用用户通过语音输入提供的信息填写“表格”。每个响应都会提供声音反馈,用户无需查看屏幕即可确认应用程序对语音输入的理解。语音交互改变模型(即内部数据),视图自动反映改变的数据。
O0 GUI 框架同样适用于基于触摸板和基于语音的界面。MicroView 事件框架是一种熟悉的、一致的事件处理模型,它为嵌入式系统开发人员提供了功能的实现。