孙俊英 陈忠超

摘 要:基于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.

android 漂亮的表单界面,面向ArcGIS for Android的表单界面生成器的设计与实现相关推荐

  1. 自动生成Android界面,面向Android的Web Service界面自动生成技术研究

    摘要: 据统计,开发人员在开发应用程序的过程中,接近一半的代码用于用户界面部分,大约一半的运行时间用于执行这一部分.所以,减少用户界面部分的开发代码和运行时间,能有效提高程序的运行效率.智能家居中,由 ...

  2. 黑客登录界面科幻黑色主题网页模板表单验证代码

    黑客登录界面科幻黑色主题网页模板表单验证代码 效果: html代码: <!DOCTYPE html> <html lang="en"><head> ...

  3. Android简易音乐重构MVVM Java版-新增推荐、雷达歌单详情列表界面(十八)

    Android简易音乐重构MVVM Java版-新增推荐.雷达歌单详情列表界面(十八) 关于 效果 修改ApiService 增加歌单列表实体类RecommendListEntity 新增歌单列表界面 ...

  4. android原生界面太烦了,Android进阶(二十七)Android原生扰人烦的布局

    Android原生扰人烦的布局 在开发Android应用时,UI布局是一件令人烦恼的事情.下面主要讲解一下Android中的界面布局. 一.线性布局(LinearLayout) 线性布局分为: (1) ...

  5. python脚本编程实例_面向ArcGIS的Python脚本编程.pdf

    [实例简介] 面向ArcGIS的Python脚本编程,最实用的教程. 面向ArcGIS的Python脚本编程,最实用的教程. 面向ArcGIS的Python脚本编程,最实用的教程. 目录 第一部分Py ...

  6. arcgis for android离线编辑,ArcGIS for Android离线数据编辑实现原理

     实现ArcGIS for Android上的离线数据编辑,具体实现环境及其步骤如下: 一.      环境准备 1.        软件环境 1)        ArcGIS Server10用 ...

  7. arcgis下的python编程-面向ArcGIS的Python脚本编程

    面向arcgis的python脚本编程是一本指导ArcGIS for Desktop专业用户进行Python开发的指南,本书将教会您如何通过编写Python代码处理空间数据并在ArcGIS中自动化实现 ...

  8. arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...

    操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容 摘要 Collector for ArcGIS 会将离线副本存储在 SQLite 数 ...

  9. bootstrap html5 表单验证,基于Bootstrap+jQuery.validate实现表单验证

    这大概是一种惯例,学习前台后台最开始接触的业务都是用户注册和登录.现在社会坚持以人为本的理念,在网站开发过程同样如此.User是我们面对较多的对象,也是较核心的对象.最开始的用户注册和登陆这块,也就尤 ...

最新文章

  1. Fedora安装Samba与windows共享文件
  2. 英特尔首款AI芯片终于发布:训练推理两用,历时4年花费5亿美元买来4家公司...
  3. linux 内核网络协议栈
  4. 关于FlexBox的布局
  5. java客户端服务器代码_Java Socket通信 客户端服务器端基本代码
  6. 【Python】又一个可视化神器Highcharts,Python版也有哦!
  7. 牛客多校6 - K-Bag(哈希+滑动窗口)
  8. linux 文档编辑器 word,linux下vi编辑器命令大全
  9. C#坏习惯:通过不好的例子学习如何制作好的代码——第3部分
  10. IT入门?推荐首选学习HTML5大前端
  11. 如何使用sp_send_dbmail存储过程将SQL查询结果通过电子邮件发送到智能手机
  12. excel 字符串连接和求差集
  13. 通过PS制作逼真的车窗玻璃雨滴效果
  14. 数码相框(十六、LCD显示JPG格式图片)
  15. 巴塞罗那2019-20赛季球队大名单
  16. The name `AssetDatabase' does not exist in the current context
  17. 一分钟学会写网页表格
  18. apa引用要在文中吗_如何在研究论文中引用文献
  19. 程序员可以收藏的几个导航网站
  20. EasyExcel生成多个excel.xlsx进行压缩导出

热门文章

  1. 【深度学习笔记】Batch Normalization 以及其如何解决梯度消失问题
  2. 如何使用VS2015开发Qt5程序
  3. OpenCV学习笔记之掩码操作
  4. Faster RCNN解析
  5. 解决Windows下新安装的CodeBlocks无法编译运行
  6. FFmpeg AVCodecContext结构体debug变量剖析
  7. linux增加swap分区大小
  8. 统计apache404错误ip并加入iptables防火墙
  9. node进程管理——pm2
  10. 使用docker commit 来扩展一个image