MMI(Maximally Maintained Inequality ){最大限度地维持不平等}
一个教育社会学概念,最早由雷夫
特里(Raftery) 和
霍特( Hout ) 提出,两人 比较系统地阐释了
爱尔兰在工业化进程中教育扩张与教育分层之间的关系, 指出除非较高阶层的入学需求已经处于饱和状态, 否则教育扩张并不会影响到教育分层模式。
采用
面向对象的程序设计技术用C语言开发窗口结构的GSM手机MMI(人机接口)
软件,程序结构清晰,代码效率高,模块可再用性好。本文粗浅地谈了GW手机MMI软件开发的功能模块组织、窗口管理等技术,并以快捷功能为例,说明具体功能的实现方法。
关键词:人机接口(MMI) 功能模块组织 窗口管理
手机的MMI设计
1 MMI的功能及对
软件的要求
MMI是进行移动通信的人与提供移动通信服务的手机之间交往的界面。它包括硬件和
软件:硬件有键盘、显示器、话筒、耳机和SIM卡等;软件有基本人机界面功能、用户SIM卡功能、公众移动网功能、菜单与电话本功能等。
MMI主要有以下功能:
(1)输入用户操作信息。
(2)以声、光、振动等手段显示手机及网络的状态、输出操作结果。
(3)实现GSM相关协议,如DRAFT pr ETS 300 906珍动台特性,ETS300 907移动台MMI等标准对MMI的各项要求。
(4)提供合理、方便的操作方法。
(5)对众多的功能进行分类、组织,以方便用户使用。
(6)增加计算器等附加功能,提高手机的实用性。
(7)加入动画、图标、问候语等修饰功能,使产品界面美观、友好。
为了满足上述功能,对MMI
软件的开发工作提出了以下相关要求:
(1)充分消化GSM协议,完整地实现协议要求的各项基本功能。
(3)选用代码效率高,表达能力强,可移植性好的编程语言,以便提高产品的性能价格比,降低开发成本。
(6)发挥创造性,开发特色功能、实用功能,提高产品吸引力。
2 MMI
软件功能模拟的组织结构
窗口(window)是一个术语,它可以接收消息,可能在显示屏上有一个对应的显示区域,也可以没有。字符显示区,编辑域,或者既有字符显示区又有编辑域的对话窗口都是窗口的例子。
基本窗口是MMI层所有窗口的"根",其它窗口都是这个窗口的子窗口。到达MMI层的GSM消息,其它窗口不处理时,都送到基本窗口中作缺省处理。在基本窗口中,根据不同情况,进行状态转换,分别创建等待关机、充电、等待插入SIM卡、等待输入PIN、等待SIM卡解锁等子窗口,处理开机及关机过程中的各项工作。顺利完成各项开机工作后,转人
待机状态,创建待机窗口。如果因接听来电或拨打电话进入通话状态,则取消待机窗口,创建通话窗口。
待机窗口可以完成拨号、启动快捷功能等工作,也可以进一步创建电话本、功能菜单等子窗口。
3 MMI
软件的核心结构--窗口管理
根据GSM手机MMI
软件开发的具体情况,采用
面向对象的程序设计技术,用C语言以窗口方式和
消息驱动机制来组织
软件结构,可以满足对MMI软件开发工作的各项要求。在这个技术方案中,窗口管理是整个MMI
软件的核心结构。
窗口管理为对话窗口、
菜单、编辑及其它用户输入输出操作提供了一个基本框架,为消息处理提供了基本手段。由于使用了
面向对象的程序设计方法,MMI
软件采用
消息驱动机制。窗口管理收集所有的输人信息,然后把这些输入信息以消息的形式送往合适的窗口。这些消息的执行结果又可能产生新的消息,新消息的传送仍由窗口管理负责。窗口管理通过调用
窗口函数,向窗口函数传递消息参数,把消息送到目的窗口。
窗口函数是其所属窗口在窗口管理中注册的
系统函数,是窗口最重要的属性。窗口管理调用
窗口函数对窗口进行操作,处理窗口接收到的所有消息。
窗口函数对消息的处理方法确定了窗口的表现和行为特征。 窗口管理调用标准的
窗口函数,自动处理窗口的许多特性,
应用程序只要负责创建窗口、处理窗口产生的高级事件及窗口的异常情况。在这个环境中,用户可以对GSM消息作处理,也可以让系统对GSM消息作缺省处理。窗口管理把来自键盘和
软件中其它实体的消息送到具有当前焦点的窗口。在
软件的整个运行过程中,总存在一个具有焦点的窗口,它负责处理输人消息,或者把消息沿着从子窗口到父窗口方向递送的传递链送到一个可以处理该消息的窗口。
MMI层主要有两类输入消息:它们是来自系统其它部分的键盘事件消息和GSM协议栈消息。窗口消息按一定的规则选择传递路径。键盘消息是由按键的按下和释放产生的,被送往具有焦点的窗口。键盘消息最多只能传到父窗口,不能再往上传送。GSM
协议栈消息可以从子窗口到父窗口按窗口层次结构一直传递,直到有一个窗口接受这条消息为止。
窗口管理也提供了一种使消息直达某一窗口的机制,使消息可以直接送往请求这个消息的窗口。这个方法在某条消息只有一个特定的窗口感兴趣的情况下非常有用。
MMI层内部产生的消息,一般不按窗口层次结构由于窗口向父窗口传送。如果要把该类消息从子窗口向父窗口传送,子窗口要负责这项工作。未处理的消息如何传送,由缺省的消息处理函数负责。 系统提供了一些
窗口类。如文本类,用于显示固定
字符;菜单类,用于菜单的显示和处理;编辑类,用于字符的编辑等。
应用程序可以向窗口管理注册新的
窗口类。
窗口类实现了许多窗口的共同特性。向窗口管理注册后的
窗口类,可以生成窗口实例,很方便地为许多窗口再用。例如,菜单窗口的工作方式相同,只有当菜单窗口的一个菜单项被选定时,才需要一段特定的程序来处理这特定的选择。菜单类窗口的每个实例在选定特定的菜单项前的窗口管理都可以用
窗口类中的同一段程序管理。这里强调一下,只有向窗口管理注册了的
窗口类,才能生成窗口实例。 窗口实例继承了
窗口类的特性,也可以增加自己的特性,还可以通过
重载消息处理函数改变从窗口类继承来的特性。生成窗口实例时,要把窗口类名、窗口名、窗口识别号、
窗口函数名、窗口位置数据、父窗口、窗口风格、窗口状态、窗口键盘和窗口私有数据等参数送往窗口管理。
为了方便,预先定义了一些通用的对话窗口生成函数。如通知消息对话窗口,可以显示通知信息;开/关选择对话窗口,可以用于类似"开"或"关"等开关量的选择;PIN输入对话窗口,可以用于输入PIN码等等。
窗口消息在
窗口函数中处理。窗口消息送往一个窗口时,实际上是送往这个窗口的
窗口函数。每个
窗口类都必须有一个窗口函数。在窗口实例中不处理的消息一般用缺省消息处理函数自动送往该窗口的
窗口类的窗口函数中处理。某些在
窗口类中不处理的消息,如GSM事件消息,则沿着从子窗口到父窗口方向递送的传递链自动送往父窗口处理。对话窗口的子窗口可能会有一个子类窗口过程,这时窗口消息首先送往具有焦点的子窗口,如在待机窗口中,数字键消息首先送往电话号码编辑子窗口的
窗口函数中处理。
下面以快捷功能为例,说明如何实现具体功能。
4 快捷功能及其实现
菜单一般按功能分类编排,有时常用的功能安排在较深的菜单下面,使用时常感不便。为了方便用户访问常用功能,许多手机都有快捷功能。几种不同方法都可以实现快速访问菜单项的目的。
4.1功能编号法
给每个菜单项一个功能编号,在主菜单下键入这个编号,就可以进入这项菜单。例如主菜单第五项一子菜单第四项一下一级子菜单第一项的功能编号为5-4-1。只要在主菜单下键人5、4、1,就可以进入这项功能。
每项菜单在其所属窗口中都有一个编号。这种方法其实是每次按下数字键时,选中当前窗口中该数字键所代表的菜单项,逐级进入,直至调出所需的功能。这项功能可以在菜单类中实现,这样,任何菜单窗口就都有用数字键选择菜单项的功能。只要在菜单类的
窗口函数中,加人数字键键盘消息的处理代码就可以实现这项功能。
4.2
快捷菜单法
在主菜单下增加一个子菜单,把原来分布在各级子菜单下的常用功能收集到这个子菜单中,就组成一个
快捷菜单。这些功能除了可以在各级子菜单中找到,也可以从
快捷菜单直接进入。
快捷菜单的处理方法与普通菜单一样。
4.3
快捷键法
快捷键法一般是设法利用键盘上的某些键进入快捷功能。由于键的用途很多,必须满足一定的条件才能进入快捷功能。比如在
待机状态下,连续按住某个键约2秒进入快捷功能。
快捷键功能一般在待机窗口中实现,基本方法如下:
1)在待机窗口的电话号码编辑子窗口中,当收到有键压下的消息时,启动按键计时器;当收到按键释放的消息时,按键计时器停止工作。
2)按键计时器利用每秒一次到达待机窗口的
定时器消息进行计时。
3)按键时间超过2秒时,调用按键所代表的功能的实现函数,启动快捷功能。
5 结束语
GSM手机MMI
软件的开发是一项复杂的软件工程。采用面向对象的程序设计技术