MID应用程序间的数据流模型

提交新文章

2009年03月21日 10:00



摘要

本文将介绍MID应用中的信息流,并提议应用程序用一个数据流模型来管理各应用程序间的数据流。它还通过一个简单的实例来说明:在MID上的Moblin系统中,数据流是如何在应用程序中传递和管理的。本文包括提议的信息流模型的介绍,演示用例的安装和使用,并展示信息流模块在管理应用程序之间的信息过程中带来的好处。

 

1. Moblin 简介

Linux 是开源的操作系统,用户可以从操作系统的级别定制它,比如快速开机,快速恢复休眠;也可以从应用程序的级别定制它,比如系统主题或者图形界面等。

Moblin 是一个基于Linux系统并运行在Intel? Atom?处理器上的软件平台,它有绚丽的视觉效果,丰富的、灵活的应用程序接口。Moblin的内核专为MID和Netbook优化了应用程序接口。

需要获得更多的关于Moblin的信息,请访问:http://moblin.org

moblin-1.jpg

图1. Moblin程序架构

 

2. MID信息流模型简介

现在,基于Moblin系统为MID设计的应用程序越来越多,这些应用程序会创建或者使用大量的数据信息,例如:网址、图片、地址簿或者文档等等。所以数据信息的管理变成了MID上应用开发的一个重要组成部分,但是现在没有一套完整的、成体系的标准和方法来管理这些数据信息。多数情况下,应用程序开发者不知道如何管理和利用其他应用程序产生的数据,而最终用户不知道调用哪个应用程序来帮助他们处理这些信息。

这里提出一个信息流管理的方法,告诉应用程序:在系统中已经创建了什么数据信息;有哪些应用程序向系统声明了自己的功能;并且为用户选择适当的应用程序来处理这些数据信息。

 

3. MID信息流模型工作原理

在这里设计了一种数据流模型,用它来帮助系统和应用程序管理数据和应用程序的信息。它包含应用程序注册机制,数据类型分析和数据格式标准化机制等。这个模型靠一个信息流模块来实现,它是连接应用程序与数据的中间部分,包括以下4个主要功能:

(1) 接受应用程序注册:应用程序可以通过信息流模块注册它们的名称、路径和可以处理的数据类型。信息流模块会记录这些信息,当需要时通过“路径”调用符合处理类型的应用程序。

(2) 获取应用程序或者用户产生的数据信息:监视应用程序或用户产生的数据信息,并将这些信息按照一定的标准格式化成其他应用程序可以处理的格式。

(3) 格式化信息:数据流模块可以将数据按照标准格式化。这些格式化后的数据可以被准确的识别和分类,而且通过注册信息找到哪些应用程序可以处理这一类信息。

(4) 调用应用程序处理数据信息:数据流被格式化以后,信息流模块会列出可以处理这一类信息的应用程序列表,并且将这个列表展现给用户,如果用户选择一个应用程序,数据流模块就会通过这个应用程序在系统中注册的“路径”信息调用这个应用程序来处理数据。 下图中描述了信息流流动的过程:应用程序向系统注册自己的“程序信息”。当用户提供一些信息时,这些信息首先被格式化,然后识别成为一个应用程序可以处理的类型;如果用户提供一个文件,这个文件会被直接分类,得到确切的类型以后,可以处理这类数据的应用程序将被调用并完成用户的需求。

 

fig-2.jpg

图2. 信息流流动过程。

 

4.信息流模型实例演示

下面让我们用一个实例来演示信息流模块的工作过程。

这个实例是用C++语言基于GTK的图形库编写的,在Moblin系统中运行。它使用一个文本文件来记录应用程序的注册信息。当用户提供数据或者文件时,实例程序会首先格式化信息,并识别类型,然后从文本文件中找出可以处理这些数据的应用程序,并以列表的形式展示给用户,交由用户选择。

4.1 演示程序说明 这个演示实例包含4个重要的部分,这些部分相当于信息流模块的4个重要功能: 1) 实例应用程序使用一个文本文件“App_list.txt”记录应用程序的注册信息。 2) 它使用一个用GTK编写对话框来接收用户提供的数据信息或文件。 3) 它包含字符串格式模块用来格式化用户提供的数据信息,而且包含一个分类模块,可以识别格式化后的数据或者用户提供的文件属于哪类信息。 4) 它使用“exec”函数通过应用程序在“App_list.txt”中记录的“Path”来启动应用程序。 数据传递和模块调用流程图如下:

fig-3.jpg

