Android介绍 背景    在十一月初,Google联合34家企业成立了开放手机联盟(Open Handset Alliance)。同时,该联盟面向全球推出基于 Linux的手机操作系统“Android”,该平台是完全意义上的开放性、综合性的移动设备平台。    What is Android?        Aandroid是包括基于移动设备上的操作系统、中间件、关键应用的一组软件。而Android SDK提供了在Android平台上开发的必要的工具和APIs,该平台是基于Java语言开发的。   Android的SDK的下载和安装 平台简介   这个平台有以下功能: Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。 Dalvik virtul machine: 一个基于 Linux 的虚拟机。 Integrated browser: 一个基于开源的 WebKit 引擎的浏览器,在应用程序层。 Optimized graphics: 包含一个自定义的 2D 图形库和基于 OpenGL ES 1.0 标准的 3D 实现。 SQLite: 数据库 Media support: 通用的音频,视频和对各种图片格式的支持 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) GSM Telephony: GSM 移动网络 , 硬件支持。 Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。 Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。 Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且提供了 Eclipse 的插件。   开发环境简介 先介绍一下开发环境,下面是对系统及相关软件的版本要求: 操作系统: Windows XP or Vista Mac OS X 10.4.8 or later (x86 only) Linux (tested on Linux Ubuntu Dapper Drake) Supported Development Environments   Eclipse: Eclipse 3.2, 3.3 (Europa) Android Development Tools plugin (optional) Other development environments or IDEs JDK 5 or JDK 6 (JRE alone is not sufficient) Not compatible with Gnu Compiler for Java (gcj) Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows SDK下载和安装 1.         的下载地址是:http://code.google.com/android/download.htmlAndroid SDK 2.         将下载后的SDK的压缩包解压到适当的位置就可以了。 3.         下一步设置$SDK_ROOT/tools在你的机器的环境变量中。 现在,你可以使用运行命令:emulator.exe -skin QVGA-P启动Android的模拟器了。   下面介绍Eclipse插件ADT的安装和使用: 1.         启动Eclipse,然后选择 Help > Software Updates > Find and Install... . 2.         在resulting daialog box中,键入一个新的名称(比如:Android Plugin),然后输入它的URL: https://dl-ssl.google.com/android/eclipse/ 3.         然后点击完成   安装Android Plug完成后,重启Eclipse 1.         选择 Window > Preferences... ,打开 Preferences panel 2.         选择 Android 项 3.         在SDK Location项中,点击Browser…,然后选择SDK的的根目录即可(注意:不要选择tool目录) 这一切安装完毕之后,我们可以在Project中新建一个Android的工程了。下面是一个利用ADT创建一个Hello World的例子。 Hello,World程序演示 1 , 创建一个新的 Android 项目 启动 Eclipse, 选择  File -> New -> Project 菜单 , 如果你安装好了 Android Eclipse 插件,你将会在弹出的对话框中看到 "Android Project" 的选项。     选择 “Android Project”, 点击  Next 按钮。 2, 填写项目的细节参数 . 下面的对话框需要你输入与项目有关的参数: 这个表格中详细介绍了每个参数的含义 : Project Name: 包含这个项目的文件夹的名称。 Package Name: 包名,遵循 JAVA 规范,用包名来区分不同的类是很重要的,例子中用到的是 "com.google.android", 你应该按照你的计划起一个有别于这个的路径的名称。 Activity Name: 这是项目的主类名,这个类将会是 Android Activity 类的子类。一个 Activity 类是一个简单的启动程序和控制程序的类。它可以根据需要创建界面,但不是必须的。 Application Name:  一个易读的标题在你的应用程序上。 " 选择栏 " 的  "Use default location" 选项,允许你选择一个已存在的项目。 3,编辑自动生成的代码。 当项目创建后,你刚才创建的 HelloAndroid 就会是包含下面的代码 . public class HelloAndroid extends Activity {     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle icicle)     {         super.onCreate(icicle);         setContentView(R.layout.main);     } } 当一个项目建立好以后,最直接的效果,就是在屏幕上显示一些文本,下面是完成后的代码 : public class HelloAndroid extends Activity {     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle icicle) {         super.onCreate(icicle);         TextView tv = new TextView(this);         tv.setText("Hello, Android");         setContentView(tv);     } } 程序代码已经写好,下面运行一下: 最简便的运行方式是:右击你的Android工程,然后选择Run As ->Android Application,即可运行了   Android应用程序解析 在Android应用程序中有四个构建模块: Activity(活动) Intent Receiver(意图接受器/活动接受器) Service(服务) Content Provider(内容提供器) Android应用程序的四种构建介绍 并不是每个程序都需要所有的四个部分,你的程序可能用到它们其中一些的组合。 一旦你决定在你的程序中需要哪个组件,你应该在一个叫 AndroidManifest.xml 的文件中列出它们。你在这个 XML 文件中声明程序中用到的组件和它们的用途和需要。 u       Activity Activity Android 构造块中最基本的一种,在应用中,一个 activity 通常就是一个单独的屏幕。每一个 activity 都被实现为一个独立的类,并且继承于 Activity 这个基类。这个 activity 类将会显示由几个 Views 控件组成的用户接口,并对事件做出响应。大部份的应用都会包含多个的屏幕。例如,一个短消息应用程序将会有一个屏幕用于显示联系人列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕。每一个这样的屏幕,就是一个 activity 。从一个屏幕导航到另一个屏幕是很简单的。在一些应用中,一个屏幕甚至会返回值给前一个屏幕。当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不再使用时,还可以从历史堆栈中删除。默认情况下, Android 将会保留从主屏幕到每一个应用的运行屏幕。 Android 使用了 Intent 这个特殊类,实现在屏幕与屏幕之间移动。 Intent 类用于描述一个应用想要做什么事。 一个屏幕到另一个屏幕之间的导航是通过解析意图( Intent )来实现的。当向前导航时, activity 将会调用 startActivity (Intent myIntent) 方法。然后,系统会在所有安装的应用程序中定义的 IntentFilter 中查找,找到最匹配 myIntent Intent 对应的 activity 。新的 activity 接收到 myIntent 的通知后,开始运行。当 startActivity 方法被调用将触发解析 myIntent 的动作,这个机制提供了两个关键好处: l         Activity 能够简单的通过在 Intent 表中发送请求,从其他组件中复用功能 l         Activity 能够在任何时候由一个带有相同 IntentFilter Activity 替换   u       Intent Revicer 当你希望你的应用能够对一个外部的事件(如当电话呼入时,或者数据网络可用时,或者到了晚上时)做出响应,你可以使用一个 Intent Receiver 。虽然 Intent Receiver 在感兴趣的事件发生时,会使用 NotificationManager 通知用户,但它并不能生成一个 UI u       Service 一个 Service 是一段长生命周期的,没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个 activity ,让使用者可以选择歌曲并播放歌曲。 u       Content Provider 应用程序能够将它们的数据保存到文件中、 SQL 数据库中,甚至是任何有效的设备中。当你想将你的应用数据与其它的应用共享时, Content Provider 将会很有用。一个 Content Provider 类实现了一组标准的方法,从而能够让其它的应用保存或读取此 Content Provider 处理的各种数据类型。   Android应用程序中几种配置文件介绍 在Android的应用程序中,有res的文件夹,这里面包含着layout和 values这两类的xml配置文件。 l         Layout顾名思义,就是作为布局使用的定义文件,其中包含了默认的启示项。所有的Android布局文件必须以XML头为开始:<?sml version="1.0" encoding="utf-8"?> 。同样,下一条定义通常(但不完全)是一个某种类的布局定义,在这个例子中是LinearLayout,也就是水平布局的意思。Android的XML名字空间应该总是定义在xml文件中组件或布局的最上级,这样标签"android:"才能用在文件的其余部分: xmlns:android=" http://schemas.android.com/apk/res/android"     更加详尽的布局定义,建议参考Android文档的 Designing Your Screen in XML 》部分。 l         Values部分定义的是应用程序中的资源,诸如颜色配置、数组定义、风格样式等等。这里有String.xml,我们可以为应用程序添加所需的字符串资源。例如:Confirm这个资源,我们可以在定义UI的布局定义中使用到它。例如: