中国移动互联网研发培训专家为更好地利用本文,您应该使用AndroidSDK来构造Android应用程序。完成本文之后,您将了解如何使用HTTP(S)执行从应用程序到web服务器的通信,以及如何使用DOM解析器解析XML。在此过程中,您将创建自定义和动态的用户界面布局、多线程通信、消息处理程序、以及进程对话框。至少,您将了解AndroidManifest.xml和服务器端脚本编写。中国移动互联网研发培训专家本教程介绍一个用于在Android设备上进行移动数据收集的动态表单的架构。我将首先介绍一个高级架构,讨论这样一个应用程序在数据收集的大环境中的应用。快速浏览这个已完成的项目,包含每个源文件,对本教程将要介绍的内容有一个大概了解。就像“厨艺展示”一样,您使用一些Java类从头开始构建这个应用程序,每个Java类都被小心引入并关联到应用程序的其他方面,其中最显著是一个数据模型,这个表单引擎就是基于它构造的。最后,您将表单数据保存在服务器上并简单地查看应用程序的服务器端。中国移动互联网研发培训专家API:应用程序编程接口DOM:文档对象模型HTML:超文本标记语言HTTP(S):超文本传输协议安全IDE:集成开发环境SAX:XML的简单APISDK:软件开发工具包UI:用户界面URL:统一资源定位符XML:可扩展标记语言中国移动互联网研发培训专家我们首先简要讨论数据收集,以及如何在使用Android移动设备时轻松实现数据收集。一个Android数据收集框架收集数据是计算机时代之前的任务。计算机已经变成一个日常“订书钉”,使我们思考、查找和使用信息的方式发生了革命性的变化。市值数百亿美元的公司要归功于他们在存储、检索和管理海量信息中的高效。今天使用的数据库由各种各样架构的系统供给,包括大型机、客户服务器、web应用程序、以及现在的移动应用程序。中国移动互联网研发培训专家物理存货和周期计数应用程序是移动计算的早期实用应用程序。这些应用程序通常是批量数据收集,其中硬件需要一个扩展插口(dockingstation)来上传收集的信息。从出现到现在,移动应用程序市场已经走过了很长一段路程,无线连通性和设备几乎遍布各种文化和市场,渗透到日常生活的每个方面。尽管数据收集方式可能已经变得更具流动性,但数据收集的核心并没有发生太大变化。用户必须看到一些问题,并且要有一种简单的响应方式。本教程演示如何为Android驱动的移动电话构造一个简单的数据收集框架,其中要利用一个XML支持的动态元数据结构。中国移动互联网研发培训专家在深入代码之前,我们先在一个非常高的层面上检查应用程序设置。FormsEngine一瞥我们首先浏览一下这个FormsEngine应用程序的各个方面。图1描绘这个应用程序与提供各种内容的数据录入表单的一个或多个服务器之间的关系。中国移动互联网研发培训专家图1.应用程序架构中国移动互联网研发培训专家在图1中,Form1提供RoboticsCompetition的注册,Form2要求用户提供关于他们的汽车维修习惯的信息。这些表单和Android应用程序通信使用HTTP(S)来:下载表单数据。向用户显示表单数据并(可选)收集特定于设备的数据,比如相机图像、声音录制、GPS定位、或者罗盘读数。收集用户提供的数据。将数据提交给适当服务器。中国移动互联网研发培训专家本教程的服务器端实现为一对文件:一个描述表单的XML文档和一个负责记录表单提交的PHP文档。这个Android应用程序是一个用Java代码编写的原生应用程序,使用AndroidSDK,在Eclipse中编码。表2显示完整应用程序的源文件。您可以下载包含所有这些源文件的压缩文件(参见下载)。本教程将详细介绍每个源文件。中国移动互联网研发培训专家文件名XmlGui.javaXmlGuiForm.javaXmlGuiFormField.javaXmlGuiEditBox.javaXmlGuiPickOne.javaRunForm.javamain.xmlAndroidManifest.xmlxmlgui1.xmlxmlgui1-post.phpxmlgui2.xml注释AndroidActivity的入口点一个表单的高级数据模型和方法表示一个表单域,持有一个表单的每个字段的元数据实现一个文本框类型用户界面元素实现一个下拉列表类型用户界面元素使用上述类处理一个表单应用程序用户界面主页此Android应用程序的部署描述符收集Robotics比赛注册信息的样例表单处理表单提交的PHP脚本汽车维修习惯调查的样例表单中国移动互联网研发培训专家图2展示本教程末尾完成的应用程序在Eclipse中的项目结构。(查看图2的文本版本。)图2.Eclipse中的项目中国移动互联网研发培训专家如果您没有一个正在运行的Android开发环境,那么现在是安装Android工具的绝好时机。要了解如何设置一个Android开发环境,请参阅参考资料中必要工具的链接,以及一些关于如何为Android开发应用程序的入门文章和教程。熟悉Android有助于理解本教程。您已经对架构和应用程序有一个大致了解,现在就开始吧!中国移动互联网研发培训专家我们现在已准备好在Eclipse中启动这个Android项目,创建允许您为这个FormsEngine应用程序存储和管理元数据的数据模型和类。中国移动互联网研发培训专家创建Android应用程序从我们熟悉的地方开始:打开Eclipse并选择FileNew,如图3所示。图3.新建一个Android应用程序中国移动互联网研发培训专家这个步骤将启动EclipseNewproject向导。选择AndroidProject(针对Android的专业Java环境)。确保向项目提供一个有效的标识符(我使用的是XMLGUI)。为匹配本教程中介绍的解决方案,在Properties下面,指定应用程序名为XMLGUI,包名为com.msi.ibm。选择CreateActivity复选框并将Activityname指定为XmlGui,如图4所示。中国移动互联网研发培训专家图4.设置一个新项目中国移动互联网研发培训专家项目创建后,它应该非常类似图5中的图像。(查看图5的文本版本。)图5.Newproject向导刚刚完成时的Android项目中国移动互联网研发培训专家现在,项目已创建,确保应用程序干净地构建并在AndroidEmulator中运行是一个最佳实践。注意,有时应用程序直到您编辑并保存Java源文件时才会构建。这导致AndroidSDK工具自动在gen文件夹中生成一些文件。如果Eclipse环境中的Problems选项卡没有显示任何条目,那么您可以测试这个应用程序。要测试应用程序,创建一个Run配置,如图6所示。在AndroidApplication列表中,选择XmlGui。确保以下值出现:XmlGui位于Name字段中,XMLGUI位于Project字段中,com.msi.ibm.XmlGui位于Launch字段中。单击Run。中国移动互联网研发培训专家图6.Run配置设置此项目已在Android模拟器中创建、配置并正确启动,现在可以为Android创建XML驱动的数据收集工具了。中国移动互联网研发培训专家这个应用程序的具体细节要求它向一个用户显示输入元素,验证数据,然后将数据提交到一个指定服务器。如果这个应用程序只针对新记录设置,那么它什么用处也没有,因为它不支持查询现有记录以便编辑或删除。要向应用程序提供足够的关于如何显示数据录入表单的指示,需要一个信息集(通常称为元数据)。元数据是关于数据的数据。简言之,这个应用程序必须理解几个数据元素,包括:FormName—人们可读的表单名称FormIdentifier—这个元数据收集的惟一标识符SubmissionURL—收集到的数据的发送地址一个或多个字段—这些字段可能是文本、数字,或者“从列表中选择”类型的字段中国移动互联网研发培训专家几乎所有种类的问题都映射到这三种类型的用户界面元素中的一种。例如,可以实现一个复选框作为一个Yes或No选择字段。可以实现多重选择(multi-select)作为多选字段。当然,您可以随意扩展本教程中展示的代码。对于您的应用程序,使用场景如下:您在参加一个活动,其中您可以注册一个或多个项目。您可以填写一张注册表,也可以等到回家后登录该组织的网站进行注册。在本例中,您将假定一位用户将通过在一个Android设备上下载一个动态表单,以便在现场从他的手机填写一张简单表单,提供申请者的姓名、性别和年龄。清单1显示了xmlgui1.xml的内容,该文件表示一个Robotics俱乐部活动的注册表单。中国移动互联网研发培训专家?xmlversion=1.0encoding=utf-8?xmlguiformid=1name=RoboticsClubRegistrationsubmitTo=fieldname=fnamelabel=FirstNametype=textrequired=Yoptions=/fieldname=lnamelabel=LastNametype=textrequired=Yoptions=/fieldname=genderlabel=Gendertype=choicerequired=Yoptions=Male|Female/fieldname=agelabel=Ageon15Oct.2010type=numericrequired