【Android源码 栏目提醒】:网学会员为需要Android源码 的朋友们搜集整理了android实例 - 综合课件相关资料,希望对各位网友有所帮助!
令人激动的Google手机操作系统平台-
Android在2007年11月13日正式发布了这是一个开放源代码的操作系统内核为Linux. 作为开发者我们所关心的是这个平台的架构以及所支持的开发语言。
下面是这个平台的架构模型 这个平台有以下功能 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.htmlotherides 以下为翻译Google给的一个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 选项允许你选择一个已存在的项目。
编辑自动生成的代码。
当项目创建后你刚才创建的HelloAndroid就会是包含下面的代码. public class HelloAndroid extends Activity / Called when the activity is first created. / Override public void onCreateBundle icicle super.onCreateicicle setContentViewR.layout.main 下面我们开始修改它 构建界面 当一个项目建立好以后最直接的效果就是在屏幕上显示一些文本下面是完成后的代码稍后我们在逐行解释。
public class HelloAndroid extends Activity / Called when the activity is first created. / Override public void onCreateBundle icicle super.onCreateicicle TextView tv new TextViewthis tv.setTextHello
Android setContentViewtv 注意你还需要添加 import
android.widget.TextView 在代码开端处。
在
Android程序中 用户界面是由叫做Views类来组织的。
一个View可以简单理解为可以绘制的对象像选择按钮一 个动画或者一个文本标签这个程序中这个显示文本标签的View子类叫做TextView. 如何构造一个TextView: TexiView tv new TextViewthis TextView的构造参数是
Android程序的Context实例 Context可以控制系统调用 它提供了诸如资源解析 访问数据库等 等。
Activity类继承自Context类因为我们的HelloAndroid 是Activity的子类 所以它也是一个Context类所以我们能用this在TextView构造中。
当我们构造完TextView后我们需要告诉它显示什么: tv.setTextHello
Android 这个步骤很简单当我们完成了这些步骤以后最后要把TextView显示在屏幕上。
setContentViewtv 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的布局文件。
最简单的解释这个概念的方式就是展示一个例子。
我们就用刚才创建的项目来进行演示达到相同的界面效果。
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 icon0x7f020000 public static final class layout public static final int main0x7f030000 public static final class string public static final int app_name0x7f040000 一个项目的R.java文件是一个定义所有资源的索引文件。
使用这个类就像使用一种速记方式来引用你项目中包含的资源。
这个有点特别的强大像对于Eclipse这类IDE的代码编译特性因为它使你快速的互动式的定位你正在寻找的特定引用。
到目前需要注意的重要事情是叫做”layout”的内部类和他的成员变量”main” 插件会通知你添加一个新的XML布局文件然后从新产生这个R.java文件比如你添加了新的资源到你的项目你将会看到R.java也相应的改变了 最后重要的事情是你需要去修改你的HelloAndroid源代码去使用新的XML布局你的界面。
替换掉编码式的界面模式。
下面是你的新代码的样子你可以看到代码变得更加简单了。
public class HelloAndroid extends Activity / Called when the activity is first created. / Override public void onCreateBundle icicle super.onCreateicicle setContentViewR.layout.main 当你做这些改变的时候不要仅仅复制粘贴到你的代码中尝试去体验R.java的代码编译特点。
你会发现它对你有很大的帮助。
现在完成这些改变以后你就可以重新运行你的程序然后你会发现两种不同的界面编排方式会产生同样的效果。
补充可能与原文有些意思不同笔者水平有限请包含下面是原始链接地址。
http://code.google.com/
android/intro/hello-
android.html
Android调试 这个用于Eclipse中的
Android插件作为Eclipse中的调试器也具有优秀的兼容性。
要演示这些让我们制造一个bug在代码中改变你的HelloAndroid源代码象下面这样 public class HelloAndroid extends Activity / Called when the activity is first created. / Override public void onCreateBundle icicle super.onCreateicicle Object o null o.toString setContentViewR.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 希望
Android平台能在移动开发领域开启新的篇章。
Android核心模块及相关技术
Android作为一个移动设备的平台其软件层次结构包括了一个操作系统OS中间件MiddleWare和应用程序Application。
根据
Android的软件框图其软件层次结构自下而上分为以下几个层次 第一、操作系统层OS 第二、各种库Libraries和
Android 运行环境RunTime 第三、应用程序框架Application Framework 第四、应用程序Application 以下分别介绍Andoid各个层次的软件的重点及其相关技术 操作系统层OS
Android使用Linux2.6作为操作系统Linux2.6是一种标准的技术Linux也是一个开放的操作系统。
Android对操作系统的使用包括核心和驱动程序两部分
Android的Linux核心为标准的Linux2.6内核
Android更多的是需要一些与移动设备相关的驱动程序。
主要的驱动如下所示 显示驱动Display Driver常用基于Linux的帧缓冲Frame. Buffer驱动。
Flash内存驱动Flash Memory Driver 照相机驱动Camera Driver常用基于Linux的v4lVideo for 驱动。
音频驱动Audio Driver常用基于ALSAAdvanced Linux Sound Architecture高级Linux声音体系驱动。
WiFi驱动Camera Driver基于IEEE 802.11标准的驱动程序 键盘驱动KeyBoard Driver 蓝牙驱动Bluetooth Driver Binder IPC驱动 Andoid一个特殊的驱动程序具有单独的设备节点提供进程间通讯的功能。
Power Management能源管理 各种库Libraries和
Android 运行环境RunTime 本层次对应一般嵌入式系统相当于中间件层次。
Android的本层次分成两个部分一个是各种库另一个是
Android 运行环境。
本层的内容大多是使用C实现的。
在其中各种库包括 ▅ C库 C语言的标准库这也是系统中一个最为底层的库C库是通过Linux的系统调用来实现。
▅ 多媒体框架MediaFrameword这部分内容是
Android多媒体的核心部分基于PacketVideo即PV的OpenCORE从功能上本库一共 分为两大部分一个部分是音频、视频的回放PlayBack另一部分是则是音视频的纪录Recorder。
▅ SGL2D图像引擎。
▅ SSL即Secure Socket Layer位于TCP/IP协议与各种应用层协议之间为数据通讯提供安全支持。
▅ OpenGL ES 1.0 本部分提供了对3D的支持。
▅ 界面管理工具Surface Management本部分提供了对管理显示子系统等功能。
▅ SQLite一个通用的嵌入式数据库 ▅ WebKit网络浏览器的核心 ▅ FreeType位图和矢量字体的功能。
Android 的各种库一般是以系统中间件的形式提供的它们均有的一个显著特点就是与移动设备的平台的应用密切相关。
Android 运行环境主要指的虚拟机技术——Dalvik。
Dalvik虚拟机和一般JAVA虚拟机Java VM不同它执行的不是JAVA标准的字节码bytecode而是Dalvik可执行格式.dex中执行文件。
在执行的过程中每一个应用程序即一个进程Linux的一个Process。
二者最大的区别在于Java VM是以基于栈的虚拟机Stack-based而Dalvik是基于寄存器的虚拟机Register-based。
显然后者最大的好处在于可以根据硬件实现更大的优化这更适合移动设备的特点。
应用程序框架Application Framework
Android的应用程序框架为应用程序层的开发者提供APIs它实际上是一个应用程序的框架。
由于上层的应用程序是以JAVA构建的因此本层次提供的首先包含了UI程序中所需要的各种控件 例如Views 视图组件包括 lists列表 grids栅格 text boxes文本框 buttons按钮等。
甚至一个嵌入式的Web浏览器。
一个Andoid的应用程序可以利用应用程序框架中的以下几个部分 Activity 活动 Broadcast Intent Receiver 广播意图接收者 Service 服务 Content Provider 内容提供者 应用程序Application
Android的应用程序主要是用户界面User Interface方面的通常以JAVA程序编写其中还可以包含各种资源文件放置在res目录中JAVA程序及相关资源经过编译后将生成一个APK包。
Android本身提供了主屏幕Home联系人Contact电话Phone浏览器Browers等众多的核心应用。
同时应用程序的开发者还可以使用应用程序框架层的API实现自己的程序。
这也是
Android开源的巨大潜力的体现。
上一篇:
枚举Android系统的进程、任务和服务的信息
下一篇:
高等数学课程复习资料