首页 > 范文大全 > 正文

基于WiFi的Android移动设备导航系统的设计开发

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于WiFi的Android移动设备导航系统的设计开发范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要: 鉴于智能终端设备的普遍应用和WiFi信号的覆盖范围的日益扩大,设计开发一种基于Android操作系统、wifi以及GPS等技术为核心的GPS导航应用系统,对系统各主要功能模块的设计进行了详细的分析与研究。系统实现的功能模块主要包括图形界面模块、GPS定位模块、WiFi扫描模块、手机连接WiFi网络模块、Socket通讯及数据库管理模块。借助该系统,基于android系统的移动终端可方便地查询自身位置,并获取各种基于位置的服务。

关键词: WiFi; GPS; Android; Socket通讯; 数据库

中图分类号: TP311 文献标识码: A 文章编号:2095-2163(2013)03-0060-05

Design and Development of Navigation System in Android Mobile Devices based on WiFi

ZHAO Meng, CUI Gang

(School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001,China)

Abstract: In view of pervasive use of smart terminal devices and increasing expansion of area the WiFi signal covers,this paper designs a GPS navigation application system based on the Android operating system, WiFi and GPS technology as the core,and carries out a detailed analysis and research on the design of the main function modules of the system.The function modules that the system has achieved include the GUI module,the GPS positioning module,the WiFi scanning module, the mobile phone connecting to a WiFi network module,Socket communication and database management module.With the system,the mobile intelligent terminal based on Android system can easily get its location and some intelligent services based on location.

Key words: WiFi; GPS; Android; Socket Communication; Database

0 引 言

随着互联网在全球的快速发展与强势普及,人们的生活与工作随时随地都可能需要上网,由此产生了大量的WLAN服务需求,并且具备WiFi功能模块的智能手机也已进入大众流行。因而,基于WiFi技术的突出优势,智能移动终端系统的开发将具有广阔的市场空间和发展前景。虽然全球卫星定位系统(Global Position System ,GPS)的使用在持续增长,但是各种适用于个人徒步行走的实时定位的服务产品还非常少见[1]。目前,随着智能手机的推广,如何拓展手机GPS功能,在智能手机中开发基于GPS技术的应用系统已经成为目前的一个热点议题和研究课题。

1 Android平台以及 WiFi 技术简介

1.1 Android操作系统

Android一词的本义指“机器人”,是Google基于Linux平台的开放源码手机操作系统的统称,主要用于平板电脑和智能手机等设备中,是当今使用最广泛的手机操作系统之一。Android的核心竞争力在于其公开了源代码,而且允许第三方软件自由加入。此外,基于Android系统的可移植性,更加便于系统维护和升级,而且能够有效降低软件成本。Android 操作系统自上向下分成 4 个层次,即应用层、应用框架层、组件库层和虚拟机、Linux 内核层。Android 系统架构如图1所示[2]。

图1 Android 系统架构[2]

Fig.1 The system architecture of Android

Android系统为开发者提供了丰富的类库,整个平台具有良好的开放性和扩展性。其中,Android平台提供了一个专门的位置功能类库android.location来支持开发基于定位服务的应用程序。Android.location包含了一套与定位相关的类,分别是位置类Location、定位管理类LocationMananger 、位置提供类LocationProvider 、定位监听类LocationListener、位置数据标准类Criteria 。Android系统中支持WiFi模块的相关API如表1所示。

表1 .wifi的主要类与接口说明[3]

Tab.1 The main class and interface description

of .wifi

类或接口 说明

WiFiManager 提供了管理所有WiFi连接的API

WiFiInfo 描述了WiFi连接状态

WiFiConfiguration 代表了一个已配置的WiFi网络

ScanResult 描述扫描到的WiFi热点信息

1.2 WiFi技术第3期 赵萌,等:基于WiFi的Android移动设备导航系统设计开发 智能计算机与应用 第3卷

