




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州科技学院本科生毕业设计(论文)手机遥控器的设计与实现(手机端)摘 要本文主要介绍了在Android平台上的手机虚列鼠标和虚列键盘的应用。利用socket接口与电脑端连接,将控制鼠标和键盘的指令通过socket端口传递到电脑端。成功设计了一款可以通过手机遥控电脑演示PPT的应用软件。教师利用该软件可以在离开讲台的同时,轻松的完成课件讲课的任务。此软件简单实用、图文并茂,使用户获得最佳的体验。“手机遥控器”的界面设计主要采用了LinearLayout布局和TableLayout布局。功能实现主要采用的是与电脑之间实现socket通信,成功的发送和接受指令,并且响应,从而控制PPT演示。本文主要包括4个部分:1、引言:课题背景;发展的前景。2、需求分析:类似软件的分析;软件架构分析。3、软件设计:论文的主体部分。界面规划、功能实现和技术难点的解决。4、软件测试:软件的后期处理,功能的测试,实际操作的演示。关键词 Android开发、Java、手机遥控、Socket、图形界面、EclipseDesign and implementation of mobile remote controller (mobile client)AbstractThis paper introduces the application of the virtual column and the virtual column keyboard based on the Android platform. Using the socket interface to connect computer terminal passed the commands of control of the mouse and keyboard to the computer through the socket port. We have successfully designed application software that through the mobile phone remote control computer and demonstrate PPT. Teachers use the software can easily complete the task of courseware lectures while leaving the podium. This software is simple and practical, illustrated. Users can get the best experience.The interface design of the mobile remote controller mainly adopts LinearLayout and TableLayout. Function implementation mainly adopts socket communication between the computer and the mobile phone. Successfully sending and receiving instructions, and responding, thus controlling PPT presentations.This paper mainly consists of 4 parts:1、Introduction: The background; Prospects for the development.2、Demand analysis: Analysis of the similar software; Structure analysis3、The software design: Main body of the paper. interface planning; function implementation and the solution of technical difficulties.4、The software testing: Post processing software; the functional testing; the demonstration of the practical operation.Keywords Android development; Java; mobile remote control; Socket; graphics interface; Eclipse3目 录摘要ABSTRACT1 绪论11.1 课题背景11.2 平台的选择11.3 课题目前的发展现状和前景22 需求分析32.1 软件的架构分析32.2 类似软件的分析32.3 软件开发的主要技术53 软件设计63.1 界面规划及设计93.1.1 界面的规划93.1.2 界面的设计103.2 主要功能的实现113.3 技术难点及解决方法123.3.1 软件闪退问题123.3.2 界面跳转问题134 软件运行测试14结论 16致谢 17参考文献 18附录A 19附录B 291 绪论1.1 课题背景在现代的移动通信的高速发展中,手机在人们的日常生活中扮演了一个很重要的角色。而在手机用户中,智能手机用户占据了很大部分,用户对手机的要求和依赖变的越来越高。由于智能手机走进人们的世界,它已成为人们随身而带的主要设备,为手机应用软件开发提供了很大的发展空间。越来越多的手机软件应运而生,其中有很多手机软件被应用于教学教育上,本课题就是开发一款用于教学上的智能APP手机遥控器。在局域网中,使用手机遥控PPT演示,实现老师离开讲台依旧可以通过课件给学生演示的功能。本课题的最主要的目的在于掌握基于Java的框架开发技术和Socket通信技术。以Java语言为基础,在已有局域网的手机端通过socket链接至电脑端架设的端口,让电脑端实现监听,通过手机端给电脑端发送各类指令,电脑端实施监听、接受、编译、响应,最后实现最基本的关于PPT放映的控制和操作。1.2 平台的选择目前智能手机的系统大多数使用的是Symbian OS、Windows Phone、IOS以及Android等。而在这些的智能系统中,Symbian OS、Windows Phone及IOS等系统又比较封闭,满足不了手机用户的需求,所以平台的开放性越来越被市场所追求。Android则与他们相反,走了一条完全开放自己平台的道路。这种模式在PC软件邻域已经被业界所公认,这也是它的一个优势所在。在这种模式下,自由软件会比较活跃,当出现错误时会很快被修正,新的创意也会层出不穷。Android拥有五大优势:1. 平台开放性;2. 逃离运营商的束缚;3.硬件选择多样化;4. 系统开源;5. 可以直接拥有很多的Google应用。Android平台的开放性允许任何一个开发者加入到它的联盟中来,无论是第三方厂商还是私人爱好者,这样的优势为它带来了更多的开发者。而且Android的开发可以直接使用一些配置文件来实现图片的布局,然后使用Java代码来响应这些设置,相对于其他平台的开发会方便很多。Android还为那些开发者提供了大量的API和现有的应用工具,这样的简单快捷化对开发者具有很大的吸引力。并且由于它的独立性,硬件设备的选择比较多样化,软件的设计将不再局限于硬件的配置问题。综上所述,我们决定选择在Android平台上进行软件的设计与开发。本课题的意义在于通过设计一款操控电脑鼠标和键盘的手机应用软件,熟练掌握Android平台提供的应用程序接口和Android平台上的各种应用,熟悉Java语言的运用,socket的架设与链接。1.3 课题目前的发展现状和前景由于互联网的高速发展,现如今,我们正处于一个高智能化的时代,身边出现的都是各类的智能家居、智能电器等。但是随着智能手机的发展,智能将不仅仅局限在电脑上。在不久的将来,可以通过手机控制的智能电视、智能空调等将会逐渐占领全球市场,而今后我们的生活也将围绕智能来展开。虽然这个遥控器,目前只涉及到了电脑和手机之间的链接和通信,但是,我们可以想象,当我们熟悉了智能家电的操作系统后,也可以使用相应的手法,将其复制到智能家电上,然后通过手机遥控家电。而且,随着目前Android系统广泛使用,开源软件也在大肆的发展,我们可以预料到今后的家电里使用Java语言的概率极其的高,我们可以方便的将其移植到各类家用电器中去。同时,一旦可以完成链接,各种功能的扩展也是轻而易举,我们可以轻松的实现在家里开设局域网并且控制全家的各种家电。或者在此之上更加发展一下,实现在互联网中的远程控制。在公司,在室外也能实时控制各种家电的各种工作。2 需求分析2.1 软件的架构分析“手机遥控器”的主要功能是通过手机的按钮触发实现电脑上鼠标及键盘的按键功能,从而控制PPT的演示。其功能主要包括:与电脑之间建立通信、发送特定的按键指令、电脑端接受指令并分析编译、最后电脑响应指令。手机端的开发工作主要在于Android的图形界面的设计以及建立socket通信。我们采用Java语言来实现Android界面设计以及按钮功能,主要包括与电脑端链接(建立通信)的登陆界面(IP地址、socket端口的登陆链接)和控制界面。其中控制界面是最主要的功能界面,也是本软件的主体部分。其中包括两个部分:1、虚列鼠标的左击、右击;2、虚列键盘的上、下、左、右四键以及Enter键。给这些按钮包括鼠标的左击右击、键盘的上下左右键以及Enter键设置特定的指令。实现当触碰这些按钮时,手机会向局域网内的同个端口中的电脑端发送相应的指令,然后电脑端那边实现端口监听,接受指令并编译响应,从而可以很好的控制PPT的演示。2.2 类似软件的分析目前,在市场上,与本课题相像的“遥控器”APP有很多,各种各样的“遥控器”层出不穷,我们从中选择两款与本课题类似的进行分析:PPT遥控器(如图2-2-1)图2-2-1这款软件也是采用的socket通信的技术来完成手机控制电脑的,包括手机端和电脑端两个。其手机端包括两个界面:连接界面;控制界面。其连接界面包括两个输入框,一个图片按钮。控制界面为五个呈一行的普通按钮,两个图片按钮。其图片按钮控制的是键盘的左右两个方向键,也就是播放PPT时的上一页和下一页。上排五个普通按钮为“播放”、“停止”、“暗屏”、“亮屏”、“导航”,分别代表启动播放、停止播放、屏幕全白、屏幕全黑、显示PPT的目录列表。相对来说功能还是挺齐全的,就是界面的设计排版比较单调,布局没有运用的好。remote mouse(如图2-2-2)图2-2-2这款软件相对就比较高级一点,当然,它也是使用的socket通信技术。它包括鼠标的功能;全屏幕鼠标界面;全屏幕键盘界面;触摸板功能;手势识别功能。这款软件最大的特点就是触摸板的功能。设置触摸屏首先界面布局必须采用绝对布局,这样才能准确的获取触摸是滑动的方向。主要就是给手机界面设定一个二维的坐标系,最后当手指在手机屏幕上滑动时,获取手指滑动的距离和方向,通过socket通信技术,发送给电脑端,电脑端再将其编译成触摸屏的指令,完成虚列触摸屏的设计。其次,这款遥控器还设置的一些手势功能。其实,对于手机端来说,需要完成的只是获取这个手势,将其编译成特定的字符串,然后将其发送给电脑端。功能的实现主要在电脑端,电脑端获取这个特定的字符串后,再将其编译成特定的功能。相比较这两个软件,我们设计的是一个中等水平的遥控器,注重于界面的新颖,主要功能键的实现,摒弃复杂的触摸屏设计。2.3 软件开发的主要技术手机端的开发主要是基于Eclipse的开发平台。通过其中自带的ADT(Android Developer Tools)插件进行开发,利用Java语言编写代码。Socket通信:在局域网中,Android通过socket端口与电脑端链接,电脑端在同一端口中对手机端实施监听,手机通过端口给电脑端发送指令,电脑端接受、编译并响应。布局管理:Android系统中,界面的布局是特别重要的,它就好比是一个人的穿衣着装,直接影响到用户的使用的感受。此软件主要采用了LinearLayout(线性布局)和TableLayout(表格布局),其中背景是采用了FrameLayout(框架布局)。图形界面的设计:使用Photoshop等软件完成图像和图形的处理,对整个图形界面进行排版,完成整个图形界面的设计。其中包括界面背景的设计以及图片按钮的排版及设计。3 软件设计对软件设计之前,先要搭建Android的开发环境,开发平台。首先,需要一个开发的工具,我选择的开发工具是Eclipse(可以在网上下载),其中自带Android的开发插件ADT(Android Developer Tools)。其次我们需要搭建一个环境。下载安装JRE(Java Runtime Environment,Java运行环境)以及JDK(Java Development Kit,Java语言开发工具包)。这一步是Java开发中最重要的一步,必不可少,缺少了环境和工具包是进行不了Java开发的。我们可以在百度上找到适合自己电脑系统的JRE以及JDK,然后下载并安装。当JRE和JDK安装完成后,我们就需要修改一下电脑的环境变量和系统变量了。在“控制面板”中的“系统”选项,点击“高级系统设置”,其中有个“环境变量”的按钮,然后点击进入环境变量设置的界面。在系统变量下面新建两个变量并设置参数:第一个变量名为“JAVA_HOME”,其变量值为“刚刚JDK的安装路径”;第二个变量名为CLASSPATH,变量值为“.;%JAVA_HOME%lib;%JAVA_HOME%lib tools.jar”(加.表示当前路径);选择其中的变量Path,在变量值最后添加 “;%JAVA_HOME%bin;%JAVA_ HOME%jrebin;”。(如图3-1)图3-1以上步骤完成之后就可以开始Java的开发了,但是Android开发之前还需要一个很重要的东西Android SDK(software development kit,Android软件开发工具包),Android专属的一个软件开发工具包。首先下载SDK,然后直接解压就可以。打开SDK manager.exe(如图3-2),选择你所需要的工具包,然后等待它下载安装完成(由于目前Google的服务器的问题,速度可能会比较慢)。当下面的进度条完成时,就代表下载安装完成了。图3-2这时我们就可以开始我们的软件设计了,打开Eclipse安装插件ADT(Android Developer Tools),然后重启Eclipse。3.1 界面规划及设计3.1.1 界面的规划系统主要使用了两个页面:登陆页面、控制页面。登陆页面主要设置两个输入框,一个确认按钮;控制页面主要是功能按钮。由两个Activity完成。程序流程图如图3-1-1:图3-1-13.1.2 界面的设计整个程序是通过socket通信的,所以手机端和电脑端必须在局域网中才能完成发送和接受指令。因此在实现手机控制PPT之前,必须先保证APP链接上电脑端的同一个IP地址中的同一个端口。因此我们先设计一个登陆页面(如图3-1-2)。我们采用的是线性布局为主,表格布局为辅,其中的IP输入框和端口输入框为表格布局,背景图我们使用的是框架布局(如图3-1-3)。图3-1-3图3-1-2当输入的IP和端口正确时,点击确定就会跳转到控制页面(如图3-1-3)。其中包括两个鼠标按钮:左击、右击,五个键盘的图片按钮:上、下、左、右以及enter键(图3-1-4中的对号图标)。可以通过点击按钮发送相应的指令给电脑端,电脑端相应,实施对PPT的控制。同样我们采用的是线性布局和表格布局,其中下方的方向按钮布局为表格布局,使用了三行表格。背景使用的是框架布局(如图3-1-5)图3-1-5图3-1-43.2 主要功能的实现“手机遥控器”APP是一款以页面布局、数据的传递和处理、端口链接监听为主要技术,通过Photoshop等软件对图像进行处理排版,设计的一款通过手机控制电脑鼠标以及键盘部分按键功能的智能手机应用软件。主要功能实现如图3-2-1:图3-2-1我们用setOnClickListener语句给这些按钮创建一个监听信息的功能,再创建一个onClick的方法,实现当按这些按钮时给端口发出指定的信息的功能(如图3-2-2)。图3-2-2同时将监听来的信息通过端口发送给电脑端(如图3-2-3)图3-2-2电脑端主要是实现一个socket监听的功能(如图3-2-3),当打开程序时监听端口的信息,使用robot语句控制按键的功能实现。图3-2-33.3 技术难点及解决方法3.3.1 软件闪退问题一般Java代码中,catch语句会将所有的错误全部catch出来,显示在控制台中。而当软件应用在手机中时,当出现错误,手机并不具备后台控制台的功能,不能显示具体错误。这时软件就会报错,出现闪退的问题,也就是现在人们所谓的bug。所以需要在catch语句中添加一个show()语句,显示出现错误,使软件不会闪退,如图3-3-1。图3-3-13.3.2 界面跳转问题手机端与电脑端的连接必须在同一局域网中,通过socket的链接,当触发登陆界面中的“确认”按钮时,如果手机端输入的IP与端口与电脑端给出的端口一致时,界面就会跳转到控制页面,同时电脑端与手机端就会链接,并实时监听功能,如图3-3-2。图3-3-24 软件运行测试在完成一系列的程序编写后,我们就可以与完成电脑端设计的人连接到一个局域网内进行一个测试。首先需要将这个APP安装到手机内,APP的安装包在此项目包的bin包中(如图4-1),将其拖入手机中安装。图4-1安装完成后,然后点击打开。同时运行电脑端的程序,电脑端给定一个端口号。手机端输入,并确认(如图4-2所示)。图4-1当输入正确时,页面就会跳转到控制界面。我们尝试点击Enter键(图4-2中的对号图标),查看电脑端,确定收到“keyboard:key,Enter,click”的指令。在尝试点击鼠标左击按钮,电脑端显示收到指令“mouse:lift,click”。(如图4-2所示)图4-2最后我们打开PPT,将电脑端程序最小化后,点击手机端上的虚列键盘和鼠标,功能完全实现,PPT顺利演示。结 论本文主要研究了Android手机应用软件开发的技术,实现手机与电脑之间的socket通信的建立。此软件主要是建立了一个虚列鼠标和虚列键盘的功能,优点在于软件操作比较简单上手,功能确是实际好用,非常方便于教师的讲课。本文实现的手机遥控器是基于Android平台进行开发的,但是还没能够真正的实现出Android的精髓。软件的功能还不够完善,目前只涉及了简单的按钮触发功能,像文字输入、触摸板等一些的功能并没有涉及。由于时间的问题,一些报错的处理没有很好地解决。希望能在以后的学习过程中进一步的改进。致 谢首先需要感谢的是我的指导老师时百胜老师。在我这个软件的开发过程中,时老师能在忙碌的教学工作中抽出宝贵的时间对我进行相关的辅导和关怀,在设计完成的过程中不厌其烦的解答我提出的各类问题。由衷的感谢时老师能够不断的督促并且定期检查此软件完成的进度,最终才能使我完成这个软件的开发。同时感谢负责此项目电脑端开发的同学王雨生,在软件最后与电脑链接的问题上花费了很多心血,在编译电脑端的同时能帮助我处理很多手机端上的问题。在论文排版出现问题时,宿舍舍友们也提供了很大帮助。因为个人水平的问题,论文难免有一些不足之处,诚请各位老师雅正。在最后,再次感谢帮助过我的老师、同学和朋友们!参 考 文 献1 郭志宏. Android应用开发详解M.电子工业出版社. 2010.2 杨丰盛.Android应用开发揭秘M. 机械工业出版社. 2010.3 Frank Ableson.Introduction to Android developmentJ.developerWorks,2009,10(7).4 余志龙,陈昱勋,郑名杰,陈小凤,郭秩均. Google Android SDK开发范例大全M.人 民邮电出版社. 2009.5 李宁. Android/OPhone开发完全讲义M. 中国水利水电出版社. 2010.6 Ed Burnett, Hello, Android: Introducing Googles Mobile Development PlatformJ. PRAGMATIC BOOKSHELF,2010.7:10-11.7 Rick Rogers, John Lombardo.Android Application DevelopmentM.OReilly Media,Inc.2009.附录A 外文参考文献(译文)安卓应用开发基础在Java编程语言编写的Android应用程序的Android的SDK工具编译代码以及与任何数据和到一个Android的包,一个归档文件档案资源的.apk后缀,所有的在一个单一的代码.apk文件被认为是一个应用程序,是Android的文件,供电设备来安装应用程序。一旦安装在设备上,每个Android应用程序的生命在它自己的安全沙箱:而Android操作系统是一个多用户Linux系统中,每个应用程序是一个不同的用户。默认情况下,每个应用程序的系统分配一个唯一的Linux用户ID(该ID仅用于由系统是未知的应用程序),系统设置所有的应用程序中的文件权限,以便只有用户ID分配给该应用程序可以访问它们。每个进程都有它自己的虚拟机(VM),因此应用程序的代码在从其他应用程序隔离运行。默认情况下,每个应用程序运行在它自己的Linux进程。Android的启动过程时,应用程序的任何组件需要被执行,然后关闭该进程时,它不再需要或恢复时,系统必须为其他应用程序的内存。这样一来,Android系统实现了最小特权原则,也就是说,每个应用程序,默认情况下,只能访问的组件,它需要做的工作,没有更多,这将创建一个非常安全的环境,使应用程序无法访问的,这就是它没有给予许可制度的部分。但是,有一个应用程序的方法与其他应用程序和应用程序访问系统服务的数据:这有可能为两个应用程序安排共享相同的Linux用户ID,在这种情况下,它们能够相互访问的文件。为了节约使用相同的用户ID系统资源,应用程序还可以安排运行在相同的Linux进程和共享同一个VM(应用也必须使用相同的证书签名)。应用程序可以请求访问权限,如用户的联系人,短信,可安装存储(SD卡),摄像头,蓝牙等设备的数据,所有应用程序的权限必须由用户在安装时授予。 这涵盖了基本就如何Android应用程序在系统中存在这个文件的其余部分向您介绍:1、框架的核心组件定义应用程序。2、清单文件中声明组件和应用程序所需的设备功能。3、资源是从应用程序代码分开,并允许您的应用程序正常优化的设备配置各种其行为。应用程序组件(Application Components)Android的核心功能之一就是一个应用程序可以使用其它应用程序的元素(如果那个应用程序允许的话)。比如说,如果你的应用程序需要一个图片卷动列 表,而另一个应用程序已经开发了一个合用的而又允许别人使用的话,你可以直接调用那个卷动列表来完成工作,而不用自己再开发一个。你的应用程序并没有吸纳 或链接其它应用程序的代码,它只是在有需求的时候启动了其它应用程序的那个功能部分。为达到这个目的,系统必须在一个应用程序的一部分被需要时启动这个应用程序,并将那个部分的Java对象实例化。与在其它系统上的应用程序不同,Android应用程序没有为应用准备一个单独的程序入口(比如说,没有main()方法), 而是为系统依照需求实例化提供了基本的组件。共有四种组件类型:活动(Activities)一个 activity 代表用户界面的一个独立屏幕。例如,一个邮件应用程序应该有一个 activity 用于显示新邮件列表,另一个 activity 用于撰写一封邮件,还有一个 activity 用于读取邮件。尽管所有 activitie 协同工作以构成邮件应用程序的用户体验,但彼此之间相对独立。应次,不同的应用程序能够从任何一个 activity 启动 (只要邮件应用程序允许)。例如,用户需要分享一张照片,一个拍照应用程序能够启动邮件应用程序的 activity 。activity 是一个实现了 Activity 的子类,你可以在 Activities 开发者指导部分了解更多。服务(Services)service 是在后台运行,执行长时间操作或者执行远程操作。 service 不提供用户界面。例如,当用户在另一个应用程序时,一个 service 可在后台播放音乐,或者是从网络上获取数据,而不阻断用户与当前 activity 的交互。其他组件,比如一个 activity ,为了与该 service 互动,可以启动或者 绑定它。service 是一个实现了 Service 的子类,你可以在 Services 开发者指导部分了解更多。广播接收器(Broadcast receivers)广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播比如说,通知其它应用程序一些数据下载完成并处于可用状态。应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。所有的接收器均继承自BroadcastReceiver基类。广播接收器没有用户界面。然而,它们可以启动一个activity来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力闪动背灯、震动、播放声音等等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。内容提供者(Content providers)内容提供者将一些特定的应用程序数据供给其它应用程序使用。数据可以存储于文件系统、SQLite数据库或其它方式。内容提供者继承于ContentProvider 基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个ContentResolver 对象,调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。参阅独立的内容提供者Content Providers 章节获得更多关于使用内容提供者的内容。每当出现一个需要被特定组件处理的请求时,Android会确保那个组件的应用程序进程处于运行状态,或在必要的时候启动它。并确保那个相应组件的实例的存在,必要时会创建那个实例。Android系统设计的一个独特方面是任何的一个程序都可以启动另一程序的组件。比如,你想让你的程序可以使用照相机拍照,如果已经有了实现这种功能的程序并且你你的程序能使用它(有权限),那么你就没有再要再写一个新的Activity来实现这个功能。你的程序不需要包含或者链接这个拍照程序。相反,你只需要在你的程序中打开这个拍照程序中的实现拍照功能的Activity。当拍完之后,拍好的照片甚至会自动返回给你的程序。者对于用户来说,就好像是想拍照功能的程序就是你的这个程序的一部分一样。当系统启动一个组件之后,如果这个组件所在的程序之前没有运行的话,系统会自动开始这个程序的进程,并初始化这个组件所需要的相关类。比如,你的程序开启了一个拍照功能程序的Activity,这时系统会启动这个Activity所在的程序,所以这个Activity运行在拍照功能的程序当中,而不是在你的程序中。所以,不像其他操作系统的中的程序一样,Android程序没有一个单独的入口点(比如没有我们常见的main()函数)。 因为系统中的程序运行在自己的独立进程中,并且程序中的文件都有自己的限制其他程序访问的权限,所以,你的程序不能直接激活其他程序中的组件。但是Android系统就可以。具体是这样的实现的,为了激活(activate)其他程序中的组件,你必须向系统发送一个消息来详细说明你要启动其他组件的意图,这样系统才会为你激活这个组件。 激活组件(Activating Components)四大组件中的三个组件activities、services和broadcast receiver是由一种叫intent的异步消息来激活的。这些intents在运行时(runtime)将这些属于你的程序或不同程序的单独的组件绑定在一起(bind),你可以把这些intents看作是需要其他组件的action的messengers。一个intent就是一个Intent对象,这个intent定义了一种可以激活(activate)某个特定组件或者某种特定类型的组件,这两种情况分别对应两种intent的定义方式或者显示的或者隐式的。对于activities和services,一个intent定义了要执行的操作(action)(比如,要“view”或者“send”什么)和要操作的数据的URI。比如,一个intent可能会为一个activity传递一个请求来展示一张图片或者打开一个网页。有时,你可以启动一个activity来得到返回的结果,在这个例子中这个activity的返回的结果也是一个Intent(比如,你可以发送一个intent让用户选择一个personal contact并返回给你这个返回的intent就包含了一个指向用户选择的联系人的URI)。(关于activity和service的启动方式,下面将介绍。)对于广播接收者来说,intent只是简单的定义了要广播的内容(比如,一个用以表明电池电量很低的广播仅包含了一个表明电池电量很低的字符串)。最后一种组件类型content provider并不是由intent来激活的(activate)。而是由接收到ContentResolver的请求时激活的。它们都各自有自己的方法来激活相应的组件:你可以通过传递一个Intent给startActivity()或startActivityForResult()启动一个activity(或者给他一些新的要做的内容)。使用startActivityForResult()你将得到一个返回结果。你可以通过传递一个Intent给startService()来start一个service(或者给一个正在运行的service一些新的指令(instructions))。或者你可以通过把一个Intent传递给bindService()来绑定一个service。你可以通过传递一个Intent给诸如sendBroadcast()、sendOrderedBroadcast()或者sendStickyBroadcast()等方法来初始化一个广播。你可以通过调用ContentResolver的query()方法来执行一次content provider的查询操作。更多的关于intent的内容,可以参看文档中的Intents and Intent Filters。更多的关于激活特定组件的内容可以参看文档中的:Activities、Services、BroadcastReceiver、Content Providers。关于Manifest文件在Android系统可以启动一个应用程序组件之前,Android系统必须通过读取这个程序的AndroidManifest.xml(即manifest文件)文件来确定要启动的组件存在。你的程序必须在这个manifest文件声明用到的所有的组件,并且这个manifest文件必须在项目的根目录下。另外,这个manifest文件还声明一些其他的东西,比如:确定这个程序需要的所有权限,比如Internet访问权限或者读取用户联系人权限。声明这个运行这个程序所需要的最低API版本,这个可以根据开发该程序所使用的API版本。声明该程序所需要的硬件或软件特征(features),比如照相机、蓝牙服务或者多点触屏。声明该程序需要链接(link against)的API库(不是Andorid的framework APIs),比如Google Maps library。组件声明Manifest文件的首要任务就是通知系统关于程序中要使用的组件。比如,一个manifest文件可以用如下的方式来声明一个activity:java view plaincopy1. 2. 3. 4. 6. 7. . 8. 9. 在元素中,android:icon属性用于指定一个用于标示该程序的icon。在元素中,android:name属性用于确定这个扩展自Activity的子类的全路径名,android:label属性用于标示这个activity的对于用户可见的label。你必须要用以下方式来声明你的程序组件:1、activities:标签2、services:标签3、broadcast receiver:标签4、content providers:标签如果程序中用到activities、services和content providers,你没有在manifest文件中声明,那么这些组件将不会被系统知道,结果就是你的程序不能运行。然而,broadcast receiver既可以在manifest文件中声明也可以在代码中动态创建(BroadcastReceiver),并通过调用registerReceiver()在系统中注册。更多关于怎样为你的程序构建manifest文件,请参看文档The AndroidManifes.xml文件。声明组件的能力正如在上面Activating Components中讨论的那样,你可以使用一个Intent来启动activities、services和broadcast receiver。你可以通过在intent中注明目标组件的名字(使用的是组件的类名)来显示的启动组件。然而,intents真正强大的地方在与关于intent的actions的概念。通过intent的actions,你可以简单的描述你要执行的操作的类型(并且可以有选择的描述你要处理的数据),可以允许系统在device中找到这个组件并启动它。如果有多个组件可以执行intent中描述的action,这时用户就可以选择一个来执行。系统可以识别能对某intent做出反应的方式是通过将接收到的intent和设备中其他程序的manifest文件的intent filters进行比较实现的。当你在程序的manifest文件中声明一个组件之后,你可以有选择包含intent filters,这些intent filters表明了组件对接收自其他程序的intent做出反应的能力(capabilities)。你可以通过添加一个元素作为a child of the components declaration element来为你的程序声明一个intent filter。比如,在一个邮件程序中的一个activity可以编写新的邮件,这样的话你就需要在manifest文件中来声明一个intent filter来对“发送”intent响应(为了发送邮件)。这样,在你的程序中,一个activity就可以创建一个发送intent(ACTION_SEND),这样当你调用startaActivity()时,系统就会匹配邮件程序中的发送activity并启动它。更多关于创建intent filters的内容,可以参看Intents and Intent Filter文档。声明运行程序所需的条件Andorid系统可以支持很多不同的设备,并且这些设备的性能特征并不相同。为了防止你的程序被安装在不能正常运行你的程序的较低android系统版本上,通过在manifest文件中声明你的程序支持的设备和软件,便变得尤其重要起来。大多数的这些声明仅是一些信息,而系统并不会读取它们,但是其他的服务比如Android Market却会阅读这些声明来帮助通过通过自己的设备搜索软件的用户过滤软件。比如,你的程序需要照相机,并且使用的Android2.1的APIs,那么你就必须在你的manifest文件中声明这些需要。这样的话,在Android Market上,没有照相机或者Android系统版本低于2.1将不能安装你的程序。然而,如果你的程序不需要照相机,你仍可以声明你需要照相机。这种情况下,你的程序必须在运行时做一下检查,来检查这个设备是否含有照相机,如果没有照相机可用,则系统将会使使用照相机的相关程序不能用。下面是一些你在设计和开发你的程序时,必须要考虑的关于设备的一些重要方面:屏幕大小和分辨率:为了根据屏幕的类型进行分类,Android定义了两个特征:屏幕大小和分辨率。屏幕尺寸有: 小,中,大,超大;屏幕分辨率类型:低分辨率,中分辨率,高分辨率,超高分辨率;默认情况下,你的程序可以兼容所有的屏幕尺寸和分辨率,因为Android系统对你的程序的UI布局和image资源做了适当的调整。输入方式:很多设备有不同类型的输入方式,比如键盘、轨迹球、五位元导航。如果你的程序需要某特定形式的输入方式,则你必须在manifes文件中使用标签来声明。不过这种情况是比较少的。设备配置:有许多硬件或软件并不全在Android系统的设备上,比如,一个照相机、光线传感器、某个版本的 OpenGL,或者屏幕的保真度(fidelity)。你在任何条件下都不能假定Android设备具备某种特性(feature)(当然得除掉Android标准库的情况),所以如果你的程序使用了某feature,则你必须使用标签来声明。不同地 Android 平台设备通常运行不同版本的 Android ,比如 Android 1.6 或者 Android 2.3。每个后续版本通常包含之前版本所不支持的新增 API。 In order to indicate which set of APIs are available, 每个平台版本对应一个 API Level (例如, Android 1.0 对应于 API Level 1 , Android 2.3 对应于 API Level 9)。如果你使用任何在 1.0 版之后平台新增的 API,你应该使用 元素声明最低 API Level 是包含这些 API的。为你的应用程序声明所有这些要求至关重要,因为,当你在 Android Market 上发布你的应用程序时,Market 使用这些声明来过滤该应用程序是否对于每台设备可用。 这样,你的应用程序仅对能够满足你的应用程序要求的设备可用。应用程序资源一个应用程序不仅仅由代码组成它需要区别于源代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古师范大学实验幼儿园人员招聘3人模拟试卷及答案详解(有一套)
- 2025内蒙古鄂尔多斯市达拉特旗公立医院引进卫生高层次人才和紧缺专业人才5模拟试卷附答案详解(模拟题)
- 2025年福建省漳州市诏安县消防救援大队政府专职消防员招聘10人考前自测高频考点模拟试题及参考答案详解一套
- 2025河南新乡市拓晋科技中等专业学校招聘考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025河南工学院诚聘国内外高层次人才60人模拟试卷带答案详解
- 2025福建石狮农商银行春季招聘8人模拟试卷及完整答案详解一套
- 2025年甘肃省平凉市华亭市第二人民医院招聘编外人员模拟试卷及完整答案详解
- 2025甘肃平凉第二批市直单位公益性岗位工作人员招聘37人考前自测高频考点模拟试题及答案详解(典优)
- 2025内蒙古大唐锡林浩特电厂招聘专职消防员1人模拟试卷含答案详解
- 2025内蒙古森工集团招聘高校毕业生50人(第一批)考前自测高频考点模拟试题及1套完整答案详解
- 采购业务审计培训
- 2025-2026学年冀美版(2024)小学美术二年级上册(全册)教学设计(附目录P284)
- 招聘渠道分析评估表
- 2025年注册安全工程师考试 安全生产法律法规与标准冲刺押题卷
- 服装色彩构成课件
- 2025年华为软件开发工程师招聘面试题库及答案解析
- 程序化广告课件
- 电工基础课件
- 副校长在任职宣布会上的表态发言材料
- 2025年建设工程质量检测行业现状分析及未来五年运行态势
- 三级综合医院健康管理学科建设模式:理论、实践与创新
评论
0/150
提交评论