`
abc20899
  • 浏览: 908935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

什么是Android - 嵌入式设备编程的历史

阅读更多
-第一章
  暂时可以这样说,传统的桌面 应用程序 开发者已经被惯坏了。这个不是说桌面应用程序开发比其他开发很简单。总之作为桌面应用程序开发者,我们已经有能力按照我们的想法创造出各种应用程序。包括我自己,因为我也是从做桌面程序开始的。一方面,我们已经使得桌面程序更容易的与桌面操作系统 来进行交互,并且和任何底部的硬件很自由的交互。这种类型独立自主的程序编制其实对于很小的开发者团体来说是不敢贸然趟手机 开发这趟浑水的。
注意:
     在本部分讨论中,我提到两种不同的开发者:传统的桌面应用程序开发,他们能使用任何的编程语言,而且最终的产品和程序是用来运行“桌面”操作系统的;还有就是Android的程序开发者,为Android平台开发程序的JAVA程序员。我不是想说谁更好或者其它的意图。区别仅仅在于想说明并比较桌面操作系统环境的开发风格,工具。
   有很长一段时间 ,手机的开发者由大的著名开发组中的少数人组成,作为嵌入式设备的开发者。相对于桌面开发或者后续的网络 开发,被视作更少“魅力”,而且嵌入式设备的开发通常因为硬件和操作系统而处于劣势。因为嵌入式设备的制造商们太小气,他们要保护他们硬件方面的秘密,所以他们给开发者们非常有限的库来运行。
   嵌入设备与桌面系统显著不同的一部分是嵌入设备是个“芯片上的电脑 ”。例如:说起你的标准电话 遥控。这个并不是一个非常强大并且复杂性的技术。当任何的按钮被按下去,一个芯片解释一个信号以一种方式已经被编程进了设备。这个允许设备知道什么是从输入设备(键盘)来的需要。并且如何的响应这些命令(比如,打开电视机)。这个是一个简单的嵌入式设备的编程。总之,不管你相不相信,像这样的简单设备绝对的和早期的手机和开发有着紧密的联系。
    大多数的嵌入式设备运行(有些还在运行)在私有的操作系统。原因是选择并创建一个私有的操作系统而不同定制的系统是产品必然选择。简单的设备不需要非常健全和优化的操作系统。
   作为一个产品的演化,更多复杂的嵌入式设备,如早期的PDA,家庭安全系统和GPS等。5年前某种程度上都转移标准的操作系统平台上。小的操作系统如 Linux,或者一个微软的嵌入式平台,已经在嵌入设备上变得普遍了。设备演变的那些时间里,手机已自己的路径开始分支出去。这个分支是显而易见的。
    差不多开始的时候,手机作为一个外围设备并且运行私有软件 ,而这些软件被制造商们所拥有和控制,而且几乎可以被认为是一个“关闭”的系统。习惯使用私有操作系统主要是制造商自己开发硬件,或者至少定义了开发的目的只是用来运行手机。最终的结果就是使开放成为不可能。现有的软件包或者解决 方案会可靠的和他们的硬件交互。而且,制造商想要保护他们硬件的商业秘密。以防允许进入而发现设备软件的水准。所以风尚就是,而且大多数仍然是使用完全私有并且关闭的软件来运行他们的设备。任何人想为手机开发程序必须需要详尽的私有环境来运行软件的知识。而解决方案就是直接从制造商那里购买昂贵的开发工具。这就孤立了很多的“自制软件”的开发者。
注意:
一个关于自制软件开发的文化包含了手机程序的开发。“自制软件”是指开发者通常不是工作在手机开发公司内,通常利用自己的时间在他们的设备上生产小的,一次性的产品。
   另外,使手机开发无法出手的是硬件制造商对于“内存 和需要”左右为难的解决方案。直到最近,手机才能执行比打出和接听电话,查找联系人 ,发送和接收短消息。不是今天“瑞士军刀”的技术。及时在2002年,在消费者的手上,带照相机的手机还是不多见。在1997年,小的应用程序如计算器和游戏 爬进了手机内,但是强大的功能 仍然是手机的拨号盘本身。手机还不想今天一样是一个多用途,多功能工具。没有人预见互联网浏览的需求,MP3播放,或者更多的是我们今天定制的功能。在 1997年,手机制造商们没有预见消费者需要的是一个一体化的设备。但是,即使这个需求展现出来,设备内存和存储容量还是一个需要克服的大的障碍。更多的人可能想要他们的设备是一个多功能一体化的工具,但是制造商们不许跨越他们的障碍。
   让问题变得简单,就要在任何的设备让内存来存储并运行程序,包括手机。手机作为一个设备,直到最近还没有足够多内存来执行“额外”的程序。在最近的两年里,内存的价格 已经达到了非常低的水平。设备制造商们有足够的能力压低价格来包含更多的内存。很多的现在的手机标准内存已经超过了90年代中期电脑内存。于是,现在我们有需求,而且有内存。我们可以直接跳到为手机开发酷的应用程序了,对吗?不完全是这样。设备的制造商们仍然紧密的保护他们的操作系统。有一些在手机上开放 JAVA为基础的小运行环境。更多的是不允许。即使允许运行JAVA应用程序但还是不允许进入核心的系统。而这些是桌面开发者习惯于拥有的。
开放手机联盟和Android-(2)

  这个对于应用程序开发的障碍开始在2007年的11月份被打破,当Google 在开放手机联盟下发布Android。开放手机联盟是一个硬件和软件开发者的集合,包括谷歌 ,NTT DoCoMo,Sprint Nextel和HTC 。他们的目标是创建一个更多的开放手机环境。在开放联盟第一个被发布的产品就是移动设备操作系统Android。(更多关于开放手机联盟的信息,见:www.openhandsetalliance.com )。
    对于这个Android的发布,谷歌使很多开发工具和向导成为可能来帮助在新系统上可能的开发者。帮助系统,平台软件开发包(SDK),甚至一个开发者的论坛 ,可以在谷歌的Android的网站上找到,http://code.google.com/android . 这个网站应该是你的起点,而且我极度推荐 你去访问。
注意:
谷歌为了推动这个新的Android操作系统,甚至为寻找新的Android程序而设立了1000万美元的奖金。
    运行Linux, Windows或者即使PalmOS的手机是很容易找到,如本文所述,没有硬件平台已经宣告可以来运行Android.HTC,LG电子,摩托罗拉 和三星 都是开发手机成员,在Android的发布下,我们希望在不久的将来有一些Android为基的设备。在2007年11月发布时,系统自身还仍旧是一个测试版的程序。这是个对开发者的好新闻因为它给了我们一个罕见的提前看到将来的设备和有机会来开始开发应用程序,而当硬件发布时就可以运行。
注意:
这个策略明确的给了开放手机联盟一个大的优势,超越其它手机操作系统开发者。因为当第一代设备发布时会有数不尽的可用开发程序可以运行。
介绍Android 第一章(3)

    Android,作为一个系统,是一个运行在Linux2.6核心上的JAVA基础的操作系统。系统是非常轻量型的而且全特性。
图 显示了一个未经修改的Android桌面屏幕 。
   Android应用程序用JAVA开发而且很容易被放置到新的平台上。如果你没有下载 JAVA或者不确定那一个版本你需要,我在第二章详细列出了开发环境的安装。其他Android的特点包括一个加速3-D图形引擎(基于硬件支持),被SQLite推动的数据库支持,和一个完整的网页浏览器 。
    如果你熟悉JAVA编程或者是任何种类的OOP开发者,你可能使用程序用户 接口(UI)开发-那就是,UI安置是直接在程序代码中有句柄的。Android,识别并许可UI开发,而且支持新生,XML为基础的UI布局。XMLUI布局对普通桌面开发者是一个非常新的概念。我会在本书的相关章节里描述XML UI布局和程序化UI开发。
   Android另一个更令人激动和关注的特点是因为它的样式,第三方应用程序——包括“自制的”——会和系统捆绑的有着同样的优先权。这是和大多数系统不同之处,但是给了嵌入式系统程序一个比由第三方开发者创建的线性优先权大的优先执行权。而且,每一个应用程序在虚拟计算机上以一个非常轻量的方式按照自己的线路执行。
  除了大量的SDK和成型的类库可以用之外,对激动人心的特性对于Android的开发者来说是我们现在可以进入到操作系统可以进入的地方。也就是说,如果你要创建一个应用程序打一个电话,你已经进入到电话的拨号盘。加入你要创建一个应用程序来使用电话内部的GPS(如果安装了),你已经进入了。对于开发者创建动态和令人好奇的程序已经敞开大门。
   和上面这些可用的特点相同,谷歌已经非常迫切的奉送一些特性。Android的开发者可以将自己的应用程序和谷歌提供的如谷歌地图 和无所不在的谷歌搜索绑在一起。假设你要写程序在谷歌地图上显示一个来电话者的的位置,或者你要储存一般的搜索结果到你的联系人中。在Android中,这个门已经完全打开。
下载和安装Eclipse总则 - 第二章(1)
-关键技能&概念
-选择一个开发环境
-下载 Eclipse
-安装和配置Eclipse
Android应用程序是在JAVA下开发的。Android自身不是一个语言,但是是一个运行应用程序的环境。这样,理论上你可以使用任何发布或者综合开发环境(IDE)来开始你的开发。事实上,你可以选择非IDE开发。
提示:
在本章稍后,我会介绍不使用IDE或者“命令行接口”(CLI)来开发Android应用程序。这期间,我不会在书中的每一个例子都使用这种技术,你将会学到如何在CLI里开发的基础知识。
    假如你对使用JAVA的IDE比较舒服,如Borland的JBuilder或者开源NetBeans,你可以尽管去使用。有了中等的水平的经验,你应当可以适应本书大部分的例子。但是,开放手机联盟和谷歌认同一个JAVA的IDE,那就是:Eclipse.
注意:
如果你选择不用Eclipse来跟从本书的例子,你需要看看你的IDE文档关于编译和测试你的Android的程序。书中的例子只给了如何在Eclipse中编译和测试程序的说明,在Eclipse中使用Android的plugin。
    本章简明的描述了如何下载和安装Eclipse以及所要求的JAVARuntimeEnvironment(JRE)。很多的时候,安装向导和教材趋向于跳过简单的步骤。我已经发现跳过简单的步骤经常忽略重要的条目。因为这个原因,我在本章内包含了从下载到安装的所有步骤。
为什么是Eclipse?
    为什么Eclipse是推荐的Android程序开发的IDE呢?对这个特定的认同有一些原因:
    1、为了保持开发手机联盟真正开放移动开发市场的宗旨,Eclipse是有着同样显著特点的,免费的Java IDE可以使用。Eclipse同样容易使用,最少的学习时间。这些特性让Eclipse对于固定的,开放的Java开发成为吸引人的IDE。
2、开发手机联盟已经为Eclipse发布了一个Android的plugin,允许你来创建Android-定义项目,编译它们,并且使用 Android模拟器来运行和调试程序。当你开发你的第一个Android程序时,这些工具和能力将会是非常宝贵的。你还是可以用其它的IDE来创建 Android程序,但是Android的plugin为Elipse创建某些元素——如,文件 和编译设定。这些来自Android-plugin的帮助将缩短你宝贵的开发时间并减少学习的弯路,那就意味着你可以花费更多的时间来创建惊人的应用程序了。
注意:
Elipse同样也可用于苹果和Linux系统,有着强大的能力,在不同的操作系统,意味着几乎每个人可以在任何的电脑上开发Android的应用程序。不过,本书的例子和电脑截图觉来自与微软Windows版本的Eclipse。记住这一点,如果你使用其他的电脑操作系统。你的界面可能看上去会有轻微的不同,但是总体的功能不会改变。如果在Linux的Eclipse有一些主要的操作不同点的话,我会举例说明。我会举出一些在Linux上的列子。而主要的例子会是Linux/Android的命令行环境(CLE)。
下载和安装JRE - 第二章(2)

在你下载和安装Eclipse之前,你必须确保在电脑上下载并安装了JavaRuntimeEnvironment(JRE)。因为Eclipse作为一个程序是由Java写成,它要求JRE来运行。如果JRE没有安装或被检测到,如果你试着打开Eclipse,你会看见下面的错误: 
如果你已经是一个Java的开发者并且已经在电脑上安装了Java,你还是要按照提示安装,确保安装了正确版本的JRE。
注意:
大多数使用过网络或者以网络为基础的应用程序的人,安装过JRE。JRE允许你运行Java基础的应用程序,但是它不允许你去创建它。要创建Java应用程序,你需要下载并安装JavaDevelopmentKit(JDK),这个包含了创建Java应用程序所需的所有工具和库。如果你不熟悉Java,记住这一点就行了。对于书中提到的例子,我会下载JDK,因为它也包含了JRE.虽然你不需要JDK来运行Eclipse,但是你还是可以在本书后续章节的开发中使用。
   导航到Sun公司的下载页面,http://developers.sun.com/downloads/ , 如下面的插图(略)所示。正常情况你只需要JRE来运行Eclipse,但是对于本书的目的,你应当下载包含了JRE的完整的JDK,下载JDK的原因是在本书的后面,我会提到只使用JDK而非Eclipse来开发Android程序。如果你想跟从教材的话,你会需要完整的JDK。
从SUN的下载页面,导航到适当JDK的下载部分。选择并下载,如下图(略):
    对于书中例子,我选择使用Java 5 JDK Updata 14,因为在Eclipse文档中明确说明这是个支持的版本。要下载Java5JDK,选择你要下载的平台来下载。你可能简单的跟着下载Java 6JDK。但是,如果你要下载旧的JDK5,你需要点击前一个发布的链接,如图(略):
注意:
下载前,你必须同意并接受Sun公司的专利使用权转让协定。
在Java Se以前一个发布下载页面,点击J2SE 5.0 下载链接,然后点击JDK 5.0 Update x下载按钮,x是最后的升级号码(14是本书写的时候的号码,你下载的时候可能会有所不同)。
如果你正在下载一个到微软Windows的环境,当你见到如下图(略)所示的通知时,点击Run来开始JDK的安装。
提醒:
如果你想要保存一份JDK包的备份,点击Save而并非Run。总之,当你选择保存了JDK,确保注意保存位置。在下载结束后,你需要导航到下载位置并且手动执行安装包。
在安装期间,你会被提醒阅读协议,如下图(略)。同意之后,点击Next,然后就可以选择你的定制安装选项了。
这里只有一点你需要改变的,除非你是一个成熟使用Java的人并且需要选择特定的选项,在这种情况下,请自由的改变你需要的安装选项。下面是Java JDK安装的定制安装图(略)。
为了保持过程的简单性,并且完全地标准化,你应当接受软件自身的安装建议——选择缺省的设定——并且点击Next来继续安装。再次强调,如果你想要订制改变,请按照你自己的方式进行。总之,如果在后面的章节你遇到麻烦,你会需要修改你的安装选项。当安装完成的页面出现,如下图:(略),点击Finish,然后你的安装就会完成。
一旦你完成Java JDK的安装——而且根据缺省,JRE也会安装——你可以开始安装Eclipse了。
下载和安装Eclipse - 第二章(3)

导航到www.eclipse.org/downloads 的下载页面,如下图(略)。根据开放段落申明,需要JRE运行环境(推荐Java5JRE)来开发Eclipse,而这个我们已经在上节描述过了。在这个站点下载为Java开发者准备的Eclipse的IDE。软件包比较小(79MB)并且应当下载很快。确保你不是下载了Eclipse IDE for Java EE的开发包,因为这个是有点不同的产品而且我不会介绍它的使用说明。
  在你下载了Elipse以后,是时候来安装它了。导航到软件包下载的位置。写这本书的时候,最新的Eclipse软件包Windows版本的文件是 eclipse-java-curopa-fall2-win32.zip.解压缩软件包并且运行Eclipse.exe。Eclipse按照缺省方式安装到以用户目录(微软Windows),但是你或许想安装到你的程序文件目录下。这样会保持你应用程序的有序而且允许你设定不同的目录作为工作空间。下图(略)显示了软件启动的欢迎画面。
注意:
如果你没有看见欢迎画面,试着重新启动电脑。如果重启后没有帮助的话,只下载并安装Java 5 JRE。
一旦Eclipse安装开始,你会被提醒来创建一个缺省的工作空间,或者文件夹 。和其他大多数开发环境一样,项目被创建,并且保存到这个工作空间内。缺省的工作空间路径是你的用户路径,选择不同路径,点击Browse来导航。如图(略)。
我建议你同样也选中选择框来定义你所有的项目到一个工作空间。选中这个框,当创建新项目时,你就会少一个需要担心的事情,而且你总是会知道在哪个路径里能找到你的源文件。在本书内,有时你需要导航到项目文件,并且在Android开发环境的外部工作,所以知道你文件的所在位置是非常有帮助的。
选择工作空间之后,点击OK。 在这里,你的开发环境被下载好和安装。虽然Eclipse的安装似乎很快,你仍然需要在创建你的第一个Android项目前配置Eclipse。很多的配置工作都是和Android SDK和Android plugin有关。
下一步你需要下载并安装AndroidSDK,并且为Eclipse下载并安装Androidplugin。然后配置Eclipse设定。在第三章的结尾,你会有一个可以开发应用程序的完整的开发环境。然后你会浏览AndroidSDK并且在第五章创建你的第一个Hello World!应用程序。
问专家
Q:Eclipse是用来开发Java的,但是Android能运行其他语言所写的程序吗? A:写这本书时,没有SDK或者模拟器可以让Android来运行Java以外的程序。
Q:能使用Eclipse(和Android SDK)和JRE非5的版本 一起工作吗?
A:技术上说你可以使用Eclipse和版本5或者更新的版本一起工作,但是最新版本的Eclipse仅仅在Java 5 JRE上进行过测试。
下载和安装Android SDK - 第三章(1)

关键技能和概念
-下载Android SDK
-使用Eclipse的可升级特性
-为Eclipse下载,安装并配置Android Plugin
-检查PATH声明
在前面的章节中,你下载并安装了主要的开发环境,Eclipse。现在,你的原始开发环境已经建立了,使用Eclipse作为你的Java IDE,你可以用它来开发Java的应用程序。你必须以某种方式来配置它,以减轻Android的开发。
因为Eclipse是Java开发环境,你可以很简单的创建并编辑Java项目。但是,如果没有可以理解的库,规定Android应用程序应当如何工作,你就无法开发任何应用可以在Android为基础的设备上运行的程序。要开始创建Android项目,你需要下载并安装AndroidSDK。然后你需要为Eclipse下载相关的Android plugiin来使用SDK。有了这些部件的支撑,你就可以开始开发工作了。
如果你已经拥有任何的开发经验,很可能你已经熟悉使用SDK的过程。桌面程序的开发者,不管在哪一种的开发平台上开发,使用SDK来创建他们希望运行的系统上的应用程序。AndroidSDK和其它的SDK相比没有任何的不同,它包含了所有的创建运行在特有的Android平台上应用程序所需的Java代码库。SDK还包括帮助文件,文档和Android模拟器,大量的开发和调试工具。
注意:
第四章深入的阐述了Android SDK大多数的功能。
作为开始,你准备从谷歌Android开发网站上下载Android SDK,网址:http://code.google.com/android 谷歌Android开发的主页上包含为Android平台开发的大量有价值的工具和文档,包括链接到Android开发者论坛。
提示:
如果你在开发的过程中遇到问题,你第一个找答案的地方应该就是Android开发者论坛。http://code.google.com/android/groups.html. 这里有新手 ,开发者和黑客的讨论组。并且一个常规问题讨论组。考虑到Android是一个全新的平台,Android开发者论坛是较少的能找到综合,可靠信息的地方。
下载Android SDK - 第三章(2)

从谷歌的http://code.google.com/android 网页可以很容易的找到AndroidSDK软件包。从开发的主页,点击下载SDK的链接开始。在你同意了AndroidSDK的软件许可协议后,你会看见 AndroidSDK的下载页面。AndroidSDK软件包对于Windows版本是79MB大小,你应当能够很快的下载。根据你的操作系统选择软件包开始下载。
注意:
软件包的大小根据不同的操作系统可能不一样。
说到Android SDK,这里没有“setup”或者安装过程。这里,你必须跟着下面一些列的设置 ,在Eclipse开发环境里配置Android SDK。第一步是获得Android plugin,然后配置它。
为Eclipse下载和安装Android Plugin ,设置Android SDK的第一步就是为Eclipse开发环境下载和安装Android Plugin。Plugin的下载和安装可以同时进行,而且非常的简单。
1.打开Eclipse应用程序,你将会下载为Eclipse IDE 准备的Android Plugin。 2.选择帮助|软件升级|寻找和安装。
3.在安装/升级的窗口,会允许你执行安装和下载在Eclipse任何可用的plugin,点击搜索新特性选项,然后点击下一步。
4.Update sites to Visit 这个窗口会列出所有可获得Eclipseplugin的网站。但是,你所需要的Androidfor Eclipse 没有列在这里,所以要下载这个Androidplugin你必须要告诉Eclipse到哪里去找它。所以点击 NewRemote Site这个按钮。
5.在New Remote Site对话框内,你要提供两个信息:网站的名称和网址。名字只是便于显示并不影响下载。我们可以输入Android Plugin。在URL字段。输入:https://dl-ssl.google.com/android/clipse. 点击OK。
注意:
这里填写的名字只是帮助你识别。你可以输入任何你想要的名字。
6.现在新的站点Android Plugin应当在可用的站点列表上了。这时,Eclipse还没有开始寻找plugin,这只是个路径你告诉Eclipse。
7.选中Android plugin的选择框然后点击完成。Eclipse开始任何可用的plugin。
8.在搜索结果页面,选择Android Plugin然后点击完成。
9.在特性安装的许可页面,点击接受许可协议,然后点下一步。
注意:
记住所有的plugin都安装在/eclipse/plugins的路径里。这个信息会帮助你假如你需要自己放置Android plugin。
10.Eclipse下载Android plugin。本书写作时,plugin的版本是0.4.0.200802081635.在最终的plugin的安装页面,是特性核实,点击安装所有来完成Android plugin的安装。
安装完成后就是必须去配置plugin。
为Eclipse配置Android Plugin - 第三章(3)

在完成了Android plugin的安装之后,Eclipse应当提示你重新启动应用程序。如果它没有提示你,现在就重新启动Eclipse。重启会确保安装的plugin有机会被初始化。安装下面的方式来配置是非常重要的。
配置Android plugin的方式是从Eclipse的Preferences 窗口开始的,按照下面的步骤:
1.从Eclipse的程序主窗口中|Windows|preferences.
2.再出现的窗口中,在左边选择Android菜单。在窗体的右边点击 Browse,找到AndroidSDK的在硬盘的存放位置。输入到SDKLocation的字段中。Eclipse需要这个信息来进入到Android 提供的工具,比如模拟器。选中Automatically SyneProjects to Current SDK选择框,然后点击应用。
注意:
Android pluginforwindows是以zip文件格式发布的。而且它包含了一个非常长的文件名称。android_m5-rc14-win32.重命名到一个比较容易管理的名字,这会在将来的章节中对你有帮助,特别是到命令行编程。你可能也会解压缩它到程序文件路径里。
4.Android SDK的最后一个设置是把它放到PATH声明内。如果你用的是微软的Windows,右击我的电脑,选择属性,然后选择高级。
5.点击环境变量。在这里可以编辑PATH声明。
6.在系统变量中,找到PATH然后双击它。
7. 在编辑系统变量的对话框中增加你的Android SDK路径,使用分号来分别现有的系统路径。点击OK。在环境变量的窗口再次点击OK。
现在,Android SDK,Eclipse和Androidplugin被完全的配置好了并且准备被用来开发了。在下一章,你会浏览AndroidSDK,了解它的特性。 AndroidSDK包含很多工具来帮助你来开发全功能手机应用程序,并且下一章提供一个好的概述。

问专家:
Q:Android SDK可以用在非Java的语言上吗?
A:不行。Android应用程序只能在Java系统上被开发。
Q:会有更新的Android SDK吗?
A:是的!在写本书的时候,一个SDK的升级发布了,并且解决了平台上的很多问题。我建议经常检查开发页面的更新。
Q:如果升级了,我如何更新我的SDK?
A:更新SDK是非常棘手的。当一个新的SDK发布,必须是plugin也发布。在写本书时,新的SDK和新的plugin都发布了。我试图使用 “Provided(提供的)”的升级工具来改变版本。最终无果并留给了我两个的版本,都工作不正常。我最终不得不卸载了它们并且重新安装最新的一个。然后那个最新的SDK工作正常了。我建议任何面对SDK或者plugin升级的人都采用相同的过程。简单的卸载老版本,然后安装新版本。不要升级。
浏览Android SDK - 第四章(1)

关键技能和观念
—使用Android SDK文档
—使用Android 工具
—使用sample应用程序
—学习Android程序的生命周期
   现在,你已经建立了开发环境,准备去浏览AndroidSDK了,它包含了很多的文件和特别的工具,可以帮助你设计并开发运行在Android平台上的应用程序。这些工具设计的非常的好,而且可以帮助你制作一些难以置信的应用程序。在开始编程之前你真的需要熟悉Android SDK和它所带的工具。
Android SDK还包含了一些可以让应用程序进入Android特性的库,比如和电话功能关联的(呼出和接电话),GPS功能,和短消息。这些库组成了SDK的核心而且会是你经常会使用到的,所以,有一些时间来学习所有关于核心的库。
    这一章包括了所有这些在Android SDK重要的条款,在本章的结尾,在你自己熟悉了Android SDK内容之后,你会足够舒适的开始写你的应用程序。总之,任何的事物都是这样,在你开始练习之前,你必须熟悉这些内容和指示。
注意:
我不会去介绍Android SDK的每一个细节,谷歌已经在SDK内做了非常好的文档。为了避开花费不必要的时间来讨论如何工作,我已经尽量少的做一些简要的说明。我只是会讨论一些重要的话题和条款,然后按照你自己的步伐去探索更深的层次。
Android SDK是什么 - 第四章(2)

   
Android SDK下载后会是一个简单的ZIP文件压缩包。Android SDK的主体是一些文件,连续性的文档,可编程的API,工具,例子和其它。本部分详细的说明这个Android SDK到底有些什么。
    提示:
第三章建议你解压缩AndroidSDK到程序文件的文件夹,所以容易被找到。如果你找不到SDK,因为你使用解压缩的缺省设定,应当在下面的文件夹 /%downloadfolder%/android-sdk_m5-rc14_windows/android-sdk_m5- rc14_windows.(译者注:根据下载的文件名不同,这个文件夹也会不同哦).
    找到解压后的Android SDK的文件夹,然后可以在文件夹内浏览。在根目录会有几个文件,像android.jar(一个编译过的,包含核心SDK库和api的Java应用程序)并且一些发布笔记,剩下的Android SDK被分成3个主要的文件夹:
● Docs 包括所有的Android文档
注意:
这些文档同样也可以在Android开发网站上找到 http://code.google.com/android .
● Samples 可以在Eclipse内编译和测试的6个应用程序例子
● Tools 包含所有在开发过程中需要的开发和调试工具
下面的部分会讨论更多关于在每一个文件夹内的内容。每一个API示例被编译过并且可插入至Android。在后续学习如何在windows和Linux中使用命令行选项创建和编译应用程序的章节中会讨论更多的工具。
Android 文档 - 第四章(3)
  
   Android文档被放在AndroidSDK内的Docs的文件夹内。文档内提供了如何下载和安装SDK的每一个步骤,“GettingStarted”开发应用程序的快速步骤和软件包定义。文档是HTML格式并且有一个documentation.html在SDK 的根目录可以进入整个文档。下面的插图(略)就是AndroidSDK文档的主页。
    你可以从documentation.html上提供的链接导航到Android SDK内包含的文档。
注意:
当你浏览Android SDK时,你可能想到一些页面是一些错误的链接或者丢失了。因为当你点击某些链接时,屏幕右边可能会显示空白,不过,如果你再往下滚动页面你将会明白页面只是没有被排列好。
    在这个Android SDK内,我已经发现有一些部分比其他的部分更重要。对于我来说最重要的Android SDK文档如下(它们会出现在导航条上):
● Reference Information
● Class Index
● List of Permissions
● List of Resource Types
● FAQs
● Troubleshooting
   当你开始开发,Troubleshooting文档的分类部分将会特别有作用。当你深入本书并且开始开发你自己的应用程序,你会发现文档的 Reference Information部分会更有帮组。例如,List ofPermissions分类部分将会非常的有帮助,当你跟着本书创建更复杂的应用程序时。虽然这个现在对你用处不大。花些时间熟悉一下Android 文档吧。
Android示例 - 第四章(4)

Android示例在SDK/SAMPLES内,包含了6个示例可以很好的描述Android的一些功能:
● API Demos
● Hello, Activity!
● Lunar Lander
● Note Pad
● Skeleton App
● Snake
    这些示例由谷歌提供来给你一个快速的印象,那就是如何快速的开发Android的应用程序。每一个应用程序描述Android不同功能的一块。你可以用Eclipse打开并且运行这些应用程序。下面是对于每一个示例的简要描述。
API Demos
这个API示例应用程序说明在一个单独的Activity内如何展示多个API功能的示例。
提示:
一个Activity是一个Android的应用程序。Activities会在后续的章节中深入展开。
如下图(略)所示的,这个API示例应用程序包括了很多的,小的不同的Android功能的例子。这些例子包含3-D图形变换,列表,过程对话框和一个手指-画图示例。
运行API样本示例应用程序
使用Eclipse,装载API示例应用现场作为一个Android项目。要做到这个,在Eclipse菜单选择文件|新建|项目,一个新的 Android项目向导会启动。现在不用担心向导页面上的一些选项。只是选择从现有的项目中创建项目就好了,并且浏览到API示例所在的目录,点击这个示例。当项目装载好了,选择运行,在Android模拟器中来查看。用你自己的方式去查看超过40个示例吧,使用每一个示例去熟悉这些术语和功能。
Android的几个示例 - 第四章(5)

Hello, Activity应用程序,是一个简单的Hello World!风格的应用程序。虽然设计简单,但是它展示了平台的能力。在下一章,你会创建自己的Hello World风格的程序。
Lunar Lander月球登陆
Lunar Lander, 是一个在Android模拟器上玩的游戏。这个游戏一个2-D的游戏在Android上工作是多么的简单。控制非常的简单,而且游戏不是非常的复杂。总之,对游戏开发来说是一个良好的开始。
月球登陆执行一个简单控制方案(上,下,左,右)。游戏同时显示相关的非固定的图形并且对平台来说,令人印象深刻。复杂游戏的理论如冲突检出是以一个简单的方式使用的。虽然本书没有包含Android平台游戏编程的内容,加入你有兴趣来做这个,你或许可以从月球登陆中获得某些启发。
Note Pad写字板
Note Pad, 允许你打开,创建并且编辑小的笔记。写字板不是一个全功能的字符编辑器,所以不要期待是和Windows Mobile中word的竞争对手。但是,作为一个演示工具,使用非常少的代码就能实现这个效果已经非常的棒了。
Skeleton App框架应用
Skeleton App, 这是一个基本的程序展示了几个不同的应用程序的功能。如字体,按钮,图形和表格。如果你想自己运行Skeleton App,真的不应当把它排除在外,参考Skelete App,它会提供不少关于如何执行特定的条款。
Snake 蛇
最后一个在Android SDK的示例就是这个蛇了。这是一个小的SNAFU风格游戏,比月球登陆复杂。
注意:
如果你打开每一个示例应用程序的文件夹,你会看到一个文件夹命名为src。这个是给出示例源代码的文件夹。你可以为其他任何的应用程序来查看,编辑并且重新编译这些代码。利用这些源代码来学一些Android平台技巧和提示。
Android工具 - 第四章(6)
Android SDK提供给开发者一系列功能强大并且有用的工具。在本书内,你会直接使用它们。本部分对其中的一些工具做一个快速的查看,而在后续的章节中会更加深入的进行,那就是在命令行开发中。
注意:
对于Android SDK中包含的更多的工具,请查看Android文档。
emulator.exe
AndroidSDk中一个最重要的工具就是这个emulator.exe。emulator.exe启动Android模拟器。Android模拟器被用来在一个假的Android环境中运行你的应用程序。在本书写作时,还没有发布Android平台可用的硬件,emulator.exe将会是唯一的方法作为测试应用程序的平台。
  你可以从Eclipse或者命令行中来运行emulator.exe。在本书中,通常会使用Eclipse启动Android模拟器环境。总之,为了给你所有信息关于在Eclipse之外用AndroidSDK编程。在第六章里会介绍emulator.exe的命令行使用来创建HelloWorld应用程序。
    当使用Android模拟器来测试你的应用程序,有两个选择可以导航到用户界面。第一,带按钮的模拟器。你可以使用这些导航按钮来导航Android和任何的你为这个平台开发的应用程序。
提示:
电源 On/Off,声音的大小按钮被隐藏在虚拟设备的旁边。当你用鼠标移过它们时,会被自动 识别。
很多的高端手机现在都包含了触摸屏,第二个输入选项就是这个模拟的触摸屏。使用你的鼠标作为一个尖笔。模拟器屏幕上的对象可以相应鼠标的动作。
adb.exe
当你使用命令行编辑器时另外一个工具会变得非常的有用,它就是Android 调试桥,或者adb.exe。这个工具允许你发出命令到模拟器工具。当你在命令行环境下工作时,这个adb工具允许你做下列工作。
● 开始并且停止服务
● 安装和卸载应用程序
● 移动文件至模拟器或者从那里移动
MKSDCARD.exe
MKSDCARD.exe 是一个非常有用的工具,当你测试一个应用程序,而这个程序需要读取或者写入文件到一个插入到移动设备的SD储存卡中。MKSDCARD.exe在你的驱动器中创建一个小的驱动并且会保留测试文件。然后模拟器会把这个小的部分当成一个SD储存卡。
DX.exe
DX.exe 是Android SDK的编译器。当运行你的Java文件,DX.exe将创建一个带有.dex后缀—Dalvik可执行格式的文件。这些会被Android设备正确的理解和运行。
注意:
Android可执行文件是叫做Dalvik可执行文件,Dalvik虚拟机器 以自己脉络来运行每一个应用程序,而且程序的优先权和Android核心程序一致。
activityCreator(.bat 或者 .pn)
activityCreator是一个简单的命令行工具被用来设定基本的开发环境。当从命令行运行时,activityCreator将设置一个需要的基本Android应用程序所需的壳文件。有了这些壳文件是非常有用的,特别是你不使用Eclipse。当你创建一个新项目时,Androidplugin forEclipse通过呼叫activityCreator来设置这些壳文件。依据你运行的是哪一种环境类型,你会看到不同的 activityCreator的脚本文件。如果你使用Windows环境,这个就会是.bat文件,否则就是python(.pn)脚本。简单的执行这些脚本,就会依次的使用正确的参数来呼叫真正的activityCreator过程。
Android APIs - 第四章(7)
    APIs或者叫做应用程序编程接口,是Android SDK的核心。一个API是应用程序开发者在特定平台上创建程序的功能,方法,属性,类别和库的集合。Android API包含所有你创建与Android为基础程序交互的特定信息。
    Android SDk同样包含2套api,—谷歌的API和可选的API.后续的章节中将重点放在这些API上,因为你将利用它们写程序。现在,让我们快速的说明一下它们包含哪些你熟悉的使用。
谷歌 api
    谷歌API含在Android SDK中并且包含编程参考允许你绑定你的程序到现有的谷歌服务中。假如你写一个应用程序允许你的用户通过你的程序进入到谷歌提供的服务中,你需要包含谷歌的API.
    找到android.jar文件,谷歌的API包含在com.google.*包装中。只有很少的包含了谷歌的API.一些包装随着API一起发布包含了图形,移动性,联系人和日历等工具。总之,我们会把本书中把重点放在谷歌地图上。
    使用com.google.android.maps包装,这个包含了谷歌的地图,你可以创建一个应用程序无缝的和熟悉的谷歌地图界面对接。这个包装打开了一个等待着被开发的整个有用的应用程序世界。
   谷歌api还包含了一套有用的包装,来允许你利用由Jabber开放源码社区开发的最新的ExtensibleMessaging和 PresenceProtocl(XMPP)。使用XMPP,应用程序可以快速知道户主在场或者是否可用(从信息和通信中)。如果你要利用电话的短信 功能来创建一个聊天类的程序,这个处理XMPP的API是非常有用的。
可选的api
    AndroidSDK包含了一些可选的api,它包括了一些标准Androidapi未包含的内容。说它们是可选的api意味着这些功能在手持设备上可能出现也可能不出现。也就是说一些为Android平台创建的设备可能包含升级或者一些特性而其他的没有。当利用在你的应用程序中利用这些可选的API时,包含了你的编程选项。
   其中的一个可选特性(本书的后面会使用)就叫做电话基础的GPS.AndroidLBS(位置基础的服务)api需要接受并利用设备上GPS单元的信息。如果结合Android LBSapi和谷歌地图api,你或许有一个非常有用的应用程序会实时的显示你的位置。
其它可选的api包含利用蓝牙 ,Wi-Fi,播放MP3,进入并激活3-D-OpenGL硬件等。
应用程序生命周期 - 第四章(8)
  如果你有相当好的编程经验的话,你对应用程序的生命周期这一概念应该熟悉。一个应用程序的生命周期,由一些应用程序由开始执行到终止的步骤组成。每一个应用程序,不管是哪一种语言所写,都有一定的生命周期。Android应用程序也没有例外。本部分会仔细对比ASP应用程序和Android的应用程序的生命周期。
标准ASP程序应用程序生命周期
    标准ASP应用程序的生命周期和一个Android的程序生命周期非常的类似。ASP应用程序从开始到结束有5个步骤。这些步骤对所有的ASP程序是一致的。并且界定了ASP程序是什么。这些步骤按照次序如下:
1. Application_Start(程序开始)
2. Event(事件)
3. HTTPApplication.Init
4. Disposal
5. Application_End
提示:
有些ASP的参考材料考虑Disposal和Application_End在生命周期中成为一个步骤。但是,Disposal呼叫可以到达Application_End之前被打断。这个可以允许程序在真正结束之前执行特定的功能。
  当应用程序被从服务器要求执行,开始呼叫Application_Start。这个过程依次的通向过程处理。当所有相关的应用程序模块被装载,HTTPApplicaation.Init被呼叫。程序执行事件,并且当用户试图去关闭它,Dispose被呼叫。Dispose然后转移过程到 Application_End过程,来关闭程序。
    这是一个相当标准的应用程序生命周期。大多数的程序是这个生命周期:一个应用程序被创建,装载,拥有事件,并且被关闭。下面说明和Android应用程序生命周期的对比。
  Android应用程序生命周期是唯一一个系统控制多的应用程序生命周期。所有的Android应用程序,或者Actiities都运行在自有的过程中。所用的运行过程都被Android观察,并且取决于活动是如何运行的(就是说,一个前台活动,一个后台活动)Android可能选择去结束一个消耗系统资源的活动。
注意:
当决定是否关闭一个活动时,Android会考虑一些因素,如用户输入,内存使用和过程时间。一个Android或者的生命周期以一些特定的方式被称呼:
● onCreate
● onStart
● Process-specific events (for example: launching activities or accessing a database)
● onStop
● onDestroy
与其它程序的逻辑一样,一个Android应用程序被创建,过程开始,事件被执行,过程停止,并且应用程序结束。虽然有一些不同,很多的程序开发者应该不会对这样的生命周期感到别扭。
问专家:
Q: 谷歌会升级Android SDK吗?
A:是的。从我开始写这本书的时候,谷歌已经升级了Android SDK很多次了.谷歌会在Android的网站上发布最新的版本。
Q: 会有任何API试用版出现在最终产品中吗?
A: 或许不会。API试用版创建出来是为了炫耀产品能力的。虽然它们可能是核心解除的包含一些在API试用版里元素的应用程序,我们应该看不到月球登陆这个游戏出现在最终产品中。Android程序:Hello World! -第五章(1)
关键技能和概念
● 创建新的Android项目
● 同Views一起工作
● 使用一个 TextView
● 修改main.xml 文件
● 在Android模拟器上运行应用程序
   为了让你能够对在Android上编程有一个良好的印象,在第六章,你会在Windwos平台和Linux平台上使用AndroidSDK创建命令行应用程序。或者说,本章包含了在Eclipse创建程序的过程,第六章包含了使用命令行工具的创建过程。因此,在继续之前,你应当检查你的Eclipse的开发环境是否被正确的配置。再次回顾一下第三章关于AdnroidSDK的PATH声明。同时要确保JRE也是在你的PATH声明中。
提示
如果当你运行命令行示例,有任何与配置有关的问题时,请参考第二章和第三章提到的步骤,并且查看Android SDK文档。
在Eclipse中创建你的第一个Android 项目
  要开始你的第一个Android项目,打开Eclipse.当你第一次打开Eclipse,它会打开一个空开发环境,这就是你要开始的地方。你的第一个任务是设置并且命名一个工作空间。选择 文件| 新建 |Android 项目,使你能够创建一个Android特有的应用程序向导。 
注意:
不要从新建菜单上选择Java项目。你的Android应用程序是在Java中写的,并且你在Java项目中进行开发,这个选项会创建一个标准的Java应用程序。选择Android项目来创建一个Android特有的应用程序。
    如果你没有看到啊Android项目这个选项,这就说明在Eclipse中,Android plugin没有被完全或者正确的安装。重新检查第三章中关于Android plugin的安装程序来修正这个问题。
新的Android项目向导为你创建2个东西:
● 一个绑住Android SDK的壳程序。这个将允许你使用所有Android库和包来进行编码工作,并且允许你在合适的环境中调试程序。
● 新程序的第一个壳文件。这些壳文件包含一些必要的支撑你将要编写程序的文件。就如同一个在Visual Studio中,它会在你的文件中产生的一些代码。使用Eclipse中的Android项目向导产生一些初始的程序文件和一些Android创建的代码。
    另外,新的Android项目向导包含一些你必须输入的选项。
    在项目的名称那个字段,只是为了举例,使用HelloWorldText这个名字,这个名字非常的容易把这个Hello World项目从其它你将要在本章中创建的项目分别开。
  在内容那个区域,保持缺省的选择:在工作区中创建一个新的项目这个选项必须被选中。并且使用缺省的位置这个选择框也应当被选中。这个将允许 Eclipse在你缺省的工作区路径中创建你的项目。这样做的好处是很容易对你的项目进行排序,管理和查找。例如,如果你在工作在一个Unix基础的开发环境中,这个路径指向Home路径。如果你工作在一个Windows的环境中,工作路径将会是C:/Users/<username> /workspace。总之,有一些原因,你可能需要不选中缺省位置的选择框并且选择一个其它的路径。如果是这样的话,不管那个位置的选项,自己选一个好了。
  另外一方面,如果你在Eclipse设定(在第二章的最后一节中)中没有选中“使用这个作为缺省并且不要再询问”,你可能被要求定义一个项目的位置。在Eclipse的设置中选中“所有的新项目使用缺省工作空间路径设定”(并且提供在新Android项目向导位置字段)。如果你在Eclipse设定过程中不选中这个选择框,你需要通过点击浏览按钮并导航来选择一个路径。最后三个选项是在属性区域中。这些属性定义了你的项目是如何被统一到Android 环境中。在包装名称字段,你为程序包装定义,例如:android.app.Activity或者 com.google.android.map.MapActivity.
注意:
包装名称遵从了标准的java命名指导方针,这个方针的建立是为了减少同名程序发布的风险。最高层的包装名称是公司的域名(如com,org和net)这个遵从了域名,如google。最后,一个为包装内容的描述性标题被提供。在本章中,HelloWrold的包装名称将省略com来识别,因为这只是一个文本程序而且不会被发布。所有在本书中将来创建的包装将是可发布的并且是用com标识符
对于这个HelloWorldText应用程序,使用_programmers_guide.HelloWorldText这个名字。这个名字识别了属于这个程序的编码而且区别开你将开发的其他应用程序。
注意:
  如果你注意到你输入的这个屏幕,你会注意到当你输入程序名称,一个错误显示在本向导页面的顶端说你必须正确的填写所有的字段来继续。这个错误信息是提前并且有一些难以理解的因为你还没有填写完其他的字段。如果你看到这样的错误提示信息,忽略它并且继续完成下面两个字段的填写。
  下一个属性字段,活动的名称,这个要求输入是因为它会在程序的主屏幕上被提到。想一下,活动是一个显示你应用程序的窗口。没有活动,你的应用程序将无法做更多的工作。因为Android应用程序可以被一些活动组成,新Android项目向导需要知道哪一个活动回事缺省的。活动名称的字段是要求输入并且没有缺省值的,所以如果你必须提供一个来继续下去,本例使用HelloWorldText。这个保证了程序的简单而且在这里是个描述。
    最后的属性字段,应用程序名称,应用程序名称描述。这个就是安装在设备上用来管理的应用程序名称。再次说明,为了方便起见,使用HelloWorldText作为程序的名称。
提示:
程序名称和活动名称字段不一定要匹配。事实上,很多的编程者习惯于一个老的惯例,那就是程序的开始画面或者叫做主页。使用你感觉舒服的名字,为了说明的目的,本章假定你使用了建议的名字。
    点击结束来结束创建过程。本向导运行一个后台程序自动产生支持一个Android应用程序所需要所要求文件和文件夹。当过程结束时,你会有你的第一个Android应用程序项目,
提示:
如果结束的按钮不可用,你可能字在属性页面的字段内犯了一个错误。确保属性页面填写正确,Eclipse不会允许任何输入错误的可能引起问题发生的信息。返回确保所有的属性字段是正确的。下一节会仔细检查自动产生的Android文件和一些为你应用程序产生的壳条目的目的。
仔细查看Android创建的文件 - 第五章(2)
  本部分讨论Android刚刚创建的新文件。一个非常全面的结构已经为你创建好了,而且,如果你不知道要看什么的话,你最终或许会在不应该放置代码的地方放上代码。有一些Android提供的文件你需要去修改,并且有一些你不能修改。知道这些信息会避免你不得不去重新创建项目。
    在你打开的项目中,首先看一下Package Explorer,一个或者二个在主要开发区域面板的左边上的制表符。
注意:
如果你的Package Explorer没有打开,你可以通过选择Windows | Show View | Package Explorer.激活它。
  你应当看到一个根目录,本例中叫做HelloWorldText。根目录是你所有项目文件的“家”或者“容器”,你自己和Android创建的文件都会放在这里。从PackageExplorer很容易进入。现在会有比较少的一些项目在你的根目录里:一个AndroidManifest.xml文件,在一个参考库里的一个包装,和三个目录(res,assets和src)。我们轮流来讨论这些项目。
AndroidManifest.xml
AndroidManifest.xml文件是一个指定全局设定的地方。如果你是一个ASP.NET的开发者,你可以认为 AndroidManifest.xml是Web.config和Global.asax的二合一。(如果你不是APS.NET的开发者,AndroidManifest.xml就是意味着是个存放设定的地方)。AndoridManfiest.xml将包括如程序许可,活动,和意向过滤器等的设定。标准的AndroidManifest.xml文件应当包含下面的信息:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=http://schemas.android.com/apk /res/android
package="testPackage.HelloWorldText">
<application android:icon="@drawable/icon">
<activity class=".HelloWorldText" android:label="@string/app_name">
<intent-filter>
<action android:value="android.intent.action.MAIN" />
<category android:value="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
如果你创建一个应用程序,你将要在这个文件里增加信息。注意,你提供的包装名称已经列在这里了,同样包括你的活动所需的动作。
引用库和目录 - 第五章(3)
  一个引用库的列表也包含在根目录里了。通常,对于一个新手的项目,你应当只看一个库。扩展引用库的分支并且仔细查看当前你的应用程序项目所引用的库。由于它是一个新的Android项目,你会在项目引用里看到一个库,那就是android.jar,AndroidSDK(如果你熟悉 JavaSDK,android.java是同Java的rt.java非常类似的文件。在rt.java里封装了很多java的API)。 AndroidPlugin确保了这个是唯一被你应用程序引用的库。应用程序需要引用SDK来获得进入在SDK库内所有类别,比如你的 Views,Controls或者甚至谷歌的API。
注意:
Eclipse可以允许你增加用户定义的外部库。但是除非你确信这些外部的引用将在Android应用程序上工作,所以增加它们之前请三思而后行。
目录(路径)
    有三个目录在项目的根目录——res,assets和src。每一个都有着显著的目的。这些目录在你应用程序的运行中扮演着完整的角色。
res 目录
   res目录是你项目资源放置并且编译你的应用程序的地方。当你创建一个新的Android项目,res目录包含3个子目录:drawable,layout, 和 values。 你会在很多的项目中使用drawable和layout分别放置并显示图形和布局。而values目录放置遍及程序全局的字符串。
注意:
一个引用到res目录和它内容是被包含在R.java文件中,在src目录中。我们会在本章的后面详细的讲解。drawable目录包含你程序可以使用和引用的真实图形。layout目录放置XML文件,当构造它的界面时,main.xml文件被应用程序引用。在本书的绝大多数应用程序中,你会去编辑在 layout目录下的main.xml文件。这将允许你插入Views到程序的可视布局并显示它们。一个原始的main.xml文件包含下列代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
android rientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, HelloWorldText"
/>
</LinearLayout>

最后一个在res目录下的文件夹是values,放置了XML文件命名字符串。strings.xml文件是用来放置程序引用的全局字符串。
assets 目录
assets目录用来放置“原料”文件的。在这个目录中可以包含为流媒体和动画准备的音频文件。因为Android模拟器的beta音频驱动没有优化,我不会在本书的应用程序中使用任何的音频文件。
src目录
src目录包含项目里所有的源文件。当项目一创立,就会包含两个文件R.java和<活动>.Java(本例中是HelloWorldText.java)
注意:
<activity>.java 总是根据你的活动来命名。
Hello World!自动产生文件的详解 - 第五章(4)

R.java是一个由Androidplugin自动产生并添加到你的应用程序中的文件。这个文件包含到drawable,layout和values目录的指针(或者目录里其它的项目,本例中是字符串和图标)。你不应当必须直接修改这个文件。在你大多数的程序里会总是提到R.java.为 HelloWorldText自动产生的代码如下:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package testPackage.HelloWorldText;
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文件的注释部分提供了关于这个文件起源的解释。它说明文件由aapt工具创建。在第六章,当你创建命令行版本的Hello World时,你将用命令行工具创建所有自动产生的文件。
  <activity>.java文件在src目录下,你会花费大多数时间在这个文件上。本例是HelloWorldText.java. 这个是你的创建新的Android程序向导时由Androidplugin创建并与活动名称匹配来命名的。不像本部分大多数你已经看过的文件,这个文件完全可以编辑。事实上,如果你不修改代码,它会为了做一点点的事情。
Package android_programmers_guide.HelloWorldText;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorldText extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
}
}
    在文件上面的三行是标准预处理器指令——那就是,如大多数的编程语言,在程序处理前声明是指令到编译然后运行。在本例中,你在package android_programmers_guide.HelloWorldText.有了定义和包含。
    下两行通过android.java从Android SDK中导入特别的包装。
import android.app.Activity;

import android.os.Bundle;
这些行告诉项目去包括所有你程序里面的代码之前包括所有来自导入包装的代码。这两行对于基本的Android程序非常的重要并且不应当被移除。
提示:
如果你在项目里没有看到.android.os.Bundle 的输入声明,在开发窗口展开树形。Eclipse会给出在第一个下面所有输入的声明,所以你必须展开树形结构来看其余的声明。
    现在让我们关注到你的类HelloWorldText,你会看到它扩展了Activityclass.Activity被从前一行导入。所有的程序源于 Activityclass,并且在Android上运行一个程序会需要这个起源。运行并在屏幕上显示某些东西必须从Activity起源。
    HelloWorldText的类保持了需要创建,显示并且允许程序的代码。在HelloWorldText的类中,现在只有一个方式来定义代码 onCreate( ).
    onCreate()方法把冰柱作为一个束。那就是所有点钱状态的信息被搜集作为一个冰柱对象并且被保存在内存了。在本程序中你不能直接处理冰柱,但是你需要知道它的存在和目的。
    文件中的下一行是真正可感受到的动作:
setContentView(R.layout.main);
  setContentView()方法把Activity的内容设置到指定的源。在本例中,我们通过R.java文件中的指针使用layout目录里的main.xml文件。现在的main.xml文件包含了HelloWorldText的屏幕和一个TextView。TextView起源于View 并且被用来在Android环境中显示文本。回头再看main.xml的内容,你会看到它包含了下面的行:
android:text="Hello World, HelloWorldText"
   setContentView()方法被告诉去设置main.xml作为当前的View,并且main.xml包含了一个宣称 “HelloWorld,HelloWorldText”的TextView。现在可能比较安全的去编译并运行HelloWorldText。要测试这个,运行你的HellowWorldText程序。选择 Run|Run to open the Run As dialog box,选择一个Android应用程序,然后点击OK。
    你新建立的项目包含创建Hello World应用程序自身的代码。总之,这个并不是太吸引人,而且也没有教你太多参与Android应用程序编程。你需要仔细研究项目本身并且看看项目是如何显示“Hello World!”信息的。
    当你创建一个新的,由Android plugin修改的main.xml程序的Android项目时究竟发生了什么。这是一个完美修改Android中 UI的一个例子。当项目被创建时,下面的代码行由Android SDK增加到main.xml中:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, HelloWorldText"
/>
  在我讨论xml文件中存在的TextView时,我没有说它为什么能没有任何相应的代码就可以工作。在本书的早些时候提到有两种方式来为 Android设计UI:通过代码,和通过main.xml文件。在先前的代码例子中,在xml文件中创建了一个TextView并且设定文本为 “HelloWorld, HelloWorldText”。编辑main.xml中的这一行,按照下面的方式:
android:text="This is the text of an Android TextView!"
重新运行项目,并且你的运行结果应该如图所示(略)。利用一些时间并且用xml的TextView做实验。然后你可以转移到用另外一种方式来创建一个Hello World!应用程序了。
Hellow World! 再来一次 - 第五章(5)

在本部分中,你将创建另外一个HelloWorld!这次,你会使用编程代码而不是使用xml文件,并且你会自己来做大部分工作。第一步就是把main.xml里面已经有的TextView代码删除 。下面就是TextView部分的代码。完全的删除它,使你的应用程序是一个空的壳。
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, HelloWorldText"
/>
在移除了TextView代码以后,你的main.xml文件应该像下面这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</LinearLayout>
    现在你有一个干净的main.xml文件了,并且一个干净的应用程序壳,你可以开始增加可以在屏幕上显示“Hello World!”的代码了。从打开HelloWorldText.java并移除下面的代码行开始:
setContentView(R.layout.main);
注意:
你仍旧需要为你新的应用程序来设置一个ContentView;但是你需要执行和现在的这个有一点细微的不同,所以在这里最好把完整的声明移除。
    这条使用setContentView()来把main.xml显示在屏幕上。因为你不会去使用main.xml来定义你的TextView,所以你不会去设置你的view。取而代之,你会用代码来构建TextView。
  下一步是从android.widget中导入TextView包装。这样你可以进入到TextView并且允许你创建自己的实例。把这些代码放置到当前HelloWorldText.java文件靠近顶部,现有导入声明的import android.widget.TextView的地方;
    现在,创建一个TextView的实例。通过创建这个TextView实例,你可以在屏幕上显示文本而不需要直接修改main.xml文件。在onCreate()声明的后面放置下面的代码:
TextView HelloWorldTextView = new TextView(this);
注意
  TextView在当前上下文中取得一个句柄作为一个变量。传递这个到TextView并和当前的上下文相关联。如果你跟从SDK的等级,HelloWorldText扩展至Activity,而Activity扩展至ApplicationContext,而再扩展至Context。这就是你如果传递TextView的。
    先前的代码行创建一个名叫HelloWorldTextView的TextView的实例,然后例示HelloWorldTextView,通过设置它到一个新的TextView。这个被上下文传递的新的TextView被完全的例示。
    现在,这个TextView已经被定义好了,你可以在里面增加文本。下面的代码指定“Hello World!”文本到TextView:
HelloWorldTextView.setText("Hello World!");
    这一行允许你设定你的TextView文本。setText()允许你赋值一个字符串到TextView。
   你的TextView已经被创建而且现在包含了你想要显示的信息。但是,如果简单的指定“HelloWorld”到TextView中不会在屏幕上显示任何的东西。如前面所讨论的那样,你需要设置ContentView来在屏幕上显示东西。所以,你必须使用下面的代码来设置TextView到上下文并且在屏幕上显示:
setContentView(HelloWorldTextView);
   仔细查看本行代码,你会发现你把setContentView到TextView。前面的三行代码是制作你的HelloWorld!应用程序。你创建一个Textview,赋值你的文本,然后显示在屏幕上。所有的事情就是这样,根本不复杂。完整的HelloWorldText.java文件应当像下面这样:
package android_programmers_guide.HelloWorldText;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloWorldText extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
分享到:
评论

相关推荐

    安卓编程教程

    什么是Android - 嵌入式设备编程的历史

    安卓程序设计

    安卓程序设计 什么是Android - 嵌入式设备编程的历史

    Android程序员入门(中文版)

    什么是Android - 嵌入式设备编程的历史 开放手机联盟和Android 介绍Android Android示例 Android的几个示例 第二章 下载和安装Eclipse总则 6 下载和安装Eclipse总则 下载和安装JRE 下载和安装Eclipse 第三章 ...

    新版Android开发教程.rar

    什么是 Android? Android? Android? Android? Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 ...

    Android程序员向导

    什么是Android - 嵌入式设备编程的历史-第一章(1) 暂时可以这样说,传统的桌面应用程序开发者已经被惯坏了。这个不是说桌面应用程序开发比其他开发很简单。总之作为桌面应用程序开发者,我们已经有能力按照我们的...

    中文版Android程序员入门

    什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和Android-(2) 2 介绍Android 第一章(3) 3 Android示例 - 第四章(4) 4 Android的几个示例 - 第四章(5) 5 第二章 下载和安装Eclipse总则 6 ...

    Android程序员入门(中文版).doc

    什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和Android-(2) 2 介绍Android 第一章(3) 3 Android示例 - 第四章(4) 4 Android的几个示例 - 第四章(5) 5 第二章 下载和安装Eclipse总则 6 ...

    android开发指南

    什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和Android-(2) 2 介绍Android 第一章(3) 2 Android示例 - 第四章(4) 3 Android的几个示例 - 第四章(5) 4 第二章 下载和安装Eclipse总则 5 ...

    Android:一个程序员的入门书

    历史的嵌入式器件编程● 开放手机联盟的解释● 第一眼看到Android的主屏幕 可以这么说,暂时,传统的桌面应用程序开发者已经被惯坏了。这个不是说 桌面应用程序开发比其他形式的开发很简单。总之,作为传统的桌面...

    Android系统的移动终端在智能家居中的应用_陈明.caj

    系统及控制端的基础上,结合时下流行的嵌入式技术、Wi-Fi 无线传输技术、Android 操作系统及 Java 编程语言等,设计一款智能家居系统的 App 软件,并且用户能够通过 该软件实现控制智能化家居设备及其他家居生活相关...

    超级马里亚java源码-udemy-Java_COMPLETO_2018_Programacao_Orientada_a_Objetos_Pr

    嵌入式和移动设备 - 物联网 Java SE - Java 标准版 - 核心 - 桌面和服务器 JavaFX - 桌面和 RIA Java EE - Java 企业版 - 企业应用程序 2.5. 上下文化第 2 部分 JRE、JDK、字节码和虚拟机 库 - API 规范 JVM - Java ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

    基于OpenCV的Android下车牌识别应用.zip

    物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有丰富的官方文档、教程、示例代码以及活跃的开发者社区,包括GitHub、StackOverflow、官方论坛...

    android平台基于openCV人脸检测,添加宠萌效果.zip

    物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有丰富的官方文档、教程、示例代码以及活跃的开发者社区,包括GitHub、StackOverflow、官方论坛...

    Android平台Camera基于freetype和opencv实现预览拍照支持中文水印.zip

    物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有丰富的官方文档、教程、示例代码以及活跃的开发者社区,包括GitHub、StackOverflow、官方论坛...

    Android端的基于OpenCV和Dlib的图片、视频人脸检测和人脸识别.zip

    物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有丰富的官方文档、教程、示例代码以及活跃的开发者社区,包括GitHub、StackOverflow、官方论坛...

    平板显示发展史

    FAQ为什么我点的下载下不了,但积分却被扣了由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。我的积分不多了,如何获取积分?上传优质资源可以获取积分,详细见 ...

    基于OpenCV+tesseract-ocr实现身份证识别.zip

    物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有丰富的官方文档、教程、示例代码以及活跃的开发者社区,包括GitHub、StackOverflow、官方论坛...

    基于opencv-python的sift、kmeans、bow图像检索.zip

    物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有丰富的官方文档、教程、示例代码以及活跃的开发者社区,包括GitHub、StackOverflow、官方论坛...

Global site tag (gtag.js) - Google Analytics