基于Android平台的“无间盗”防盗软件——地图追踪及远程指令毕业论文.doc

上传人:仙人指路1688 文档编号:2393894 上传时间:2023-02-17 格式:DOC 页数:32 大小:664KB
返回 下载 相关 举报
基于Android平台的“无间盗”防盗软件——地图追踪及远程指令毕业论文.doc_第1页
第1页 / 共32页
基于Android平台的“无间盗”防盗软件——地图追踪及远程指令毕业论文.doc_第2页
第2页 / 共32页
基于Android平台的“无间盗”防盗软件——地图追踪及远程指令毕业论文.doc_第3页
第3页 / 共32页
基于Android平台的“无间盗”防盗软件——地图追踪及远程指令毕业论文.doc_第4页
第4页 / 共32页
基于Android平台的“无间盗”防盗软件——地图追踪及远程指令毕业论文.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《基于Android平台的“无间盗”防盗软件——地图追踪及远程指令毕业论文.doc》由会员分享,可在线阅读,更多相关《基于Android平台的“无间盗”防盗软件——地图追踪及远程指令毕业论文.doc(32页珍藏版)》请在三一办公上搜索。

1、本 科 毕 业 设 计 题目:基于Android平台的“无间盗”防盗软件 地图追踪及远程指令 学生姓名: 学 号:系 别:专业班级 指导教师姓名及职称:起止时间:摘 要:随着Android系统的发展和智能手机逐渐平民化,其普及率呈指数增长。Android手机市场规模的扩大所引起的手机安全和防盗的问题也愈发突出。本论文在基于Andorid平台上,运用Android短信、广播等通信机制,配合第三方地图服务商提供的地图API对智能手机进行远程指令控制和定位丢失的手机,为找到手机增加可能性,并保护失主隐私。关键词: 远程指令追踪;Android防盗;百度地图;Android广播Abstract:Wit

2、h the increasing popularity of Android system development and smart phones. The Android phone expansion of market scale of mobile security and anti-theft problems become more prominent. This thesis is based on Andorid platform, use Android SMS, broadcasting and other communication mechanisms, with t

3、he Maps API provided by a third-party map service provider smart phone remote command control and positioning lost phone, to increase the possibility to find the phone, and the protection of the owner privacy. Keywords: The remote command tracking; Android anti-theft; Baidu map; Android broadcast目 录

4、1. 绪论11.1. 研究意义与背景11.2. 课题的目的及其意义11.3. 本文的主要研究工作12. Android百度地图API22.1. 手机地图服务22.2. 定位技术22.2.1. 基于GSM蜂窝基站定位22.2.2. 基于GPS卫星定位22.2.3. 基于WIFI热点定位32.3. 百度地图API简介33. 远程指令控制功能53.1. 基本原理及设计53.2. 底层平台导入和开发步骤63.2.1. 申请密钥63.2.2. 导入.jar和.so文件63.2.3. 初始化声明63.3. 模块框架图73.4. 模块详细设计83.4.1. 指令接收器的设计与实现83.4.2. 指令业务分发

5、器的设计与实现93.4.3. 定位器的设计与实现113.4.4. 报警响铃器的设计与实现123.4.5. 手持设备权限管理器的设计与实现143.4.6. SIM卡更换通知功能的设计与实现154. 地图追踪功能164.1. 功能简介164.2. 功能详细设计165. 帮助与升级功能195.1. 功能简介195.2. 帮助功能模块195.3. 版本升级功能196. 软件测试与使用206.1. 功能操作206.2. 测试用例216.3. 测试结果与发现217. 总结25参考文献26致 谢261. 绪论1.1. 研究意义与背景随着智能移动终端发展和普及,人们试图让交互的应用伴随移动的用户在对应的空间中