WiFi是一种可将手持设备(如手机、PDA)、个人电脑等终端以无线方式相连接的技术。WiFi技术从开始到现在历经了多个版本,包括从最早的802.11到后续的802.11a,802.11b,802.11g,802.11i,802.11n。可以说WiFi技术代表的就是802.11协议体系。WiFi技术定义只涉及数据链路层的MAC子层和物理层。WiFi在2.4Ghz频段工作,所支持速度最高可达54Mbps[4]。此外,WiFi无需布线传播,室外的传输范围最大为300米,室内有障碍时最大距离约为100米,是当今最流行的短距离无线传输协议。

WiFi组建方法简单,是由AP(Access Point)和无线网卡组成的无线网络。WiFi的网络拓扑图如图2所示。WiFi 具有高速无线传输、无需布线、较长距离工作、健康安全、与有线网络无缝融合等特点,使其得到广泛应用。

图2 WiFi网络结构图

Fig.2 The network structure of WiFi

2 WiFi通信的安全分析

随着支持WiFi功能的智能手机的普及以及无线AP数量的迅猛增长,WiFi得到了高效发展。但与此同时,由于无线网络的共享性与开放性,WiFi通信的安全问题也愈显突出。本节就基于WiFi网络中可能面临的安全问题提出几种安全技术,并进行了深入的分析与探讨。

2.1 WEP技术

WEP(Wired Equivalent Privacy)加密技术源自于名为RC4的RSA数据加密技术,旨在满足用户更高层次的网络安全需求。有线等效保密(WEP)协议是对在两台设备间进行无线传输的数据实现加密的方式,用以防止用户侵入无线网络和非法窃听。WEP有2种认证方式:共享密匙访问认证和开放式系统认证。WEP算法在802.11协议中是一种数据链路层安全机制,用于进行数据加密、访问控制等。

当无线工作站请求欲访问AP时,首先就必须通过AP的访问认证。认证过程如图3所示[5]。在通信链路建立正确连接之后,即可传输数据,传送的数据内容将通过WEP完成加密和解密。在发送方,数据使用共享的密钥进行加密;在接收方,加密的数据使用共享的相同密钥进行解密;最终实现整个通信过程。但经细致分析即可看出,WEP中存在不少安全隐患,例如:RC4算法缺陷、ICV篡改、密钥管理机制缺乏、用户密钥的隐形缺陷等。

图3 共享密匙访问认证中的消息过程

Fig.3 The message procedure of shared key

access authentication2.2 WPA技术

WPA(WiFi Protected Access),即WiFi网络安全存取技术,是一种保障WLAN安全性增强的解决方案,可提高现有以及未来WiFi局域网系统中访问控制和数据保护水平。WPA 技术源于正在制定中的IEEE802.11i 标准,并将与之保持前向兼容。鉴于上述讨论已指出WEP的不安全性,在802.11i协议完善前,用户可采用WPA为其访问WLAN网络提供一个临时性的解决方案。该项标准的数据加密机制采用临时密钥完整性协议(TKIP),认证则有两种模式。一种是使用预先共享密钥PSK(Pre-Shared Key)进行认证;另一种是利用802.1x协议进行认证。

TKIP是一种改进的WEP方案,是针对WEP存在的安全隐患而提出相应补救措施。通过采用和WEP一样的RC4对称加密算法,即解决了WEP中的固定公有密钥以及短IV等问题。

2.3 WPA2标准

实际上,WPA加密技术包含TKIP和CCMP(AES或AES-CCMP)两种加密方式。TKIP本质上是一种过渡型的加密协议,尽管针对WEP的缺点作了重大的改良,也解决了WEP中可能存在的一些安全问题,但仍保留了RC4算法及基本架构,因而也延续了RC4算法隐含的弱点在内。后来,WiFi组织又推出了WPA2,采用CCMP加密协议,其与WEP完全不同的地方在于采用了新的AES高级加密算法。WPA2是目前安全性最好的无线加密模式,其认证模式与WPA一般无二。

综上所述,WEP、TKIP及CCMP加密机制的各项对比列成表格,结果如表2所示[6]。

表2 WEP、TKIP及CCMP安全方案对比

