当前位置:首页 > 工业控制 > 《机电信息》
[导读]摘 要:针对人们日常生活中的出行信息管理问题 ,对个人出行的位置信息、时间信息以及行程中所记录的照片和文字信息的管 理方式进行了个性化研究与设计 , 以Android Sstdio为开发平台 , 以开源openSsreesMap作为网络电子地图平台 , 以APP的形式为用户提 供相应服务 ,主要实现了实时定位功能、地点搜索功能、路径规划功能、行程管理功能及相册功能 。个人出行信息管理系统已基本涵盖 电子地图所具有的基础功能 ,另外还包含与个人出行相关的行程信息的存储与展示功能 ,可以记录位置信息、图片和文字信息等。作为 一个日常使用的APP ,系统界面简洁、功能明确 ,为用户的行程管理提供了有效的途径。

引言

在电子地图领域除了做导航方面的公司以外 ,还有许多公司在做综合旅游服务 , 比如去哪儿旅行、携程旅行、同程旅游和途牛旅游等 ,这些产品针对的是旅游业中人们的需求。以前的旅游基本是人们亲自去挑选旅行社和导游 ,而现在人们则可以很方便地通过自己手中的智能手机打开这些APP来进行自己的旅游规划 , 这就为本文的设计提供了思路 , 既要避其锋芒 ,又要曲径通幽 ,使用电子地图来为人们提供不一样的服务。

正是发现了人们在日常出行信息管理方面的需求 ,我们决定将研究方向瞄准这些方面 。其实这种用于人们日常生活中的看似可有可无的移动应用有些时候往往能很好地填补人们的空闲时间 ,可以为人们的日常出行添姿加彩 ,从某种角度看本系统很好地满足了许多用户的隐性需求。

1 个人出行信息管理系统技术原理

1. 1 开源地图openStreetMap

openSsreesMap(OSM)被称作电子地图中的维基百科 , 是一个网络电子地图的合作计划 , 目的是想建立一个内容广泛而且可以让所有人进行编辑的世界范围的地图。

OSM在Android系统中的应用被集成在了OSMDroid 中 ,开发者将相关的包导入到自己的项目中即可在代码中调用其相关方法 。鉴于OSM资源的完全免费 ,开发者在使用OSMDroid 时不需要像使用其他大公司地图时一样申请相关的APIkey,只要在导入相关包之后开发者便可实现许多基本的地图服务 , 比如定位、搜索、标记、路径规划、离线地图等功能。

1.2 关键Java类及函数

本文中一些功能是需要获取网络数据的 ,这样就会有一定的延时 ,所以不可以在主线程中直接调用 , 需要子线程或采用异步的方式。Android中有一种特有的异步类可以解决本文中遇到的绝大多数网络延时问题 , 即AsyncTask 。简单说来就是在UI主线程运行时 ,通过异步方式完成一些操作 ,AsyncTask 允许后台执行一个异步任务 ,可以将比较耗时的操作放在异步任务当中来执行 ,并随时将任务执行的结果返回给UI线程来更新UI控件 。所以 ,AsyncTask往往可以轻松解决多线程之间的通信问题。

另外 ,在实现相册功能的时候要解决图片显示时文件内容过大以及文件数目过多而产生的otsofMemory(ooM)异常的问题 ,本文是使用外部类ImageLoader以及异步处理的方式来进行解决的 。ImageLoader的工作原理大致是:在显示图片的时候 ,它会先在内存中进行查找 , 内存中找不到就会去本地查找 ,如果依然没有找到就建立一个新的线程来下载这张图片 ,然后会把下载成功的图片同时缓存到内存和本地 。另外 ,因为ImageLoader对图片采用的是软引用的形式 ,所以内存中的图片会在内存不足的时候被系统回收(内存足够的时候不会对其进行垃圾回收) 。

1.3 功能模块设计概述

本文研究的产品主要实现以下几个功能模块:定位功能模块、地点搜索功能模块、路径规划功能模块、拍照功能模块、行程管理功能模块、时间轴功能模块、相册功能模块(图1) 。

(1)行程管理功能模块:本研究的主题便是对用户的出行信息进行管理 ,用户可自行设定行程主题及时间 , 点击开始行程后即可通过拍照记录行程状态以及位置信息 ,所拍照片会自动存储到所对应行程主题文件夹下 ,并在相册中对应显示相关信息。用户也可以在未创建行程的情况下使用拍照功能 ,此时会将照片默认存储于以当天日期为名创建的文件夹下 ,同时也会自动记录位置信息 ,相册中显示的照片信息即为无主题。

