基于安卓平台的便携式点位勘察系统设计与实现

2020-04-01 20:15周立新郝耀峰庞钰宁陈思兵朱琳
计算机与网络 2020年20期

周立新 郝耀峰 庞钰宁 陈思兵 朱琳

摘要:针对点位勘察时对勘察过程和勘察要素的信息化管理需求,设计了一套基于安卓平台的便携式点位勘察系统。从系统总体架构和功能构成进行了描述,对系统软件具体实现过程中涉及到的关键技术进行了研究,重点包括标签导航的界面框架、布局动态加载、LitePal数据持久化和第三方应用集成4个方面。应用结果表明,该系统具有操作便捷、通用性强和扩展性好等特点,对类似的应用开发具有较好的参考价值。

关键词:安卓平台;勘察系统;动态加载;标签导航;数据持久化

中图分类号:TP23文献标志码:A文章编号:1008-1739(2020)20-63-4

0引言

点位勘察是测控选址的一项重要工作,根据选点要求,勘察实施一般要考虑避雷接地、设备布局、光纤通信、电磁环境、食宿保障、地理遮挡及场坪标校等要素。整个勘察工作的流程一般包括拟制勘察计划、准备相关器材、实地点位勘察和形成勘察报告4个过程。点位勘察过程的规范化和程序化对于勘察工作的具体实施具有指导意义,也更易于利用信息化工具实现勘察过程的信息化管理。本文研究的背景是在已形成的堪点规范的指导下,研究利用信息化手段实现对堪点过程和堪点要素的信息化管理。由于安卓系统具有开放性以及便捷性等特点[1-3],具有安卓系統的便捷式电子设备体积小、重量轻且具备多个传感器,满足便携式测量和信息管理的需求,因此本文研究基于安卓平台的便携式点位勘察系统,对系统设计和实现的难点和关键技术进行了研究[4-5]。

1系统设计

1.1系统总体架构

系统硬件部分包括电子设备传感器(GPS接收器、加速度传感器、磁传感器、气压传感器、重力传感器等)和便携式测量工具(激光测距仪器、全站仪、水平仪、卡片机、米尺等),主要进行实地点位信息采集;软件部分采用SQLite数据库+安卓平台开发的方式,主要用于将采集到的信息进行存储、统计和显示,并能够对硬件传感器信息通过软件实现电子测量功能,系统总体架构如图1所示。

1.2系统功能结构

系统功能主要包括基础数据采集、数据存储统计和展示、基于地图服务的线路规划导航、堪点流程的展示和勘察常用工具箱等功能,如图2所示。其中基础数据的采集主要实现各类传感器和便携式测量工具对实地点位勘察数据的采集;数据的存储统计和显示功能主要完成对采集到的点位信息(包括场坪情况、标校情况、环境情况等)进行存储(包括增删改查)、统计和显示;基于地图服务的线路规划导航功能主要实现堪点线路规划、交通查询导航等;堪点流程展示功能主要实现对堪察过程和勘察要素的可视化显示,可方便人员对关键要素进行查询;勘察常用工具箱主要包括:坐标转换、经纬高度测量、指南针工具、水平仪工具、放大镜工具、温湿压测量及电子铅垂等,主要用来辅助进行点位勘察。

2系统实现

系统App实现过程中涉及到的关键技术包括标签导航的界面框架设计、布局动态加载技术、第三方应用集成技术和LitePal数据持久化技术。

2.1标签导航的界面框架

为了对软件众多功能模块进行层次化管理和快速访问,设计了基于标签导航的界面框架,如图3所示。

顶部显示页面标题,中间显示页面内容,底部通过导航标签进行跳转。实现的关键步骤如下:

(1)页面布局设计

外层布局采用LineLayout;内部布局采用LineLayout,其中标题采用线性布局+TextView,内容模块采用帧布局,底部采用线性布局+RadioButton。

(2)主页面框架设计

通过RadionButton实现标签导航时,要区分选中和非选中状态,此时可通过设置选择器来实现。建立选择器selector,item属性为“state_checked”,当“state_checked”设置为false时采用非选中图片,当“state_checked”设置为true时采用选中图片。关键实现代码如图4所示。

(3)各子页面设计

子页面的实现采用安卓提供的Fragment机制,主要包括以下几个关键步骤:①创建BaseFragment;②定义各个子页面;③初始化Fragment;④设置RadioGroup的监听;⑤得到Fragment;⑥切换Fragment。

需要注意的是,当出现横竖屏切换时会导致Activity生命周期重新执行,进而导致程序崩溃,解决的办法是在AndroidManifest.xml文件中将主页面MainActivity的配置中“configChanges”的属性设置为"orientation|screenSize|keyboard Hidden"。

(4)子页面Fragment功能的实现

根据页面显示功能需求,对页面布局进行设计,并对功能进行程序实现。

2.2布局动态加载

在系统软件实现上需要兼顾手机、平板等多终端、不同尺寸的屏幕,因此对软件的主页面进行了专门设计,在不重新编译的情况下,软件可以同时自适应多终端。本系统为小尺寸设计的单页布局如图5所示(适用于手机),为大尺寸屏幕设计的双页布局如图6所示(适用于平板)。

在软件启动时,系统会根据终端屏幕的尺寸大小自动选择加载显示布局,在软件实现上采用Fragment+Qualifiers技术实现。通过Fragment实现各子功能页面,各子功能实现类继承自Fragment,并重写onCreateView()方法,同时在此方法中,通过LayoutInflater的inflate()方法加载子功能的页面布局文件。

