智能手机编程教程 - 范文中心

智能手机编程教程

11/24

Android 程序开发初级教程(一)

功能:

+ 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 的插件。

下面我们就来亲身体验一下Android 程序的开发之旅。

先介绍一下开发环境,下面是对系统及相关软件的版本要求:

操作系统:

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 我使用Eclipse 3.3 + JDK 1.6. + Ant 1.7 的组合。还有两个重要的就是: Android SDK 以及 Android 用于Eclipse 中的插件。

Android SDK 的下载链接: http://code.google.com/android/

如果你是第一次使用这些软件,请注意安装顺序和设置好环境变量。 一般的顺序是先安装 JDK 然后 解压 ant 压缩包,然后设置 java 环境变量和 ant 环境变量, 然后是解压 Android SDK ,再设置 Android SDK的环境变量。 总之就是把 JDK, ANT, Android SDK的路径添加到 path 里。

Android for eclipse plug in 在安装过程很简单,通过网络安装插件就可以了,这个是 URL: https://dl-ssl.google.com/android/eclipse/ 具体的配置过程,可以查看:

http://code.google.com/android/intro/installing.html#otherides 以下为一个hello Android的开发步骤:

创建一个项目:

创建一个新项目是很简单的,只要你安装了Eclipse 插件,并且你的Eclipse 软件版本在3.2或3.3,你就可以开始开发了。

首先, 看一下要创建"Hello, World"程序从高级层面上有哪些步骤:

1, 通过 File -> New -> Project 菜单,建立新项目"Android Project" 2, 填写新项目各种参数。

3, 编辑自动生成的代码模板。

尽此而已,我们通过下面的详细说明来完成每个步骤。

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);

}

}

注意你还需要添加 import android.widget.TextView; 在代码开端处。 在Android 程序中, 用户界面是由叫做Views 类来组织的。 一个View 可以简单理解为可以绘制的对象,像选择按钮,一

个动画,或者一个文本标签(这个程序中) ,这个显示文本标签的View 子类叫做TextView.

如何构造一个TextView:

TexiView tv = new TextView(this);

TextView 的构造参数是Android 程序的Context 实例, Context 可以控制系统调用, 它提供了诸如资源解析, 访问数据库等

等。Activity 类继承自Context 类,因为我们的HelloAndroid 是Activity 的子类, 所以它也是一个Context 类,所以我们能用"this" 在TextView 构造中。

当我们构造完TextView 后,我们需要告诉它显示什么:

tv.setText("Hello, Android");

这个步骤很简单,当我们完成了这些步骤以后,最后要把TextView 显示在屏幕上。

setContentView(tv);

Activity 的setContentView()方法指示出系统要用哪个View 作为

Activity 的界面, 如果一个Activity 类没有执行这个方法,将会没有界面并且显示白屏。在这个程序中,我们要显示文本,所以我们传入已创建好的TextView 。 好了,程序代码已经写好,下面看看运行效果。

运行代码: Hello, Android

使用Android 的Eclipse 插件就可以很轻松的运行你的程序,选择Run -> Open Run Dialog。你将会看到下面的对话框

下一步, 高亮"Android Application" 标签, 然后按下左上角的图标(就是像一片纸带个小星星那个) , 或者直接双击 "Android Application" 标签, 你将会看到一个新的运行项目,名为"New_configuration".

取一个可以表意的名称,比如"Hello, Android", 然后通过Browser 按钮选取你的项目(如果你有很多个项目在Eclipse 中,确保你选择要运行的项目), 然后插件会自动搜索在你的项目中的Activity 类并且将所有找到的添加在

"Activity" 标签的下拉列表中。 我们只有"Hello, Android" 一个项目,所以它会作为默认选择。

点击"Apply" 按钮, 下图

到这里,已经完成了,你只需要点击"Run" 按钮,然后 Android的模拟器将会启动,你的应用程序就会被显示出来。

下次继续介绍如何把界面的布局用XML 表示以及使用命令行进行编译和运行Android 程序。

将界面实现用XML 编排

你刚刚完成的"Hello, World"例子我们称之为”程序化”的界面编排。意思就是说构建你的应用程序界面是直接使用的源代码。如果你已经完成过很多界面程序,你大概熟悉像此类的方式是多么脆弱:一个对布局小小的修改会对源代码造

成很头疼的事情。如果忘掉与View 的紧密结合,这个导致代码出错和浪费你的调试时间的界面问题也会很简单。

这就是为什么Android 提供了一种可替换的界面构建方式: 基于XML 的布局文件。最简单的解释这个概念的方式就是展示一个例子。我们就用刚才创建的项目来进行演示,达到相同的界面效果。

android:layout_height="fill_parent"

android:text="Hello, Android"/>

