英语原文共 13 页,剩余内容已隐藏,支付完成后下载完整资料
第1章 大框架
Android 设备中的来说,还是手机。虽然正在讨论将android的技术用在其他领域(如汽车仪表板上的“个人电脑”,但是你能想到的绝大部分设备还是使用的安卓手机)。
对于开发人员,这是优点和缺点并存的。从另一方面来说,大约在2009年,android类的手机还是可以比较“可人”(sexy)的。
通过移动设备提供互联网服务的历史可以追溯带90年代中期以及手持标记语言(HDML) 但是直到近些年,移动设备才真正具有互联网接入能力。现在,由于传统的手机 功能,如文字短信,和一些产品,比如苹果的手机,手机才作为一个互联网接入手段非常快 地流行起来。因此,用 Android 应用程序工作将给你一个有趣的技术体验,在快捷的移动 市场领域(具有互联网接入能力的手机))始终是一件好事。
同时,当你要编程实现一些东西时,该死的麻烦也随之而来。任何有过类似于 PDA 编程经验的人都有这种痛苦,这个痛苦的根源就是小。
�就屏幕尺寸太小(你不可以在口袋里装一个24寸的LCD吧)
�键盘很小(如果有的话)。
�点击设备(如果有的话)让人很无语(就像那些把触摸笔弄丢了的人所告诉你的一 样)或者是不正确的(大指头在多点触摸(“multy-touch”)的 LCD上总是按不对。
�CPU 的速度和内存的大小和你使用的桌面设备不可同日而语。
�如果你愿意你可以选任何编程语言和设备框架,只要它们是厂商支持的,并且已经 写入了移动设备中的硅元素中。
�等等hellip;hellip; 更重要的是,现在运行在手机上的程序必须面对一个事实:真的要在手机上运行。 当人们的手机工作不正常时,人们会变得非常暴躁,这就是 Verizon Wireless 的。
广告“Can you hear me now ?”变得这么流行的原因。同样的,当你的
程序以下面的方式“破坏”人们的手机时,他们也会变得很气愤:
�你一直占着 CPU,电话却打不进来
�与手机的操作系统兼容性不怎么样,比如当有电话打来时,或者当用
户要求你的程序退到后台,但是你的程序却不能正常地退到后台
�直接引起手机操作系统的崩溃,比如你的程序像一个筛子一样引起内存泄露 所以编写一个手机应用程序和你编写一个桌面应用程序,网站,或者类似于后台服务的经验是完全不同的,你必须处理不同的产看设备(different-looking tools),不同的框架行为(different-behaving frameworks),和不同的“不同而不是适应”('different than yoursquo;re used to ')对你的编程的各种限制。
ANDROID所尝试的是要满足半路出家的你:
�家的你可以用一个非常非常常用的编程语言(java)被广泛应用的库
(比如一些Apached的常用API)以及支持你常用的一个编程工具
(Eclipse)。
�你可以得到一个非常坚挺和独立的框架,使得你的程序能够成为手机上的一个“好市民”,并且不会干扰手机上的其他程序或者操作系统。或许正如你所希望的那样,这本书的大部分是给你介绍怎么编程和处理各种限制,并且 利用它的各种能力给你。
Android 是由什么组成的?
当你在写一个桌面程序时,你是“自己领域的上帝” 。当你需要时你可以加载自己的 主窗口和任何子窗口——比如对话框。从你的角度来说,你处在一个操作系统支持各项特性 的世界,并且很大程度上的忽略其他可能与此同时运行的应用程序。当你和其他操作系统进 行交
互时,一般都是通过 API,比如应用程序JDBC(他操或者凌驾于它之上的框架)和 MySQL 或 者其他的数据库进行通信。
Android有着相似的概念,但是打包的形式不一样,Android的设计是为了让手机系 统更加的坚挺。
ACTIVITY
组成用户接口这个大厦的“砖”就是activity。你可以把activity想象成
android中类似于桌面程序中的窗口或者对话框。
虽然 activity 可能不具有用户界面,最有可能你的“没有脸的”(headless)
代码(这里指你的程序对用户不可见)。
将被以服务或者content provider 的形式打包,正如我们下面
要讲到的一样。
Content Provider
Content provider 提供了一个所有程序都能访问的存储在设备中的数据的抽象。 同样 Android 的开发模型鼓励你将自己的数据设计成对其他程序也是可用的,就象访问你 自 己的数据一样的一一当你维护一个完全可用的自己的数据访问时,或者组件一个content provider 时它就会让你做这样的事情,
Intent
Intent 是系统的消息,运行在系统设备内部,用以通知程序各种各样的事件:从硬件状态的改变(比如 SD卡的插入 )到数据的到达(比如来了一条短信 ),再到应用程序的 事件(比如你的程序应用程
序从主菜单中启动)。你不只可以对 intent 做出反应,还可以 创建你自己的 intent 去启动其他的 activity,做或者用以通知你自己一个特定的状态的出现(比如当用户达到一个特定位置100米的范围之内时发送一个特定的Intent)
Service
Activitycontent provider和 intent receiver 的生命周期都是比较短 的,并且随时可以被关闭。 service的在另一方面被设计成如果需要,可以独立于任何的activity而一直保持运行。你可以用一个service来检查RSS的更新,或者播放后台的音乐,即使那个主控的activity已经不再运行了。
一切任你支配
Android 是伴随着很多可以帮助你编程的特性出现的。
存储
你可以用自己的应用程序对数据文件(是指那些一般不会变的比如图标或者帮助文件)进行打包。你也可以自己在设备上开辟一块小空间,用于存保存用户输入或者你的程序将要用到的数据或者读写文件。如果用户提供了一个巨型的设备比如SD卡,你可以在需要时候对其进行读写。你可以在需要时对其进行读写。网络Android 通常情况下是通过一个交互媒介而对互联网络可读的。你可以利用互联网进行各种层次的互联网数据访问。如果你希望的话,
可以用原始的java套接字为你的程序去创建一个WebKit为基础的浏览器。
多媒体
Android 设备具有对音频和视频的回放能力。虽然设备与设备的实现细节不同,但是 你可以查询下设备的能力,然后去用你认为合适的多媒体功能。不论是去播放音乐,用摄像 头拍照,还是利用麦克风去做一个语音记录。
GPS
android设备会经常访问locatio provider 比如 GPS,它可以告诉你的应用程 序这个设备出现在地球表面的哪个地方。接下来,你就可以显示一幅地图或者利用得到的这个位置数据,比如你可以在这个设备被偷了时去跟踪这个设备的移动情况。
手机服务
当然,服务Android设备也是一个典型的手机,允许你的软件去初始化一个(语音)通话、发送一个短消息,或者其他现在所有的电话技术。
第二章 工程结构
Android 的组建系统会为你的工程组织一个细节目录,就像任何的 Java 工程一样。 细节目录对 Android 和其他打算在 Android 设备或模拟器上运行的程序来说是独一无二 的。这里是一个对工程结构的快速入门,可以帮助你理解它。这本书中的源代码可以 在 Apress 网站的 Source Code 部分找到。
根目录
当你创建一个 Android 工程时(例如通过将在第四章讨论的 activitycreator 脚 本,或者一 个支持 Android 的集成开发环境(IDE)),将会在你的工程中的根目录项得到 以下条目:
� AndroidManifest.xml,这是一个描述应用程序的组建、工程将要用到的组成 部分——activity,service 等内容的 XML 文件。
� build.xml,一个用于在设备上编译,安装的 Ant 脚本
� default.properties,Ant 组建脚本使用的属性文件
� bin/一旦被编译,工程就会被保存在这里
� libs/保存着你的程序将要用到的第三方 java 的 JAR 包
� src/保存着应用程序的 java 源代码
� res/保存资源文件,比如图标,图形用户界面的 layout,等这样的文件。这些 会在编译 Java 程序时打包进程序
� assets/保存着其他你希望打包进应用程序,用于在设备上进行部署的静态文件
辛勤的汗水
当你创建了一个 Android 工程(比如能过 acitivitycreator),你要为这个应用程 序提供一个“主”acivity 类的全称(比如 com.commonsware.android.SomeDemo)。 这时你会发现你的工程的 src 目录树已经被一个名空间的目录树替代,后面加上了一个包 含 你 的 主 activity 的 Acivity 的 子 类 ( 比 如 src/com/commonsware/android/SomeDemo.java)。当你需要执行你的程序时,很
欢迎你修改这个文件并且添加别的文件到 src/目录树中。 第一次编译这个工程时(比如通过 ant),在“主”activity 的名空间目录外面,
Android 编译链(这里指编译工具集——译者)会创建一个 R.java 文件。这里面了绑定 了很多你添加进 res/目录树的资源。你不应该自己更改 R.java,而应该让 Android 的 工 具 去 完 成 这 件 事 。 你 可 以 看 到 很 多 我 们 引 用 R.java 中 东 西 的 例 子 ( 比 如 通 过 R.layout.main 引用一个 layout 的 ID)。
故事的其他部分
就像前面提到的,res/目录树中存放着资源文件 ——一些会随你程序以它们被组织的 方式,或者偶然地以一个预处理的形式——一起打包的静态文件。一些你可能会在 res 文 件夹下发现的子文件夹包括:
� res/drawable/ 存放图片文件(如 png,jpeg 等)
� res/layout/ 存放一些以 XML 为基础的用户接口(UI)的 layout 细节。
� res/menu/ 存放着以 XML 为基础的菜单细节
� res/raw/ 存放着一些通用目的的文件(比如保存账户信息的 CSV 文件)
� res/values/ 存放着一些字符串,面积等类似的值的文件
� res/xml/ 存放着一些通用目的你想要传送的 XML 文件。
在此之外
当你编译你的工程时(通过 ant 或者集成开发环境),编译的结果会跑到 bin 的目录 下面,这个目录存放在你工程的根目录下。它里面包含:
� bin/classes/ 里面包含了一些已编译的 Java 类文件
� bin/classes.dex 存放了通过已编译的 Java 类的而创建的可执行文件
� bin/yourapp.ap_ 存 放 着 你 的 程 序 的 资 源 , 被 以 zip 文 件 的 形 式 打 包 存 放 。(yourapp 是程序的名字)
.apk 文件是一个包含了.dex 文件、已编译资源文件的版本信息(resources.arsc)、 任何没有编译的资源文件(比如你放在 res/raw/下面的东西)和 AnroidManifes.xml 文件的 zip 档案文件。它也是经过数字签名的。用文件名的-debug 部分声明它是用 debug key 签名,工作在模拟器中的;或者用-unsigned 表明它是你的应用程序的 release 版(ant release),但是 APK 还是应该用 jarsigner 以官方的密钥(key)签名的。
任何android应用程序的基础是存放在应用程序根目录下面的Mainfest文件;AndroidManifest.xml.里面包含了你的程序内容,以及(组件)在什么地方声明的信息--activity,service等。你可以指出怎么样可以让这些零散的东西和整个Android系统中的这些信息本身关联起来,比如你声明哪个(或者是哪些)activity应该显示在彩电上(也可以是加载器上)。
当你创建你的应用程序时,你会得到一个自动生成的最基本的mainfest。对于一个简单的应用程序来说--只提供了单个activity而别无其他--这个自动生成的mainfest可能会正常工作,或者可能只需要做一些很微小的修改。从另一个极端上来说,android API demo集
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[139432],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。