已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文 基于安卓系统的手机位置跟踪应用程序的设计二 级 学 院机械与电子工程学院专 业通信工程年 级学 号学 生 姓 名指 导 教 师职 称完 成 时 间2016 年04 月10 日 独 创 性 声 明本人郑重声明:所呈交的毕业论文(设计)是本人在指导老师指导下取得的研究成果。除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确的说明并表示了谢意。签名: 年月日授权声明本人完全理解贺州学院有关保留、使用本科生毕业论文(设计)的规定,即:学院有权保留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文(设计)被查阅和借阅。本人授权贺州学院可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设计)。本人论文(设计)中有原创性数据需要保密的部分为:无。签 名: 年月日指导教师签名: 年月日目录 摘 要5引言61 软件介绍71.1 软件功能71.2 软件设计思路71.3 设计本软件的意义82 安卓端92.1 安卓系统简介92.2 安卓系统结构以及主要组件102.3 安卓项目结构122.4 安卓存储方式132.5 安卓的服务器连接142.6 定位功能152.7 电子围栏功能162.8 换卡发送短信功能172.9 收到短信回复183 服务器端203.1 B/S结构介绍203.2 servlet介绍203.3 mysql介绍213.4 服务端功能实现224 网页端234.1 html介绍234.2 网页端功能实现235 调试245.1 程序调试245.2 测试的主要内容256 体会与总结296.1 关于软件开发的体会296.2 总结29参 考 文 献31致 谢32贺州学院本科毕业论文基于安卓系统的手机位置跟踪应用程序作 者 指导老师 摘 要:在Android移动应用开发中,手机防盗追踪功能是一项重要的安全技术。该设计软件致力于手机的防盗与追踪,主要研究基于安卓系统的定位,电子围栏,手机SIM卡安全,以及短信追踪功能。软件设计了安卓端,服务器端,数据库端,与网页端四个界面,由它们可以实现记录定位信息,匹配手机信息,保障手机安全并能随时随地定位手机的位置。该软件实现了手机防盗追踪功能,可以正常使用,对手机安全方面的软件设计方面有一定的参考价值。关键词: 安卓;手机防盗追踪;安全;应用程序全套设计加扣 3012250582phone location tracking applicationAuthor: Abstract: In the Android mobile application development, anti-theft tracking of mobile phone is an important safety technology. The design software is dedicated to mobile phone anti-theft and tracking. The targeting based on Android system, electronic fence, mobile phone SIM card security and SMS tracking are mainly researched. Android client, server client, the database client and web interface are designed. Recording location information, the matching cell phone information, guarantee mobile security and target phones location anywhere are achieved by four interfaces. Anti-theft tracking of mobile phone are realized, and the system is normally used. The paper has certain reference value to the design of the phone security software.Keywords: Android system; phone anti-theft tracking; security; applications引言随着移动通讯产业的快速发展,手机成为了人们生活中不可缺少的一部分,它不仅可以打电话,发短信,更可以浏览网页,聊天,甚至购物,银行转账等等,相信在不久的将来,手机的业务也能逐渐的取代电脑,成为一个互联网的终端,向外界提供更多的服务。而谷歌推出的一个专为移动设备设计的操作系统平台android,更是加速了手机产业的发展,但是,因为安卓系统是开放源代码的,且功能强大,容易使用,在日常生活中应用十分广泛,所以针对手机的防盗追踪技术就显得更为重要。手机里存有人们大量的个人信息,甚至一些非常敏感的信息,如果丢失了则十分危险。该软件是基于安卓平台开发环境,在智能手机上设计、实现基于安卓系统平台的具有手机防盗追踪功能的软件,有了它,再也不用担心找不到你的手机了。通过此次毕业设计提高了笔者对文献资料的搜索和信息处理能力,培养笔者对软件开发知识的能力,进一步提高自身的知识素养和设计论文的技巧。1 软件介绍该软件是基于安卓系统开发的一个安全软件模块,主要有定位,追踪,防盗等功能。用户可在手机查看自己的位置,家人也可以在电脑查看手机所在位置,同时还有电子围栏,更换SIM手机卡告警,收到短信回复定位功能。1.1 软件功能该软件是基于安卓系统的手机位置的跟踪应用程序,主要实现了以下几点功能:(1)定位功能:采用了第三方高德地图实现定位功能,同时高德地图集成了电子围栏,地图显示等功能,在安装了本软件的安卓手持客户端,和任何一台有浏览器软件的电脑端,都可以查看到手机所在的位置。(2)手机防盗功能:每次当手机更换SIM卡,手机在开机和开启本软件时会匹配SIM卡信息,如果不匹配将会发送告警到事先设置好的监控手机号码。(3)收到短信回复位置功能:当手机收到事先设置好的监控手机发来的短信,并且内容为“在哪”,则手机会回复地理位置给监控手机。1.2 软件设计思路一座大楼的最初原型就是一张设计图纸,一个软件也是一样,只有先预想它要有什么样的功能,才能慢慢的去实现它,完善它,所以软件的流程图,就是一个软件的核心,软件的最初原型,和最终功能。图1 软件设计总流程图(1)在开启本软件的时候需要先设置好本软件需要用到的一些安全信息,如手机监控号码,围栏半径,还有设置好电子围栏的中心点(默认为最初安装软件得到的经纬度为中心点)。(2)在软件首页可以通过不同的按钮选择不同的功能。(3)换卡功能在每次开机和开启本软件自动匹配数据,如果与存储的数据不一致,则会发出报警。(4)定位功能使用第三方软件-高德地图实现,高德地图还集成了电子围栏功能,因此只需要使用高德地图的api就可以轻松的做到定位以及电子围栏功能。在完成定位的同时,发送定位信息到服务器端,在电脑上通过链接访问网页就可以在电脑上查看到手机的位置,方便又可靠。(5)通过监听手机的短信广播和短信数据库的变化来判断是否收到来自监控手机号码的短信,是否应该回复手机的定位信息。1.3 设计本软件的意义众所周知,手机的发展非常迅速,功能也越来越强大,从以前的诺基亚按键手机,到现在的安卓触屏智能手机,信息处理能力,数据传输速度,以及智能化程度也越来越强,手机能处理的业务也变得越来越多,它在我们的日常生活中的重要性已经不言而喻,手机里存储了我们大量的信息,这些信息一旦随着手机的丢失而丢失的话,就会给我们的生活,个人隐私,财产等带来巨大的威胁。最近,McAfee对美国、日本和英国等3G业务比较发达国家的2000名用户进行了调查,研究发现,平均有86.1%的用户对于手机所引发的安全问题有所担心,担心的内容包括私人信息泄露,蓝牙间谍或被远程监控、手机病毒影响到朋友和同事关系等。3 由于手机与我们日常生活的紧密关系,使得手机信息安全,再一次成为关注的焦点,本软件致力于手机的防盗和追踪功能,随时随地让你知道你的手机在哪里,再也不怕找不到自己的手机了。2 安卓端2.1 安卓系统简介 Android是Google公司推出的一款致力于移动便携设备的系统,这个系统主要由操作系统、中间件、用户界面和用户软件组成,是目前主流的手机系统之一,2011年在全球的市场份额超过了塞班系统,2013年全球市场份额已经达到78.1%,它能够取代塞班系统不是没有原因的,安卓系统最大的优点就是开源,免费,也就是说安卓系统是开放源代码,而且不收费的,其次就是开放性,扩展性非常高,开发比较容易,所以才会存在安卓市场的大量软件的存在。2.2 安卓系统结构以及主要组件首先我们看下安卓的系统结构图:图2 Android系统架构图Android的系统架构主要分成了应用程序层、应用程序框架层、系统运行库层和linux核心层,层次分明,是一个标准的分层结构。而开发者一般只需要对应用层进行开发,就能开发出各种各样的app软件了。本软件就属于应用程序层的一个app软件。其中应用层最主要的几个组件,同时也是本软件所需要应用到的几个分别是:Activity活动,BroadcastReceive广播接收器,broadcast,Service服务,下面简单的介绍下它们。2.2.1 Activity活动:应用程序中,一个Activity通常就是一个单独的屏幕,也可以说一个activity对应了一个界面,一个应用程序就是由多个activity组成,它可以按照需求添加一些不同的控件,组成不一样的界面,也可以监听并处理用户的点击,滑动事件做出响应,所以activity就是与用户交互的媒介工具。2.2.2 BroadcastReceive广播接收器:广播机制是安卓系统的一个很大的特点,系统中发生的各种事件都会发出一个广播,例如,收到一条短信就会发出来短信了的广播,开机成功就会发出一个开机成功的广播等等。但是广播还有一个特性,就是不管你的程序接不接收这个广播,广播都会发出,就像我们日常生活中的广播电台一样,这也对我们开发软件有很大的帮助,比如我们需要监听来短信了这个事件,我们只需要在程序中写一个广播接收器接收这个广播,再做我们需要做的操作就可以实现我们的功能,非常简便。2.2.3 Service服务:Service类似于Windows中的服务,没有界面,只是在后台运行,由于它是不可见的,所以服务不能自己运行,只能通过调用Context.startService(Intent intent);或Context.bindService(Intent intent)来开启一个服务,而正是由于不可见,我们可以在后台做一些不需要界面辅助的事情,比如:本软件在后台定位,并回传信息给服务端。2.2.4 Content Provider内容提供者 :Content Provider是一个可以共享数据的组件,这些数据可以存储在文件(Fiel)、SQLite数据库等,然后其他应用通过ContentResolver类从该内容提供者中获取或存入数据,但是一般我们开发的应用程序不会把自己应用的数据共享出来,只有类似于通讯录这些才会供给其他程序调用。2.3 安卓项目结构搭建好了安卓的环境就可以进入开发阶段了,首先我们来看看一个安卓app包结构:图3 安卓包结构图(1)Src目录: 源文件存放目录(存放代码)(2)libs目录: 第3方功能jar包(存放库文件和第三方jar包)(3)res目录: 项目内部资源(存放图片,布局文件,菜单,文本资源等)(4)gen目录: 工具自动维护目录(5)AndroidManifest.xml文件: 项目的核心配置文件(所有activity和service,广播接收器,以及权限都需要在里面配置)2.4 安卓存储方式由于软件需要进行数据的处理,存储,发送数据必不可少,下面简单的介绍下安卓的几种存储方式:(1)安卓自带的小型数据库-sqlite,sqlite虽然比mysql,oracle等数据库轻量,但是实质都需要编写sql语句,操作复杂,不建议使用。(2)使用File,也就是文件的形式进行存储,在手机内存或者SD卡新建目录进行存储,这种存储形式更适合图片缓存,日志记录等内容,也不建议使用。(3)使用SharedPreferences,这是一种轻型的数据存储方式,使用简便,易于存取。经过仔细对比,感觉本软件需要存储的数据较少,可以不需要使用数据库存储,因此使用安卓自带的一种简便的存储方式进行数据存储。下面简单的介绍下这种存储方式:SharedPreferences它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/包名/shared_prefs目录下。具体实现代码如下:SharedPreferences sp = this.getSharedPreferences(safeinfo,this.MODE_PRIVATE);Editor ed = sp.edit();ed.putString(banjing, Mbanjing);mit();这段代码是将本软件设置好的围栏半径,监控号码和SIM卡识别号存储到SharedPreferences 里,一共存储了三条数据,里面”banjing”对应了设置好的半径,监控号码和SIM卡识别码也是一样,这段代码执行过后,即在/data/data/com.ning.locationsys/shared_prefs目录下生成了一个safeinfo.xml文件,一个应用可以创建多个这样的xml文件,然而,有存就有取,因为这是一个非常简便的存取工具,在取的时候代码也非常简单,只需要简单的几句就可以取出存储好的数据,具体代码如下:SharedPreferences sp2=this.getSharedPreferences(loacate,this.MODE_PRIVATE);Latitude = Double.parseDouble(sp2.getString(Latitude, 0”);这是取出存储的定位获得的经纬度信息,只需要找到对应存储的xml文件,值错误或者此key无对应value值,SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。22.5 安卓的服务器连接由于本软件需要发送数据到电脑端,所以就需要连接到服务器,Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,所以经过我在网上和书籍上进行搜索,终于找到了更加便捷的方法来实现网络的连接操作。android-async-http是一个第三方服务器连接组件,它是基于HttpClient进行二次开发的一个开源框架项目,最大的特点就是封装好了我们连接服务器的代码,并且所有的连接请求都独立在主线程之外,我们只需要通过回调它提供的方法,就能得到请求的结果,再进行结果的处理就可以了。由于操作十分简便,所以本软件采用这种比较成熟的服务器连接开源框架来实现服务器的连接,下面简单的介绍下它的使用方法:首先到它的官网去下载最新的jar包,然后添加到安卓应用程序包目录下的libs ,接着就可以在代码中实现网络的连接操作:AsyncHttpClient client = new AsyncHttpClient();ListNameValuePair list = new ArrayListNameValuePair();list.add(new BasicNameValuePair(Latitude, Double.toString(Latitude);list.add(new BasicNameValuePair(Address, Address);UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,UTF-8);client.post(this, 93:8080/SafeSys/locateServlet, entity,null, new AsyncHttpResponseHandler() 通过以上几行简单的代码就可以把服务端需要的信息传输过去,在它的onSuccess方法中可以得到发送成功返回的回调信息。相比使用安卓原生的HttpClient方便了许多,减少了大量的代码。2.6 定位功能由于定位功能有更好的第三方软件可以提供使用,高德地图集成了GPS,基站,wifi等目前最主要的定位方式,所以本软件采用了高德地图来实现定位的功能。下面是定位功能的详细实现流程:图4 定位功能流程图高德地图是一款国内比较流行的地图软件之一,主要能够提供免费的地图导航服务,由于它的免费性,以及定位功能的稳定、全面性,本软件综合考虑之后决定使用这款地图服务,但是要使用属于第三方软件的地图服务,必须遵守它的规则,下面是本软件使用高德地图进行开发的前置操作:(1)访问/进入高德地图官网,注册申请成为开发者,并申请应用的KEY。(2)找到相关的下载,解压得到定位包和地图包拷贝jar包到项目的libs目录。(3)在核心配置文件里进行配置并指定申请的用户key,这个步骤比较重要,因为每一个应用都对应了一个key值,是使用高德地图的一把钥匙。meta-data android:name=com.amap.api.v2.apikey android:value=867a0e70167722430a4f870437ce61b5 /meta-data(4)在核心配置文件里添加需要使用到的权限,比如获取手机信息,开启网络数据流量,GPS等,这样就可以使用高德地图的服务了。(5)最后就是通过代码来得到我们需要的地理位置信息,首先是初始化高德地图的定位,并设置监听器来得到返回的地理位置信息,还可以通过设置一些参数获得不一样的效果,比如设置定位模式为高精度模式(采用GPS模式)或者低功耗模式(采用网络或者wifi定位),设置定位的次数为一次或者无线次数,还有定位的时间间隔等等,非常简单实用。本软件每隔设置的时间间隔为每分钟定位一次或者每分钟定位2次。然后我们接收返回的位置信息,存储起来,再做一个对比,如果位置不变的话,就不要发送到服务端存储,由于位置信息需要传递到服务器端,在电脑上显示,所以就必须把定位后得到数据存储并发送出去,所以就需要用到前面所说的服务器连接组件asychttpclient。2.7 电子围栏功能地理围栏是模拟出一个虚拟的栅栏,以一个圆形区域作为一个虚拟的围栏,当我们进入或者离开这个区域的时候,手机都能够接收到通知。高德地图同时也提供了地理围栏的功能,由于它也是属于定位服务的,所以与定位相关的所有前置工作都要做,然后需要注册一个广播接收器来实现围栏的功能,根据返回来的信息判断是在围栏半径内还是在围栏半径外,再做对应的操作。这个功能主要是定位功能的一个扩展,只需要在定位的基础上添加一些地理围栏的代码,不过,由于我们不知道到底什么时候用户会走出这个圈,所以我们需要使用到一个将来的意图(Intent),在未知的时间里如果走出了这个围栏就会触发这个意图,而我们只需要在触发意图的时候发送一个特定的广播,就可以通知到我们的用户出了围栏,然后我们再做对应的操作就可以了。2.8 换卡发送短信功能这个功能原本计划是通过获取用户的手机号码来做一个判断,但是在真机上测试的时候发现,目前的运营商并没有在SIM卡中保存用户手机号码的,只能通过一个唯一的识别码来判断是否是这个SIM卡用户,所以可以通过这个唯一的识别串号来判断是否切换了SIM卡,并且在开机和开启app的时候双重判断,就能够判断出用户的手机卡是否切换。主要流程如下:图5 换卡发送短信功能流程图(1)首先是在安装app的时候,默默在后台存储了手机的相关信息,在主界面也能查看手机的各种状态信息。(2)在手机开机的时候和每次开启app的时候都再次取出IMIS码做对比,如果匹配结果不一致,则判定为切换了SIM卡,反之没有切换。具体代码实现获取手机IMIS码:TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); String subscriberid = tm.getSubscriberId();安卓系统在开机完毕后会发出一个开机完成的广播,我们只需要在程序代码中监听这个广播,首先是需要注册一个广播接收器进行监听,然后在开机完毕后执行相对应的匹配操作,就能够实现这个功能,不过由于开机手机会比较卡顿,经常不会执行或者是卡的时候手机为了保证系统不受影响会杀死这些代码执行的进程,具体实现如下:先写一个类继承广播接收器BootBroadcastReceiver用来接收开机的时候安卓系统发送出来的广播,然后在它的onReceive方法里执行相应的匹配操作,如果匹配成功则不做操作,如果检测到开机获取的手机卡的识别码与我们存储的不一致,则执行发送短信操作。最后,需要注意的是,广播接收器需要在核心配置文件里进行配置,具体代码如下:receiverandroid:name=com.ning.loacationsys.help.BootBroadcastReceive intent-filter actionandroid:name=ent.action.BOOT_COMPLETED /category android:name=ent.category.HOME / /intent-filter/receiver2.9 收到短信回复我们的手机收到一条短信,安卓系统也会发出一个广播,并且把短信放在一个Bundle(intent.Extras)中,Bundle可以理解为一个键值对的形式,短信采用pdus作为键,pdus应该是protocol description units的简写,也就是一组短信。7Android不是一接收到短信就立刻发出广播的,他会有一定的延迟,所以就有可能会有多条短信,所以才会用数组来存放。所以这个功能需要监听手机来短信的广播或者监听短信数据库的变化,为了确定能收到监听到短信,本软件对这两个点都做了监听,因为广播的权限与优先级别会被打断,但是数据库的变化不会,因此,这样双重监听才能确保能收到短信的时候代码会被执行,具体实现流程如下:图6 收到短信回复流程图首先是我们需要注册一个广播接收器监听短信广播,一个广播监听短信数据库的变化,在它们的onReceive方法中实现短信判断逻辑,当收到短信的时候,我们要获得短信的内容,短信的发送者,然后根据发送者和内容做一个判断,再决定是否需要回传定位短信。短信到来的时候,系统会将短信的内容封装成pdu的格式,然后放到intent里面。所以要获得短信的内容,就通过intent,将puds拿出来就可以了,它返回的是Object数组,下面是获取短信内容的实现:Object messages = (Object) intent.getSerializableExtra(pdus); byte pduObjs = new bytemessages.length; for (int i = 0; i messages.length; i+) pduObjsi = (byte) messagesi; byte pdus = new bytepduObjs.length; int pduCount = pdus.length; SmsMessage msgs = new SmsMessagepduCount; for (int i = 0; i pduCount; i+) pdusi = pduObjsi; msgsi = SmsMessage.createFromPdu(pdusi); 短信就是一个SmsMessage ,这个SmsMessage可以通过一个byte来创建,获得了短信的内容,接着判断短信是不是监控号码发来的要求回传定位信息的短信,最后在核心配置文件中注册刚刚写好的广播接收器的类,并添加读取短信,发送短信的权限,这样就可以实现收到短信回传位置信息了。3 服务器端本软件的服务端主要由两个servlet组成,一个是接受安卓端的数据,并存储到mysql数据库,另一个是接受网页端的请求,返回最新的十条数据,并显示在网页的地图上。当然,在安卓端已经做了程序的判断,相同的位置,不会发送到服务器端,不会出现一直在同一个位置的情况。3.1 B/S结构介绍B和S就是浏览器(Browser)和服务器(Server),浏览器发出请求,服务器接受请求的方式。这是对C/S(客户端和服务端)结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,前端减少了很多的事物逻辑,主要事务逻辑在服务器端实现,形成所谓三层3-tier结构。通过这种结构,只要你有浏览器,就可以通过链接访问到服务器的数据,这样也就可以实现随时随地查看手机的位置。3.2 servlet介绍Servlet是一个在服务器端运行的java类,用来处理客户端的请求, 它最大的优势在它的高性能:Servlet初始化时就被装载并驻留在内存中,以后直接从内存中运行;而且每当一个新的请求到来,服务器都会开启一个新的线程来为之服务,能很好的处理来自浏览器,或者其他来源的请求,所以本软件采用servlet来处理客户端的请求,作为一个中间件,处理收到安卓端的信息,并存储到数据库,还有处理浏览器的请求,返回数据库信息。4图7 servlet响应客户端请求的流程3.3 mysql介绍MySQL是目前比较流行的关系型数据库管理系统,属于 Oracle 旗下公司的集体积小、速度快、总体拥有成本低,开放源码这些特点的一款产品。一般中小型网站的开发都选择 MySQL 作为网站数据库,是目前最流行的关系型数据库管理系统。它将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。5 本软件采用mysql数据库创建了一个数据表,用来存储安卓端发送来的定位数据,虽然只有经度,纬度,地址和时间四个字段,但是可以存储成千上万条的数据。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言,如存储语句Insert into locateinfo(Longitude,Latitude,Address,Time,id) values (113.321547,23.012389,广东省广州市番禺区,2016-03-27 12:24:44,12),这样就插入了一条定位信息。3.4 服务端功能实现服务端主要通过一个servlet实现接收安卓端发送过来的数据,并存储到数据库,当浏览器访问的时候就从数据库拿出存储的数据,返回给网页端,网页端通过地图显示出来,这样就可以在电脑上查看手机的定位信息了。首先看一下服务端的包结构:图8 服务端包结构图(1)src目录:存放源代码,其中bean包存储的是实体类对象,Dao包是数据库的借口,Impl包是接口的实现类,Servlet包是接受和处理请求的类,util包装的数据库连接的工具类。(2)Lib目录:存储的是服务端需要的jar包,主要是数据的传输用的json的形式,也就是一个进行加工处理的字符串的格式,还有mysql连接需要的jar包。(3)ditu.html文件:这是网页端的代码,我们只需要访问这个html文件就可以看到手机的位置。在servlet包中有两个servlet类,savaServlet和serchServlet,分别对应了存储和查询数据。在接收到请求的时候,会根据请求的类型调用它们的doget或者dopost方法,我们只需要在方法中实现我们的业务逻辑就可以了。在收到请求的时候,先区分是安卓端的存储请求还是网页端的显示定位请求,如果是安卓端,则调用存储的数据库接口存储数据,网页端则调用写好的取出数据接口,取出我们需要的数据,然后转换成json的格式返回出去,最后我们只需要访问链接“04:8080/locateServer/servlet/serchServlet”就可以看到返回出去的地理位置信息。4 网页端本软件可以在电脑上查看手机端的位置,只要你的电脑能上网且安装有浏览器,通过访问服务器上的一个html页面就能看到你的手机发送过来的位置信息,非常简单,方便,容易操作!4.1 html介绍HTML 是用来描述网页的一种超文本标记语言,它不是一种编程语言,而是一种标记语言,是一套用来描述网页的标记标签,我们平常上网看到的网页就是由这些不同的标签构成的,如果你查看网页的源代码中看到一大堆的类似/这样的符号,这就是html的标签。4.2 网页端功能实现网页主要由html编写,其中使用到了目前比较流行的一些技术,比如AJAX,和javascript。AJAX是一种最新的技术,主要用于网页的即使刷新与局部刷新,在页面上不需要刷新整个页面来获取数据,使服务器和信息传递的压力大大减小。JavaScript是一种解释性的脚本语言,被广泛用于Web应用开发,网页中各式各样的动态效果的实现,都是通过JavaScript来实现的。网页端主要是由html标签编写形成,调用了百度地图的接口,我们只需要发送一个ajax的post请求到对应的servlet就请求到服务器返回的数据,然后在它的success方法中把获取到的位置信息加载到百度地图中去,地图上就会显示出最新的定位信息,当然,如果没有接收到数据的时候,也做了相应的处理,会弹窗告知没有定位信息,打开手机定位。最后在电脑上任意一个浏览器输入网络上的html链接就可以得到地图显示出来的定位信息,比如:本软件通过访问04:8080/locateServer/ditu.html这个链接就可以访问到html页面,网页成功访问的时候会把servlet返回的json数据解析,然后应用到地图页面。最终我们就能够看到地图上显示了小于10条的定位信息,且最新的一条会以卡通人物和窗口特别显示出来。5 调试在调试初期,遇到了很多问题,比如获取不了手机SIM卡的号码,就不能判断是否切换了帐号;还有监听收到短信的时候,广播接收器不能拦截到信息;还有监听开机广播,开启定位服务和换卡监控服务无法实现等等。后来,经过上网查询资料,终于一点一点解决了问题,进入到了调试阶段!5.1 程序调试程序开发中会遇到各种各样的问题,如语法的错误,逻辑的错误。开发完一个功能,都需要及时测试,待功能测试通过后,才能进行下一个功能的开发,这样可以保证程序的质量。在程序开发中,使用了打印调试信息,弹窗提示,debug调试等方法。5.2 测试的主要内容为了保证测试的质量,测试过程包括:代码审查、单元测试以及系统测试。5.2.1 代码审查 代码审查为了对代码中冗余的部分,代码中逻辑不合理的部分加以修改,保证代码的可读性,可维护性。5.2.2 单元测试 单元测试就是模块测试,是编写的一小段代码实现某一个具体的功能,用来检查功能是否符合需求。(1) 测试软件存储信息软件的最大的需求就是对数据的收集与处理,在此期间,遇到过很多的问题,比如:存储和取出来的先后逻辑出现错误,重复存储,重复取出等问题,做过很多的尝试,最终还是统一做一个本地的存储,为了验证数据存储是否正确,笔者采用了弹出气泡的方式打印出存储信息。图9 设置安全信息反馈页面(2)定位以及围栏功能测试由于围栏功能比较难测试,笔者采用了很多不同的方式来测试这个功能,最终采用模拟器进行位置模拟测试得到了结果,统一使用后台输出log信息的方式来验证功能的正确性。图10 定位以及地理围栏功能调试(3)手机上查看位置测试刚开始这个功能只能够在文字页面中查看到定位得到的消息,不够突出,也不能查看周边的环境,最终为了更好的视图效果,笔者在文字基础上加上了在地图查看位置这个功能。图11 手机中查看我的位置页面调试(4) 检测手机SIM卡切换测试这个功能相对花的时间还算是比较多的,最初为了获得手机号码而绞尽脑汁,可结果却是我们的手机中并没有存储我们的手机号码(SIM卡中也没有),为了实现这个功能,笔者找了不少的资料,最终通过手机卡中唯一的一个识别码解决了这个问题,这个识别码也是运营商识别用户的一个标志。图12 调试检测手机是否换卡功能(5)收到短信回复位置这个功能其实是花费时间最长的了,因为某些安全软件在拦截了短信之后回打断系统中的短信广播,使得本软件会收不到短信广播,最终通过监听广播和监控短信的存储数据库实现获取最新的短信消息,每次都会读取第一条短信,如果不一致,则会进行匹配操作。图13 收到短信操作调试(6)电脑上查看手机的定位信息相比来说,这个功能还算是比较简单,因
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年审计独立性考试题及答案
- 2025年江西化学中考试题及答案
- 2025年档案学学硕考试题及答案
- 冲刺期末演讲稿
- 关于教师爱的演讲稿
- 江苏省淮安市高中数学第一章三角函数诱导公式苏教版必修教案(2025-2026学年)
- 2025-2030中国液体化工物流行业人力资源管理与绩效评估报告
- 2025-2030中国企业邮箱安全防护体系构建策略研究报告
- 部编版小学语文六年级口语交际同读一本书教案(2025-2026学年)
- 主题班会教案一年级安全教育主题队会我是交通安全小标兵(2025-2026学年)
- 人工智能在智能水处理中的应用
- 2024-2025学年新乡市一中八年级上册期末考试数学试卷(含部分答案)
- 全国高校辅导员素质能力大赛试题(谈心谈话、案例分析)
- 人工智能安全:原理与实践 课件全套 李剑 第1-16章 人工智能安全概述- 代码漏洞检测原理与实践
- 完整版人教版小学3-6年级英语单词表,可直接打印
- 健康管理中心的建设与运营
- 三减三健课件
- 四川省达州市渠县第二中学2024-2025学年七年级上学期11月期中数学试题(无答案)
- 乡村振兴:人才是关键
- 2024年度钢结构施工总包协议模板
- 山西省晋中市四校联考2024-2025学年八年级上学期期中考试物理试卷(无答案)
评论
0/150
提交评论