基于Android的多用户位置共享及实时通信系统

2017-07-15 15:53彭艺蕾王莉莉孙红涛祁正龙高放
智能计算机与应用 2017年3期
关键词:导航加密定位

彭艺蕾 王莉莉 孙红涛 祁正龙 高放

摘要:为了给用户生活中实时交流、出行、集会等方面提供便利,本文针对移动互联网通信中多用户如何位置共享及实时通信的问题,详细阐述了一个性能较好、可行度较高的设计方案并给出了相关系统的具体开发和实现方法。本系统基于Android系统,采用了高德地图、网易云信的SDK和API及RSA加密技术,实现了多用户定位、导航、实时通信等功能并保证了交互过程的安全性,为其他有关地图或通信的Android系统设计提供了参考。

关键词:Andmid;定位;导航;实时通信;加密

0引用

随着社会的飞速发展,人们的生活水平在不断提高的过程中,对信息和位置的实时I生与准确度有了更高的要求,手机即已成为满足这一需求设计的重要载体。Android在Linux操作系统的基础上研发推出了一种可供高端拓展、且功能全面的嵌入式系统框架,凭借其通用、开源、免费的特点广泛地应用于移动设备,是目前位居先锋时尚的主流手机平台之一,各种Android APP也随即应运而生。本系统是一款基于Android的多用户地理位置共享、信息实时系统,能为用户在实时交流、出行、集会等多方面定制生成更多现实高效便利。同时,明确信息发送者的地理位置,能帮助用户辨析信息的真实性;通过分析地理位置,也能增强信息的关联性。

1系统架构

1.1系统框架

本系统按照C/S(Client/Server)的架构模式,一端是基于Android系统开发的APP作为客户端,另一端选用网易云信、高德地图的服务器。服务器端采用并发型服务类型,即利用生成其他服务器的方法来处理客户端的请求,其目的在于为多客户端同时完善配备实时通信和在线地图的服务。客户端在Android Studio集成环境中使用Java、XML语言设计开发并支持调试,检验无误则签名打包生成后缀为.apk的文件,供Android移动设备使用。本次研发的系统结构可如图1所示。

1.2系统功能模块

本系统主要由客户端、通信服务器、地图服务器三大模块组成。其中,客户端的实际功能是为客户与客户之间、客户与服务器之间的交互来构建提取界面并对交互结果进行显示。服务器端则是用于接收用户请求,启动一个新的服务器对接收到的请求进行分析处理并将结果返回给客户端。具体来说,通信服务器的主要功能是接收发送端发送的消息对象并交付给其对应的目的客户端(一个消息对象的发送端和接收端可能为同一客户端,如用户向服务器发起登录或注销请求);地图服务器主要提供在线地图并接收和响应客户端发起的定位或导航请求。系统中整体设计功能模块如图2所示。在此,也将针对每一模块给出如下功能阐析。

1.2.1通信模块

在通信模块中,设计时需要调用通过手机接入互联网即时发送和接收消息对象等业务,而在此过程中,消息的可靠性和即时性则呈现出特别的重要性。本系统采用了网易云信服务器动态智能DNS掉线快速重连机制消息重排、持续重连直至到达的传送机制为可靠性和即时性提供保障。也就是,设计时通过调用网易云信的SDK和API,实现了用户登录注销、信息发送与接收、群组聊天等功能,深入的探讨论述可详见本文第2节。

1.2.2地图模块

对于地图的整体功能,Android系统中内置的Google在线地图的视图组件(MapView)为Android移动终端设计与实现地图服务提供了便捷灵活的开发平台。但由于考虑到文化的差异和政策的限制,研发中选择了国内的地图服务。本次系统利用LBS开放地理信息服务平台、基于高德地图的地理信息系统设计方法来提升地图方面的需求开发等级,包括定位、搜索、导航、路径规划等,其具体实现则可参见本文第3节。

1.3系统SDK的集成及权限申明

SDK能为移动应用设计生成完善的系统开发框架,屏蔽掉复杂细节,对外提供较为简洁的API接口。在系统开发过程中引用了网易云信和高德地图的SDK,在对2种SDK处理集成时,多处出现了jar包的冲突问题。研究中主要采用了如下2种方式解决jar包的冲突问题:

1)对实现各功能SDK分开下载、并组合后再集成的方式直接避免冲突的产生;

2)对于无法直接避免冲突的包,拆分比较其结构后,去掉产生冲突的冗余部分,再合并打包。

Android系统基于Linux内核运行,并以重点保障其系统安全性作为立足點,Google公司即专门设置了一套严格的安全权限机制。为避免应用程序的错误运行和程序崩溃等问题,调试前就要在AndroidManifest.xml文件中对目标需求权限进行申明并对与uI界面直接关联的Java文件正式予以注册。本系统还要对集成后的SDK将用到的网络连接、系统保活、外置存储等权限来设计给出确切声明。

2实时信息功能具体实现

2.1登录注销

本系统将用户账号(ID)作为用户唯一标识,提供了手动登录和自动登录两种登录模式。用户在首次登录或切换登录账号时,需要手动登录。系统在获取得到用户输入的账号密码后将其作为调用网易云信SDK中AuthService提供的login接口的参数向服务器发起主动登录请求,服务器端校验后返回登录状态码,客户端根据状态码进行相应的操作,若登录成功则直接跳转到消息界面。对于已具登录历史且授权允许自动登录的用户,在初始化SDK时系统会自动将保存在本地的登录信息传人Loginlnfo,实现后台的自动登录。系统通过监听用户登录状态的回调函数来判断用户是否登录成功。

2.2信息发送与接收

在网易云信SDK中,消息对象均为IMMessage。IMMessage包括聊天对象ID、聊天类型、消息类型、消息内容、消息附件对象等基本的可编辑项,该消息对象支持文本、图片、地理位置等类型的消息传送。系统接收到消息后将接收方的ID作为IMMessage对象的标识,通过MessageBuilder提供的接口创建消息对象,然后调用MsgService的sendMessage接口将消息发送出去。

JSON是一种轻量级的数据交换格式。这是基于ECMAScript规范的—个子集,采用完全独立于编程语言的文本格式来存储和表示数据。JSON主要有以下优点:数据格式比较简单、易于读写、格式都是压缩的、能够明显节约带宽。发送消息时,本系统将所有的文本消息用content字符串来整合保存并高效发送;将图片消息序列化为JSON格式字符串后则顺次展开传输。

为了设计得到消息的自动接收功能,必须添加消息接收观察者。系统的消息回调函数会在消息接收观察者监听到新消息到达时,根据收到消息的类型产生不同的操作。对于文本或图片类型的消息,系统会直接向用户发出新消息通知并将消息加入到相应聊天对象的消息列表中显示。消息接收观察者具有生命周期。对于一次消息会话,本系统在onCreate()里对消息接收观察者进行注册,并在onDestroy()中将其注销。

2.3群聊

本系统通过向用户提供群组功能来实现多人聊天。在群组聊天中,每个群组拥有唯一的ID并记录其含有的成员。与一对一聊天相比不同的是,当用户在向群组发送消息时,系统直接将消息对象的标识设置为群组ID后发送,而不会给群组中的每个成员都发送一次消息。同时,对于一个群的群组成员来说,以群组ID为标识的消息对象会无可选择地由其消息接收观察者来自动响应接收。为了使用户不致因群组消息而受到打扰,本系统还为用户设定配备了群组消息提醒的开关功能。

3地图功能设计实现

3.1地图展现

地图展现是地图服务的基本设计功能。客户端在接入互联网的条件下,能获取到全球地图,并能通过自由缩放比例尺来查看地理信息的详略。本系统通过高德地图的SDK初始化地图变量AMap后,用Android系统中的MapView组件来展示地图。高德地图提供了标准地图、夜景地图、卫星地图三种地图展现模式。根据用户的选择,系统通过对地图控件的引用获取AMap的变量实例,并对地图类型给出有效设置。

3.2定位

高德地图的定位服务包含GPS和网络定位(Wi-Fi和基站定位)两种能力,有高精度定位、低功耗定位、仅用设备定位三种模式。考虑到本系统对位置的准确性有较高要求,因此选用了GPS和网络定位相结合的高精度定位模式进行定位。同时,为了最大限度保证位置的实时陛,系统采用了自动连续定位模式并设置默认更新速度为1 000ms/次。设计的操作过程具体如下:首先,在系统主线程中声明一个AMapLocationClient类对象并传人类型为context的对象作为参数;然后,创建一个AMapLocationClientOption对象,用来设置应用定位模式和关联参数;最后,创建一个AMapLocationListener接口类对象,作为定位结果返回时的监听器。

