您现在的位置: 弘智首页 > Android > android资料下载 >

用 Eclipse 开发 Android 应用程序(一)

时间:2012-10-29 来源:弘智教育 点击: 次

开始之前

本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程序。第一个示例是一个基本的应用程序,涉及构建和调试的所有阶段。第二个应用程序示例涉及比较复杂的 Android 特性,包括联系人搜索和 Google Maps 地址查找。要想从本教程获得最大收益,具备移动开发经验会有帮助,但不是必需的。开发 Android 应用程序需要 Java™ 编程技能,但是对于本教程不是必需的。

关于本教程

我们为什么要关注 Android?有两个原因使 Android 成为重要的平台。首先,Google 引入了 Android,它在很短时间内就获得了市场的关注。Google 正在进军移动市场。它在这个市场上采取的第一个行动就是发布 Android 和 Open Handset Alliance,这是一个令人印象深刻的起点。第二,Android 不仅仅是另一种包含电话、菜单和触摸屏功能的移动平台。您将在本教程中了解到,Android 提供了一种不同的应用程序开发方法。由于可以对请求的操作和代码进行运行时绑定,Android 的体系结构支持高度可定制的软件环境。无论是考虑市场因素还是 Android 的技术方面,它都是一个值得研究的平台。

本教程分为以下几节:

  • Android 基础知识和必需的工具
  • Android Software Developer Kit
  • 构建和调试 SaySomething Android 应用程序
  • 创建内容提供器和 Google Maps 应用程序

系统需求

本教程需要结合使用几种技术。

Eclipse 平台
Eclipse 是一个运行插件的平台。您应该安装 Eclipse Classic 的最新版本(本教程使用 V3.3.1)。
Android Developer Tools
按照 安装 Android SDK 中的说明安装 Android Developer Tools(Eclipse 插件)。
源代码
本教程中的源代码片段包括:
  • AndroidManifest.xml(片段)— 这个文件是 Android 应用程序的应用程序部署描述符。
  • IntentReceiver — 演示 IntentReceiver 的实现,这个类处理 AndroidManifest.xml 文件中 IntentFilter 标记所公布的 intent。
  • SaySomething.java — 实现一个 Android 活动,这是本教程的示例应用程序的主要入口点。
  • Main.xml — 这个文件包含 Android 活动所用的视觉元素或资源。
  • R.java — 这个文件是由 Android Developer Tools 自动生成的,它把视觉资源 “连接” 到 Java 源代码。
  • AndroidManifest.xml(完整)— 这是完整的 AndroidManfest.xml 文件,包含每个重要元素的描述。
  • MobileServiceCallContacts.java — 这个文件包含的代码显示联系人并对用户输入做出反应,执行 Google Maps 地址查找。

Android 简介

在讨论 Eclipse 插件和开发 Android 应用程序之前,我们先看看 Android 的体系结构和一些重要的术语,这会对本教程后面的讨论和您自己构建 Android 应用程序有帮助。

Android 术语

在 Eclipse 环境中开发 Android 应用程序需要了解 Eclipse 环境和 Android 平台的知识。了解以下术语会有助于用 Eclipse 插件开发 Android 应用程序。

Open Handset Alliance
这是一个由 Google 公司主导的组织,它由许多公共和私人组织组成。
Android
这是 Open Handset Alliance 的主打产品。它是一种针对移动设备的开放源码操作环境。
模拟器
模拟另一个系统的软件工具 — 这常常是在个人计算机(IBM®、Mac、Linux®)上运行的一个环境,它模拟另一个环境,比如移动计算设备。
Linux
一种开放源码的操作系统内核,许多计算平台都使用这种操作系统,包括服务器、桌面计算机、网络设备和移动计算设备。Android 在 Linux 内核上运行。
Dalvik Virtual Machine
Dalvik VM 是 Android 产品组合中的一种操作环境,它在运行时解释应用程序代码。Dalvik VM 与 Java VM 相似,但是两者不兼容。

Android 基础知识和必需的工具

Android 是一种针对移动平台的开放源码操作系统。到编写本教程时,它是一种纯软件的平台,没有可用的硬件设备。

Android 平台被称为一个产品组合,因为它是一系列组件的集合,包括:

  • 基于 Linux 内核的操作系统
  • Java 编程环境
  • 工具集,包括编译器、资源编译器、调试器和模拟器
  • 用来运行应用程序的 Dalvik VM

简要介绍了 Android 平台的体系结构之后,我们来从市场的角度看看这个平台的一些重要特性。

Android 为什么很重要?

自从 Android 和最初的 SDK 发布以来,计算机技术新闻界一直非常关注 Android。Android 之所以重要主要有两个原因。

Android 是 Google 进军移动市场的主要行动。移动应用程序领域竞争激烈,新的竞争者很难涉足。Google 拥有大量资源和强大的品牌实力,有能力涉足任何市场。Google 进军移动市场已经好几年了。Android 原来属于另一家公司,Google 通过收购这家公司大大提高了在移动市场上的竞争力。Google 的任何行动都会受到关注,而且引入新平台也很引人注目。Android 同时具备这两个因素。