图 3. 应用实例流程图。

 

演示用例源代码文件结构如下:

data/------------ 存放应用程序注册信息文件“App_list.txt”。
apps/----------- 存放一些简单的应用程序实例。
main.c---------- 演示用例的入口文件。
main_win.c--- 用户输入数据信息的UI。
main_win.h--- “main_win.c”的头文件。
app_list.c------ 应用实例的程序列表UI。
app_list.h------ “app_list.c”的头文件。
str.c------------- 字符串处理函数。

4.2 程序注册信息格式

按照下面的格式编辑“App_list.txt”文件:
##type:App_Type##name:App_Name##path:App_Full_Path
##type:App_Type##name:App_Name##path:App_Full_Path
……
字符“App_Type”记录应用程序可以处理的数据类型,并用数字代替这些类型:
1: 图片
2: 地址簿
3: 文档
4: 文本
5: 网址
6: 号码
7: Email
8: 关键字
字符“App_Name”和“App_Full_Path”分别用来记录程序的基本信息:名称和路径。

4.3 实例的演示

4.3.1 软硬件需求
装有Moblin系统的MID。

4.3.2 准备工作

  1. Moblin系统需要安装“crownbeach-full-moblin-stack-with-proprietary”、“developer-tools” 和“asian-fonts”包。
  2. 将压缩文件复制到系统,解压缩并运行“make install”安装应用实例。

4.3.3 运行实例

1.)运行“bin”文件夹下的demo程序,启动信息获取界面,输入信息或者选择一个文件。

2.)首先演示输入一个网址。

 

fig-4a.JPG

图 4. 运行应用实例并输入网址。

 

3.) 点击“下一步”。这里可以识别网址、图片、Email、号码、关键字等类型。刚刚输入的网址信息被自动识别为“URL操作”,演示程序会展示一个应用程序列表,由用户选择用哪个应用程序来操作识别后的信息。

fig-5a.JPG

图 5. 信息识别。

 

4.) 在列表中选择一个应用程序。这个演示中选择“MidBowser”来打开这个网址。

 

fig-6a.JPG
图 6. 选择应用程序处理信息。

 

5.) 测试输入数字

fig-7.jpg

图 7. 输入号码。

6.) 点击“下一步”。上一步输入的电话号码被识别成一组号码,选择一个程序处理这组号码。

fig-8a.JPG

图 8. 信息识别。

7.) 选择“Add to Address”添加到地址簿。

 

fig-9a.JPG

图 9. 选择应用程序处理信息。

 

8.) 测试选择一个文件,在第一步的对话框中选择“选择数据文件”,然后点击“浏览”,选择一个测试文件,这里选择一个图片文件。

fig-10a.JPG

图 10. 选择文件(1)。

 

 

fig-11a.JPG

图 11. 选择文件(2)。

 

9.) 点击“下一步”,与处理信息一样,实例程序会列出可以处理这类文件的程序。

fig-12a.JPG

图 12. 程序列表。

10.) 点击“Show Picture”按钮,运行这个程序。

 

fig-13a.JPG

图 13. 运行应用程序处理文件。

 

实例程序演示结束。通过这个实例可以看出,用户可以不用知道这个MID的Moblin系统中安装了哪些应用程序,并且可以方便的找到相应的应用程序来处理数据信息,这样免去了用户自己查找和处理数据的麻烦。而且应用程序开发者可以通过此模型来调用别的程序创建的数据,也可以把自己创建的数据通知别的应用程序来调用,从而设计出更多吸引人的改善用户体验的功能。

 

 

 

总结

这份文档介绍了一种为MID设计的信息流模型,而且阐述它是怎么工作的。它通过实例展示出:用户可以方便快捷地找到处理数据信息的应用程序,免去了用户自己手动查找和调用的麻烦。如果我们按这种模型编写应用程序并应用到MID上,用户或者应用程序就可以方便快捷地处理他们遇到的各种数据信息,并且使信息流更为紧密地与应用程序和操作系统关联起来。同时,更多有吸引力的功能便可以产生。

参考文献

http://moblin.org

相关下载
Demo_MIDInfoStream.zip

关于作者

谢周意:于2005年加入英特尔公司。作为一名应用工程师,他的主要工作内容是MID软件开发支持和使用模式研究,特别是针对Web2.0和新媒体应用的研究。

刘国徽:是英特尔中国MID应用支持部门的实习生,于2008年进入英特尔实习,目前在北京大学攻读软件工程硕士学位。