在子功能页面内,分别单独设计手机和平板的界面,手机界面布局放置在layout文件夹下,平板界面布局放置在layout-sw600dp文件夹下,在子功能页面启动时通过屏幕大小自动选择加载不同界面,采用了一种安卓提供的最小宽度Qualifiers(限定符)技术,最小限定符允许对屏幕的宽度指定一个最小值(以dp为单位),然后以这个最小值(600 dp)为临界点,屏幕宽度大于这个值就加载layout-sw600dp文件夹下的布局,屏幕宽度小于这个值的设备就加载layout文件夹下的布局。Android中常见的限定符如表1所示[6]。

2.3 LitePal数据持久化

数据库的存储访问采用LitePal技术,LitePal是一款开源的Android数据库框架,采用ORM模式将数据库中最常用到的增、删、改、查功能进行了封装,使得不用编写一行SQL语句就可以完成各种常用操作。基于LitePal的数据库操作使用包括以下几个关键要点。

(1)配置LitePal

①在app/build.gradle文件中加入开源库的引用。在dependencies中加入引用“implementation org.litepal.android: java:3.0.0”;②在工程中的assets目录中建立litepal.xml文件并对数据库名称dbname和版本号version属性值进行配置;③在AndroidManifest.xml文件标签中加入声明“android:name="org.litepal.LitePalApplication"”;④在工程的Application類中调用LitePal.initialize(context)对LitePal进行初始化。

(2)数据库操作

①创建更新数据库:创建好映射对象后通过LitePal. getDatabase()对数据库进行创建。在需要对数据库表中字段进行修改或添加时,只需要对映射对象类进行添加或修改,同时对版本号加1就可实现对数据表的更新。

②数据添加:使用LitePal添加数据时需要将对象进行实例化并设置属性,然后调用save函数。

③数据更新:使用LitePal更新数据有3种方式,第1种是先通过LitePal.find()对需要修改的数据进行查询,然后设置其属性,并调用save()函数;第2种方式是通过新建类的对象并设置其属性,再调用对象的update(id)函数,根据数据的ID号进行更新;第3种方式是通过新建对象并创建其属性,再调用updateAll()函数,可以在函数中设置查询条件。

④数据删除:使用LitePal删除数据有2种方式,一种是通过直接调用LitePal.delete(类名,ID)根据ID号进行操作;另一种是通过调用LitePal.deleteAll(类名,查询条件)根据查询条件进行删除。

⑤数据查询:使用LitePal查询数据有3种方式,一种是调用LitePal.find(类名,ID)根据ID号进行查询;第2种方式是通过调用LitePal.findAll(查询)可以查询所有内容;第3种是通过调用LitePal.where(查询条件).order(排序方式).find(类名)来实现。

2.4第三方应用功能集成

在系统实现过程中集成了第三方成熟的应用,包括百度地图应用、常用工具等,其中涉及到2种关键实现方式,一种是直接使用第三方提供的集成应用SDK,比如百度SDK,在实现时只要遵循其开发应用规范,就可轻松访问其提供的服务和数据,构建功能丰富、交互性强的应用程序。另一种是将已安装的应用程序功能集成到系统应用中,通过应用程序包名,以及Activity或Service名称调用应用程序功能,实现的关键代码如图7所示。

3应用

软件启动时会根据当前屏幕尺寸自动选择加载不同的布局界面,在平板客户端的运行主界面如图8所示,在手机客户端的运行主界面如图9所示,平板客户端左侧采用瀑布流的方式对勘察过程和要素进行组织,当选择左侧图片按钮后,需要显示的内容在右侧进行显示,当需要对数据库内容进行操作时,通过右侧指示按钮进入访问;手机客户端由于屏幕较窄,只采用瀑布流方式对勘察内容按时纵轴进行组织,需要访问的内容通过二级导航进行访问。

通过在点位勘察过程中的实际应用表明,该系统能够较大地提高勘察过程的有序管理,所提供的辅助工具对勘察实施具有很强的实用性,提高了勘察效率。

4结束语

本文对基于安卓的点位勘察系统展开研究,对软件实现过程中涉及到的主要技术难点进行总结,并对具体实现细节进行描述,提到的技术框架和实现技术具有功能模块组织层次清晰、功能结构可扩展性好、数据存储访问便捷及屏幕大小适应性强等特点。通过具体的应用实践证明,系统所实现的安卓应用在操作使用、功能维护、模块扩展等方面具有良好的效果,而且软件框架和实现代码具有较好的可移植性,对于其他开发者研发此类系统具有很好的参考价值。

参考文献

[1]杨刚,王曼,屈胜年.基于Android的老人远程定位监护系统设计与实现[J].计算机与数字工程,2018, 46(5):1033-1037.

[2]刘马飞.基于Android的车胎监测系统软件的设计与实现[J].计算机测量与控制,2019,27(8):120-124,129.

[3]杨玲,朱江,程勇,等.基于安卓的无线体征信息监测系统设计与实现[J].电子测量技术,2015,38(9):121-124.

[4]张文嘉,陈齐康,郭斌,等.BLE智能锁的Android设计与实现[J].工业控制计算机,2018,31(3):111-112,115.

[5]丁炜,刘恒,廖成旺.基于Android的微震适时监测系统设计与实现[J].计算机工程与应用,2018,54(17):266-270.

[6]郭霖.第一行代码[M].北京:人民邮电出版社,2016.