最新版基于Android平台的无间盗防盗软件地图追踪及远程指令毕业设计.docx
《最新版基于Android平台的无间盗防盗软件地图追踪及远程指令毕业设计.docx》由会员分享,可在线阅读,更多相关《最新版基于Android平台的无间盗防盗软件地图追踪及远程指令毕业设计.docx(31页珍藏版)》请在冰豆网上搜索。
![最新版基于Android平台的无间盗防盗软件地图追踪及远程指令毕业设计.docx](https://file1.bdocx.com/fileroot1/2023-2/2/a1b8e88d-8323-49cd-a78b-037d159639d7/a1b8e88d-8323-49cd-a78b-037d159639d71.gif)
最新版基于Android平台的无间盗防盗软件地图追踪及远程指令毕业设计
本科毕业设计
题目:
基于Android平台的“无间盗”防盗软件
——地图追踪及远程指令
学生:
学号:
系别:
专业班级
指导教师及职称:
起止时间:
摘要:
随着Android系统的发展和智能手机逐渐平民化,其普及率呈指数增长。
Android手机市场规模的扩大所引起的手机安全和防盗的问题也愈发突出。
本论文在基于Andorid平台上,运用Android短信、广播等通信机制,配合第三方地图服务商提供的地图API对智能手机进行远程指令控制和定位丢失的手机,为找到手机增加可能性,并保护失主隐私。
关键词:
远程指令追踪;Android防盗;XX地图;Android广播
Abstract:
WiththeincreasingpopularityofAndroidsystemdevelopmentandsmartphones.TheAndroidphoneexpansionofmarketscaleofmobilesecurityandanti-theftproblemsbecomemoreprominent.ThisthesisisbasedonAndoridplatform,useAndroidSMS,broadcastingandothercommunicationmechanisms,withtheMapsAPIprovidedbyathird-partymapserviceprovidersmartphoneremotecommandcontrolandpositioninglostphone,toincreasethepossibilitytofindthephone,andtheprotectionoftheownerprivacy.
Keywords:
Theremotecommandtracking;Androidanti-theft;Baidumap;Androidbroadcast
目录
1.绪论1
1.1.研究意义与背景1
1.2.课题的目的及其意义1
1.3.本文的主要研究工作1
2.AndroidXX地图API2
2.1.手机地图服务2
2.2.定位技术2
2.2.1.基于GSM蜂窝基站定位2
2.2.2.基于GPS卫星定位2
2.2.3.基于WIFI热点定位3
2.3.XX地图API简介3
3.远程指令控制功能5
3.1.基本原理及设计5
3.2.底层平台导入和开发步骤6
3.2.1.申请密钥6
3.2.2.导入.jar和.so文件6
3.2.3.初始化声明6
3.3.模块框架图7
3.4.模块详细设计8
3.4.1.指令接收器的设计与实现8
3.4.2.指令业务分发器的设计与实现9
3.4.3.定位器的设计与实现11
3.4.4.报警响铃器的设计与实现12
3.4.5.手持设备权限管理器的设计与实现14
3.4.6.SIM卡更换通知功能的设计与实现15
4.地图追踪功能16
4.1.功能简介16
4.2.功能详细设计16
5.帮助与升级功能19
5.1.功能简介19
5.2.帮助功能模块19
5.3.版本升级功能19
6.软件测试与使用20
6.1.功能操作20
6.2.测试用例21
6.3.测试结果与发现21
7.总结25
参考文献26
致谢26
1.绪论
1.1.研究意义与背景
随着智能移动终端发展和普及,人们试图让交互的应用伴随移动的用户在对应的空间中迁移。
从全球的发展趋势来看,更高水平的基于位置服务(LBS)、基于空间定位等功能是新一代移动网络应该具备的,是网络业务支撑能力的一种体现,我国移动运营商更已将其视为形象工程。
LBS依赖于高精度定位技术的发展,随着定位技术的发展和人们网络社交心理、行为的成熟;LBS将更加实用化,所衍生出的服务和产业链将更加丰富和广阔,为用户提供随时随身的服务。
1.2.课题的目的及其意义
基于地图位置服务发展迅速,对人机界面与地理信息系统服务整合具有重要的理论和现实意义。
本课题在此基础上利用Androidd的短信通信机制、广播机制以及第三方地图软件提供商的API,实现并研究手机防盗在移动技术上的新应用。
将手机防盗技术应用于日常生活之中,对降低手机及其资料被盗的风险和减少个人的财产损失有着重大意义和应用价值。
通过此课题,能够培养学生动手能力,增强个人思维模式,锻炼软件开发中遇到问题的调试能力,进而加强专业技术。
1.3.本文的主要研究工作
本文主要研究的是基于Android系统短信通知机制的远程追踪控制指令,以及第三方地图API的使用,通过两者的配合和应用来巩固手机防盗的防线。
2.
AndroidXX地图API
2.1.手机地图服务
手机地图服务是指在手机上利用GPS或者网络实现精确定位,通过使用WAP方式或客户端方式,得到相关位置信息的业务。
为用户提供了一种便捷实用的掌上地图,通过手机屏幕,用户可以查询城市信息、查找自己的位置、查找道路信息。
它以矢量地图、卫星地图、混合地图3种服务模式向全球提供地图搜索和逐级缩放功能的地图服务,让全球用户体验到了新的地图服务模式。
目前,主流的地图服务在国外有GoogleMaps,Yahoo地图服务,VirtualEarth服务三大服务,而国内则有搜狐旗下的搜狗、XX、高德等主要的地图服务。
本软件之所以选用XX地图服务是因为其功能与国外地图相比更具本地特色,也更加实用,其位置相对与国内而言也更为精准。
2.2.定位技术
移动终端的定位是通过检测移动终端和基站之间传播信号的特征参数来获得其几何位置,在显示应用中,主要有三种常用的定位方式:
2.2.1.基于GSM蜂窝基站定位
把移动电话的服务区别分为一个个正六边形的子区,每个小区设一个基站。
形成了形状酷似“蜂窝”的结构[1],移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(TimeofArrival,到达时刻)或TDOA(TimeDifferenceofArrivalm,到达时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。
实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。
一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。
2.2.2.基于GPS卫星定位
GPS的空间部分是由24颗卫星组成(其中有21颗工作卫星,3颗备用卫星)。
在空旷地带且无阻挡的前提下,GPS定位技术的定位精度可达15米左右。
但是,在很多情况下,GPS接收机不能够捕获足够多的GPS卫星信号,定位精度将会大大的降低,甚至不能定位(如室内)。
GPS系统主要由三大部分组成:
GPS卫星星座(空间部分)、地面监控系统(控制部分)和GPS信号接收机(用户部分)。
GPS的定位原理就是根据高速运动的卫星瞬间位置作为已知的数据,采用空间距离后方交会的方法,确定待测点的位置[2]。
我们通常所说的GPS往往仅只用户设备部分,它通过接受天空不同位置的三颗以上的卫星信号,手机捕获到跟踪的卫星信号后,配合地面接收天线就可按定位解算方法进行定位计算,计算出用户所在地理位置的经纬度、高度、速度、时间等信息。
简单来说是利用了数学上三条线确定一个空间点的原理。
虽然GPS定位最为精准,但其缺点是耗电、定位慢并且无法室内定位。
2.2.3.基于WIFI热点定位
基于WIFI热点定位的原理跟GSM基站定位的原理差不多,前提是我们必须拿到WIFI路由器的SSID和信号强度。
当然,我们并不需要真正连接上指定的WIFI路由器,只需要探测到有WIFI存在即可。
定位端只要侦听一下附近都有哪些热点,检测一下每个热点的信号强弱,然后把这些信息发送给Skyhook的服务器。
服务器根据这些信息,查询每个热点在数据库里记录的坐标,进行运算,就能知道客户端的具体位置了,再把坐标告诉客户端。
可以想想,只要收到的AP信号越多,定位就会越准。
2.3.XX地图API简介
XX地图移动版API(Android)是一套基于Android1.5及以上设备的应用程序接口,通过该接口,您可以轻松访问XX服务和数据,构建功能丰富、交互性强的地图应用程序[3]。
XX地图移动版API不仅包含构建地图的基本接口,还提供了诸如地图定位、本地搜索、路线规划等数据服务,你可以根据自己的需要进行选择。
XX地图API将复杂的底层逻辑进行封装,以一种便于开发者理解的方式提供。
开发者只需要按照API文档的要求进行注册即可使用,客户端不需要安装任何软件、控件或地图,所有运算都会在XX公司的服务器中运行,由API进行组织显示、分级缩放和漫游。
使用者只需要通过其API,利用Android开发包就可以将XX地图服务应用到自己的软件中。
其中客户端主要完成地图的加载、地图浏览和查询功能,它的设计重点是地图浏览和查询界面,以及将用户的访问和查询请求打包发送给服务器[9]。
应用服务器方面则负责处理用户的访问和查询请求,数据服务器则用于存取各类空间数据和属性信息,采用SQLServer数据库存取表格,并在接到Query查询指令后执行相应的操作[9]。
系统体系结构如运行如下图所示。
图2-1地图服务原理图
3.
远程指令控制功能
3.1.基本原理及设计
本软件的远程指令控制功能本质上是使用了Android系统的短信收发和系统的广播机制再加上自编的指令编码实现对丢失手机的功能控制,我们把它定义为本软件的第二道防线。
基于这道防线,我们可以通过安全手机向丢失的手机进行远程控制响铃、PIN码锁屏、远程定位、获取新SIM卡号码和格式化丢失手机SD卡等功能。
首先,需要为主机设置安全密码和一个安全手机号码,并对这两个数据保存到系统的配置文件。
在这里使用到的是Android数据持久化的一种做法:
SharePreference:
SharePreference用来存储和检索一些关键变量的内容,这些内容常驻于手机xml文件之中,它是使用键值对的方式来存取文件中的数据的[4]。
Android提供了一个SmsManager.class让应用程序拥有完整的权限来进入SMS短信的管理,自从Android1.5版本之后,SmsManager信息管理器可以支持GSM和CDMA的移动手机通信标准。
[5]发送一条SMS信息对Android系统来说有相当规范的步骤:
(1)在AndroidMainifest.xml文件中声明权限:
name="android.permission.WRITE_SMS">
name="android.permission.READ_SMS">
(2)使用SmsManager.getDefault()静态方法,获取SmsManger的实例:
SmsManagermySms=SmsManager.getDefault();
(3)定义一个目标号码和发送文本,使用sendTextMessage()方法发送SMS信息到另一个Android设备:
Stringmsg="Sendingmyfirstmessage";
mySMS.sendTextMessage(destination,null,msg,null,null);
在Android系统中有一个很重要的组件,那就是广播BroadcastReceiver,广播接收器组件用于接收和响应系统广播的消息。
广播接收器也需要通过Activity与用户交互进行桥接[6]。
Android系统在手机收到运营商的短信后,会向手机每个应用程序发送短信广播,通知所有应用程序此时此刻系统有短信接收,只要在程序中注册短信广播接收器,我们就可以在程序中分析短信文本。
实现具体的操作和功能实现。
系统的短息广播标志为:
android.provider.ephony.SMS_RECEIVED。
本软件的远程指令控制需要建立一套用于安全手机和被盗手机相互识别的指令集,在软件中指令集的定义如下:
1.发送定位丢失手机指令:
(wujiandao*密码*dingwei)
2.发送激活报警铃声指令:
(wujiandao*密码*baojing)
3.发送设定屏保密码指令:
(wujiandao*密码*suoding)
4.发送格式化请求指令:
(wujiandao*密码*wipedata)
5.发送确定格式化指令:
(wujiandao*密码*geshihua)
6.获取丢失手机坐标指令:
(Location#纬度#经度*地址*)
根据以上的指令集,在程序中开启一个后台服务,在服务中注册短信广播接收器,这里需要把广播接收器的权限提至最高,保证一旦接收到系统的短信可以最先过滤和分析这些指令;一旦确定是以上指令集的内容,则将指令解析并销毁短信广播,保证不影响其他应用程序的正常工作。
3.2.底层平台导入和开发步骤
3.2.1.申请密钥
XX地图SDK提供的服务是免费的,接口无使用次数限制。
我们首先要需先申请密钥(key),才可使用该套SDK。
任何非营利性程序请直接使用,商业使用必须请参考使用须知。
android:
name="android.providerlephony.SMS_RECEIVED">
其中android:
priority为广播的优先级,将此优先级别设置较高的参数,保证本程序能够拦截短信并对特定短信进行解析。
(2)功能代码:
publicvoidonReceive(Contextcontext,Intentintent){
判断传来Intent是否为短信
if(intent.getAction().equals(SMSACTION)){
Bundlebundle=intent.getExtras();接收由Intent传来的数据
判断Intent是有数据
if(bundle!
=null){
pdus为android内置短信参数identifier,通过bundle.get("")返回一包含pdus的对象
Object[]smsObject=(Object[])bundle.get("pdus");
构造短信对象
SmsMessage[]messages=newSmsMessage[smsObject.length];
for(inti=0;imessages[i]=SmsMessage.createFromPdu((byte[])smsObject[i]);
}
for(SmsMessagecurrentMessage:
messages){
if(currentMessage.getDisplayMessageBody().length()>10){
Stringsubstr=currentMessage.getDisplayMessageBody().substring(0,10);
if(substr.equals("wujiandao*")){
屏蔽指令短信,以防干扰其他应用程序
abortBroadcast();
IntentmyIntent=newIntent(context,DoAfterReceiveMessage.class);
..............
context.startActivity(myIntent);
}
if(currentMessage.getDisplayMessageBody().substring(0,9).equals("Location#")){
abortBroadcast();屏蔽短信
Log.d("Sys","SMS:
Location#");
Intenti=newIntent(context,LocationMapActivity.class);
..............
context.startActivity(i);
}}}}}}
3.2.2.指令业务分发器的设计与实现
指令业务分发器的核心类是DoAfterReceiveMessage,主要是用于处理由SmsReceiver传送过来的远程指令功能业务;本质上它是一个业务逻辑分发器,根据不同的指令,启动不同的业务功能;与此同时,它还肩负一个向安全手机反馈的功能。
(1)获取从SmsReceiver传过来的短息:
*接收传递来的信息*
privatevoidreceiveMessage(){
IntentstartingIntent=getIntent();
if(startingIntent!
=null){
Bundleinfod=startingIntent.getExtras();
if(infod!
=null){
number=infod.getString("sms_Address");
messageText=infod.getString("sms_Text");
}
}
}
(2)分发处理从SmsReceiver传过来的业务请求,启动不同的业务功能:
protectedvoidonResume(){
super.onResume();
if(secret_number_acquire()==null){
sendMessage("您手机未设定密码,不能进行远程操作。
",number);
DoAfterReceiveMessage.this.finish();
}elseif(messageText.equals("wujiandao*"+secret_number_acquire()+"*dingwei")){
.............(启动XX地图定位功能)
DoAfterReceiveMessage.this.finish();
}elseif(messageText.equals("wujiandao*"+secret_number_acquire()+"*baojing")){
.............(启动响铃功能)
}elseif(messageText.equals("wujiandao*"+secret_number_acquire()+"*suoding")){
.............(启动锁屏功能)
}elseif(messageText.equals("wujiandao*"+secret_number_acquire()+"*wipedata")){
.............(询问安全手机是否进行格式化)
}elseif(messageText.equals("wujiandao*"+secret_number_acquire()+"*geshihua")){
.............(启动手机格式化)
}else{
.............(用户输入的密码出错)
}}
3.2.3.定位器的设计与实现
定位器的主类是MyLocation类,主要实现的是利用XX地图API实现手机自我定位的一个功能,并最终获取了手机所在地的经纬度值,因为本软件使用了XX地图SDK,所以定位的功能实现也必须使用XX地图SDK,这样定位起来的坐标点才能与XX地图图层的地点相吻合。
图3-2定位器发送指令界面
(1)地图管理器、定位器、搜索器的初始化:
BMapManagermapManager=newBMapManager(getApplication());
MyGeneralListener());
mLocationManager=mapManager.getLocationManager();
mLocationManager.enableProvider((int)MKLocationManager.MK_GPS_PROVIDER);
初始化MKSearch
mMKSearch=newMKSearch();
mMKSearch.init(mapManager,newMySearchListener());
(2)位置监听器的实现,获取经纬度:
mLocationListener=newLocationListener(){
publicvoidonLocationChanged(Locationlocation){
Log.d("Sys","MyLocationislistening.....");
if(location!
=null){
x=location.getLatitude();
y=location.getLongitude();
Log.d("Sys","纬度x="+x);
Log.d("Sys","经度y="+y);
Intenti2=newIntent();
i2.setClass(MyLocation.this,Null.class);
startActivity(i2);
}
}
};
3.2.4.报警响铃器的设计与实现
响铃的播放使用到的是Android音频管理器AudioManager和媒体播放类MediaPlayer,AudioManager用于管理系统音量,或者直接可以控制系统静音[7]。
报警响铃器主类为RingService,它继承于Service,是驻后台的一个服务,实现的主要功能就是以手机的最大音量播放报警铃声,同时开启手机震动,直到设置的时间结束为止,或者使用安全手机发送close英语单词实现关闭手机响铃。
这个功能主要是想通过控制手机发出声响,让用户根据声源找到手机的藏身之处。
当然,即使手机在静音状态下,我们也是可以以最大音量实现发出警报。
报警响铃器主要在程序启动的时候就开始监听传感器的状态,它主要依靠于Service在后台运行。
Service为服务类,是一个在背景运行的程序,不提供显示窗体作为和用户之间的接口,它运行于应用程序的主线程上,不会影响到其他活动程序Activity和用户接口操作,通常Service会用来处理比较耗时的功能程序[8]。
(1)将手机音量调至最大值:
publicvoidonStart(Intentintent,intstartId){
mAudioM