Tab.2 The contrast of WEP、TKIP and CCMP

safety programs

加密

机制 密钥 加密

算法 优点

缺点

WEP

静态40位

或128位

RC4算法

使用共享密钥加密算法,只有在用户的密钥与AP的密钥相同时才能访问网络,防止非法用户侵入 静态简单密钥容易破解,安全性最低

TKIP

动态

128位

RC4算法

加强了网络安全性,可以在现有硬件上通过软件升级实现 采用RC4算法,简短密钥容易破解

CCMP

动态

128位 AES算法

安全性最高

对硬件要求高

3 系统设计

3.1 系统架构

系统主要功能是,当用户到达一个陌生环境,可以利用手机客户端软件实时定位用户当前位置,继而获得周围的交通、宾馆、银行等位置信息,为用户出行提供方便。系统由终端设备(配备WiFi模块的Android手机、平板电脑)、无线接入点(AP)、中心服务器、路由器以及PC共同组成。系统的网络拓扑结构如图4所示。

图4 系统拓扑结构图

Fig.4 The topology diagram of the system 系统中,客户端是指配备WiFi模块的Android智能手机、平板电脑等移动设备,本系统客户端采用了Android智能手机。首先,利用GPS定位模块获取当前的位置信息;然后,扫描周围的WiFi热点,手机连接到指定WiFi网络;最后,通过WiFi网络将定位信息发送至服务器端。客户端也可以通过WiFi网络收到服务器端返回的服务信息,主要包括当前位置周边有关的交通、宾馆、银行等位置信息。

系统服务器端的主要功能是负责接收位置信息,并根据位置信息查找数据库,再将服务信息返回给客户端。服务器端能够响应并处理客户端的请求,对数据库中的相关信息完成添加、删除、查询、更改等各种操作,并将操作结果通过WiFi网络返回给客户端高清显示。服务器端的功能模块主要包括Socket通讯子模块和数据库管理子模块。

3.2 系统原理

首先,客户端利用Android系统提供的与GPS定位相关的API实现手机GPS定位,获取当前所在位置信息;然后,就要将手机连接到服务器所在的WiFi网络,实现客户端和服务器的信息交互。而要连接到WiFi网络,则要扫描周围的WiFi热点(AP),在WiFi网络中用SSID来区分不同的无线网络,扫描结束后列表中就会出现周边所有的接入点AP的BSSID、capabilities、frequency、level、SSID等信息。接下来就是连接指定网络名称(SSID)的WiFi网络,并根据上述扫描到该接入点的相关属性信息配置该网络,配置完成后再利用Android平台提供的WiFi操作相关API即可接入WiFi网络。最后,就是通过基于 TCP 协议的 Socket 通信开发实现客户端与服务器端的信息传输。

3.3 系统模块划分

本系统的实现主要通过模块划分,划分结果如图5所示。

图5 系统模块划分图

Fig.5 The module division of the system3.4 系统安全性

由于用户信息通过无线网络传输,且信息需要保密,因此需要系统具备较高的安全性。本系统为WiFi网络设置安全机制。WiFi设置为 WPA-PSK加密方式(加密类型为TKIP)。

4 主要模块的实现

本系统的实现过程主要是利用了Android平台的5大功能模块,分别为Linux内核层、Android运行环境、普通函数程序库、应用框架层和Android应用程序层。在应用程序层利用Android平台提供的与GPS、WiFi相关的API接口,开发基于WiFi的GPS应用程序,并由Linux内核层提供相应的底层驱动。

4.1 开发工具及运行环境

软件开发包:JDK 、Android SDK

IDE: Eclipse IDE+ADT

数据库: MySQL JDBC

4.2 用户界面设计模块

构建Android用户界面使用的主要是XML进行配置生成的方式,在xml文件中使用LinearLayout命令进行界面布局,可以放置各种组件。本系统设计了3个操作界面来实现用户与系统的交互,分别是启动提示界面、GPS定位界面、WiFi操作界面。

