Android手机控制软件毕业设计_第1页
Android手机控制软件毕业设计_第2页
Android手机控制软件毕业设计_第3页
Android手机控制软件毕业设计_第4页
Android手机控制软件毕业设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

③远程桌面远程桌面利用RDP协议实现。(3)方法步骤具体做法如下:=1\*GB3①模块化:分别做好在客户端服务器端以及其他Android设备上运行的程序,保证模块的高内聚、低耦合的特性,这样可以降低软件系统的复杂性,各模块有自己独立的功能,提高可理解性、可维护性。=2\*GB3②修改完善:完善所做程序中的不足之处,做到界面友好等其他细节方面的问题,提高软件的可理解性。四、进度计划第1周~第6周毕业实习,查资料及熟悉环境。第7周~第8周需求分析,完成需求分析及概要设计。第9周~第10周详细设计,完成详细设计。第11周~第16周系统连调,完成试验系统,编写并完成论文,答辩。五、参考文献[1]周恒民译.JavaTCP/IPSocket编程(原书第2版)[M].北京:机械工业出版,2009.[2](美)梁勇著,李娜译.Java语言程序设计:基础篇(原书第8版)[M].北京:机械工业出版社,2011.[3]范文庆等编著.WindowsAPI开发详解——函数、接口、编程实例[M].北京:人民邮电出版社,2011.[4](美)李伟梦著,何晨光,李洪刚译.Android编程入门经典(移动与嵌入式开发技术)[M].北京:清华大学出版社,2012.[5](英)哈诺德著,朱涛江,林剑译.Java网络编程(第3版)——O’ReillyJava系列[M].北京:中国电力出版社,2005.指导教师签字时间年月日摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,WIFI覆盖范围也越来越广,由此而产生的手机通讯控制工具也越来越多。Android凭借其开放性和良好的人机界面,改变了智能手机市场的格局。Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。本文对Android平台的现状进行了分析,进而研究了Android平台的系统架构和组件模型,以及Intent和生命周期的机制。在此基础上,设计一个能在Android设备上运行的局域网通讯控制软件。软件利用Java语言和Eclipse编辑工具对软件进行编写,同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图。本系统界面友好、操作便捷,具有良好的可扩展性和可维护性,系统经过测试,可以稳定运行,能够满足手机用户的基本需求。关键词:Android通讯控制JavaAbstractWiththemoreandmoredevelopedinthenetworknow,peopledependentandinseparablefromthenetwork,WIFIcoveragemorewidely,theresultismobilecommunicationsandcontroltoolsbecomeafashion.Relyonitsopennessandgoodman-machineinterface,Androidchangingthepatternofthesmartphonemarket.ThebiggestfeatureofAndroidisitsopenarchitecture,notonlyhasaverygooddevelopmentanddebuggingenvironment,butalsosupportsavarietyofscalableuserexperience,includingrichgraphicalcomponents,multimediasupportfeaturesandpowerfulbrowser.thepaperanalyzesthecurrentAndroidplatformsituation,andthenstudytheAndroidplatformsystemarchitectureandcomponentmodels,aswellasIntentandamechanismlifecycle.Onthisbasis,designanAndroiddevicerunninginLANcommunicationscontrolsoftware.SoftwareusestheJavalanguageandEclipseeditingtoolstowrite,andgivesadetailedsystemdesignprocess,partoftheinterfaceandmainfunctionsofrunningaflowchartdiagram.Thesystemisuser-friendly,easytohandle,hasgoodscalabilityandmaintainabilityresistance,thesystemhasbeentestedandstableoperation,tomeetthebasicneedsofmobilephoneusers.Keyword:AndroidCommunicationsandcontrolJava目录948第1章绪论 132881.1研究背景内容及意义 1127721.1.1研究背景 1262491.1.2研究内容及意义 1280791.2发展现状及趋势 1306401.3论文主要结构 23905第2章开发工具简介 3112682.1Android概述 3242632.1.1Android平台简介 3207422.1.2Android平台优势 4106602.2开发环境 5258342.3Eclipse概述 610795第3章系统需求 7250523.1功能需求分析 777683.2系统流程 942013.3系统界面需求 1033543.4可行性分析 105193.5开发及运行环境需求 1030513第4章通信控制软件详细设计 1274474.1用户界面的设计 12224394.1.1用户界面的实现 13117434.2远程遥控功能的实现 13147034.2.1远程遥控功能的设计原理 14195214.2.2关机功能的实现 1447934.2.3PPT遥控功能的实现 1492754.3无线鼠标功能的实现 16235264.3.1无线鼠标功能的设计原理 16244474.3.2鼠标移动功能的设计原理 17182614.3.3鼠标点击功能的设计原理 1883494.4在线聊天功能的实现 19267164.4.1用户注册功能的实现 19175484.4.2聊天功能实现 20192324.4.3发送接收文件功能实现 211449第5章结论与展望 2419507参考文献 2613141致谢 2713855附录A 283036外文翻译英文 287240外文翻译中文 37第1章绪论1.1研究背景内容及意义1.1.1研究背景自从2008年9月22日美国运营商T-MobileUSA在纽约正式发布了第一款基于Android的手机后更多的移动设备厂商看到了Android的光明前景并纷纷加入其中Android甚至已经涉足上网本市场了其发展前景广阔涉及领域越来越大。随着Android手机的普及Android应用的需求势越来越大这个潜力巨大的市场已经吸引无数软件开发厂商和开发者投身其中。Android的开放性使其比苹果和黑莓对年轻人更具吸引力更能吸引年轻人群的关注和喜爱。同时因为Android系统的开放性为Android平板电脑的快速发展奠定了基础也才能促使其吸引着越来越多的用户接受和使用。同时Android还具有应用程序无界限、应用程序是在平的的条件下创建的、应用程序可以轻松的嵌入网络、应用程序可以并行运行等众多出色的品质。安卓系统在不断升级完善如今平板电脑市场已成为Android与苹果iOS除了智能手机领域之外争夺的第二个焦点。一直以来多数新闻仍然显示iPad在平板市场的霸主地位难撼。但是以Android领头的平板电脑正以高速的增长对苹果iPad造成冲击。1.1.2研究内容及意义Android平台手机通讯控制软件,运用Java语言,实现与同一局域网的其他Android设备通讯,文件传输,并能对电脑进行关机,控制PPT等操作并实现无线鼠标的功能。Android平台的通讯控制软件的意义:(1)极大的方便了处于同一局域网用户间的即时通讯;(2)PPT遥控使得用户做呈现时可以脱离电脑束缚;(3)无线鼠标可以实现较远地方对电脑的相关操作;(4)文件传输可以使资源更好的被利用。1.2发展现状及趋势Android平台自2010年以来呈现出突飞猛进的发展势头,在全球智能手机市场中所占份额从不到10%一路猛增至50%以上,俨然已经抢占了“半壁江山”。与此同时,基于Android平台的各种应用也层出不穷。目前市场上有MobileCC,HomeCenter等远程控制软件,比较出名的局域网通信软件有飞鸽,飞秋等。(1)MobileCC支持WIFI连接、GPRS连接,控制电脑已实现,不远的将来,伴随着物联网的进一步发展,遥控汽车,控制空调,智能冰箱操控等终将得到实现,目前该软件可遥控电脑音视频播放,游戏操控,PPT播放,电脑快捷操作。(2)HomeCenter是一款可以利用手机远程控制电脑的免费远程控制软件,HomeCenter运行在系统托盘,并允许远程访问您的手机。(3)飞鸽传书是一款面向企业办公的即时通讯软件,基于TCP/IP模式。企业员工可在企业内部或外部通过飞鸽传书进行通讯,支持消息发送,文件传输,语音视频等。为企业提供安全,稳定的即时通讯解决方案。局域网通信控制软件的发展趋势:(1)实现的功能更加多样化;(2)由单一的控制电脑向控制其他家用电器设备转变。1.3论文主要结构本论文的主要结构:第1章介绍Android的发展史,并分析了本课题研究的背景现状及意义。简单介绍了目前市场上比较流行的一些手机控制软件。介绍了论文的主要研究内容和整个论文的结构。第2章简要介绍了Android系统以及Android项目和系统设计过程中用到的工具和技术。第3章主要对本系统的功能需求、性能需求、可行性分析、运行环境作了详细分析和概要设计。第4章将整个系统功能详细设计分为几个模块作了详细介绍。详细详细说明了:界面的设计与实现、远程遥控功能的实现、在线聊天功能的实现、无线鼠标功能的实现等,其中包括每个功能模块的主要代码和界面,最后介绍了相关权限的使用。第5章是结论与展望。对课题研究内容及过程进行总结,分析研究内容的发展趋势以及发展前景。第2章开发工具简介2.1Android概述2.1.1Android平台简介Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android从诞生到现在也不过3年的时间,但是也就是在这短短的3年内Android创造了一个迅速被人们知晓并追捧的奇迹。2007年11月5日,Google与其他33家手机制造商(包含摩托罗拉、宏达电、三星、LG)、手机晶片供应商、软硬体供应商、电信业者所联合组成的开放手持装置联盟(OpenHandsetAlliance),发布了名为Android的开放手机软硬体平台。该联盟的成员宣布日后都会在Android平台上开发他们的新的业务。不久之后的2008年9月24日,T-Mobile公司首度公布第一台Android手机(G1)的细节,同日Google也放出了AndroidSDK1.0rc1。这样Android进入了人们的视线[1]。Android以其特有的开放性优势越来越受到人们和智能手机厂商的关注。对于第三放软件开发商来说,Android是一个真正意义上的开放性移动设备综合平台,Android系统是免费向开发人员提供的,这样就避免了开发中专利权的障碍。因此,就能够为第三方软件开发商省下大笔资金。对于设备制造商来说,Android是一个免费的平台。当设备制造商每制造一台手机时,那些支付给手机系统制造商的费用也省去了,这样也降低了每台手机的生产费用,同时就降低了手机的价格,这样在市场上也提高了竞争力。对硬体开发厂商来说,Android也是个开放的平台。使用Android平台的厂商可以更具自己的需求以及能力为Android开发具有该厂商特色的功能,但是这样的增加完全不用考虑版权的问题。同时Android平台支持各种先进的网络、绘图、3D处理能力,可以用来提供更好的使用者体验。GoogleAndroid系统作为一个完全开源的操作系统,是由操作系统(Linux)、中间件以及核心应用程序组成的软件栈(softwarestack)。通过AndroidSDK提供的API以及相应的开发工具,程序员可以很方便的开发Android平台上的应用程序。其整个系统由应用程序(Application),应用程序框架(ApplicationFramework),应用程序库(Libraries),Android运行库(AndroidRuntime),Linux内核(LinuxKernel)五个部分组成。Android操作系统内置了一部分应用程序,包括电子邮件客户端、SMS程序、日历、地图、浏览器、通讯录以及其他的程序,值得一提的是这些所有的程序都是用Java编写的[2]。因为应用程序框架使得组件更易于重用,所以开发者的应用程序可以很容易的调用API函数实现我们想要的功能。在遵守应用程序框架的安全机制约束的前提下,开发者开发的一个应用程序可以使用其他程序所开发的功能。虽然Android的应用程序是用Java语言开发的,但是Android给应用程序开发者提供了一系列的C/C++程序库,通过Android的一些特殊的设计,我们开发者可以使用这些库[3]。现今,Android操作系统已成为许多手机制造商的宠儿,其中包括HTC、索尼爱立信、Samsung、摩托罗拉以及国内的联想、华为、海尔等。2.1.2Android平台优势(1)开放性在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。(2)不受束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从2007年iPhone上市后,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。(3)丰富的硬件这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人更是可以方便地转移[4]。(4)方便开发Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力方面的程序和游戏如何控制正是留给Android难题之一。(5)Google应用在互联网的Google已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。2.2开发环境Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的JavaSDK(其中包括JRE:JavaRuntimeEnvironment)。此外,Android的应用程序开发和Java开发是有较大区别的,所以还需要有Google提供的AndroidSDK。同时,还需要在Eclipse安装ADT(AndroidDevelopmentTool),它是Eclipse下开发工具的升级下载工具,为Android开发提供开发工具的升级或者变更。简言之,需要JavaSDK、Eclipse、AndroidSDK以及ADT才能搭建Android开发环境,从而进行Android应用程序的开发[5]。(1)JavaJava是Sun公司在1995年推出的新的编程语言,它是一种简单的、面向对象的、分布式的、解释的、安全的、可移植的、性能优异的多线程语言。它以其较强的安全性、平台无关性、硬件结构无关性、语言简洁性以及面向对象的特点,在网络编程语言中占据了无可比拟的优势[6]。(2)JavaSDK、AndroidSDKSDK(softwaredevelopmentkit):软件开发工具包。被软件开发工程师用于特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,JavaSDK既Java的软件开发工具包,而AndroidSDK指的既是Android专属的软件开发工具包[7]。(3)Eclipse及其插件(ADT)Eclipse是替代IBMVisualAgeforJava的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。也就是说未来只要有人需要,就会有建立在Eclipse之上的COBOL,Perl,Python等语言的开发插件出现。同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat\o"服务器"服务器插件。因而其可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在[8]。在Eclipse编译IDE环境中,需安装ADT(AndroidDevelopmentTools)Plug-in,这是Android在Eclipse上的开发工具。为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。(4)XML可扩展标记语言(ExtensibleMarkupLanguage,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据和定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据[9]。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,MacOS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并进行分析,并以XML格式输出结果[10]。2.3Eclipse概述Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所[11]。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础[12]。第3章系统需求3.1功能需求分析手机局域网通信控制软件是为了方便人们对电脑的相关操作,使用户可以远程控制电脑以及当前正在运行的程序所以该软件要满足用户对电脑的一般控制。软件的基本功能需求有以下几点:聊天功能:与在线的其他用户私聊或群聊。遥控功能:控制电脑关机及遥控PPT。文件传输:用户之间可以通过该软件进行文件传输。无线鼠标:可以把手机当做无线鼠标使用,使其对电脑的控制更便捷。系统总体结构功能图如图3-1所示。通讯控制软件通讯控制软件在线聊天远程遥控文件传输无线鼠标图3-1总体结构图 (1)在线聊天功能在线聊天又包括注册,登陆,私聊,群聊四个模块。进入该界面需先进行注册,然后用该账号登陆,注册时需要填写账号,密码,年龄,爱好等信息注册信息保存在SD卡根目录下。下次登录时系统会将登陆名密码与SD卡中的信息进行比对,若符合则登陆成功,否则提示用户名密码错误。登陆后可以查看自己的相关信息,同时会显示其他在线用户,添加其他用户为好友,查看好友的在线状况还可以向他们发起对话,也可以同时向所有人发送消息,或者向单个好友发送文件。在线聊天功能的结构图如图3-2所示。在线聊天在线聊天用户注册用户登录单人会话多人会话图3-2在线聊天结构图(2)远程遥控功能该界面主要实现的功能有关机和遥控PPT,对关机设置的是60秒自动关机。关机的实现是调用cmd语句实现倒计时关机PPT控制有开始放映,上一页,下一页,结束放映几个功能,按下这几个按键就相当于分别按下电脑键盘上的F5,P,N,Esc键。远程遥控功能的结构图如图3-3所示。远程遥控远程遥控远程关机图3-3远程遥控结构遥控控制(3)文件传输功能该模块可以实现用户间的文件互传,可将自己SD卡的文件传送给其他在线好友。被传送的文件可以是软件安装时在SD卡会创建file_server文件夹,收到的文件会被保存在以发送方用户名命名的文件夹下。接收方在收到文件传输请求时会弹出一个是否同意接受的对话框,若同意则开始传输,否则取消这次传输。文件传输功能的结构图如图3-4所示。文件传输文件传输文件发送图3-4文件传输结构文件存储(4)无线鼠标功能无线鼠标分为鼠标移动控制和鼠标点击控制,进入该界面触动屏幕即可实现对鼠标的控制。点击事件并不是通过点击屏幕实现,而是在屏幕下方设置了分别代表鼠标左键和右键的按钮,点击他们即相当于鼠标的点击事件。无线鼠标功能的结构图如图3-5所示。无线鼠标无线鼠标鼠标移动图3-5无线鼠标结构鼠标点击3.2系统流程当程序启动时,首先进入功能选择界面,由于文件传输是建立在用户间相互通信的基础上,所以用户进行功能选择时可以选择远程遥控,无线鼠标,在线聊天中的任意一个。聊天模块主要有用户注册界面,添加好友界面,聊天界面,其中选择要发起会话的好友用spinner实现,当用户选择其中一个好友时即可与之对话,对话内容显示在下方的空白处。注册时要填写自己的昵称,姓名,年龄,爱好等。在添加好友界面,用户选择当前在线的一个用户,点击其信息即可弹出添加好友对话框。点返回即可返回到功能选择界面。远程遥控模块只有一个界面,显示关机,放映等控制功能的按钮,点击即可实现相关操作,点返回同样返回到功能选择界面。文件传输模块有两个界面,发送界面和文件选择界面,在发送界面点击浏览即可进入文件选择界面浏览想要上传的文件。在接收端会弹出是否同意接受的对话框,点击是则自动接收并保存到相关目录下,否则取消该次传输。无线鼠标模块主体只有一个layout和两个按钮,分别用来控制鼠标的移动和鼠标的点击。3.3系统界面需求程序的界面很大程度上影响着用户的操作体验,为了不影响用户体验,除无线鼠标界面外,其余界面均使用同一背景。因此,在各个界面间切换时显得更自然衔接更流畅。3.4可行性分析技术可行性软件代码用Eclipse编写,语言是Java。Java语言优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的,可以开发各种应用程序和游戏。Eclipse是一个开放源代码的、基于Java的可扩展开发平台。Java中的robot类可以实现对鼠标和键盘的相关控制。经济可行性众所周知Android是开源的,而且Eclipse等开发工具也是免费的,所以,所需成本极低。操作可行性基于Android平台的应用,大多都是界面友好,易于操作。并且软件本身布局合理,各个模块及其所实现的功能一目了然。3.5开发及运行环境需求(1)开发环境及语言操作系统:Windows7;开发语言:Java。(2)支持开发软件Eclipse及ADTJDKAndroidSDK。(3)运行环境Android2.2及以上。第4章通信控制软件详细设计启动程序后首先是功能选择界面,分别是在线聊天,远程遥控,无线鼠标功能,点击相应按钮即可进入相关功能界面。登陆模块也在该界面内,注册以后,输入用户名密码即可与同时在线的好友发起会话或者进行文件传输,也可以选择其他功能,进入相关子界面。启动后界面如图4-1所示。图4-1启动界面图4-1启动界面4.1用户界面的设计从之前的需求分析可知,软件主要有四大界面这里需要进一步分析每个用户界面中应该包括哪些显示内容。这四个界面分别是聊天界面,文件选择界面,遥控PPT界面和无线鼠标界面。聊天界面有spinner,button,textview等控件,文件选择界面主要是一个listview,遥控界面是五个按钮,无线鼠标是两个button和一大片用于捕捉触控操作的空白。除了无线鼠标界面外所有界面均用同一个背景。无线鼠标界面用的是一个灰色的背景。每一个界面,都有唯一的布局文件与之对应,该文件里面有各种布局方式,和各种资源文件如图像、文字、颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取或修改。这样就可以形成不同的可视化界面和炫丽的效果以及实现界面的动态改变。Android有五大布局,它们分别是FrameLayout(框架布局),LinearLayout(线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局).以上布局用到的控件主要有文本框(TextView)、编辑框(EditText)、按钮(Button)、列表视图(ListView)以及对话框(Dialog)等[13]。4.1.1用户界面的实现(1)功能选择界面程序各个界面之间的跳转用intent来实现,在功能选择界面添加功能选择按钮并为其添加监听器,当发生点击事件时跳转到所需的界面,返回功能界面时使用同样的方法。跳转的主要代码如下:btn_ppt=(Button)findViewById(R.id.btn_ppt);btn_ppt.setOnClickListener(newOnClickListener(){//添加监听器publicvoidonClick(Viewv){Intentit=newIntent(Date.this,ppt.class);startActivity(it); //实现跳转 Date.this.finish();//结束当前界面(2)文件浏览界面的实现该界面的主体是一个listview和两个按钮,listview用来接收adapter传过来的数据并显示,listview的实现如下:<ListViewAndroid:id="@Android:id/list"//控件IDAndroid:layout_width="fill_parent"//控件宽度为填满父控件Android:layout_height="330px"//控件高度为330px></ListView>其余界面的实现与其相似,不再赘述。4.2远程遥控功能的实现当程序切换到远程遥控界面时,负责遥控电脑的activity启动。根据用户按键的不同向服务端发出不同的信息,服务端根据收到的信息执行相关操作。用户只需点击按钮就能对电脑进行简单控制。4.2.1远程遥控功能的设计原理当手机与电脑处于同一局域网时,可以通过socket进行通信,传递信息。可以在手机端设置按不同的键发送不同的命令,通过socket传到服务器端,服务器端执行这些命令即可实现远程遥控功能。4.2.2关机功能的实现Java可以调用cmd命令行程序,而cmd命令中有一个定时关机的命令:”shutdown-s-t”可以让手机端发送某一个特殊的信息,当服务器收到该信息时执行该命令则可实现关机。具体实现如下:建立sockettry{Socketsocket=null;socket=newSocket(ip,port);//建立socket需ip和端口手机端发送消息PrintWriterwriter=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(),"GBK")),true); socket.getOutputStream().write(msg.getBytes("GBK"));服务器端调用cmd命令行执行收到的请求if(str.equals("2"))Runtime.getRuntime().exec("shutdown-s-t3600");//如果收到2就执行关机操作。4.2.3PPT遥控功能的实现PPT遥控功能的实现与关机功能原理上极其相似,所不同的是,PPT遥控并没有使用cmd命令行。而是使用了Java中的一个robot类。Java.awt.Robot类用于控制鼠标和键盘,一旦你得到这种控制,你能够通过你的Java代码做与鼠标和键盘任何类型的操作。这个类通常用于自动化测试,之后的无线鼠标模块也会用到它。PPT遥控的实现,可以让手机端按四个键发送四个不同的特殊信息,这里可以用case语句实现,给每个按钮添加监听器按不同按钮发送不同信息:caseR.id.btnnextpage:{Stringmsg="3";SendMsg1(ip,port,msg);break;}caseR.id.btnlastpage:{Stringmsg="4";SendMsg1(ip,port,msg);}break;}caseR.id.btnstart:{……服务器端收到消息时先用if语句判断收到的是什么命令然后调用robot类,执行相关操作。例如,当收到信息“3”时,执行的是按下键盘上的N键的操作,其代码如下:elseif(str.equals("3"))Robotrobot=newRobot(); robot.keyPress(KeyEvent.VK_N);//按下N键robot.keyRelease(KeyEvent.VK_N);}//松开N键finally{}……其他操作与其类似,放映,上一页,下一页,结束放映分别对应于键盘上的F5,P,N,Esc.这一界面的显示结果如图4-2所示。图4-2遥控界面图4-2遥控界面若点下关机则电脑将在60秒内关闭,如图4-3所示。图4-3关机界面图4-3关机界面4.3无线鼠标功能的实现无线鼠标要求在手机端触摸屏幕时电脑端的光标按相同的轨迹移动,并实现鼠标点击事件,点击事件并不是直接在屏幕上点击,而是在界面下方设置了两个按钮来发送点击事件的命令。4.3.1无线鼠标功能的设计原理Java中的robot类可以用于控制鼠标,Java程序实现自动测试,自动演示功能,或者是其它的一些鼠标和键盘控制的应用。出于这样的目的,自从JDK1.3开始,它就为我们提供了一个用来产生本机输入事件的机器人类Java.awt.Robot.Robot为我们提供了以下这些功能:BufferedImagecreateScreenCapture(RectanglescreenRect)

createScreenCapture方法提供类似于键盘上的PrintScreen键的功能,将指定矩形区域内的屏幕像素copy下来产生一个BufferedImage。我们可以将这个方法用在图形程序中,或是用它来实现远端屏幕传输,可做成远端电脑监控程序等。

voiddelay(intms)

用来将当前的程序(thread)休眠(sleep)若干毫秒(ms)。可用来控制程序的延时。

ColorgetPixelColor(intx,inty)

取得给定屏幕坐标像素位置的颜色值。

voidkeyPress(intkeycode)

voidkeyRelease(intkeycode)

这两个方法的作用一看就知道是用来产生指定键的按键按下与抬起动作,相当于Win32API的keyb_event函数。可用于程序的自动演示、测试等,PPT遥控功能就是通过该方法实现

voidmouseMove(intx,inty)

将鼠标光标移动到指定的屏幕坐标.可用于程序的自动演示、测试等.

voidmousePress(intbuttons)

voidmouseRelease(intbuttons)

voidmouseWheel(intwheelAmt)

上面的三种方法,产生指定鼠标按钮的按下,抬起,及滚轮动作.一样也可用于程序的自动演示、测试等。以上就是Robot提供的实用的键盘鼠标控制功能。4.3.2鼠标移动功能的设计原理Robot类提供了一个有关鼠标移动控制的方法voidmouseMove(intx,inty),可以将鼠标光标移动到指定的区域。其基本原理是手机端捕获位移方向和距离,将其传到服务器端,服务器端根据该位移移动相同的距离。手机端的mouseview是指针移动区域publicMouseView(Contextcontext,AttributeSetattrs){super(context,attrs);msg=newMsgInfo();msg.setX(0);msg.setY(0);}手机端对触摸事件的捕获:caseMotionEvent.ACTION_MOVE:x=(int)event.getX();//获取当前位置横坐标y=(int)event.getY();//获取当前位置纵坐标mouseView.getMsg().setX(x);//移动后的横坐标mouseView.getMsg().setY(y);//移动后的纵坐标distanceX=x-oldX;//移动距离distanceY=y-oldY;//移动距离oldX=x;//把当前位置当做初始位置oldY=y;DatagramPacket(msgString.getBytes(),msgString.length(),addr,2011;try{client.send(outPacket);//将位移事件的坐标变化发到服务器端服务器端收到信息后,根据收到位移量的大小移动相同的距离:PointmousePoint=MouseInfo.getPointerInfo().getLocation();System.out.println("x:"+x+"y:"+y);robot.mouseMove(mousePoint.x+x,mousePoint.y+y);}//鼠标指针移动。4.3.3鼠标点击功能的设计原理在无线鼠标界面下方有两个设置了监听器的按钮,分别对应鼠标左键和右键的点击事件。当点击按钮时,服务端执行鼠标单击操作。当鼠标键按下时发送一条信息到服务端,服务端执行左键按下操作,当鼠标键松开时,服务器执行鼠标左键松开操作。rightBtn=(Button)findViewById(R.id.rightButton);//得到两个按钮leftBtn.setOnTouchListener(newOnTouchListener(){//为左键设置监听器publicbooleanonTouch(Viewv,MotionEventevent){//鼠标点击事件caseMotionEvent.ACTION_DOWN://鼠标按下操作clientSocket.sendMsg(addr,port,msg);//发往服务端的信息caseMotionEvent.ACTION_UP://鼠标松开操作clientSocket.sendMsg(addr,port,msg);//发往服务端的信息右键点击事件的设置与左键一样,即添加监听器,在按下按键和松开按键的时候分别发送不同的信息到服务端,服务端根据收到的信息进行右键点击和松开操作。无线鼠标的用户界面如图4-4所示。图4-4无线鼠标界面图4-4无线鼠标界面4.4在线聊天功能的实现在线聊天模块主要是实现的功能是单个用户之间的对话,多个用户同时对话,以及文件传输功能。其主要原理还是先建立socket连接,然后在此基础上进行的一系列操作。4.4.1用户注册功能的实现用户注册时需要填写帐号、密码、昵称、性别、地址、爱好和选择头像。若信息填写不够完善,系统会提示补全遗漏的信息。注册界面的实现主要是几个EditText和两个按钮,还有信息不完善时弹出的Toast控件,为什么叫它Toast呢?因为Toast在英文里的意思是烤面包机,当面包烤熟后面包会从机器里弹出来,这个和Toast控件在屏幕上突然弹出来很类似,因此就把这个控件叫做Toast。publicvoidInit(){name_edittext=(EditText)findViewById(R.id.editText1);//添加控件repwd_edittext.addTextChangedListener(newrepwdTextChangedListener());//设置监听器repwd_edittext.setOnFocusChangeListener(newrepwdOnFocusChangeListener());user.setId(id_edittext.getText().toString());user.setName(name_edittext.getText().toString());//得到用户所填信息,转换成string类型然后传到服务端Intentit=newIntent(regited.this,Date.class);startActivity(it);//启动activityregited.this.finish();这里特别要强调的是Intent的使用,Intent主要作用是实现各个activity之间的跳转并传参。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦[14]。例如,Intentit=newIntent(regited.this,Date.class)括号中第一个参数表示本身所在的activity,第二个参数表示要跳转到的activity,当要跳转到的activity与本身所在的activity不在一个包时,被跳转到的activity在manifest文件中进行注册时要写明它的绝对路径,加入需要跳转到的activity所在包的路径。否则系统会因为找不到要跳转的activity而出错奔溃。注册界面如图4-5所示。图4-5注册界面图4-5注册界面4.4.2聊天功能实现聊天模块的亮点在于spinner的使用,使用spinner可轻松区分单个会话与所有人会话,点击spinner的下拉菜单即可显示所有在线好友并可选择其中一个发起单个会话或者选择发给所有人进行群聊。点击所有人时,系统会将用户发的消息广播给所有其他在线用户。Spinner的使用如下:<SpinnerAndroid:id="@+id/spinner1"Android:layout_width="wrap_content"Android:layout_height="wrap_content"Android:layout_weight="0.98"/>//在.xml文件中对spinner进行注册publicvoidsp_handle(Stringnames[]){sp1=(Spinner)findViewById(R.id.spinner1);//得到spinner控件ArrayAdapter<String>adapter=newArrayAdapter<String>(this,Android.R.layout.simple_spinner_item,names);//使用adapter传参adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);//设置按下spinner之后的操作sp1.setAdapter(adapter);sp1.setOnItemSelectedListener(newOnItemSelectedListener(){除spinner外其他核心代码就是获取用户要发送的信息,以及接收端接收信息。得到用户输入的信息用.getText()方法即可实现Stringsend_info=et_sendinfo.getText().toString();//获取发送的消息intitem=sp1.getSelectedItemPosition();//使用spinner选择发送消息的对象ob.writeUTF(info);//以流的形式将信息发送出去,其发送界面如图4-6所示。图4-6发送界面图4-6发送界面4.4.3发送接收文件功能实现文件传输时可以选择好友中的一个来进行传输。传输流程是先由发送方将文件上传到服务端,再由服务端转发到接收方,接收方收到后保存在指定文件夹中。(1)文件发送功能的实现首先要实现的是SD卡中文件的显示,实现方法是在activity中添加一个listview控件,在listview中还需添加表示文件和文件夹的图片控件,系统读取SD卡中文件的信息(文件命,目录等信息),然后由adapter将信息传递到listview并显示,Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。并在listview上添加监听器,点击文件名时即选择该文件,再点击屏幕下方的确定就将文件传到了服务器端,再由服务器转发给接收端[15]。选择文件界面如图4-7所示。publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder;//用holder传参if(convertView==null){convertView=mInflater.inflate(R.layout.file_row,null);holder=newViewHolder();//指定布局文件holder.text=(TextView)convertView.findViewById(R.id.text);holder.icon=(ImageView)convertView.findViewById(R.id.icon);convertView.setTag(holder);图4-7文件传输界面图4-7文件传输界面(2)文件接收功能的实现接收方在收到文件时会弹出toast询问是否接收,若选择接收则与服务端建立连接,由服务端将发送方发的文件转发给接收方。if(info[2].equals("FILE"))//判断是否传送的是文件如果是文件则建立连接newAlertDialog.Builder(Sendmsg.this)//建立连接..setItems(items,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intitem){//在弹出的toast上添加监听器switch(item){case0:File_tools.download(info[3],info[0],File_tools.get_user_dir());//文件存放路径。第5章结论与展望经过一个学期的学习,以及对手机通信控制软件的编写使我对Android这门语言有了更深的体会。本次软件开发主要实现了聊天,文件传输,遥控电脑,无线鼠标四个模块,各模块间层次分明,布局合理,能满足用户的一般需求。本次软件开发用到的主要工具是Eclipse,程序一般在Android2.2版本以上运行。在编程过程中有如下心得体会:刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的AndroidSDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前Java上相通的思想。通过半个学期的Android学习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如:要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过Java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的

跳转Intent管理,通过Bundle对数据在界面之间进行传输。在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及AndroidFramework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。要想开发一些好的应用程序,还需要更多的知识支持。在做实习最后的项目时,遇到了很多平时没有遇到或者没有特别关注的问题,如常见的Activity忘记注册,对SD卡存取需要权限,在写SQL语句时细微的错误就可能导致程序运行错误。这些问题只有自己在实际开发中才能体会到并且解决,并且在解决后可以长时间的记住。通过Android的学习,在大四毕业前,又掌握了一项新的前沿的开发技能,也有了更多的发展方向,这在以后的找工作的过程中无疑为我们增加了砝码,也可以成为我们的一项兴趣爱好,可以根据我们自己的需要设计一些小的程序。大部分预想的功能都已经实现,甚至有意外地收获,实现了无线鼠标。但远程桌面的功能暂时还没有实现,在没有连接服务器的时候进行相关操作容易使系统奔溃。总之,我获得了很多东西,提高了自己的编程技巧和编程方法,并且认识了Android应用程序的开发,以及加深了对Java的认识。参考文献[1]熊刚.基于Android的智能手机的设计与实现[D].武汉:武汉理工大学,2010.[2]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.1.[3]JoshuaBloch.EffectiveJava:SecondEdition[M].Addison-Wesley,2008.[4]党李成.基于GoogleAndroid智能手机平台的研究与应用[D].安徽:安徽大学,2011.[5]ConderS,DarceyL.Android移动应用开发[M].北京:人民邮电出版社,2010.[6]BruceEckel.ThinkinginJava[M].PrenticeHallPTR,2002.[7]E2ECloud工作室.深入浅出GoogleAndroid[M].北京:人民邮电出版社,2009-08-1.[8]孟索林,王世江.GoogleAndroid研发入门指南[M].北京:北京邮电出版社,2009.[9]JoshuaBloch.EffectiveJava:SecondEdition[M].Addison-Wesley,2008.[10]余志龙.GoogleAndroidSDK开发范例大全[M].北京:人民邮电出版社,2009.[11]周恒民译.JavaTCP/IPSocket编程(原书第2版)[M].北京:机械工业出版,2009.[12](美)梁勇著,李娜译.Java语言程序设计:基础篇(原书第8版)[M].北京:机械工业出版社,2011.[13]KathySierra,BertBates,BertBates.HeadFirstJava2ndEdition[M].O'ReillyMedia,2005.[14](美)李伟梦著,何晨光,李洪刚译.Android编程入门经典(移动与嵌入式开发技术)[M].北京:清华大学出版社,2012.[15](英)哈诺德著,朱涛江,林剑译.Java网络编程(第3版)——O’ReillyJava系列[M].北京:中国电力出版社,2005.致谢随着这个学期的结束,我们的毕业设计也进入了收尾阶段,在郑丽娟老师的帮助下我顺利的完成了毕业设计。本设计对于我来说是一个完全崭新的领域,以前从来没有接触过,在了解上便花了不少时间。所以非常感谢郑老师对于我在整个毕业设计过程中给予的帮助。在设计过程中难免会一些懈怠,非常感谢导师在此过程中的悉心督促与指导。还要感谢其他老师在每次检查时提出的建议,正是这些建议,才使得设计不断地接近预期和实用。最后要感谢一起做毕业设计的同学们,在设计过程中大家一起相互帮助,相互鼓励,共同完成大学四年中的最后一次考试。在设计过程中难免会遇到各种问题,不断解决各种问题就是对自己能力的提升。在完成毕业设计期间我学会了结合个人经验以及他人的建议找到一种适合自己的方案来解决问题。这一过程让我获得了很多快乐。最后真挚的感谢所有曾经帮助过我的人附录A外文翻译英文外文出处:MarkMurphy.BeginningAndroid2Chapter33MappingwithMapViewandMapActivityOneofGoogle'smostpopularservices-aftersearchofcourse-isGoogleMaps,whichletsyoufindeverythingfromthenearestpizzaparlortodirectionsfromNewYorkCitytoSanFrancisco(only2,905miles!),alongwithsupplyingstreetviewsandsatelliteimagery.MostAndroiddevices,notsurprisingly,integrateGoogleMaps.Forthosethatdo,thereisamappingactivityavailabletousersdirectlyfromthemainAndroidlauncher.Morerelevanttoyou,asadeveloper,areMapViewandMapActivity,whichallowyoutointegratemapsintoyourownapplications.Notonlycanyoudisplaymaps,controlthezoomlevel,andallowpeopletopanaround,butyoucantieinAndroid'slocation-basedservices(coveredinChapter32)toshowwherethedeviceisandwhereitisgoing.Fortunately,integratingbasicmappingfeaturesintoyourAndroidprojectisfairlyeasy.Andthereisalsoafairbitofpoweravailabletoyou,ifyouwanttogetfancy.Terms,NotofEndearmentIntegratingGoogleMapsintoyourownapplicationrequiresagreeingtoafairlylengthysetoflegalterms.Thesetermsincludeclausesthatyoumayfindunpalatable.IfyouareconsideringGoogleMaps,pleasereviewthesetermscloselytodetermineifyourintendedusewillnotrunafoulofanyclauses.Youarestronglyrecommendedtoseekprofessionallegalcounselifthereareanypotentialareasofconflict.Also,keepyoureyespeeledforothermappingoptions,basedonothersourcesofmapdata,suchasOpenStreetMap().PilingOnAsofAndroidl.5,GoogleMapsisnotstrictlypartoftheAndroidSDK.Instead,itispartoftheGoogleAPIsadd-on,anextensionofthestockSDK.TheAndroidadd-onsystemprovideshooksforothersubsystemsthatmaybepartofsomedevicesbutnotothers.NOTE:GoogleMapsisnotpartoftheAndroidopensourceproject,andundoubtedlytherewillbesomedevicesthatlackGoogleMapsduetolicensingissues.Forexample,atthetimeofthiswriting,theArchos5AndroidtabletdoesnothaveGoogleMaps.Byandlarge,thefactthatGoogleMapsisinanadd-ondoesnotaffectyourday-to-daydevelopment.However,bearinmindthefollowing:YouwillneedtocreateyourprojectwithasuitabletargettoensuretheGoogleMapsAPIswillbeavailable.TotestyourGoogleMapsintegration,youwillalsoneedanAVDthatsupportstheGoogleMapsAPI.TheBareBonesFarandawaythesimplestwaytogetamapintoyourapplicationistocreateyourownsubclassofMapActivity.LikeListActivity,whichwrapsupsomeofthesmartsbehindhavinganactivitydominatedbyaListView,MapActivityhandlessomeofthenuancesofsettingupanactivitydominatedbyaMapView.InyourlayoutfortheMapActivitysubclass,youneedtoaddanelementnamed,atthetimeofthiswriting,com.google.Android.maps.MapView.Thisisthe"longhand"waytospelloutthenamesofwidgetclasses,byincludingthefullpackagenamealongwiththeclassname.ThisisnecessarybecauseMapViewisnotinthecom.google.Android.widgetnamespace.YoucangivetheMapViewwidgetwhateverAndroid:idattributevalueyouwant,plushandleallthelayoutdetailstohaveitrenderproperlyalongsideyourotherwidgets.However,youdoneedtohavethesetwoitems:Android:apiKey,whichinproductionwillneedtobeaGoogleMapsAPIkeyAndroid:clickable="true",ifyouwantuserstobeabletoclickandpanthroughyourmapForexample,fromtheMaps/NooYawksampleapplication,hereisthemainlayout:<?xmlversion="l.0"encoding="utf-8"?><RelativeLayoutxmlns:Android=""Android:layout_width="fill_parent"Android:layout_height="fill_parent"><com.google.Android.maps.MapViewAndroid:id="@+id/map"Android:layout_width="fill_parent"Android:layout_height="fill_parent"Android:apiKey="<YOUR_API_KEY>"Android:clickable="true"/></RelativeLayout>We'llcoverthatmysteriousapiKeylaterinthischapter,inthe"TheKeytoItAll"section.Inaddition,youwillneedacoupleofextrathingsinyourAndroidManifest.xmlfile:TheINTERNETandACCESS_COARSE_LOCATIONpermissions(thelatterforusewiththeMyLocationOverlayclass,describedlaterinthischapter)Insideyour<application>,a<uses-library>elementwithAndroid:name="com.google.Android.maps",toindicateyouareusingoneoftheoptionalAndroidAPIsHereistheAndroidManifest.xmlfileforNooYawk:<?xmlversion=”1.0”encoding=”utf-8”?><manifestxmlns:Android=””package="monsware.Android.maps”><uses-permissionAndroid:name=”Android.permission.INTERNET”/><uses-permissionAndroid:name=”Android.permission

温馨提示

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

评论

0/150

提交评论