亲友定位助手--具备实时共享位置的智能手机定位地图软件的设计

来源:互联网 发布:ubuntu 16.04 安装php 编辑:程序博客网 时间:2024/06/05 15:43

本项目的出发点就是针对如何解决位置的实时共享问题,使得人们组队外出游玩时的安全性得到保障,还有让每个家庭成员之间可以随时随地地查看其他成员的位置,特别是让老人、小孩的安全得到家人的实时监护。除此之外,还在软件中增加了一些使用的功能,比如:轨迹记录,记录所走过的路线,以免走错路难以脱险,有备无患;运动功能,特有计步功能,根据不同的体形,路面等因素调节灵敏度;自由设置步长;自由设置体重等参数;语音提示,使应用更加人性化。

1、项目的整体设计与实现

 整个软件项目的设计主要分成用户注册、登录以及用户基本信息的管理;定位地图的实现以及其中的放大缩小、普通地图和卫星地图切换实现;轨迹记录并回现;运动计步;语音提示;亲戚朋友之间实时位置共享等几部分来完成。

项目中总共使用到的平台有Bmob后端云,实现用户注册、登录、信息管理以及软件的版本更新;高德地图开放平台,实现地图的相关功能;科大讯飞开放平台,实现语音提示功能。

软件分为服务器端和客户端,本系统的服务器端主要通过Bmob的云平台实现,客户端用户界面设计则通过Android实现,主要分为五大模块:登录注册,定位导航,轨迹记录,语音提示,运动计步和实时共享位置。点击相应模块,即可实现相应的功能。界面简单,易操作。

2、Bmob后端云平台

 Bmob可以开发一个云存储的移动应用软件,给应用软件快速添加一个安全灵活的后台管理系统,方便浏览终端保存的各种信息。

当用户打开App时,首先进入用户登录页面,若未注册,则点击注册按钮进入注册页面进行注册,再返回登录页面。登录成功后,进入用户主界面视图。

登录注册:将手机App安装后,进入登录页面,若没注册,则先注册后登录。此功能主要使用Bmob后端云数据库,写入用户数据和读取用户信息实现。登录时查询User表输入用户名和密码与该表的数据项匹配一致,则完成登录,进入主界面,登录和注册界面如图1所示。


图1 登录注册

使用Bmob后台实现用户登录的部分代码如下:

finalBmobUser bUser = new BmobUser();bUser.setUsername(u_name);bUser.setPassword(u_md5_password);bUser.login(newSaveListener<BmobUser>() { @Overridepublicvoid done(BmobUser bmobUser, BmobException e) {      if (e == null) {ToastUtils.showToast(UserLoginActivity.this, bUser.getUsername() + "登陆成功");Intent intent = newIntent(UserLoginActivity.this, MainActivity.class);startActivity(intent);UserLoginActivity.this.finish();  //结束登陆界面      } else {ToastUtils.showToast(UserLoginActivity.this,"登录失败:"+ e.toString());      }}});

3、高德地图开放平台

 高德地图开放平台将高德地图专业的定位、地图、导航等位置能力和LBS服务开放出来,因此,利用高德地图提供的定位SDK可以让软件实现准确的定位,从而让轨迹记录和实时共享位置等功能的实现得到保障。

地图定位导航:利用高德地图提供的API接口,我们可通过GPS、Internet实现定位。单独使用GPS定位,需要打开手机的GPS定位,适用于室外。单独采用Internet,只要联网即可。综合考虑,我们采用两者结合方式,即可准确、快速地实现定位功能。

本软件的主界面即是实时显示当前位置的定位地图界面,如图2所示。


图2 主界面

软件的主界面即实时显示当前的位置,同时主界面地图上还包含了一些控件,如获取当前定位、放大、缩小、普通地图与卫星地图切换等按钮。除此之外,还有一个记录轨迹功能的开启和结束按钮,此按钮在点击时会有语音提示。在主界面的左上角有一个显示侧边栏菜单选项的按钮。菜单上总共有个人信息查看、我的轨迹、运动、位置圈和设置等选项,每一个选项里面实现了相对应的功能,让用户操作更加方便,易懂。

主界面定位功能实现的部分代码如下:

publicvoid activate(OnLocationChangedListener listener) {             mListener = listener;             //初始化定位             mLocationClient = newAMapLocationClient(getApplicationContext());             //初始化定位参数             mLocationOption = newAMapLocationClientOption();             //设置定位模式----高精度模式:会同时使用网络定位和GPS定位,优先返回最高精度的定位结果           mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);             //设置定位间隔             mLocationOption.setInterval(2000);             //设置是否返回地址信息             mLocationOption.setNeedAddress(false);             //给客户端对象设置定位参数             mLocationClient.setLocationOption(mLocationOption);             //启动定位             mLocationClient.startLocation();             //设置定位回调监听             mLocationClient.setLocationListener(mLocationListener);      }     //声明定位回调监听器      AMapLocationListener mLocationListener =new AMapLocationListener() {                         @Override             public voidonLocationChanged(AMapLocation amapLocation) {                    if (amapLocation != null) {                           if(amapLocation.getErrorCode() == 0) {                                  if (mListener!= null) {                    mListener.onLocationChanged(amapLocation);                                  }                           }                    }             }      };

4、科大讯飞开放平台

科大讯飞开放平台是推出的以语音交互技术为核心的人工智能开放平台。语音技术实现了人机语音交互,使人与机器之间沟通变得像人与人沟通一样简单。语音技术主要包含语音合成和语音识别两项技术。本软件中集合了科大讯飞的在线语音合成SDK,从而实现软件中的语音提示功能,使应用更加人性化。

在线语音合成的基本参数设置如下:

if(mEngineType.equals(SpeechConstant.TYPE_CLOUD)){      mTts.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_CLOUD);      // 设置在线合成发音人      mTts.setParameter(SpeechConstant.VOICE_NAME,voicer);      //设置合成语速      mTts.setParameter(SpeechConstant.SPEED,"50");      //设置合成音调      mTts.setParameter(SpeechConstant.PITCH,"50");      //设置合成音量      mTts.setParameter(SpeechConstant.VOLUME,"80");}

5、轨迹记录

在户外活动或者游玩时,可能经常会走到陌生的环境中,那么为了在这种情况下可以正确的辨别方向,不易迷失,这就需要对使用者所走过的路线进行记录保存,在需要的时候进行重现路线,以免走错路难以脱险,有备无患。

在主界面上的点击开始记录轨迹按钮,同时会有语音提示“开始记录轨迹”,这时应用将在后台开启一个服务,将使用者不断移动位置时更新的经纬度信息保存到集合中,只要位置一旦更新,就把新位置的经纬度保存起来,直到使用者再次点击主界面的停止记录轨迹按钮,这时将停止保存经纬度,同时将集合中的信息全部写入到SD卡文件中,并将此后台服务关闭。当经纬度信息成功保存到文件中时,会有语音提示“轨迹保存成功”,提示使用者已经将当前的记录的轨迹保存成功,可以在“我的轨迹”选项卡中查看。

点击“我的轨迹”可以查看到历史所有保存的轨迹,而且每一个轨迹都显示了轨迹保存时的时间,方便使用者查看。当点击任意一个轨迹时,将把该轨迹的起点、终点以及路线绘制在界面上,同时显示当前的位置,可以更加清晰的知道当前位置与轨迹之间的偏差,帮助用户更好的回到原地,避免走失。同时还可以将地图切换成卫星地图,在卫星地图上显示轨迹,让使用者更加清除的知道自己身处何处,使安全性得到更大的提升。

以下是轨迹记录功能开发测试的案例,如图3所示。


图3 轨迹记录回现

6、运动计步

目前,运动越来越受到人们的青睐,特别是智能手机里的计步功能更加是受到人们的喜爱。人们喜欢记录自己每天走过的步数并将其与朋友进行计较,这已经成为了人们日常生活的一种娱乐方式。因此,本软件中也增加了一个特有的计步功能,紧随时代脚步的时髦功能,这将会深受用户喜爱。

本软件中的运动计步功能可以根据使用者的体形、当时的路面情况等因素来调节灵敏度,设置步长、体重等参数,根据不同使用者的实际情况进行设置,可以让软件记录出来的行程、热量、步数等更加精确。

点击“运动”可以进行运动计步功能界面,在界面的右上角有一个设置按钮,点击可以进行参数的设置,设置完成点击保存,那么以后计步得到的数据将会按照设置保存的数据进行计算,从而得到更加精确的数据并显示给使用者。在运动界面点击“开始运动”和“结束运动”按钮可以实现计步的开始和结束,同时会有语音提示“开始运动”和“运动结束”。

以下是运动计步功能开发测试的案例,如图4所示。


图4 运动计步

7、实时共享位置

户外活动时朋友之间位置的实时共享可以避免掉队、走失等意外事件,家庭成员之间位置的实时共享可以让老人、小孩等的位置得到实时监护,因此,位置得到实时的共享具有很重要的意义。

本软件中设计了一个“位置圈”的功能,顾名思义就是位置实时共享的圈子。使用者可以根据不同的情况创建不同的位置圈,同一位置圈中的成员彼此之间可以实时共享自己的位置和查看彼此的位置。创建位置圈的用户即为该圈的圈长,圈长有最高的权限,可以对该圈进行解散操作,非圈长的用户无法执行此操作,只能是自己退出该圈。

创建位置圈和搜索加入位置圈的界面如图5所示。


图5 创建搜索位置圈

 

点击“位置圈”可以查看当前加入的所有位置圈,点击每一个位置圈都可以进入到该位置圈的信息列表界面,在此界面中可以查看到有关位置圈的所有信息,也可以进行一些相关的操作设置,比如“加载到地图上”可以选择是否在主界面上显示该位置圈中其他有共享其位置的成员的位置,“共享我的位置”即可以选择是否将自己当前的位置共享给此位置圈中的其他成员。位置圈的基本信息界面如图6所示。


图6 位置圈的基本信息

在位置圈信息界面中可以查看该位置圈中的所有成员以及修改自己在位置圈中的昵称,圈员显示界面和修改昵称界面如图7所示。


图7 圈员显示昵称修改

8、用户基本信息管理

用户基本信息的管理可以让用户随时修改、更新自己的信息,其中包括性别、年龄、绑定手机号码、修改登录密码等等。点击“设置”选项可以进入基本信息修改、更新界面,在此界面中根据自己的需要进行设置,设置保存后的信息将保存到Bmob后台管理服务器中,同时还会将信息同步到“个人信息”选项卡中。用户基本信息设置界面如图8所示。


图8 用户基本信息设置

0 0
原创粉丝点击