第二个原因是 Android 的应用程序模型与众不同。Android 应用程序并不是需要大量单击操作的纯粹的菜单式应用程序。Android 应用程序中确实有菜单和按钮,但是 Android 在体系结构中引入了一种新颖的设计元素 intent

intent

intent 是一种构造,应用程序可以通过它发出请求,这就像是发出求助信号。intent 可能像下面这样:

"Wanted: An application to help me look up a contact" 或 "Wanted: An application to help me display this image" 或 "Wanted: An application to perform this geographic-based search"

应用程序可以按照相似或互补的方式进行注册,表明它们有能力或有兴趣执行各种请求或 intent。比如:

"Available: Application ready and willing to present contact records in clear, concise manner" 或 "Available: Application ready and willing to perform a geographic search"

这些是 IntentFilter 的示例,下面将要讨论。

IntentFilter

应用程序通过一个称为 IntentFilter 的构造声明它们能够执行某些类型的操作。IntentFilter 可以在运行时进行注册,也可以在 AndroidManifest.xml 文件中设置。下面的代码片段取自一个对 SMS(文本)消息进行响应的 Android 应用程序:


清单 1. 对 SMS 进行响应的 Android 应用程序

                    
       <receiver class=".MySMSMailBox" >
            <intent-filter>
            <action android:value="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
      </receiver>

 

 

简要介绍 intent 和 IntentFilter 之后,下一节介绍 Android 应用程序的四种主要类型。

Android 应用程序 — 概述

我们来看看 Android 应用程序的四种主要类型:活动、服务、接收器和 ContentProvider。我们还要看看显示用户界面(UI)元素的视图。

活动

活动是最常用的 Android 应用程序形式。活动在一个称为视图 的类的帮助下,为应用程序提供 UI。视图类实现各种 UI 元素,比如文本框、标签、按钮和计算平台上常见的其他 UI 元素。

一个应用程序可以包含一个或多个活动。这些活动通常与应用程序中的屏幕形成一对一关系。

应用程序通过调用 startActivity()startSubActivity() 方法从一个活动转移到另一个活动。如果应用程序只需 “切换” 到新的活动,就应该使用前一个方法。如果需要异步的调用/响应模式,就使用后一个方法。在这两种情况下,都需要通过方法的参数传递一个 intent。

由操作系统负责决定哪个活动最适合满足指定的 intent。

服务和接收器

与其他多任务计算环境一样,“在后台” 运行着一些应用程序,它们执行各种任务。Android 把这种应用程序称为 “服务”。服务是没有 UI 的 Android 应用程序。

接收器是一个应用程序组件,它接收请求并处理 intent。与服务一样,接收器在一般情况下也没有 UI 元素。接收器通常在 AndroidManifest.xml 文件中注册。清单 2 是接收器代码的示例。注意,接收器的类属性是负责实现这个接收器的 Java 类。


清单 2. 接收器代码

                    
package com.msi.samplereceiver;

import android.content.Context;
import android.content.Intent;
import android.content.IntentReceiver;

public class myreceiver extends IntentReceiver 
{
  public void onReceiveIntent(Context arg0, Intent arg1) 
  {
    // do something when this method is invoked.
  }
}

 

 

ContentProvider 进行数据管理

ContentProvider 是 Android 的数据存储抽象机制。我们以移动设备上常见的一种数据为例:地址簿或联系人数据库。地址簿包含所有联系人及其电话号码,用户在使用手机时可能需要使用这些数据。ContentProvider 对数据存储的访问方法进行抽象。ContentProvider 在许多方面起到数据库服务器的作用。对数据存储中数据的读写操作应该通过适当的 ContentProvider 传递,而不是直接访问文件或数据库。可能还有 ContentProvider 的 “客户机” 和 “实现”。

下一节介绍 Android 视图,这是 Android 在移动设备屏幕上显示 UI 元素的机制。

视图

Android 活动通过视图显示 UI 元素。视图采用以下布局设计之一:

LinearVertical
后续的每个元素都排在前一个元素下面,形成一个单一列。
LinearHorizontal
后续的每个元素都排在前一个元素右边,形成一个单一行。
Relative
后续的每个元素相对于前一个元素有一定的偏移量。
Table
与 HTML 表相似的一系列行和列。每个单元格可以包含一个视图元素。

选择一种布局(或布局的组合)之后,就可以用各个视图显示 UI。

视图元素由大家熟悉的 UI 元素组成,包括:

  • Button
  • ImageButton
  • EditText
  • TextView(与标签相似)
  • CheckBox
  • Radio Button
  • Gallery 和 ImageSwitcher(用来显示多个图像)
  • List
  • Grid
  • DatePicker
  • TimePicker
  • Spinner(与组合框相似)
  • AutoComplete(具有文本自动补全特性的 EditText)

视图是在一个 XML 文件中定义的。清单 3 给出一个简单的 LinearVertical 布局示例。


清单 3. 简单的 LinearVertical 布局

                    
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Activity 1!"
    />
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Activity 1, second text view!"
    />
<Button
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Switch To Activity 2"
  id="@+id/switchto2"
  />    
</LinearLayout>

 

 

注意,每个元素有一个或多个属于 Android 名称空间的属性。

弘智主页 | 弘智介绍 | 培训课程 | XML地图