6、迁移。从全球的发展趋势来看,更高水平的基于位置服务(LBS)、基于空间定位等功能是新一代移动网络应该具备的,是网络业务支撑能力的一种体现,我国移动运营商更已将其视为形象工程。LBS依赖于高精度定位技术的发展,随着定位技术的发展和人们网络社交心理、行为的成熟;LBS将更加实用化,所衍生出的服务和产业链将更加丰富和广阔,为用户提供随时随身的服务。1.2. 课题的目的及其意义基于地图位置服务发展迅速,对人机界面与地理信息系统服务整合具有重要的理论和现实意义。本课题在此基础上利用Androidd的短信通信机制、广播机制以及第三方地图软件提供商的API,实现并研究手机防盗在移动技术上的新应用。将手机防盗

7、技术应用于日常生活之中,对降低手机及其资料被盗的风险和减少个人的财产损失有着重大意义和应用价值。 通过此课题,能够培养学生动手能力,增强个人思维模式,锻炼软件开发中遇到问题的调试能力,进而加强专业技术。1.3. 本文的主要研究工作本文主要研究的是基于Android系统短信通知机制的远程追踪控制指令,以及第三方地图API的使用,通过两者的配合和应用来巩固手机防盗的防线。2. Android百度地图API 2.1. 手机地图服务手机地图服务是指在手机上利用GPS或者网络实现精确定位,通过使用WAP方式或客户端方式,得到相关位置信息的业务。为用户提供了一种便捷实用的掌上地图,通过手机屏幕,用户可以查

8、询城市信息、查找自己的位置、查找道路信息。它以矢量地图、卫星地图、混合地图3种服务模式向全球提供地图搜索和逐级缩放功能的地图服务,让全球用户体验到了新的地图服务模式。目前,主流的地图服务在国外有Google Maps,Yahoo地图服务,Virtual Earth服务三大服务,而国内则有搜狐旗下的搜狗、百度、高德等主要的地图服务。本软件之所以选用百度地图服务是因为其功能与国外地图相比更具本地特色,也更加实用,其位置相对与国内而言也更为精准。2.2. 定位技术移动终端的定位是通过检测移动终端和基站之间传播信号的特征参数来获得其几何位置,在显示应用中,主要有三种常用的定位方式:2.2.1. 基于G