下面以实现启动提示界面为例进行设计,启动提示界面设计的布局资源文件使用了一个Button和TextView,单击Button会跳转到GPS搜索界面;而TextView则用来显示程序开始运行前的一些注意事项。程序中首先获取Button在Activity中的资源标识符,添加Button监听器,定义Button的点击响应方法,在onClick()中使用Intent启动另一个Activity,实现当单击该按钮时,页面将跳转到下一个Activity。

4.3 GPS定位模块

在Android平台下获取GPS信息主要分为三步。首先,添加系统权限;其次,通过系统服务,取得LocationManager对象;最后,设置服务商的信息,并设置 Provider,得到位置提供器(可以指定具体的位置提供器;也可以提供一个标准集合,让系统根据标准匹配最适合的位置提供器)。又由于是移动终端的缘故,就需要注册一个位置监听器 LocationManager以监听定位信息改变,并设置更新周期为 2 000ms,之后再获取当前的Location,表现为位置的经纬度信息,最后可将位置信息显示在TextView中。

4.4 WiFi扫描模块

首先,需要在AndroidManifest.xml文件中显式地声明两个许可权限,分别是CHANGE_WIFI_STATE和ACCESS_WIFI_STATE。其后,为WiFi操作界面的扫描WIFI按钮而使用setOnClickListener的方法添加一个监听器,当按下此按钮时,手机就开始扫描周围的AP,并将扫描结果显示出来。具体扫描过程如下:

(1)通过系统服务,实例化WifiMananger对象。

(2)使用WifiManager对象的startScan()方法启动扫描。

(3)注册对SCAN_RESULTS_AVAILABLE Intent的BroadcastReceiver。

(4)调用getScanResult()方法获取ScanResult对象列表。

其中,ListwifiList=mainWifi.getScanResult()就是用来获取扫描结果的。在列表中的信息主要有BSSID接入点的地址、SSID网络名称、Capabilities网络的接入性能(主要用来判断网络的加密方式)、Frequency频率及Level等级等。扫描结果显示信息如图6所示。

图6 WiFi操作界面

Fig.6 The operating interface of WiFi4.5 手机连接WiFi模块

扫描模块中一般可扫描得到多个WIFI接入点,系统中以连接名为EECC-DC的网络为例进行手机WIFI连接。具体连接过程如下:

(1)建立一个WifiConfiguration 对象wc。

(2)设置wc的SSID号为EECC-DC,再根据扫描结果列表中SSID为EECC-DC的网络的相关信息配置wc的其他属性信息。

(3)根据上述系统设计,配置wc的安全模式为WPA-PSK加密方式。

(4)调用addNetwork(wc)添加该网络。

(5)调用enableNetwork(int netid,true)连接网络。

(6)调用getDhcpInfo()方法获得DHCP配置信息以完成连接过程。

(7)调用getWifiState()方法验证已成功连接WIFI网络。

(8)调用getConnectionInfo()方法获得当前网络的连接状态,显示WIFI连接信息。

手机成功连接WiFi网络后的返回信息如图6所示。

4.6 Socket通讯模块

利用Socket进行Client/Server程序设计的常规连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。如此就建立了一个连接。Server端和Client端都可以通过Send,Receive等方法与对方通信。系统中使用的构造方法如下:

Socket(String ipaddress, int port);

ServerSocket(int port)。

4.7 数据管理模块

数据库模块使用Java程序连接MySQL数据库,实现将服务器端主程序获得的GPS信息发送至数据库中,并根据GPS信息检索数据库,再返回查找后的相关信息。具体操作过程如下:

(1)定义数据库用户名、密码、驱动程序名driverName、联结字符串URL。

(2)加载驱动程序,获得Connection对象。

(3)利用Connection对象创建Statement对象,此时数据库已成功连接。

(4)调用Statement对象的execute()、executeQuery()、executeUpdate()等方法操作数据库,实现数据的查询、插入、删除等操作。

最后,将查询后的结果信息通过Socket通讯模块返回给手机客户端,供用户查询使用。查询结果如图7所示。

图7 WiFi操作界面