(2)时间轴功能模块:用户在点击时间轴按钮后会在地图界面标注出用户在近1一天内到过的所有位置 ,记录下用户这些天的足迹。用户在拍照时应用会自动记录用户的位置信息 ,然后把近1一天的位置信息挑选出来标注在地图上。

(3)相册功能模块:本模块将用户所拍照片进行集中展示 ,界面设计类似于相册 ,用户可以浏览自己拍过的照片 ,这些照片会自动对应显示主题和时间信息 ,用户也可在照片下方为照片添加文字介绍。

2 个人出行信息管理系统的具体实现

2. 1 相册功能模块的实现与测试

本文的相册功能主要是由用户所拍照片经应用分类存储后进行展示 ,本模块的实现流程图如图2所示。

2. 1. 1 照片存储功能的实现

为了实现照片的存储功能 ,本文设定在每次打开应用时都会执行一个功能函数 , 即创建一个以当前日期为名的文件夹 ,这样就可以让不在行程中的用户所拍照片找到存储的路径。

getPhotoFileName()这个函数的功能就是给所拍照片命名 ,从代码中可以了解到本文是使用当前时间为照片命名的 ,时间要精确到秒 ,这样才可以保证照片文件不同名。

getsDPath()函数的作用是将照片分两种情况进行存储 ,如果用户正在行程中便会存储到以当前行程名称命名的文件夹中去 ,如果用户未在行程中则会将照片存储到以当前日期命名的文件夹中去 。这里用到了sharedPreferences来存储行程 的状态以及行程的名称 ,这样就可以在不同的Activity之间共同使用这些数据 ,而且关闭应用再打开后数据不会重置。

行程的状态即是否处于行程中 , 以及行程主题名称相关的数据信息要存储在sharedPreferences中 ,这样在每次打开程序时都可以从文件中读取相关数据。

2. 1.2 处理照片文件以防ooM现象

在行程管理的UI界面本文设计了一个在屏幕上半部分轮播显示每次行程中的一 张照片的功能 ,如果直接读取原文件显示到屏幕上很可能导致ooM情况。本文最先做的工作便是处理照片原文件 ,对其进行压缩处理使之能够以合适的文件大小显示到屏幕上而不会造成ooM现象。这里主要使用到了decodeBitmapFromFile和calculatesamplesize两个函数:在decode一BitmapFromFile函数中用到了BitmapFactory.options ,首先要将options .inJustDecodeBounds设置为true , 这个时候从所给路径中获取图片时只是获取图片的属性信息而不会真正地耗费内存去加载图片 ,然后使用options.insamplesize=calculatesample一 size(options,400,200)这句代码对所选图片进行压缩处理 , 其中calculatesamplesize(options,400,200)的参数可以 自行设定 。接着将options.inJustDecodeBounds设置为false ,这样程序就会去加载已经经过处理的照片了。

2.1.3 自定义照片简介功能的实现

要将接收到的主题和时间数据显示到对应的文本框中是由目前的position来确定的 , 上面的代码通过取余的操作使 position得以循环 ,对应的数据信息也成功地显示在了正确位置。相册的最后一个功能是自定义照片简介 ,其实前述代码中已经透露了这个功能的实现方式 ,不像显示主题和时间一样可以使用List数组作为容器 ,这里需要使用HashMap来存储照片的简介信息 。 因为简介不一 定每张照片都会有 , 所以其 position是不连续的 ,使用for循环无法实现照片与简介的对应显示 ,而HashMap可以很好地解决这一 问题。

点击保存按钮时将当前照片position对应的简介信息存储到对应的HashMap中 ,这个HashMap的key是整型的 ,用于存储 position:value是string类型的 ,用于存储文字简介信息。

2.2 行程管理功能模块的实现与测试

本模块主要功能为对用户行程信息的管理 ,模块流程图如图3所示。

sharedPreferences是Android平台上一个轻量级的存储类 ,可以存储一些配置信息或者一些简单的数据信息 。本文使用sharedPreferences来存储行程状态等数据信息。