3.3导航

POI(Point of Interest)可称为“导航地图信息”,其中包含一个实际位置点的名称、类别、经纬度、周边这4个方面的指示信息。中国开放的POI数据库,是整个导航产业的基石。用户可根据目的地名称、类别等信息进行搜索,比如对于一个名称为“XXX”、类型为餐馆的POI,在用户搜索的关键字为“XXX”或餐馆时,都能搜索得到。用户通过搜索能获得对景点、大厦、地铁站甚至卫生间等建筑的准确查找。本系统的自定义标记能将所有搜索到的POI在地图上分别形成标注,并在用户根据实际情况选择一个标记后,系统通过实现高德地图导航SDK中的AMapNavi导航对外控制类来生成展示起点到目的点的路径规划,再通过调用该类的startNavi(int naviType)方法开启实时导航。

3.4多用户位置共享

在高德地图定位SDK为用户提供定位功能的基础上,本系统实现了多用户位置共享的功能。同时,本系统的群组功能也为群成员的多用户位置共享设定了执行基础。群组功能下,群用户在自身定位成功并发起位置共享后,系统会将用户自身的POI格式化并通过网易云信SDK的创建地理位置消息类IMMessage消息对象后,将消息对象发送到群组中(消息对象的发送过程详细操作见2.2节):群组其他用户的消息接收观察者接收此类信息,经过标准化处理后传递给高德地图并调用其定位SDK来求得结果定位,得到结果后在地图中添加POI进行标注。地理位置的发送过程和接收过程分别如图3、图4所示。

4其他功能实现

4.1自定义列表适配器

Java的适配器模式能把一个类的接口变换成客户端需要的另一种接口,从而使曾因接口不匹配而无法一起工作的类能够转为一体协同合作。适配类根据参数返还一个合适的实例给客户端。为增强UI界面的流畅性、美观性,本系统另外自定义了继承BaseAdapter的列表视图适配器ListViewAdapter。该类的技术功能可设定为显示用户的历史会话列表及用户间消息的往来。

4.2数据加密传输

研究知道,网易云信服务器在进行数据传输和存储时配备了私有的加密协议。为了进一步确保系统在通信过程中的安全性,本系统采用了RSA加密技术对通信中交互的数据进行加密处理。具体过程如下:发送方用自己的私钥将签名内容加密,附加在信息后,再用接收方的公钥将整个信息直接加密,而后将加密信息送给服务端;接收方收到加密信息后,先用自己的私钥将加密信息实现解密,得到发送方的原文和数字签名,再用发送方的公钥来解密签名。这个过程既保证了数据传输的安全性,也避免了发送方可能出现的“假冒”风险。

5系统界面展示

多用户位置共享及实时通信系统的主运行界面如图5所示。界面中有5人正在进行位置共享,每个人在确认自己位置时也能看到其他用户所处的位置。在一位用户将目的点设置为图书馆后,系統将目的地在图中随即清晰标出,并为所有用户都规划出了一条到图书馆的路径显示在地图上。界面的下半部分为用户提供了聊天界面,用户可以凭此与其他用户实时交流互动。同时,最近的一条聊天信息也会在用户的头像上得到理想定位显示。

6结束语

本系统采用了模块化结构设计方法并结合了Android的平台特性,是基于Android的多用户位置共享、实时通信系统。本文对该系统的功能实现和重点设计给出了详尽的研发论述。仿真表明,客户端界面友好,交互性强,符合终端用户的要求。在对系统进行多端测试后,系统的稳定性和响应速度也符合预期设定,是一款满足用户特定需求的应用软件。

猜你喜欢
导航加密定位
保护数据按需创建多种加密磁盘
谷歌禁止加密货币应用程序
难与易
加密与解密
巧用“余数定位”,突破周期函数的计算问题
基于快速检索功能于GPS地图导航的运用
为现代农业“导航”
基于激光导航路径识别的电力巡检智能机器人设计
智能手机菜谱软件的设计
理想的定位