AndroidXML 布局文件的大体的结构很简单。它是一个标签的树,任何一个标签就是View 类的名字。在这个例子中, 它是一个很简单的只有一个元素的树,一个 TextView。 你可以使用任何继承自View 类的名字作为标签的名字。包括在你的代码中自定义的View 类。这个结构可以很容易的构建界面,它比你在源代码中使用的结构和语法更简单。这个模式的设计灵感来自于Web 开发。就是可以将界面和应用程序逻辑分离的模式。

在这个例子中, 也有些是XML 的属性,下面是他们的含义:

属性

xmlns:android 含义 这是XML 命名空间的声明, 它是告诉Android 的工具,

你将要涉及到公共的属性已被定义在XML 命名空间。在

每一个Android 的布局文件的最外边的标签必须有这个

属性。

android:layout_width 这个属性定义了在屏幕上这个View 可用的宽度是多少。 android:layout_height 这个属性定义了在屏幕上这个View 可用的高度是多少。 android:text 设置TextView 所包含的文本内容,当前设置为”Hello,

Android ”信息

以上就是一个XML 布局文件的样子,但是你需要放在哪里?它要放在你的项目目录的res/ 文件夹下。 “res ”是”resources ”的缩写,它是存放所有非代码资源的文件夹,包含象图片,本地化字符串和XML 布局文件。

这些Eclipse 的插件已经给你创建好了,在我们上面的例子中,我们没有使用它。在包浏览器中,展开res 目录的layout. 并且编辑 main.xml, 替换掉那个文本内容,然后保存。

现在,在包浏览状态,打开在代码文件夹中名为 R.java的文件, 你将看到下面的内容:

public final class R {

public static final class attr {

};

public static final class drawable {

public static final int icon=0x7f020000;

};

public static final class layout {

public static final int main=0x7f030000;

};

public static final class string {

public static final int app_name=0x7f040000;

};

};

一个项目的R.java 文件是一个定义所有资源的索引文件。使用这个类就像使用一种速记方式来引用你项目中包含的资源。这个有点特别的强大像对于Eclipse 这类IDE 的代码编译特性,因为它使你快速的,互动式的定位你正在寻找的特定引用。

到目前需要注意的重要事情是叫做”layout ”的内部类和他的成员变量”main ”, 插件会通知你添加一个新的XML 布局文件,然后从新产生这个R.java 文件,比如你添加了新的资源到你的项目,你将会看到R.java 也相应的改变了

最后重要的事情是你需要去修改你的HelloAndroid 源代码,去使用新的XML 布局你的界面。替换掉编码式的界面模式。下面是你的新代码的样子,你可以看到,代码变得更加简单了。

public class HelloAndroid extends Activity {

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

}

}

当你做这些改变的时候,不要仅仅复制,粘贴到你的代码中,尝试去体验R.jav a 的代码编译特点。你会发现它对你有很大的帮助。

现在完成这些改变以后,你就可以重新运行你的程序,然后你会发现两种不同的界面编排方式会产生同样的效果。

调试你的项目

这个用于Eclipse 中的Android 插件作为Eclipse 中的调试器也具有优秀的兼容性。要演示这些,让我们制造一个bug 在代码中,改变你的HelloAndroid 源代码象下面这样:

public class HelloAndroid extends Activity {

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

Object o = null;

o.toString();

setContentView(R.layout.main);

}

}

这次简单的变化会引起一个NullPointerException 异常,如果你再次运行程序,你将会看到屏幕

要找到什么地方出错,需要设置个断点在你源代码的 “Object o = null;” 行后(你可以双击在Eclipse 中显示行数的左部区域), 然后选择 Run -> Debug 选择最后一次的运行加载。你的程序将会重起模拟器,但是这个时候它会挂起,当它走到你刚才设置的断点的时候,在Eclipse 的调试模式视图中,它就会停止在你的代码处。就像你可以在其他任意程序中做这个一样。。

使用其它的IDE 工具创建项目

调试你的项目

这个用于Eclipse 中的Android 插件作为Eclipse 中的调试器也具有优秀的兼容性。要演示这些,让我们制造一个bug 在代码中,改变你的HelloAndroid 源代码象下面这样:

public class HelloAndroid extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

Object o = null;

o.toString();

setContentView(R.layout.main);

}

}

这次简单的变化会引起一个NullPointerException 异常, 如果你再次运行程序,你将会看到下面的屏幕:

要找到什么地方出错,需要设置个断点在你源代码的 “Object o = null; ” 行后(你可以双击在Eclipse 中显示行数的左部区域), 然后选择 Run -> Debug 选择最后一次的运行加载。 你的程序将会重起模拟器,但是这个时候它会挂起,当它走到你刚才设置的断点的时候,在Eclipse 的调试模式视图中,它就会停止在你的代码处。就像你可以在其他任意程序中做这个一样。。