点击出发按钮首先会判断用户当前是否处于行程中 ,若已处于行程之中会在屏幕下方弹出Toast语句提醒用户已在行程中 ,如果未处于行程中则会进入创建行程语句。若要开始行程需要输入行程的主题以及时间 , 否则会提示用户要先将信息输入完整 ,一切准备就绪之后便会开始创建行程。这里需要创建此次行程对应的文件夹以及将此次行程的主题和时间分别存储到sharedPreferences中并进行编号 ,编号是为了可以在实现轮播显示每次行程的一张照片的功能时可以获取到每次行程的文件夹名称 。最后还需要将行程状态设置为在行程中, 实现逻辑上的完整 ,然后要在屏幕下方弹出Toast语句提醒用户行程已开始。

时间轴功能用于在地图上显示用户近l4天内的出行坐标点 ,这个功能涉及Activity之间的数据传输问题 ,在点击地图界 面 的 按 钮 跳 转 到 行 程 管 理 界 面 时 使 用 了 startActivity一 ForResult()的函数 ,就可以在点击时间轴按钮时实现其功能 。在点时间轴按钮后会跳转到地图界面 , 同时地图界面的onActivityResult函数负责接收信息 。

3 成果展示

图4、图5展示了相册功能。

行程管理和时间轴功能成果图如图6、图7所示 。

4 结语

本研究从最基础的实时定位功能、地点搜索功能、路径规划功能做起 ,给用户提供电子地图类应用的基础服务:然后在此基础上实现对行程的管理 ,包括开始行程、设置行程主题和 时间、结束行程等功能 ,还可以提供时间轴的功能来显示用户 最近一段时间的足迹:最后还实现了相册的功能 ,可以存储并 显示用户在行程中所拍摄的照片 。本系统在相关应用的一些功能实现方面提供了解决方法 ,并且提出了在行程管理领域的一种手机服务模式 ,具有一定的应用和发展前景。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

8b10b编码作为数字通信领域中的一项重要线路编码方案,其核心理念在于将每8位数据映射到10位编码中。这个映射过程严格按照特定规则进行,旨在保证编码中的电平转换足够,以维持信号的直流平衡,并提供足够的时钟信息,使接收端能...

关键字: FPGA 8b/10b编码 IC设计

在FPGA和IC设计领域,经常会面临一个挑战:多个端口同时竞争一个端口的数据。在这种情况下,采用RR调度策略可能是一种解决方案。

关键字: FPGA 嵌入式系统 IC设计

选择正确的电容器种类、功率电感器、开关频率和半导体对于 DC/DC 开关电源控制器的效率至关重要。做出正确的选择并非易事,但即使做出了正确的选择,控制器也必须具有高效率且符合 EMC 要求才能上市。

关键字: DC/DC 转换器 EMC

智能合灯控制系统由环境光照检测、人体接近检测、语音识别、按键控制、合灯控制、数据显示、蓝牙通信、报警提示功能模块组成。

关键字: STM32 智能台灯

捡球机的移动装置以直流电机驱动,寻球装置以摄像头图像传感器模块构成,并搭配以图像检测算法。避障装置以红外检测和报警模块为主,以防在行动过程中触碰障碍物。

关键字: STM32 捡球机

利用数控机床进行机测时可以通过机床本体与测头来完成。

关键字: DSP 数控机床

现在市面上还不存在一种方便实验人员选取芯片,以及方便管理人员对芯片进行智能化管理的芯片柜,为此希望通过研发这款智能芯片柜,来解决以上问题。​

关键字: 单片机 芯片

香港生产力促进局日前参与“机遇汇人才博览展”,在展位提供面谈机会,活动反应热烈,吸引来自内地、新加坡、加拿大、英国等地区的海内外人才广泛关注。

关键字: 科技 人才

5月7日,香港生产力促进局与HP达成一项合作协议,将在香港建立“生产力局 - HP 3D打印技术中心”(中心)。该中心将专注于积层制造技术,即3D打印技术的应用研究和开发,旨在成为中试转化的重要基地,通过先进的3D打印技...

关键字: 3D打印

香港“生产力局 · 中小企支援”4月30日公布2024年度第二季“渣打香港中小企领先营商指数”(“渣打中小企指数”)调查结果,本季综合营商指数较上季回升3.6至47.3,反弹至2023年第四季的水平(47.6)。

关键字: 营商
关闭