能满足用户的所有要求,所以网上就出现了各种各样的照片分享软件,来满足不同用户的不同要求。不同手机平台的手机,所支持的照片分享软件也是各不相同,而现在最流行的手机平台就是google的android手机平台,所以本课题就致力于开发出一款基于android手机平台的照片分享软件,给大家分享生活的乐趣带来更多的方便。
1.4 论文结构安排
论文将按照下面的描述进行内容的安排。
第一章引言,简要介绍了Android技术的发展,指出了课题研究的背景、意义和主要内容。
第二章Android应用软件开发的核心技术及搭建环境,如Android应用程序组件,数据库技术做了分析和探讨。
第三章描述了软件需求,明确了软件开发的目标,描述了软件的层次结构。
第四章照片分享系统,介绍了显示照片,分享照片,读取手机通讯录部分功能以及发送到指定邮箱的实现。
第五章软件测试,描述了对该照片分享系统进行的测试。说明了测试的测试环境、测试方法并记录了测试结果。
第六章总结了本课题的研究工作,提出了今后进一步工作的方向。
第二章 Android应用软件开发技术原理
2.1 Android应用软件开发的核心技术
2.1.1 Android应用开发语言
Java是Android上的主流开发语言,各种支持也最完善。Android发布的API和SDK也都主要是面向Java开发人员的。我们的照片分享也是用Java开发的。
2.1.2 Android应用程序组件
Android应用程序最大的一个特点就是每个应用都由若干组件构成。而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。例如假设我们需要编写一个内嵌有网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的Chrome Lite浏览器组件。又如假设我们编写了两个应用程序,其中一个程序中有列表显示图片的组件,那么我们在另外一个应用程序中就可以使用该组件,而不需要再编写该功能。也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。
Android应用程序的组件有以下四种:
1. Activities
一个activity实际上表现出来的就是一个程序的界面。这个界面可能有许多种不同的形式,比如有列表形式,有文字形式,有图像格子等形式。一个应用程序也可能有不止一个activity。比如一个短消息的程序,需要有列表显示所有消息的activity,还至少需要一个编辑短消息的activity(界面),还可能需要设置、菜单等界面。
每个activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其它窗口之上(如Android中的Toast信息),Activity中显示出来的内容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的activity。我们可以用Activity.setContentView()方法来设置一个activity中所要显示的view。
2. Services
service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的"服务"一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,service组件是至关重要的。以下载管理器为例,用户肯定希望能够在切换到其它程序时仍然在后台进行下载,这就需要用到service完成下载工作。而显示下载进度、已下载文件等信息则由activity完成,同时我们还希望能控制下载过程,如停止、继续等,这就需要activity与service之间进行通信。 Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制后台service的行为。
3. Broadcast receivers
Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载完毕等。
Broadcast receiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其它组件去处理广播消息。它可以启动一个activity来同用户交互,也可以使用NotificationManager向用户发出通知。NitificationManager的通知形式有许多种,比如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。
4. Content providers
content provider是一种为其它应用程序提供数据的组件。这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其它任何有效的方式保存。ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。其它应用程序在需要使用这些数据时,可以用ContentResolver对象,使用其中的方法。ContentResolver可以与任何content provider交互,获取其中的数据。
只要需要某个组件,Android就会尽力保证它的可用:如果该组件还没启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。
2.1.3 Intent介绍
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
2.1.4 AndroidManifest.xml 文件
在Android启动某个程序之前,它得事先知道程序中有哪些组件。因此,apk文件中需要有一些描述信息,告知Android系统,这个任务就由AndroidManifest.xml文件完成。
AndroidManifest.xml文件是一个结构化的XML文件,它除了包含有各个组件的信息,还包括许多其它的信息,如声明该程序所需要用到的库、声明所需要的权限等。它的基本样式如下所示:
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . >
. . .
在Android启动某个程序之前,它得事先知道程序中有哪些组件。因此,apk文件中需要有一些描述信息,告知Android系统,这个任务就由AndroidManifest.xml文件完成。
AndroidManifest.xml文件是一个结构化的XML文件,它除了包含有各个组件的信息,还包括许多其它的信息,如声明该程序所需要用到的库、声明所需要的权限等。它的基本样式如下所示:
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . >
. . .
不难看出,name,icon,lable这些属性就分别指activity的名称、图标、标识。我们通过manifest描述程序的信息,Android系统就能读取出来并产生相应的行为。在Android启动某个程序之前,它得事先知道程序中有哪些组件。因此,apk文件中需要有一些描述信息,告知Android系统,这个任务就由AndroidManifest.xml文件完成。
AndroidManifest.xml文件是一个结构化的XML文件,它除了包含有各个组件的信息,还包括许多其它的信息,如声明该程序所需要用到的库、声明所需要的权限等。它的基本样式如下所示:
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . >
. . .
不
上一篇:
基于Android的会议白板
下一篇:
试论APP广告在手机中的应用