9、SM蜂窝基站定位把移动电话的服务区别分为一个个正六边形的子区,每个小区设一个基站。形成了形状酷似“蜂窝”的结构1,移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(Time of Arrival,到达时刻)或TDOA(Time Difference of Arrivalm,到达时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。2.2.2. 基于GPS卫星定位 GPS的空间部分是由24

10、颗卫星组成(其中有21颗工作卫星,3颗备用卫星)。在空旷地带且无阻挡的前提下,GPS定位技术的定位精度可达15米左右。但是,在很多情况下,GPS接收机不能够捕获足够多的GPS卫星信号,定位精度将会大大的降低,甚至不能定位(如室内)。GPS系统主要由三大部分组成:GPS卫星星座(空间部分)、地面监控系统(控制部分)和GPS信号接收机(用户部分)。GPS的定位原理就是根据高速运动的卫星瞬间位置作为已知的数据,采用空间距离后方交会的方法,确定待测点的位置2。 我们通常所说的GPS往往仅只用户设备部分,它通过接受天空不同位置的三颗以上的卫星信号,手机捕获到跟踪的卫星信号后,配合地面接收天线就可按定位解

11、算方法进行定位计算,计算出用户所在地理位置的经纬度、高度、速度、时间等信息。简单来说是利用了数学上三条线确定一个空间点的原理。虽然GPS定位最为精准,但其缺点是耗电、定位慢并且无法室内定位。2.2.3. 基于WIFI热点定位基于WIFI热点定位的原理跟GSM基站定位的原理差不多,前提是我们必须拿到WIFI路由器的SSID和信号强度。当然,我们并不需要真正连接上指定的WIFI路由器,只需要探测到有WIFI存在即可。 定位端只要侦听一下附近都有哪些热点,检测一下每个热点的信号强弱,然后把这些信息发送给Skyhook的服务器。服务器根据这些信息,查询每个热点在数据库里记录的坐标,进行运算,就能知道客

12、户端的具体位置了,再把坐标告诉客户端。可以想想,只要收到的AP信号越多,定位就会越准。2.3. 百度地图API简介百度地图移动版API(Android)是一套基于Android 1.5及以上设备的应用程序接口,通过该接口,您可以轻松访问百度服务和数据,构建功能丰富、交互性强的地图应用程序3。百度地图移动版API不仅包含构建地图的基本接口,还提供了诸如地图定位、本地搜索、路线规划等数据服务,你可以根据自己的需要进行选择。百度地图API将复杂的底层逻辑进行封装,以一种便于开发者理解的方式提供。开发者只需要按照API文档的要求进行注册即可使用,客户端不需要安装任何软件、控件或地图,所有运算都会在百度

13、公司的服务器中运行,由API 进行组织显示、分级缩放和漫游。使用者只需要通过其 API,利用 Android开发包就可以将百度地图服务应用到自己的软件中。其中客户端主要完成地图的加载、地图浏览和查询功能,它的设计重点是地图浏览和查询界面,以及将用户的访问和查询请求打包发送给服务器9。应用服务器方面则负责处理用户的访问和查询请求,数据服务器则用于存取各类空间数据和属性信息,采用 SQL Server 数据库存取表格,并在接到Query查询指令后执行相应的操作9。系统体系结构如运行如下图所示。 图2-1 地图服务原理图3. 远程指令控制功能3.1. 基本原理及设计本软件的远程指令控制功能本质上是使

14、用了Android系统的短信收发和系统的广播机制再加上自编的指令编码实现对丢失手机的功能控制,我们把它定义为本软件的第二道防线。基于这道防线,我们可以通过安全手机向丢失的手机进行远程控制响铃、PIN码锁屏、远程定位、获取新SIM卡号码和格式化丢失手机SD卡等功能。首先,需要为主机设置安全密码和一个安全手机号码,并对这两个数据保存到系统的配置文件。在这里使用到的是Android数据持久化的一种做法:SharePreference:SharePreference用来存储和检索一些关键变量的内容,这些内容常驻于手机xml文件之中,它是使用键值对的方式来存取文件中的数据的4。Android提供了一个S

15、msManager.class让应用程序拥有完整的权限来进入SMS短信的管理,自从Android 1.5版本之后,SmsManager信息管理器可以支持GSM和CDMA的移动手机通信标准。5发送一条SMS信息对Android系统来说有相当规范的步骤:(1) 在AndroidMainifest.xml文件中声明权限:(2) 使用SmsManager.getDefault()静态方法,获取SmsManger的实例:SmsManager mySms = SmsManager.getDefault();(3) 定义一个目标号码和发送文本,使用sendTextMessage()方法发送SMS信息到另一个

16、Android设备:String destination = 123456789;String msg = Sending my first message;mySMS.sendTextMessage(destination,null,msg,null,null); 在Android系统中有一个很重要的组件,那就是广播BroadcastReceiver,广播接收器组件用于接收和响应系统广播的消息。广播接收器也需要通过Activity与用户交互进行桥接6。 Android系统在手机收到运营商的短信后,会向手机每个应用程序发送短信广播,通知所有应用程序此时此刻系统有短信接收,只要在程序中注册短信广

17、播接收器,我们就可以在程序中分析短信文本。实现具体的操作和功能实现。系统的短息广播标志为:android.provider.Telephony.SMS_RECEIVED。本软件的远程指令控制需要建立一套用于安全手机和被盗手机相互识别的指令集,在软件中指令集的定义如下:1. 发送定位丢失手机指令:(wujiandao*密码*dingwei)2. 发送激活报警铃声指令:(wujiandao*密码*baojing)3. 发送设定屏保密码指令:(wujiandao*密码*suoding)4. 发送格式化请求指令:(wujiandao*密码*wipedata)5. 发送确定格式化指令:(wujianda

18、o*密码*geshihua)6. 获取丢失手机坐标指令:(Location#纬度#经度*地址*)根据以上的指令集,在程序中开启一个后台服务,在服务中注册短信广播接收器,这里需要把广播接收器的权限提至最高,保证一旦接收到系统的短信可以最先过滤和分析这些指令;一旦确定是以上指令集的内容,则将指令解析并销毁短信广播,保证不影响其他应用程序的正常工作。3.2. 底层平台导入和开发步骤3.2.1. 申请密钥百度地图SDK提供的服务是免费的,接口无使用次数限制。我们首先要需先申请密钥(key),才可使用该套SDK。任何非营利性程序请直接使用,商业使用必须请参考使用须知。 通过这个网站同意与百度的协议,我们

19、就可以获得密钥。3.2.2. 导入.jar和.so文件在项目Libraries里添加baidumapapi.jar,将libBMapApiEngine_v1_3_5.so复制到工程目录下的libsarmeabi。3.2.3. 初始化声明地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init, start, stop, destroy。建议在Application里生成BMapManager对象并初始化,在程序退出时调用destory,在需要使用sdk功能的Activity的onCreate里调用start, onDestroy调用stop,或者on

20、Resume/onPause分别调用start和stop 1。3.3. 模块框架图图 3-1 远程追踪指令模块流程图3.4. 模块详细设计3.4.1. 指令接收器的设计与实现指令接收器的核心类是SmsReceiver,该类是自定义的广播接收器,继承Android中的BroastReceiver,是程序远程控制指令的核心类,主要用于接收和解析收到的指令短信,对非指令短信进行过滤;此类的使用首先是在AndroidManifest.xml文件进行注册,这样就可以保证当Android系统接收到短息,向所有程序发出短信广播的时候,本程序能接收到短信广播和广播夹带的文本。(1) 广播注册代码: 其中and

21、roid:priority 为广播的优先级,将此优先级别设置较高的参数,保证本程序能够拦截短信并对特定短信进行解析。(2) 功能代码:public void onReceive(Context context, Intent intent) /判断传来Intent是否为短信 if (intent.getAction().equals(SMSACTION) Bundle bundle = intent.getExtras(); /接收由Intent传来的数据 /判断Intent是有数据 if (bundle != null) /pdus为 android内置短信参数 identifier,通过b

22、undle.get()返回一包含pdus的对象 Object smsObject = (Object) bundle.get(pdus); /构造短信对象 SmsMessage messages = new SmsMessagesmsObject.length; for (int i = 0; i10) String substr = currentMessage.getDisplayMessageBody().substring(0,10); if(substr.equals(wujiandao*) /屏蔽指令短信,以防干扰其他应用程序 abortBroadcast(); Intent my

23、Intent = new Intent(context,DoAfterReceiveMessage.class); . context.startActivity(myIntent); if(currentMessage.getDisplayMessageBody().substring(0,9).equals(Location#)/ abortBroadcast(); /屏蔽短信 Log.d(Sys,SMS:Location#); Intent i = new Intent(context,LocationMapActivity.class); . context.startActivity

24、(i); 3.4.2. 指令业务分发器的设计与实现指令业务分发器的核心类是DoAfterReceiveMessage,主要是用于处理由SmsReceiver传送过来的远程指令功能业务;本质上它是一个业务逻辑分发器,根据不同的指令,启动不同的业务功能;与此同时,它还肩负一个向安全手机反馈的功能。(1) 获取从SmsReceiver传过来的短息:/* 接收传递来的信息 */private void receiveMessage() Intent startingIntent = getIntent();if (startingIntent != null) Bundle infod = start

25、ingIntent.getExtras();if(infod!=null) number = infod.getString(sms_Address); messageText = infod.getString(sms_Text);(2) 分发处理从SmsReceiver传过来的业务请求,启动不同的业务功能: protected void onResume() super.onResume();if(secret_number_acquire()= null)sendMessage(您手机未设定密码,不能进行远程操作。,number);DoAfterReceiveMessage.this.f

26、inish();else if(messageText.equals(wujiandao*+secret_number_acquire()+*dingwei) .(启动百度地图定位功能) DoAfterReceiveMessage.this.finish(); else if(messageText.equals(wujiandao*+secret_number_acquire()+*baojing) .(启动响铃功能) else if(messageText.equals(wujiandao*+secret_number_acquire()+*suoding) .(启动锁屏功能) else

27、if(messageText.equals(wujiandao*+secret_number_acquire()+*wipedata) .(询问安全手机是否进行格式化)else if(messageText.equals(wujiandao*+secret_number_acquire()+*geshihua).(启动手机格式化)else .(用户输入的密码出错)3.4.3. 定位器的设计与实现定位器的主类是MyLocation类,主要实现的是利用百度地图API实现手机自我定位的一个功能,并最终获取了手机所在地的经纬度值,因为本软件使用了百度地图SDK,所以定位的功能实现也必须使用百度地图SD

28、K,这样定位起来的坐标点才能与百度地图图层的地点相吻合。图 3-2 定位器发送指令界面(1) 地图管理器、定位器、搜索器的初始化: BMapManager mapManager = new BMapManager(getApplication(); mapManager.init(285B415EBAB2A92293E85502150ADA7F03C777C4,new MyGeneralListener(); mLocationManager = mapManager.getLocationManager(); mLocationManager.enableProvider(int) MKLo

29、cationManager.MK_GPS_PROVIDER); / 初始化MKSearch mMKSearch = new MKSearch(); mMKSearch.init(mapManager, new MySearchListener(); (2) 位置监听器的实现,获取经纬度: mLocationListener = new LocationListener() public void onLocationChanged(Location location) Log.d(Sys, MyLocation is listening.);if(location!=null)x=locati

30、on.getLatitude();y=location.getLongitude();Log.d(Sys, 纬度x=+x);Log.d(Sys, 经度y=+y);Intent i2 = new Intent();i2.setClass(MyLocation.this, Null.class);startActivity(i2);3.4.4. 报警响铃器的设计与实现响铃的播放使用到的是Android音频管理器AudioManager和媒体播放类MediaPlayer,AudioManager用于管理系统音量,或者直接可以控制系统静音7。报警响铃器主类为RingService,它继承于Servic

31、e,是驻后台的一个服务,实现的主要功能就是以手机的最大音量播放报警铃声,同时开启手机震动,直到设置的时间结束为止,或者使用安全手机发送close英语单词实现关闭手机响铃。这个功能主要是想通过控制手机发出声响,让用户根据声源找到手机的藏身之处。当然,即使手机在静音状态下,我们也是可以以最大音量实现发出警报。报警响铃器主要在程序启动的时候就开始监听传感器的状态,它主要依靠于Service在后台运行。Service为服务类,是一个在背景运行的程序,不提供显示窗体作为和用户之间的接口,它运行于应用程序的主线程上,不会影响到其他活动程序Activity和用户接口操作,通常Service会用来处理比较耗时

32、的功能程序8。(1) 将手机音量调至最大值: public void onStart(Intent intent, int startId) mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC ); new Thread()Overridepublic void run()tryfor(int i=1;i5;i+)mAudioManager.setStreamVolume(

33、AudioManager.STREAM_MUSIC, max, 0) ;sleep(1000*5) ;catch(Exception e)e.printStackTrace();finallystopSelf();.start(); (2) 启动报警功能:public void PlayMusic() mp = MediaPlayer.create(this,R.raw.test); mp.setLooping(true); mp.start(); vv2 = (Vibrator) getSystemService(VIBRATOR_SERVICE); vv2.vibrate(new long

34、5000,5000,0); 3.4.5. 手持设备权限管理器的设计与实现手持设备权限管理器主类为DeviceActivity,该类定义了设备管理权限(恢复出厂设置、锁定屏幕、重置密码、限制密码选择、监控登录尝试),并向用户征得获得使用权限的权利,只有用户同意激活手机设备的锁屏和清除数据权限,本程序才能使用远程锁屏功能和远程格式化手机。(1) 类中主要用到了Android系统设备管理器:/* 锁屏API */public void LockScreenNow() boolean active = mDPM.isAdminActive(mDeviceComponentName);if (activ

35、e) if (secret_number != null) / 设置的PIN密码if (secret_number.equals(geshihua) / 会是手机恢复出厂设置,但SD卡不受影响mDPM.wipeData(0);DeviceActivity.this.finish(); else mDPM.resetPassword(secret_number,DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);mDPM.lockNow();DeviceActivity.this.finish();/* 格式化手机 */public void wi

36、peMobileData() boolean active = mDPM.isAdminActive(mDeviceComponentName);if (active) mDPM.wipeData(0);DeviceActivity.this.finish(); 图3-3 锁屏器发送指令界面 图3-4 主机锁屏界面3.4.6. SIM卡更换通知功能的设计与实现 远程追踪的最后一个功能便是,SIM卡的更换通知,用户事先通过保存本机的SIM卡信息,当手机被盗走,并被人更换SIM卡的时候,本程序通过接收Android系统启动完毕发出的广播后,开启一个SIMService后台服务,对当前手机的SIM卡

37、进行识别和对比,如果发现SIM卡与之前保存的信息不对称则会将新的SIM卡号码通过短信的方式发送到安全手机,这样我们便可以获取嫌疑人的联系方式。 图3-5 更换SIM卡通知控制界面4. 地图追踪功能4.1. 功能简介本软件的地图追踪功能主要是建立在远程控制指令的基础之上,地图追踪功能必须是安全手机和本机的配合。根据前面章节的介绍,我们可以通过安全手机发送远程定位指令,使得丢失手机开启MyLocation类进行定位获取位置经纬度,获取后将经纬度和地址信息发送到安全手机上,此时如果安全手机装有本程序,则可以从短信中获取经纬度的数字数据,并调用百度地图SDK在地图上标注获取到的坐标,这样我们就有个直观

38、的位置感观。 图 4-1 获取定位坐标后安全手机显示的地图界面4.2. 功能详细设计前面3.5.3小结主要提及到的是丢失手机在地图追踪这个功能的一个业务逻辑,而安全手机这边的业务逻辑也比较简单,主要功能集中在LocationMapActivity类,下面就介绍下LocationMapActivity的主要逻辑。(1) 注册地图管理者、定位器,并对地图控件进行参数设定: mapManager = new BMapManager(getApplication(); mapManager.init(key, null); super.initMapActivity(mapManager); / 获取

39、地图控件 mapView = (MapView) findViewById(R.id.mapsView); / 获取定位管理者 mLocationManager = mapManager.getLocationManager(); / 使用GPS定位 mLocationManager.enableProvider(int) MKLocationManager.MK_GPS_PROVIDER); / 设置启用内置的缩放控件 mapView.setBuiltInZoomControls(true); / 设置在缩放动画过程中也显示overlay,默认为不绘制 mapView.setDrawOver

40、layWhenZooming(true); / 得到mMapView的控制权,可以用它控制和驱动平移和缩放 mapController = mapView.getController(); / 设置地图zoom级别 mapController.setZoom(12); (2) 获取丢失手机传过来的坐标,加以解析并在地图上标注起来:public void theifLocation() /*获取小偷位置*/ Intent intent=this.getIntent(); Bundle bundle = intent.getExtras(); int flag = bundle.getInt(flag);/得到需要标在地图上的资源Drawable marker =

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号