您好, 访客   登录/注册

面向ArcGIS for Android的表单界面生成器的设计与实现

来源:用户上传      作者:

  摘 要:基于ArcGIS for Android的采集系统作为当下主要的野外采样方式之一,被广泛的应用于各类场景,针对不同采集内容,采集系统的主要差异在于采样的属性数据所有不同,使用传统基于xml布局的固定表单进行属性采样,在功能的可扩展性与复用性上存在一定难度。基于此,本文利用java的反射技术、注解机制及android的自定义控件原理设计并实现了android表单界面生成器AutoForm,针对不同的采集对象,利用生成器,能动态生成满足需求的属性采集界面,极大地降低了研发成本,具有良好的可扩展性。
  关键词:ArcGIS for Android;java反射与注解机制;android自定义控件;AutoForm
  0 引言
  传统野外数据采集主要基于纸质记录,該方式耗时费力,效率低下,而基于ArcGIS for Android[1]移动开发技术实现的采集系统充分发挥了移动智能终端操作简易、携带方便、具有良好导航定位的特性,已成为野外数据采集的新趋势。使用采集系统进行野外采样通常需采集空间数据、属性数据与多媒体数据,针对各类采集对象,采集的空间数据内容相对固定,总是围绕点、线、面三种类型;但采集的属性数据内容却因采样对象的不同而有所差异,在进行采集系统研发时,针对不同的采集对象,往往需单独定制属性表单界面来满足采集属性数据的需求,这样的表单结构固定,可扩展性差,若要修改采集属性时,往往需重新设计,修改成本较大。
  针对以上情况,本文基于java的反射技术[2]、注解机制[3]以及android的自定义控件原理[4]设计并实现了高度可复用、扩展性良好的android表单界面生成器——AutoForm,AutoForm在程序运行过程中动态生成属性采集界面,它依赖于简单的java对象(POJO)[5],只需对POJO的内部属性及注解进行相应变动,就能快速修改为满足采集需求的属性表单界面,再基于对象关系模型映射(ORM)[6],便能将填写的属性数据直接持久化到数据库中。
  1 整体设计
  表单界面生成器AutoForm的核心基础是java反射技术与注解机制,利用标注在POJO属性上的注解控制表单所需组件,通过反射获取到java对象及注解信息,根据注解信息实时调用android原生控件或用户自定义控件动态生成属性表单,实现POJO与表单的一一映射关系,如图1所示。POJO作为AutoForm的中间媒介,可以通过ORM获取数据库SQLite[7]中的数据并直接呈现在表单上,也能快速将表单上填写的数据信息快速持久化到数据库中,实现了表单数据与数据库记录之间的快速转换。
  2 关键技术
  2.1 java反射技术
  java反射作为java的高级特性,能在运行状态中获取任意一个类的所有属性与方法,对于任意一个对象,能够调用该对象的所有方法和属性。通过反射技术,可以在高度解耦的情况下开发各类通用框架,实现程序开发的灵活性与可扩展性[8]。
  2.2 java注解机制
  java注解又称java标注,在java语言中可以对类、方法、变量、参数与包进行标注。Java注解允许被嵌入到字节码中,通过java反射,可以在运行时获取注解信息,方便根据注解信息进行相关操作。采用注解能提供更大的便捷性,易于程序的维护与修改。
  2.3 android自定义控件原理
  控件是android开发的基本元素,是实现android功能必不可少的组成。在android中,控件大致分为ViewGroup控件和View控件两类,自定义控件便是通过继承View控件或ViewGroup控件为实现特殊需求而定义的控件。通过自定义控件可以提高开发效率,降低维护成本,减少布局页面与功能代码之间的耦合性。
  3 功能实现
  表单界面生成器AutoForm通过反射技术与注解机制实现POJO与表单的一一映射,POJO中的每条属性对应表单界面中的每一栏控件,通过属性上@AutoView注解中的value值指明控件类型,display值作为控件标识,index值表示控件顺序,bind值装载单选多选条目。除了文字内容,AutoForm还将多媒体的拍摄与展示融为一体,在面向ArcGIS for Android的采集系统中完成空间数据采集后,可以快速获取属性数据与多媒体数据,如图2所示。
  AutoForm的优势之一在于针对采集对象变化或者采集属性调整时,只需简单变动POJO中的注解内容,便可以快速生成满足需求的属性表单界面,这相较传统的固定表单具有更强大的可扩展性。优势之二是属性表单界面中每栏组件的值与POJO中的各属性一一对应,在表单界面中完成采集后,会直接赋值给POJO的各属性;反之,POJO的各属性值也能直接呈现在表单界面上,将POJO作为中间媒介,再结合ORM,能实现数据库记录与表单内容的快速转换。
  4 结语
  基于ArcGIS for Android的移动智能终端采集系统由于操作的简易性、携带的便捷性以及定位的精准性,已成为当下野外采样的主要手段之一,当针对各类采集对象,采集系统的主要差异在于采集的属性数据与多媒体内容不同,而本文所提出的表单界面生成器AutoForm能快速根据差异进行扩展。当采集对象变化或者采集的属性内容有所变动时,只需简单修改AutoForm中POJO的属性与注解内容,便能快速生成满足需求的属性表单界面,相较于传统基于xml生成的布局表单,AutoForm具有良好的扩展性和高度可复用性。这在面向ArcGIS for Android采集系统研发中,能极大地降低研发成本,变更需求时也能快速做出响应,具有一定推广使用价值。
  参考文献
  [1] 张海瑞,吴学饶,兰小机.基于ArcGIS for Android野外实习数据采集与导航系统的实现[J].测绘工程,2015(3):36-39.
  [2] 孙巍,徐学东,徐学军.Java反射机制在可重构Web框架中的应用[J].计算机工程与应用,2005,41(36):92-94.
  [3] 周中雨,李洋,杨程屹,等.基于Java注解的Drools业务规则开发框架设计实现[J].电子测试,2017(6):63-65.
  [4] 张香倩,黄林生,陈阳德.基于Android的自定义媒体播放控件设计与实现[J].软件导刊,2016(5):79-81.
  [5] 吴昊野.浅谈信息系统工程和POJO模型组件开发[J].科教导刊(电子版),2016(4):141.
  [6] 吕威.对象模型、关系模型与对象关系映射技术[J].信息通信,2012(6):87.
  [7] 刘仕华.基于Android的SQLite数据库操作管理[J].信息化建设,2015(9):252.
  [8] 徐宝文,周超洪,周天琳,等.面向方面的程序设计:概念、实现与未来[J].计算机与数字工程,2005,33(8):1-10.
转载注明来源:https://www.xzbu.com/8/view-15262001.htm