全部博文(465)
分类: 嵌入式
2012-10-24 13:59:28
Learning Android(中文版)
(美)加尔根塔(Gargenta,M.)著
李亚舟,任中龙,杜钢译.
ISBN 978-7-121-17263-2
2012年7月出版
定价:49.00元
16开
284页
宣传语
想为Android设备开发应用程序吗?这本书就是帮助你入门的最佳途径。
内 容 简 介
本书为Android开发入门图书,循序渐进地介绍了如何利用Android基本构件来实现构造用户界面、存储数据、连接网络等实践中必不可少的需求。本书以亲手实现一个类Twitter的应用为主线,通过不断为其添加功能展开讲解。而这一学习过程积累出的代码模式库,可以灵活运用于真实Android应用开发。本书内容包括但不限于:Android平台概览、Android设计架构、Android开发环境配置、基本Android的用户界面构建、UI元件组织方法、构建执行后台任务与更新数据的服务、AIDL与NDK介绍等。
作者介绍
Marko Gargenta是旧金山Marakana培训公司的创始人与首席Android专家。他创建了Android Bootcamp与AndroidInternals两门课程,并培训了来自四大洲超过1000名开发者。他的客户包括高通、索尼爱立信、摩托罗拉、夏普、思科与美国国防部。
译者序
在2008年Google宣布Android SDK 1.0发布的时候,相信大家还不会想到,短短两三年间,这只不起眼的小机器人便已占据了手机市场的半壁江山——凭借开放的策略,使得智能手机真正平民化,彻底改变了手机市场的版图。面对变局,各大厂商得以发掘新的商机,开发者则得到了另一次一展身手的机会。我想,面对新的可能性,做点事情总是好的。
所幸在决定学习Android开发时,发现了O'Reilly的这本Open Book——Learning Android。此书篇幅不长,重视实践,正适合入门。了解过基本概念,搭好开发环境,随即就可以动手。顺着书中的主线,从一个Hello World程序出发,慢慢为它加血加肉,并不断重构,最后最终成型,从而基本概念也都已有亲身体会——最好的学习就是动手实践,这也正是贯彻此书全篇的主旨。如果读者正徘徊在Android开发的门口,那就向你推荐这本书好了,它可以助你迈过第一道门槛。
后经电子工业出版社编辑张春雨介绍,便立即联系到熊叔、iEle,开始了这本书的合作翻译。期间得到了张春雨、付睿两位编辑以及huangz、nullcc、kingsamchen等朋友的热情帮助,并由豆瓣的su27、朗讯的dash和POLYCOM的fei对译稿进行了再三的细致修订,在此一并致谢。如今良译难求,批斗译者俨已蔚然成风。身为读者,都是怀着期望打开书本,对翻译再如何挑剔也是无可厚非的;但是身为译者,就倍感针芒在背了,在翻译中不敢不小心,唯恐这些文字让读者失望。可惜尽力之余,依然限于自身水平,行文中难免会留下一些疏漏,恳请广大读者批评指正。
译者
2011年11月6日
前 言
本书源自于Marakana Android 训练营几年来的培训课程,其学员包括数千名工作于全球四大洲中顶尖移动设备公司的软件开发人员。在教授这门课程的过程中,随着时间的推移,我逐渐发现了其中有效与无效的内容。在Marakana开发了Android训练营培训课程之后,我又对其进行了数次巨大的调整,终于将其中的精华凝结为此书。
在Java还未被称为Java之前,我就已经开始使用它了。从一开始,我就对嵌入式开发非常感兴趣,因为这样我就可以在日常生活中的各种设备上编程。后来Java在Web应用开发领域中得到极大发展,因此我之前十年的经验主要集中在构建大型企业系统上。然后Android出现了,我再一次兴奋地投入到为非计算机设备开发软件的工作中。而我现在的兴趣,是在那些甚至不是手机的设备上使用Android。
本书会向了解Java(或者某种相似的语言)的人,讲解如何开发一个适度复杂的Android应用程序。我希望你能够感到本书非常容易理解,并且以实例为基础的学习过程能让你感到相当有动力。本书的目标是使你按照Android的方式来“思考”。
内容简介
第1章,Android概述
简单介绍Android及其历史。
第2章,Android的架构
从全局的角度概括地介绍了Android操作系统及其各部分。
第3章,快速入门
帮助你配置Android应用程序开发环境。
第4章,基本构件
讲解开发人员用于创建一个应用程序的Android组件。
第5章,Yamba项目简介
讲解我们会贯穿全书的Yamba应用程序,并通过一个例子来学习Android的诸多特性。
第6章,Android用户界面
讲解如何为你的应用程序设计用户界面。
第7章,首选项、文件系统、选项菜单及Intent
介绍一些操作系统中能够简化开发人员工作的特性。
第8章,服务
介绍如何创建一个Android服务来处理后台任务。
第9章,数据库
讲解Android框架对内置SQLite数据库的支持,以及如何在你的应用程序中使用其来保存数据。
第10章,列表与适配器
介绍Android的一个重要特性,它允许大数据集合高效地链接较小的屏幕。
第11章,广播接收器(Broadcast Receiver)
介绍了如何应用Android中的“发布–订阅”机制来响应系统和用户定义的各种消息。
第12章,内容提供器(Content Provider)
介绍如何设计一个内容提供器在应用程序之间共享数据,在本章中,我们将通过它来让应用程序小部件在主屏幕上显示数据。
第13章, 系统服务
介绍可供开发者利用的一些系统服务。
第14章,Android接口描述语言(AIDL)
介绍如何构建一个进程间通信机制,使得另一个应用程序可以远程访问一个服务。
第15章,Native Development Kit(NDK)
介绍在你的应用程序中编写本地C代码。
致谢
本书之付梓面世离不开大家的协作。首先,要感谢O’Reilly的编辑Andy Oram和BrianJepson。Andy,你的建议总是一针见血,让我受益良多。Brian,感谢你说服我开始本书的写作。
感谢我的所有技术编辑:Dan Bornstein、Hervé Guihot、Frank Maker III和Bill Schrickel。感谢你们孜孜不倦地审读我未成形的原稿,以及你们提供的宝贵建议。
没有我们在大量客户端上所做的实际测试,本书肯定不是现在的样子。你们绝对是Android的先驱者,你们的项目令人印象深刻。感谢你们的信任。
感谢我在Marakana的团队:Aleksandar (Saša) Gargenta、Ken Jones和Laurent Tonon。你们使用本书的原稿作为Android Bootcamp的教材,并给了我第一手的反馈。这里要特别感谢曾多次督促我回到写字台的Saša:如果没你深刻的技术评论,本书很可能几个月就草草了事了。
最后,深深地感谢我深爱的妻子Lisa和女儿Kylie。我知道当我一心扑在写作上时你们所做出的牺牲。感谢你们对我一如既往的支持。
目 录
前言 .................................................................................. xvii
第1章 Android概述 ............................................................ 1
概述 ..............................................................................................................................1
完整性 .................................................................................................................1
开源平台 .............................................................................................................2
为移动设备而设计 .............................................................................................2
历史 ..............................................................................................................................3
Google的动机 ......................................................................................................3
开放手持设备联盟 .............................................................................................3
Android的版本 ............................................................................................................4
总结 ..............................................................................................................................5
第2章 Android的架构 ......................................................... 7
架构概述 ......................................................................................................................7
Linux系统 ....................................................................................................................7
可移植性 .............................................................................................................7
安全性 .................................................................................................................8
丰富的特性 .........................................................................................................8
本地库 ..........................................................................................................................9
Dalvik 虚拟机 ..............................................................................................................9
Android与Java ...................................................................................................10
应用程序框架 ............................................................................................................11
应用程序 ....................................................................................................................12
APK文件 ...........................................................................................................12
应用程序签名 ...................................................................................................12
应用程序发布 ...................................................................................................12
总结 ............................................................................................................................13
第3章 快速入门 ............................................................... 15
安装Android SDK .....................................................................................................15
设置PATH环境变量 ..........................................................................................16
安装 Eclipse .......................................................................................................16
Eclipse的工作区 ................................................................................................17
安装Android 开发工具 .....................................................................................17
Hello, World程序 .......................................................................................................18
创建新项目 .......................................................................................................18
Manifest文件 .....................................................................................................20
Layout(布局)XML代码 ...............................................................................21
Strings(字符串)文件 ....................................................................................21
R(资源)文件 .................................................................................................22
Java源码文件 ....................................................................................................22
仿真器 ........................................................................................................................23
仿真器和真机 ...................................................................................................25
总结 ............................................................................................................................26
第4章 基本构件 ............................................................... 27
什么是基本构件 ........................................................................................................27
一个实际的例子 ........................................................................................................27
活动(Activity) ......................................................................................................28
活动的生命周期 ...............................................................................................28
Intent ..........................................................................................................................30
服务(Service) ........................................................................................................31
内容提供器(Content Provider) ............................................................................32
广播接收器(Broadcast Receiver) ........................................................................34
应用程序上下文(Application Context) ...............................................................34
总结 ............................................................................................................................35
第5章 Yamba项目简介 .................................................... 37
Yamba 应用程序 .......................................................................................................37
设计原则 ....................................................................................................................39
项目设计 ....................................................................................................................40
第1部分:Android用户界面 ....................................................................................41
构建一个活动 ...................................................................................................41
网络和多线程 ...................................................................................................41
调试Android 程序 .............................................................................................41
第2部分:首选项、文件系统、选项菜单及Intent ................................................41
活动 ...................................................................................................................42
菜单系统与Intent ..............................................................................................42
文件系统 ...........................................................................................................42
第3部分:Android服务 ............................................................................................42
服务 ...................................................................................................................42
应用程序对象 ...................................................................................................42
第4部分:使用数据库 ..............................................................................................43
SQLite及Android对它的支持 ...........................................................................43
再次重构代码 ...................................................................................................43
第5部分:列表(List)与适配器(Adapter) ......................................................43
时间轴(Timeline)活动 .................................................................................43
再重构一次 .......................................................................................................44
第6部分:广播接收器(Broadcast Receiver) ......................................................44
启动接收器与网络连接接收器 .......................................................................44
时间轴(Timeline)接收器 .............................................................................44
权限 ...................................................................................................................44
第7部分:内容提供器(Content Provider) ..........................................................44
状态数据 ...........................................................................................................45
Android小部件 ..................................................................................................45
第8部分:系统服务 ..................................................................................................45
指南针与位置 ...................................................................................................45
Intent服务、提醒及通知 ..................................................................................45
总结 ............................................................................................................................46
第6章 Android用户界面 ................................................... 47
创建用户界面的两种方法 ........................................................................................47
声明式的用户界面 ...........................................................................................47
编程式的用户界面 ...........................................................................................48
各取所长 ...........................................................................................................48
控件与布局 ................................................................................................................48
LinearLayout ......................................................................................................49
TableLayout .......................................................................................................50
FrameLayout ......................................................................................................50
RelativeLayout ...................................................................................................50
AbsoluteLayout ..................................................................................................50
启动Yamba项目 ........................................................................................................50
StatusActivity布局 .....................................................................................................52
控件的重要属性 ...............................................................................................54
字符串资源 .......................................................................................................56
StatusActivity Java类 .................................................................................................56
编写具体应用的对象,以及初始化相关代码 ...............................................57
保存文件:编译代码和构建项目 ...................................................................59
添加库jtwitter.jar ...............................................................................................60
更新Manifest文件,获取Internet权限 .............................................................61
Android的日志机制 ..................................................................................................62
LogCat................................................................................................................63
Android的线程机制 ..................................................................................................65
单线程执行 .......................................................................................................65
多线程执行 .......................................................................................................66
AsyncTask ..........................................................................................................67
其他UI事件 ...............................................................................................................70
添加图片与色彩 ........................................................................................................75
添加图片 ...........................................................................................................75
添加色彩 ...........................................................................................................78
多版本资源文件 ........................................................................................................80
优化用户界面 ............................................................................................................81
Hierarchy Viewer 工具 ......................................................................................82
总结 ............................................................................................................................83
第7章 首选项、文件系统、选项菜单及Intent .................. 85
首选项 ........................................................................................................................85
资源文件 ...........................................................................................................86
PrefsActivity类 ..................................................................................................89
修改Manifest文件 .............................................................................................90
选项菜单 ....................................................................................................................91
菜单的资源文件 ...............................................................................................92
Android系统资源 ..............................................................................................93
更新StatusActivity,加载菜单 .........................................................................93
更新StatusActivity,捕获菜单事件 .................................................................94
字符串资源 .......................................................................................................95
Shared Preferences .....................................................................................................96
文件系统简介 ............................................................................................................98
浏览文件系统 ...................................................................................................98
文件系统的分区 ...............................................................................................99
系统分区 .........................................................................................................100
SDCard 分区 ....................................................................................................100
用户数据分区 .................................................................................................100
文件系统的安全机制 .....................................................................................101
总结 ..........................................................................................................................102
第8章 服务 ..................................................................... 103
Yamba的Application对象 ........................................................................................104
YambaApplication类 .......................................................................................104
更新Manifest文件 ...........................................................................................106
简化 StatusActivity ..........................................................................................107
UpdaterService .........................................................................................................108
创建 UpdaterService Java类............................................................................108
更新Manifest文件 ...........................................................................................110
添加菜单项 .....................................................................................................111
更新选项菜单的事件处理 .............................................................................111
测试服务 .........................................................................................................112
在服务中循环 ..........................................................................................................113
测试服务 .........................................................................................................116
从 Twitter 读取数据 ................................................................................................117
测试服务 .........................................................................................................121
总结 ..........................................................................................................................121
第9章 数据库 ................................................................. 123
关于 SQLite .............................................................................................................123
DbHelper类 ..............................................................................................................124
数据库模式及其创建 .....................................................................................124
4种主要操作 ...................................................................................................125
游标 .................................................................................................................126
第一个例子 ..............................................................................................................127
修改UpdaterService .................................................................................................129
测试服务 .........................................................................................................133
数据库约束 .....................................................................................................135
重构数据库访问 ......................................................................................................136
总结 ..........................................................................................................................142
第10章 列表与适配器 .................................................... 145
TimelineActivity ......................................................................................................145
TimelineActivity的基本布局 ..................................................................................146
ScrollView简介................................................................................................146
创建TimelineActivity类 ..................................................................................147
关于适配器 ..............................................................................................................150
为TimelineActivity添加ListView ...................................................................151
创建一个单行消息布局 .................................................................................152
在TimelineActivity.java中创建适配器 ...........................................................153
TimelineAdapter ......................................................................................................155
ViewBinder: 取代TimelineAdapter的更好选择 .....................................................158
更新Manifest文件 ...................................................................................................160
程序初始设置 .................................................................................................162
Base Activity ............................................................................................................163
服务开关 .........................................................................................................163
总结 ..........................................................................................................................170
第11章 广播接收器(Broadcast Receiver) ................. 171
关于Broadcast Receiver ..........................................................................................171
BootReceiver ............................................................................................................172
将BootReceiver注册到AndroidManifest文件 ................................................173
测试 Boot Receiver..........................................................................................173
TimelineReceiver .....................................................................................................173
广播Intent ................................................................................................................175
Network Receiver ....................................................................................................177
添加用于发送和接收广播的自定义权限 ..............................................................180
在Manifest文件中声明权限 ...........................................................................180
为更新服务应用权限机制 .............................................................................181
为TimelineReceiver应用权限机制 .................................................................183
总结 ..........................................................................................................................183
第12章 内容提供器(Content Provider)...................... 185
创建Content Provider ..............................................................................................185
定义URI ...........................................................................................................186
插入数据 .........................................................................................................187
更新数据 .........................................................................................................188
删除数据 .........................................................................................................189
查询数据 .........................................................................................................190
获取数据类型 .................................................................................................191
更新Android Manifest文件 .............................................................................192
在小部件中使用Content Provider ..........................................................................192
实现YambaWidget类 .......................................................................................193
创建XML布局 .................................................................................................196
创建AppWidgetProviderInfo文件 ...................................................................197
更新Manifest文件 ...........................................................................................197
测试小部件 .....................................................................................................198
总结 ..........................................................................................................................198
第13章 系统服务 ........................................................... 201
实例:指南针 ..........................................................................................................201
使用系统服务的一般步骤 .............................................................................201
获取指南针的更新 .........................................................................................202
指南针的主活动 .............................................................................................203
自定义的表盘小部件 .....................................................................................206
位置服务 ..................................................................................................................208
实例: Where Am I ............................................................................................208
用上位置服务,重构Yamba ..................................................................................213
更新首选项 .....................................................................................................213
更新Yamba程序 ..............................................................................................214
更新Status Activity ..........................................................................................215
Intent服务 ................................................................................................................219
Alarms ..............................................................................................................222
在首选项中添加Interval选项 .........................................................................223
更新BootReceiver............................................................................................224
发送通知 ..................................................................................................................226
总结 ..........................................................................................................................229
第14章 Android接口描述语言 ........................................ 231
实现远程服务 ..........................................................................................................231
编写AIDL ........................................................................................................232
实现服务 .........................................................................................................233
实现一个Parcel................................................................................................235
注册到Manifest文件 .......................................................................................236
实现远程客户端 ......................................................................................................237
绑定到远程服务 .............................................................................................238
测试运行 .........................................................................................................241
总结 ..........................................................................................................................242
第15章 Native Development Kit (NDK) ......................... 243
NDK是什么 .............................................................................................................243
NDK的功能 .............................................................................................................244
工具链 .............................................................................................................244
打包库文件 .....................................................................................................244
文档与标准头文件 .........................................................................................244
NDK实例:计算菲波那契数列 .............................................................................245
FibLib ...............................................................................................................246
JNI 头文件 .......................................................................................................247
C 实现 ..............................................................................................................249
Makefile ...........................................................................................................251
构建共享库 .....................................................................................................251
Fibonacci Activity ............................................................................................251
测试所有的工作 .............................................................................................253
总结 ..........................................................................................................................254
索引 ................................................................................. 255