基于安卓系统的手机位置跟踪应用程序_第1页
基于安卓系统的手机位置跟踪应用程序_第2页
基于安卓系统的手机位置跟踪应用程序_第3页
基于安卓系统的手机位置跟踪应用程序_第4页
基于安卓系统的手机位置跟踪应用程序_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于安卓系统的手机位置跟踪应用程序需求1通过WIFI、基站、GPS定位,自己可以用我在何处按钮显示自己所处位置家人可以在计算机上显示手机所在的位置2设置电子围栏,超过围栏半径发送短信到监控手机告警3可以设置监控号码,手机被盗时,手机换卡时将发送短信到此监控号码4监控号码发送内容为在哪到安装本软件的手机,安装本软件的手机会回复其所处的位置短信作者黄海燕指导教师张红燕摘要关键词前言随着移动通讯产业的发展,手机的生产和使用量有了大幅的提高。尤其是进入到了3G时代后,手机更是变成了人们手中不可或缺的部分,其不再仅仅是用来打电话、发短信,还有着各种各样的应用上网、学习、娱乐、了解最新的资讯等,随着3G时代的不断深入,手机也成为互联网的终端,可以向外界提供服务。因此,如何能进一步降低开发成本、提升手机的应用价值,已成为手机发展的热点,而这些无一不对手机的操作系统提出更高的要求。而在这种情况下,GOOGLE于2007年11月推出了一个专为移动设备设计的操作系统平台ANDROID,它的出现打破了这些格局。ANDROID是一套真正意义上的开放性的移动设备综合平台,包括操作系统、中间件和一些关键的平台应用,拥有移动电话工作所需的全部软件,里面存储了我们大量的个人信息,一旦被盗,后果将不堪设想,正因此,手机的信息安全才会成为我们的研究对象。通过本次设计可以锻炼自己对所学理论知识和技能的综合运用,提高自己对文献资料的搜索和信息处理能力,培养自己对社会普通科学知识的了解,进一步提高自身的知识素养和设计论文的技巧。在ANDROID移动应用开发中,手机防盗追踪功能是一项重要的安全技术。基于GOOGLEANDROID移动平台设置开发环境,在智能手机上设计、实现基于ANDROID平台的手机防盗追踪功能软件。本程序的主要功能是利用ANDROID广播机制,当手机用户开启防盗追踪后,将后台监听手机开机启动,通过监听手机用户SIM卡的IMSI码改变来判断手机安全状态,监听并截获安全短信内容,实现非法用户的手机号码向合法用户预先设置的安全号码发送特殊信息的功能。该课题涉及到GOOGLEANDROID平台及其开发套件。可以从架构ANDROID移动平台编程环境开始,研究ANDROID移动平台手持设备功能的FORJAVA网络编程技术,设计基于ANDROID平台手机防盗追踪功能1软件介绍此软件是基于安卓系统开发的一个安全软件模块,主要有定位,追踪,防盗等功能。用户可在手机查看自己的位置,家人也可以在电脑查看手机所在位置,同时还有更换SIM手机卡告警,收到短信回复定位功能。11安卓系统简介ANDROID是一种以LINUX为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。ANDROID操作系统最初由ANDYRUBIN开发,最初主要支持手机。2005年由GOOGLE收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。2011年第一季度,ANDROID在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,ANDROID占据全球智能手机操作系统市场59的份额,中国市场占有率为684。图1ANDROID系统架构图ANDROID的系统架构和其它操作系统一样,采用了分层的架构。ANDROID分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和LINUX核心层。12安卓四大基本组件简介ACTIVITY应用程序中,一个ACTIVITY通常就是一个单独的屏幕,也可以说一个ACTIVITY对应了一个界面,一个应用程序就是由多个ACTIVITY组成,它上面可以显示一些控件也可以监听并处理用户的事件做出响应,所以ACTIVITY就是与用户交互的媒介工具。ACTIVITY之间通过INTENT进行通信。在INTENT的描述结构中,有两个最重要的部分动作和动作对应的数据。BROADCASTRECEIVE广播接收器ANDROID中广播的是操作系统中产生的各种各样的事件。例如,收到一条短信就会产生一个收到短信息的事件。而ANDROID操作系统一旦内部产生了这些事件,就会向所有的广播接收器对象来广播这些事件。这个广播跟我们传统意义中的电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应用程序所接收。广播机制最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的。SERVICE服务SERVICE类似于WINDOWS中的服务,没有界面,只是在后台运行;而服务不能自己运行,而是需要调用CONTEXTSTARTSERVICEINTENTINTENT或CONTEXTBINDSERVICEINTENTINTENT开启服务;服务分为两种1访问者与服务无关,则关闭访问者之后,服务能够继续运行,使用STARTSERVICE;2访问者与服务有关(比如访问者需要调用服务提供的方法),则关闭访问者后,服务也要关闭,使用BINDSERVICE;服务分为1本地服务访问者和服务在一个应用中;2远程服务访问者和服务在不同应用者;注如果我们想让服务开机自动运行,则可以创建一个广播接收者,并在ONRECEIVE中调用开启服务代码;CONTENTPROVIDER内容提供者ANDROID平台提供了CONTENTPROVIDER使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLITE数据库、或以任何其他合理的方式,其他应用可以通过CONTENTRESOLVER类见CONTENTPROVIDERACCESSAPP例子从该内容提供者中获取或存入数据相当于在应用外包了一层壳,只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中它的好处统一数据访问方式。12软件功能1定位功能采用了第三方高德地图实现定位功能,同时高德地图集成了电子围栏,地图显示等功能,在安装了本软件的安卓手持客户端,和任何一台有浏览器软件的电脑端,都可以查看到手机所在的位置。2手机防盗功能每次当手机更换SIM卡,手机将会发送告警到事先设置好的监控手机号码。3收到短信回复位置功能当手机收到事先设置好的监控手机发来的短信,并且内容为“在哪”,则手机会回复地理位置给监控手机。13软件设计思路图1软件设计总流程图1手机设置好本软件需要用到的一些安全信息,如手机监控号码,围栏半径,还有设置好电子围栏的中心点(默认为最初安装软件得到的经纬度)。2在软件首页可以通过不同的按钮选择不同的功能。3换卡功能在每次开机和开启本软件自动匹配数据,如果与存储的数据不一致,则会发出报警。4定位功能使用第三方软件高德地图实现,高德地图还集成了电子围栏功能,因此只需要使用高德地图的API就可以轻松的做到定位以及电子围栏功能。在完成定位的同时,发送定位信息到服务器端,在电脑上通过链接访问网页就可以在电脑上查看到手机的位置,方便又可靠。5通过监听手机的短信广播和短信数据库的变化来判断是否收到来自监控手机号码的短信,是否应该回复手机的定位信息。14设计本软件的意义手机在飞速发展,功能也不再局限于接打电话,强大的信息处理能力使手机成为我们身边不可或缺的重要助手。现如今,手机的数据传输速度越来越快,智能化程度也是越来越高。最近,MCAFEE对美国、日本和英国等3G业务比较发达国家的2000名用户进行了调查,研究发现,平均有861的用户对于手机所引发的安全问题有所担心。担心的内容包括私人信息泄露,蓝牙间谍或被远程监控、手机病毒影响到朋友和同事关系等。手机作为接入互联网的智能信息终端,安全隐患体现在多个方面。当今手机在人们日常生活中的重要性已不言而喻,但手机内部信息的泄漏、被窃取、遗失或被盗,也给信息安全带来了隐患。随着手机功能的丰富及手机与日常生活的紧密关系,使得手机信息安全,再一次成为关注的焦点,本软件致力于手机的防盗和追踪功能,随时随地让你知道你的手机在哪里。2安卓端21搭建安开发卓环境要开发安卓软件,必须先在电脑上搭建好安卓的开发环境,搭建开发环境步骤如下第一步安装JDK。要下载ORACLE公司的JDK可以百度“JDK”进入ORACLE公司的JDK下载页面(当前下载页面地址为HTTP/WWWORACLECOM/TECHNETWORK/JAVA/JAVASE/DOWNLOADS/INDEXHTML),选择自己电脑系统的对应版本,安装即可。第二步配置WINDOWS上JDK的变量环境。为了配置JDK的系统变量环境,我们需要设置三个系统变量,分别是JAVA_HOME,PATH和CLASSPATH。下面是这三个变量的设置防范。JAVA_HOME先设置这个系统变量名称,变量值为JDK在你电脑上的安装路径CPROGRAMFILESJAVAJDK180_20。创建好后则可以利用JAVA_HOME作为JDK安装目录的统一引用路径。PATHPATH属性已存在,可直接编辑,在原来变量后追加JAVA_HOMEBINJAVA_HOMEJREBIN。CLASSPATH设置系统变量名为CLASSPATH变量值为JAVA_HOMELIBDTJARJAVA_HOMELIBTOOLSJAR。注意变量值字符串前面有一个“表示当前目录,设置CLASSPATH的目的,在于告诉JAVA执行环境,在哪些目录下可以找到您所要执行的JAVA程序所需要的类或者包。第三步下载安装ECLIPSE。ECLIPSE为JAVA应用程序及ANDROID开发的IDE(集成开发环境)。ECLIPSE不需要安装,下载后把解压包解压后,剪切ECLIPSE文件夹到你想安装的地方,打开时设置你的工作目录即可。第四步下载安装ANDROIDSDK。ANDROIDSDK提供了开发ANDROID应用程序所需的API库和构建、测试和调试ANDROID应用程序所需的开发工具。打开HTTP/DEVELOPERANDROIDCOM/SDK/INDEXHTML,我们发现GOOGLE提供了集成了ECLIPSE的ANDROIDDEVELOPERTOOLS,因为我们这次是已经下载了ECLIPSE,所以我们选择单独下载ANDROIDSDK。第五步为ECLIPSE安装ADT插件。下面是在线安装ADT的方法启动ECLIPSE,点击HELP菜单INSTALLNEWSOFTWARE,点击弹出对话框中的ADD按钮。添加SDK。这样就搭建好了安卓的开发环境。22安卓项目结构图2安卓包结构图1SRC源文件存放目录存放代码2LIBS第3方功能JAR包存放库文件和第三方JAR包3RES项目内部资源存放图片,布局文件,菜单,文本资源等4GEN工具自动维护目录RJAVARESOURCEJAVA资源索引类5ANDROIDMANIFESTXML项目的核心配置文件所有ACTIVITY和SERVICE,广播接收器,以及权限都需要在里面配置22APP页面开发每一个ACTIVITY都对应了一个界面,首先要新建一个ACTIVITY图3新建ACTIVITY然后在核心配置文件里面配置相关信息,这样就完成了一个界面的创建。图4配置ACTIVITY最后修改布局文件,就有相对应的一些文字,按钮,图片等控件。图5修改好的布局显示这个布局文件采用线性布局的方式,使所有控件就行垂直排列,最上面是一个TEXTVIEW控件,用来显示文字,下面则是几个按钮BUTTON,通过监听几个不同的按钮可以跳转到不同的界面,对应不同的功能。为了显得更加美观,可以给文字设置大小,风格,对齐方式,背景颜色等熟悉,按钮也可以设置不同的背景图片,颜色,还有里面的文字以及大小等等。24功能实现1定位和电子围栏功能由于定位功能有更好的第三方软件可以提供使用,高德地图集成了GPS,基站,WIFI等目前最主要的定位方式,所以本软件采用了高德地图来实现定位的功能。下面是定位功能的详细实现流程图6定位功能流程图1高德地图介绍高德地图是国内一流的免费地图导航产品,也是基于位置的生活服务功能最全面、信息最丰富的手机地图,由国内最大的电子地图、导航和LBS服务解决方案提供商高德软件纳斯达克AMAP提供。高德地图采用领先的技术为用户打造了最好用的“活地图“,不管在哪、去哪、找哪、怎么去、想干什么一图在手,统统搞定,省电省流量更省钱,堪称最完美的生活出行软件。2高德地图使用方法1访问HTTP/LBSAMAPCOM/进入高德地图官网2注册申请成为开发者,并申请应用的KEY。3从网站下载并解压得到定位包“AMAP_LOCATION_V1XXJAR“。4拷贝JAR包到项目的LIBS目录下图7JAR包存放示例图5在核心配置文件里进行配置并指定申请的用户KEY图8配置高德地图的KEY6在核心配置文件里添加必须的权限图8配置高德地图所需权限6CLEAN工程这样就可以使用高德地图的服务了。2代码实现定位功能第一步,初始化定位客户端,设置监听注请在主线程中声明AMAPLOCATIONCLIENT类对象,需要传CONTEXT类型的参数。推荐用GETAPPLICATIONCONEXT方法获取全进程有效的CONTEXT。12345678/声明AMAPLOCATIONCLIENT类对象PUBLICAMAPLOCATIONCLIENTMLOCATIONCLIENTNULL/声明定位回调监听器PUBLICAMAPLOCATIONLISTENERMLOCATIONLISTENERNEWAMAPLOCATIONLISTENER/初始化定位MLOCATIONCLIENTNEWAMAPLOCATIONCLIENTGETAPPLICATIONCONTEXT/设置定位回调监听MLOCATIONCLIENTSETLOCATIONLISTENERMLOCATIONLISTENER第二步,配置定位参数,启动定位设置定位参数包括定位模式(高精度定位模式,低功耗定位模式和仅设备定位模式),是否返回地址信息等。1234567891/声明MLOCATIONOPTION对象PUBLICAMAPLOCATIONCLIENTOPTIONMLOCATIONOPTIONNULL/初始化定位参数MLOCATIONOPTIONNEWAMAPLOCATIONCLIENTOPTION/设置定位模式为高精度模式,BATTERY_SAVING为低功耗模式,DEVICE_SENSORS是仅设备模式MLOCATIONOPTIONSETLOCATIONMODEAMAPLOCATIONMODEHIGHT_ACCURACY/设置是否返回地址信息(默认返回地址信息)MLOCATIONOPTIONSETNEEDADDRESSTRUE/设置是否只定位一次,默认为FALSE01112131415MLOCATIONOPTIONSETONCELOCATIONFALSE/设置是否强制刷新WIFI,默认为强制刷新MLOCATIONOPTIONSETWIFIACTIVESCANTRUE/设置是否允许模拟位置,默认为FALSE,不允许模拟位置MLOCATIONOPTIONSETMOCKENABLEFALSE/设置定位间隔,单位毫秒,默认为2000MSMLOCATIONOPTIONSETINTERVAL2000/给定位客户端对象设置定位参数MLOCATIONCLIENTSETLOCATIONOPTIONMLOCATIONOPTION/启动定位MLOCATIONCLIENTSTARTLOCATION第三步,实现AMAPLOCATIONLISTENER接口,获取定位结果AMAPLOCATIONLISTENER接口只有ONLOCATIONCHANGED方法可以实现,用于接收异步返回的定位结果,参数是AMAPLOCATION类型。123456789101112131415161PUBLICVOIDONLOCATIONCHANGEDAMAPLOCATIONAMAPLOCATIONIFAMAPLOCATIONNULLIFAMAPLOCATIONGETERRORCODE0/定位成功回调信息,设置相关消息AMAPLOCATIONGETLOCATIONTYPE/获取当前定位结果来源,如网络定位结果,详见定位类型表AMAPLOCATIONGETLATITUDE/获取纬度AMAPLOCATIONGETLONGITUDE/获取经度AMAPLOCATIONGETACCURACY/获取精度信息SIMPLEDATEFORMATDFNEWSIMPLEDATEFORMAT“YYYYMMDDHHMMSS“DATEDATENEWDATEAMAPLOCATIONGETTIMEDFFORMATDATE/定位时间AMAPLOCATIONGETADDRESS/地址,如果OPTION中设置ISNEEDADDRESS为FALSE,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。AMAPLOCATIONGETCOUNTRY/国家信息AMAPLOCATIONGETPROVINCE/省信息AMAPLOCATIONGETCITY/城市信息AMAPLOCATIONGETDISTRICT/城区信息AMAPLOCATIONGETSTREET/街道信息AMAPLOCATIONGETSTREETNUM/街道门牌号信息AMAPLOCATIONGETCITYCODE/城市编码AMAPLOCATIONGETADCODE/地区编码718192021AMAPLOCATIONGETAOINAME/获取当前定位点的AOI信息ELSE/显示错误信息ERRCODE是错误码,ERRINFO是错误信息,详见错误码表。LOGE“AMAPERROR“,“LOCATIONERROR,ERRCODE“AMAPLOCATIONGETERRORCODE“,ERRINFO“AMAPLOCATIONGETERRORINFO第四步,关于停止定位停止定位1MLOCATIONCLIENTSTOPLOCATION/停止定位销毁定位客户端销毁定位客户端之后,若要重新开启定位请重新NEW一个AMAPLOCATIONCLIENT对象。1MLOCATIONCLIENTONDESTROY/销毁定位客户端。3地理围栏功能地理围栏功能,是以一个圆形的地理边界作为虚拟围栏,当手机进入、离开该区域时,手机可以接收自动通知。功能实现步骤如下1地理围栏也是属于定位服务的,所以与定位相关的所有前置工作都要做2声明一个类为广播接收器,专门用于接收地理围栏通知PUBLICCLASSCLIENTARRIVERECEIVEREXTENDSBROADCASTRECEIVEROVERRIDEPUBLICVOIDONRECEIVECONTEXTCONTEXT,INTENTINTENT/接受广播IFINTENTGETACTIONEQUALS“COMTOCEANSOFTCLINETARRIVE“BUNDLEBUNDLEINTENTGETEXTRASTOASTMAKETEXTCONTEXT,“收到通知了“,TOASTLENGTH_SHORTSHOW/根据广播的STATUS来确定是在区域内还是在区域外INTSTATUSBUNDLEGETINT“STATUS“IFSTATUS1TOASTMAKETEXTCONTEXT,“在区域内“,TOASTLENGTH_SHORTSHOWINTENTINEWINTENTCONTEXT,STORENOTIFICATIONACTIVITYCLASSCONTEXTSTARTACTIVITYIELSETOASTMAKETEXTCONTEXT,“在区域外“,TOASTLENGTH_SHORTSHOW3在活动中,注册广播接收器PRIVATEVOIDREGISTERECEIVER/采用代码的方式创建了一个意图过滤器INTENTFILTERFLITERNEWINTENTFILTERCONNECTIVITYMANAGERCONNECTIVITY_ACTION/指定了这个意图过滤器的过滤动作FLITERADDACTION“COMTOCEANSOFTCLINETARRIVE“/利用刚刚的意图注册广播接收器REGISTERRECEIVERNEWCLIENTARRIVERECEIVER,FLITER4增加地理围栏PRIVATEVOIDINITGEOIFMPENDINGINTENTNULLMLOCATIONMANAGERPROXYREMOVEGEOFENCEALERTMPENDINGINTENTINTENTINTENTNEWINTENT“COMTOCEANSOFTCLINETARRIVE“/广播接收器的ACTION一致MPENDINGINTENTPENDINGINTENTGETBROADCASTGETAPPLICATIONCONTEXT,0,INTENT,0/传入围栏的经纬度,围栏的半径,MLOCATIONMANAGERPROXYLOCATIONMANAGERPROXYGETINSTANCETHISMLOCATIONMANAGERPROXYADDGEOFENCEALERTENDLATITUDE,ENDLONGITUDE,2500,60100060,MPENDINGINTENTTOASTMAKETEXTTHIS,“拓宝店家提醒服务已启动“,TOASTLENGTH_SHORTSHOW2换卡发送短信功能1判断SIM卡是否切换功能获取SIM卡信息。在SIM卡中并没有保存用户的手机,区分每一张SIM是通过IMSI码。在运营商的数据库中存在手机号码和IMSI码的映射,所以手机是通过发送IMSI码到运营商的一端,获得自己的手机号码。图3换卡发送短信功能流程图TELEPHONYMANAGERTMTELEPHONYMANAGERTHISGETSYSTEMSERVICECONTEXTTELEPHONY_SERVICE/获取手机号码一般是为空的,因为运营商没有基本没有把本机电话保存在SIM卡中标识每一张SIM卡是通过IMSI码TMGETSUBSCRIBERID/在运营商的数据库表中有IMSI码与电话号码的映射。所以,手机是通过发送IMSI码到运营商一端,才获得自己的手机号码STRINGPHONENUMBERTMGETLINE1NUMBER/获得每一张电话卡的唯一标识IMIS码STRINGSUBSCRIBERIDTMGETSUBSCRIBERID完成此功能需要开启广播接收器开机完毕时发送的广播3收到短信回复图4收到短信回复流程图31读取短信接收短信时发送的广播在接收某些广播的时候需要权限,例如接收短信的广播就需要当短信到来的时候,系统会将短信的内容封装成PDU的格式,然后放到INTENT里面。所以要获得短信的内容,就通过INTENT,将PUDS拿出来就可以了,它返回的是OBJECT数组OBJECTMESSAGESOBJECTINTENTGETSERIALIZABLEEXTRA“PDUS“创建一个二维字节数组BYTEPDUOBJSNEWBYTEMESSAGESLENGTHFORINTI0IDIVIDECONTENTSSMSMANAGERDIVIDEMESSAGE“手机IMSI码为“SAFEDSUBSCRIBERID“已被更换SIM卡,更换的SIM卡IMSI码为“SUBSCRIBERIDFORSTRINGTEXTDIVIDECONTENTSSMSMANAGERSENDTEXTMESSAGESAVEDNUMBER,NULL,TEXT,NULL,NULLDESTINATIONADDRESS目标电话号码SCADDRESS短信中心号码,测试可以不填TEXT短信内容SENTINTENT发送中国移动中国移动发送失败返回发送成功或失败信号后续处理即,这个意图包装了短信发送状态的信息DELIVERYINTENT发送中国移动中国移动发送成功返回对方是否收到这个信息后续处理即这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。声明短信发送权限ANDROIDMANIFESTXML23服务器连接实现在APP中如何使用ASYNCHTTP框架连接网络服务不传递参数1下载框架的核心JAR包ANDROIDASYNCHTTPMASTERJAR2拷贝项目的LIBS目录3在核心配置文件中,启动网络权限4代码操作ASYNCHTTPCLIENTCLIENTNEWASYNCHTTPCLIENT/10022CLIENTPOST/GET“HTTP/1921684808080/DEMO2/SERVLET/LOADPARENTCATEGORYSERVLET“,NEWASYNCHTTPRESPONSEHANDLEROVERRIDEPUBLICVOIDONSTARTTOASTMAKETEXTCATEGORYACTIVITYTHIS,“开始加载1级分类“,TOASTLENGTH_SHORTSHOWOVERRIDEPUBLICVOIDONFINISHTOASTMAKETEXTCATEGORYACTIVITYTHIS,“加载完毕“,TOASTLENGTH_SHORTSHOWOVERRIDEPUBLICVOIDONSUCCESSINTSTATUSCODE,STRINGCONTENTIFSTATUSCODE200/404TRYJSONARRAYARRNEWJSONARRAYCONTENTSTRINGCATEGORYSNEWSTRINGARRLENGTHFORINTI0IADAPTERNEWARRAYADAPTERCATEGORYACTIVITYTHIS,ANDROIDRLAYOUTSIMPLE_LIST_ITEM_1,CATEGORYSLISTVIEWSETADAPTERADAPTERCATCHJSONEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACE测试1在APP中如何使用ASYNCHTTP框架连接网络服务传递文本参数服务端REQUESTSETCHARSETENCODING“UTF8“STRINGIDREQUESTGETPARAMETER“ID“STRINGNAMEREQUESTGETPARAMETER“NAME“APPASYNCHTTPCLIENTCLIENTNEWASYNCHTTPCLIENT/1设置参数NAMEVALUEPAIR就是一个具体的参数名与参数值对象LISTLISTNEWARRAYLISTLISTADDNEWBASICNAMEVALUEPAIR“ID“,“1111“LISTADDNEWBASICNAMEVALUEPAIR“NAME“,“陈SIR“/2创建数据包实体对象TRYURLENCODEDFORMENTITYENTITYNEWURLENCODEDFORMENTITYLIST,“UTF8“CLIENTPOSTTHIS,GETRESOURCESGETSTRINGRSTRINGLOADPARENTCATEGORYSERVLETURL,ENTITY,NULL,NEWASYNCHTTPRESPONSEHANDLEROVERRIDEPUBLICVOIDONSUCCESSINTSTATUSCODE,STRINGCONTENTTOASTMAKETEXTMAINACTIVITYTHIS,CONTENT,TOASTLENGTH_SHORTSHOWCATCHUNSUPPORTEDENCODINGEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACE1服务器端31B/S结构介绍HTTP/BAIKESOCOM/DOC/69481167170508HTMLB/S结构即浏览器和服务器结构。它是随着INTERNET技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端BROWSER实现,但是主要事务逻辑在服务器端SERVER实现,形成所谓三层3TIER结构。客户机上只要安装一个浏览器BROWSER,如NETSCAPENAVIGATOR或INTERNETEXPLORER,服务器安装ORACLE、SYBASE、INFORMIX或SQLSERVER等数据库。浏览器通过WEBSERVER同数据库进行数据交互。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本TCO。B/S架构的优点B/S架构是应WEB技术的飞速发展而从传统的C/S架构发展而来,并且一举成为当今主要的网络架构。目前主要的网站,尤其是商务网站都是基于B/S架构建立的。那么我们就来细数一下B/S架构的优点,它到底为什么受到大家的青睐。四、B/S架构应用当时在讲解典型的C/S架构时,提到了了常用的QQ软件。现在新出来了一个WEBQQ,从WEBQQ名称中的WEB就不难看出它属于B/S架构,是一种浏览器服务器结构。事实上也是如此,因为WEBQQ根本不需要安装客户端,只需要有浏览器就可以进行聊天交互了。32SERVLET介绍服务端技术SERVLET是在SERVLET容器(一般指应用服务器)中运行的JAVA程序,它是一个中间层,通过HTTP协议进行工作。SERVLET驻留在应用服务器上,能够使用PRINT语句产生动态的HTML内容,扩展了服务器的性能42。从功能上来说,SERVLET能够处理HTTP请求和响应,其响应客户端请求的流程如图27所示。SERVLET最大的优势在它的高性能SERVLET初始化时就被装载并驻留在内存中,以后直接从内存中运行;在默认的情况下,SERVLET以单实例多线程的方式工作,当一个请求到达,SERVLET实例就开启一个新的线程服务这个请求4344。SERVLET主要可以完成以下任务1动态生成HTML文档。2把请求转发给同一个WEB应用中的其它SERVLET组件。3把请求转发给其它WEB应用中的SERVLET组件。4读取客户端的COOKIE,以及向客户端写入COOKIE。5访问其它服务器资源33功能实现2数据存储41安卓存储机制介绍HTTP/BAIKESOCOM/DOC/19076052018442HTML1SHAREDPREFERENCESSHAREDPREFERENCES也是一种轻型的数据存储方式,它的本质是基于XML文件存储KEYVALUE键值对数据,通常用来存储一些简单的配置信息。其存储位置在/DATA/DATA/SHARED_PREFS目录下。一、根据CONTEXT获取SHAREDPREFERENCES对象二、利用EDIT方法获取EDITOR对象。三、通过EDITOR对象存储KEYVALUE键值对数据。四、通过COMMIT方法提交数据。具体实现代码如下这段代码执行过后,即在/DATA/DATA/COMTEST/SHARED_PREFS目录下生成了一个SPXML文件,一个应用可以创建多个这样的XML文件。如图所示SPXML文件的具体内容如下在程序代码中,通过GETXXX方法,可以方便的获得对应KEY的VALUE值,如果KEY值错误或者此KEY无对应VALUE值,SHAREDPREFERENCES提供了一个赋予默认值的机会,以此保证程序的健壮性。如下图运行结果中因为并无值为“NOT_EXIST“的KEY,所以LOG打印出的是其默认值“NONE”。在访问一个不存在KEY值这个过程中,并无任何异常抛出。SHAREDPREFERENCES对象与SQLITE数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SHAREDPREFERENCES也有其自身缺陷,比如其职能存储BOOLEAN,INT,FLOAT,LONG和STRING五种简单的数据类型,比如其无法进行条件查询等。所以不论SHAREDPREFERENCES的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLITE数据库这样的其他数据存储方式。42服务器存储机制介绍SESSION介绍SESSION在计算机中,尤其是在网络应用中,称为“会话控制”。SESSION对象存储特定用户会话所需的信息。这样,当用户在应用程序的WEB页之间跳转时,存储在SESSION对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的WEB页时,如果该用户还没有会话,则WEB服务器将自动创建一个SESSION对象。当会话过期或被放弃后,服务器将终止该会话。SESSION对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在SESSION对象中。SESSION的工作原理(1)当一个SESSION第一次被启用时,一个唯一的标识被存储于本地的COOKIE中。(2)首先使用SESSION_START函数,PHP从SESSION仓库中加载已经存储的SESSION变量。(3)当执行PHP脚本时,通过使用SESSION_REGISTER函数注册SESSION变量。(4)当PHP脚本执行结束时,未被销毁的SESSION变量会被自动保存在本地一定路径下的SESSION库中,这个路径可以通过PHPINI文件中的SESSIONSAVE_PATH指定,下次浏览网页时可以加载使用。使用方法编辑SESSION是用于保持状态的基于WEB服务器的方法。SESSION允许通过将对象存储在WEB服务器的内存中在整个用户会话过程中保持任何对象。SESSION通常用于执行以下操作存储需要在整个用户会话过程中保持其状态的信息,例如登录信息或用户浏览WEB应用程序时需要的其它信息。存储只需要在页重新加载过程中或按功能分组的一组页之间保持其状态的对象。SESSION的作用就是它在WEB服务器上保持用户的状态信息供在任何时间从任何设备上的页面进行访问。因为浏览器不需要存储任何这种信息,所以可以使用任何浏览器,即使是像PAD或手机这样的浏览器设备。持久性方法的限制随着越来越多用户登录,SESSION所需要的服务器内存量也会不断增加。访问WEB应用程序的每个用户都生成一个单独的SESSION对象。每个SESSION对象的持续时间是用户访问的时间加上不活动的时间。如果每个SESSION中保持许多对象,并且许多用户同时使用WEB应用程序(创建许多SESSION),则用于SESSION持久性的服务器内存量可能会很大,从而影响了可伸缩性。3网页端51HTML介绍HTTP/BAIKESOCOM/DOC/58698766082735HTML超文本标记语言,标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(英语HEAD)、和“主体”部分(英语BODY),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。HTTP/WWWW3SCHOOLCOMCN/HTML/HTML_INTROASP什么是HTMLHTML是用来描述网页的一种语言。HTML指的是超文本标记语言HYPERTEXTMARKUPLANGUAGEHTML不是一种编程语言,而是一种标记语言MARKUPLANGUAGE标记语言是一套标记标签MARKUPTAGHTML使用标记标签来描述网页52JAVASCRIPT介绍HTTP/WWWW3SCHOOLCOMCN/BASPJAVASCRIPTJAVASCRIPT是世界上最流行的脚本语言。JAVASCRIPT是属于WEB的语言,它适用于PC、笔记本电脑、平板电脑和移动电话。JAVASCRIPT被设计为向HTML页面增加交互性。HTTP/BAIKESOCOM/DOC/53442155579659HTMLJAVASCRIPT一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JAVASCRIPT引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。在1995年时,由NETSCAPE公司的BRENDANEICH,在网景导航者浏览器上首次设计实现而成。因为NETSCAPE与SUN合作,NETSCAPE管理层希望它外观看起来像JAVA,因此取名为JAVASCRIPT。但实际上它的语法风格与SELF及SCHEME较为接近。为了取得技术优势,微软推出了JSCRIPT,CENVI推出SCRIPTEASE,与JAVASCRIPT同样可在浏览器上运行。为了统一规格,因为JAVASCRIPT兼容于ECMA标准,因此也称为ECMASCRIPT。53功能实现4调试在调试初期,遇到了很多问题,比如获取不了手机SIM卡的号码,就不能判断是否切换了帐号;还有监听收到短信的时候,广播接收器不能拦截到信息;还有监听开机广播,开启定位服务和换卡监控服务无法实现等等。后来,经过上网查询资料,终于一点一点解决了问题程序测试就是在程序投入运行前,对程序的需求分析、设计规格说明和编码的最终复审,是保证程序质量的关键步骤,如果要给程序测试下定义,可以这样讲,程序测试时为了发现错误而执行程序的过程。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。编程人员力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。52程序调试程序开发中难免会遇到各种问题,如语法的错误,程序设计的错误。程序开发是一个循序渐进的过程。开发完一个功能,需要及时的测试,待功能测试通过后,方可以进行下一个功能的开发,这样可以保证程序的质量。在程序开发中,使用了打印调试信息,DEBUG调试等方法。53测试的主要内容为了保证测试的质量,测试过程包括代码审查、单元测试、集成测试、确认测试以及系统测试。代码审查代码审查为了发现代码中冗余的部分,不合理的部分。单元测试单元测试(模块测试)是编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。1集成测试集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。2确认测试确认测试又称有效性测试。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。3系统测试系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。(1)功能测试经测试该软件系统的添加联系人功能、查看联系人、编辑联系人、查找联系人、拨打电话、发送短息功能皆正常。软件的质量可以达到保证。(2)健壮性测试经测试该软件系统在异常情况下能正常运行的能力。如直接退出,没有点退出菜单,程序数据不会受到破坏,在配置较低的手机上运行。(3)性能测试经测试该软件系统处理事务的速度快捷。正常该软件时,安装在手机上面运行良好。(4)界面测试。经测试该软件系统的易用性较强,可操作性强,界面视觉效果而等。7总结通过这次毕业设计,我大致了解了在进行软件开发工作时的基本过程,并且从中获得了许多从课堂上学不到的知识和有意义的收获,其中我对以下几点有很深刻的体会1、编程中定义窗体及变量的名称时,一定要规范,必要时加上注解,不要想当然的定义某个变量,常量等。标准的定义方式,有助于其他

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论