使用其它的IDE 工具创建项目

如果你没有使用Eclipse(比如你使用其他的IDE 开发工具,或者简单的只使用文本编辑和命令行工具) , 那么这个插件不会帮上你忙,别担心,你不会因为没有使用Eclipse 而丢失任何开发能力。

其实Android 的Eclipse 插件也是将一套Android SDK的开发工具包装了。(这些工具像:模拟器,aapt, adb, ddms, 和其他的,可以参考google 的相关文档) , 因此, 它也可以被其他工具包装,比如ant.

在Android SDK 中包含一个Python 脚本,叫做”activityCreator.py ”, 它用于为了你的项目创建所有的源代码和目录的编译环境(个人理解), 也就是会产生可用于ant 编译的build.xml. 这样就允许你的项目从命令行方式创建或者集成到你选择的IDE 中。

比如,要创建一个HelloAndroid 项目,就像刚才我们用Eclipse 中的一样, 你可以使用下面的命令:

activityCreator.py --out HelloAndroid

com.google.android.hello.HelloAndroid

要编译你的项目,你要接着使用ant 命令,当命令行提示成功时候,你会看到一个名为HelloAndroid.apk 的文件在”bin ”目录下。 这个.apk 文件是一个Android 的包, 它需要使用”adb ”工具安装进模拟器。

到这里为止,我向大家展示了Android 平台的程序简单的开发实例,本人水平有限,翻译的时间仓促,一定有很多错误和疏漏,请多提修改意见。本系列教程的主要内容都是翻译自Google 的Android 开发文档。通过下面的链接查看全部内容。

http://code.google.com/android/intro/hello-android.html


相关内容

  • 大连交通大学软件毕业设计系列-调研报告
    毕业设计(论文) 实习(调研)报告 学生姓名 专业班级 所在院系 指导教师 职 称 所在单位 完成日期 2011年 10月 15日 实习(调研)报告 一.课题的来源及意义 手机游戏是指运行于手机上的游戏软件,随着科技的发展,现在手机的功能也 ...
  • 智能报警越障小车
    目 录 摘要„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„2 关键词„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„2 Abstract „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ ...
  • 蓝宙电子智能创新实验室
    智能创新实验室建设方案 芜湖蓝宙电子科技有限公司 -飞思卡尔大学计划官方合作伙伴 版 本:Version 2.0 所 有 者:蓝宙电子 日 期:2014.03.12 目录 一. 二. 实验室介绍 . .................... ...
  • 物联网专业课程设置
    高校物联网专业课程设置 2010-06-22 17:46:58 作者:博客 来源:thingslink 浏览次数:7781 网友评论 0 条 年初教育部下达了高校设置物联网专业申报通知,众多高校争相申报.由于物联网涉及的领域非常广泛,从技术 ...
  • 程序员的12个目标
    程序员的12个目标 对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前.新年伊始,我整理了12个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用. 01. 变得有耐心 02. 保持健康 03. 拥抱变化带来 ...
  • 智能捕鼠器
    摘 要 当今社会,人们的生活水平和生活方式都在不断的提高,智能化已经在我们 生活中得到了实施.随着科学技术的进步和人们生活条件的友好改善,各种智能设备在人们的生活中不断出现,使人们的生活越来越方便和舒适.其中以单片机为核心实现的智能捕鼠器因 ...
  • 计算机应用基础微课程的设计与开发
    摘 要 随着21世纪经济的快速发展,科学技术水平的不断提高,计算机技术得到了普遍的应用,计算机应用基础微课程成为了越来越多学者研究的课题.计算机应用技术也对人们的工作和生活产生了很大的影响,其中计算机应用基础微课程被越来越多的人所熟知并在学 ...
  • 嵌入式系统在智能家居中的应用
    新疆工程学院 毕 业 论 文 题 目: 嵌入式系统在智能家居 中的应用 院(系): 计算机工程系 专业年级 : 通信技术10-02 姓 名 : 魏文华 学 号 : 2010230083 指导教师 : 贾勇 2013年04月17 论文题目:嵌 ...
  • 基于RaspberryPi实现的智能家居
    摘 要 本文以树莓派为载体进行智能家居控制器的设计.在对现在三种市面上的网络电视的比较中引出毕设的主角--树莓派.首先是LINUX 系统常识性的介绍:然后是在ARM/LINUX平台上面开发应用的两种方法:调用系统已有资源.做程序(C 经典法 ...
  • 数控技术参考文献
    1郑贞平,黄云林,黎胜容.VERICUT7.0中文版数控仿真技术与应用实例详解.北京:机械工业出版社,2011 2王明红.数控技术.北京:清华大学出版社,2009 3王道宏.数控技术.浙江工业大学出版社,2008 4(印)S.K.Sinha ...