精通Android

当前位置:首页 > 计算机网络 > 程序设计 > 精通Android

出版社:人民邮电出版社
出版日期:2013-1
ISBN:9787115297150
作者:[印] Satya Komatineni,[美] Dave MacLean
页数:754页

章节摘录

版权页:   插图:   19.2.3在广播接收程序中启用活动 虽然在需要向用户发送通知时,人们建议你最好使用通知管理器,但是Android也支持显式采用活动发送通知。通常,可以使用startActivity()方法实现,但是需要添加以下标记: Intent.FLAG—ACTIVITY—NEW—TASK Intent.FLAG—FROM—BACKGROUND Intent.FLAG—ACTIVITY—SINGLETOP 19.3长期运行的接收程序和服务 到目前为止,我们介绍了广播接收程序的简单形式,其中一个广播接收程序的执行时间不会超过10秒。事实证明,如果希望执行用时超过10秒的广播接收程序,问题就有点复杂了。 为了理解其中的原因,我们快速回顾一下一些关于广播接收程序的事实。 广播接收程序类似于在主线程上运行的Android进程的其他组件。 持有广播接收程序中的代码将持有主线程,并将导致ANR。 广播接收程序上的时间限制为l0秒,而活动的时间限制为5秒。相比而言,前者更宽松,但限制仍然存在。 承载广播接收程序的进程将与广播接收程序的执行一起启动和终止。换句话说,该进程在广播接收程序的0nReceiVe()方法返回时停止执行。当然,前提是该进程仅包含广播接收程序。如果进程包含其他已在运行的组件,比如活动或服务,那么进程的寿命也会将这些组件的生命周期考虑在内。 与服务进程不同,广播接收程序进程不会重新启动。 如果广播接收程序将启动一个独立的线程并返回到主线程,Android将假设工作已完成并将关闭该进程,即使还有线程正在运行,它们也会突然停止。 Android在调用广播服务时获取一个部分唤醒锁,并在它从主线程中的服务返回时释放它。唤醒锁是一种机制,也是SDK中一个可用的APl类,用于避免设备休眠,或者在设备休眠时将它唤醒。 既然存在这些事实,如何执行长期运行的代码来响应广播事件呢? 19.3.1 长期运行的广播接收程序协议 要回答此问题,需要解决以下需要。 我们显然需要一个独立线程,以便主线程可返回继续运行并避免ANR消息。 要阻止Android结束进程,进而结束工作线程,我们需要告诉Android,此进程包含一个具有生命周期的组件,比如服务。所以需要创建或启动该服务。服务本身无法直接执行工作超过5秒,因为它在主线程上运行,所以服务需要启动一个工作线程并离开主线程。 对于工作线程的执行时间,我们需要坚持使用部分唤醒锁,以便设备不会休眠。部分唤醒锁支持设备不打开屏幕等组件即可运行代码,这可以带来更长的待机时间。

前言

  你是否曾希望自己是罗丹?坐着用凿子雕琢着一块石头,将它塑造成你想要的样子。由于害怕无法“雕琢”出实用的应用程序,主流程序员曾经十分排斥资源严重受限的移动设备。不过那段时光已经一去不复返了。  正是由于Android移动操作系统,才促成了可自由编程移动设备的大量涌现。本书将证实Android是出色的编程平台,从而打消你的疑虑。面对这个激动人心、功能强大的通用计算平台,Java程序员很有可能会从中获益。Android不仅是一个移动操作系统,而且还引入了框架设计上的众多新模式。  这是这本关于Android主题的书的第4版,也是目前为止最出色的版本。本书是一部蕴含丰富内容的关于Android 4.0 SDK(Android的第一个SDK,覆盖手机和平板电脑)编程指南。在这一版中,我们重新定义、重新编写并强化了上一版中的部分内容,打造了一部全面更新且同时适合初学者和专业人员的编程指南,这是我们4年的研究结晶。本书用31章涵盖了100多个主题。  这一版增加了Android内部构件的相关知识,介绍了线程、长期运行的服务、广播接收器、闹钟管理器、设备配置变化及异步任务。本书用150多页专门介绍了碎片、碎片对话框、ActionBar和拖放。本书还对与服务和传感器内容相关的章节做了大幅改进。我们对第21章进行了修订,增加了属性动画。第30章也大幅重写了,增加了关于个人账号的内容,为社会化API铺平了道路。  概念、代码和教程是本书的基本要素,这在本书中的每一章都有所体现。每章中自成一体的教程都有专家建议。本书中的所有项目都可供下载,以方便导入Eclipse。  最后,本书不再限于介绍基本知识,还针对每个主题提出了一些复杂问题,并记录问题答案(请参阅目录以了解书中所涉及内容的详细列表)。我们会不断用当前和未来的Android SDK研究成果来更新辅助性网站。在阅读过程中,如有任何疑问,可通过电子邮件快速获得我们的解答。

媒体关注与评论

如果你真的想要循序渐进的学习Android SDK,这本书绝对会对你有所帮助

内容概要

Satya Komatineni
印度理工大学电子工程专业硕士。有20多年的程序设计经验,开发过用于Java Web开发的简单开源工具AspireWeb(www.activeintellect.com/aspire)以及开源个人Web 操作系统——Aspire Knowledge Central(www.knowledgefolders.com)。擅长使用Java、.NET和数据库技术进行Web开发,发表过30多篇这方面的文章。他经常在与创新技术相关的行业大会上发言,并为java.net上的网络博客撰稿。
Dave MacLean
加拿大滑铁卢大学系统设计工程专业学士。早在1980年就从事软件开发工作,使用过多种语言进行编程,曾开发机器人自动化、数据仓库、Web自助服务应用程序、EDI事务处理器等系统。Dave曾在Sun、IBM、Trimble Navigation及通用汽车等公司工作。

书籍目录

第1章  Android计算平台简介  1
1.1  面向新PC的全新平台  1
1.2  Android的历史  2
1.3  Dalvik VM剖析  4
1.4  理解Android软件栈  5
1.5  使用Android SDK开发最终用户应用程序  6
1.5.1  Android模拟器  6
1.5.2  Android UI  7
1.5.3  Android基础组件  7
1.5.4  高级UI概念  8
1.5.5  Android Service组件  10
1.5.6  Android媒体和电话组件  10
1.5.7  Android Java包  11
1.6  利用Android源代码  14
1.6.1  在线浏览Android源代码  14
1.6.2  使用Git下载Android源代码  15
1.7  本书的示例项目  16
1.8  小结  16
第2章  设置开发环境  17
2.1  设置环境  17
2.1.1  下载JDK 6  18
2.1.2  下载Eclipse 3.6  19
2.1.3  下载Android SDK  19
2.1.4  命令行窗口  20
2.1.5  安装ADT  21
2.2  了解基本组件  23
2.2.1  View  23
2.2.2  Activity  23
2.2.3  Fragment  24
2.2.4  Intent  24
2.2.5  ContentProvider  24
2.2.6  Service  24
2.2.7  AndroidManifest.xml  24
2.2.8  AVD  25
2.3  Hello World!  25
2.4  AVD  29
2.5  在真实设备上运行  30
2.6  剖析Android应用程序的结构  31
2.7  了解应用程序生命周期  33
2.8  简单调试  35
2.9  参考资料  37
2.10  小结  37
2.11  面试问题  37
第3章  使用Android资源  39
3.1  资源  39
3.1.1  字符串资源  39
3.1.2  布局资源  41
3.1.3  资源引用语法  43
3.1.4  定义资源ID供以后使用  44
3.1.5  已编译和未编译的Android资源  45
3.2  Android关键资源  46
3.3  使用任意XML资源文件  54
3.4  使用原始资源  55
3.5  使用资产  56
3.6  了解资源目录结构  56
3.7  资源和配置更改  56
3.8  参考资料URL  59
3.9  小结  60
3.10  面试问题  60
第4章  ContentProvider  62
4.1  探索Android内置的ContentProvider  63
4.1.1  在模拟器和可用设备上利用数据库  63
4.1.2  快速了解SQLite  66
4.2  ContentProvider的架构  66
4.2.1  Android内容URI的结构  68
4.2.2  Android MIME类型的结构  68
4.2.3  使用URI读取数据  70
4.2.4  使用游标  71
4.2.5  使用where子句  72
4.2.6  插入记录  74
4.2.7  将文件添加到ContentProvider中  75
4.2.8  更新和删除  76
4.3  实现ContentProvider  76
4.3.1  计划数据库  76
4.3.2  扩展ContentProvider  78
4.3.3  履行MIME类型契约  83
4.3.4  实现query方法  83
4.3.5  实现insert方法  83
4.3.6  实现update方法  84
4.3.7  实现delete方法  84
4.3.8  使用UriMatcher来解析URI  84
4.3.9  使用投影映射  85
4.3.10  注册提供程序  86
4.4  练习图书提供程序  86
4.4.1  添加图书  86
4.4.2  删除图书  87
4.4.3  获取图书数量  87
4.4.4  显示图书列表  87
4.5  资源  88
4.6  小结  89
4.7  面试问题  89
第5章  Intent  90
5.1  Android Intent基础知识  90
5.2  Android中可用的Intent  91
5.3  Intent的组成  93
5.3.1  Intent和数据URI  93
5.3.2  一般操作  94
5.3.3  使用extra信息  95
5.3.4  使用组件直接调用活动  96
5.3.5  Intent类别  97
5.3.6  将Intent解析为组件的规则  99
5.4  练习使用ACTION_PICK  101
5.5  练习使用GET_CONTENT操作  103
5.6  挂起的Intent  104
5.7  资源  105
5.8  小结  106
5.9  面试问题  106
第6章  构建用户界面和使用控件  107
6.1  Android中的UI开发  107
6.1.1  完全利用代码来构建UI  108
6.1.2  完全使用XML构建UI  110
6.1.3  使用XML结合代码构建UI  111
6.2  Android中的常见控件  113
6.2.1  文本控件  113
6.2.2  按钮控件  116
6.2.3  ImageView控件  123
6.2.4  日期和时间控件  124
6.2.5  MapView控件  127
6.3  适配器  127
6.3.1  SimpleCursorAdapter  128
6.3.2  了解ArrayAdapter  129
6.4  结合使用适配器和AdapterView  131
6.4.1  基本的列表控件:ListView  131
6.4.2  GridView控件  138
6.4.3  Spinner控件  140
6.4.4  Gallery控件  141
6.4.5  创建自定义适配器  142
6.4.6  Android中的其他控件  146
6.5  样式和主题  147
6.5.1  使用样式  147
6.5.2  使用主题  149
6.6  布局管理器  150
6.6.1  LinearLayout布局管理器  150
6.6.2  TableLayout布局管理器  153
6.6.3  RelativeLayout布局管理器  156
6.6.4  FrameLayout布局管理器  157
6.6.5  GridLayout布局管理器  159
6.6.6  为各种设备配置自定义布局  160
6.7  参考资料  161
6.8  小结  161
6.9  面试问题  161
第7章  使用菜单  163
7.1  Android菜单  163
7.1.1  创建菜单  164
7.1.2  使用菜单组  165
7.1.3  响应菜单项  166
7.2  使用其他菜单类型  168
7.2.1  展开的菜单  168
7.2.2  使用图标菜单  169
7.2.3  使用子菜单  169
7.2.4  使用上下文菜单  170
7.2.5  使用交替菜单  173
7.2.6  动态菜单  175
7.3  通过XML文件加载菜单  175
7.3.1  XML菜单资源文件的结构  176
7.3.2  填充XML菜单资源文件  177
7.3.3  响应基于XML的菜单项  177
7.3.4  4.0版本中的弹出式菜单  178
7.3.5  其他XML菜单标记简介  179
7.4  资源  181
7.5  小结  181
7.6  面试问题  181
第8章  多用途的碎片  183
8.1  什么是碎片  183
8.1.1  何时使用碎片  184
8.1.2  碎片的结构  185
8.1.3  碎片的生命周期  186
8.1.4  展示生命周期的示例碎片应用程序  189
8.2  FragmentTransactions和碎片后退栈  194
8.3  FragmentManager  196
8.3.1  引用碎片时的注意事项  197
8.3.2  保存片段状态  198
8.3.3  ListFragments和  198
8.3.4  在需要时调用独立的活动  200
8.3.5  碎片的持久化  201
8.4  碎片之间的通信方式  202
8.5  使用ObjectAnimator自定义动画  203
8.6  参考资料  205
8.7  小结  205
8.8  面试问题  206
第9章  对话框  207
9.1  使用Android对话框  207
9.2  对话框碎片  207
9.2.1  DialogFragment的基础知识  208
9.2.2  构建对话框碎片  208
9.2.3  DialogFragment示例应用程序  212
9.3  使用Toast  220
9.4  旧版本Android的对话框碎片  221
9.5  参考资料  221
9.6  小结  222
9.7  面试问题  222
第10章  ActionBar  223
10.1  ActionBar剖析  223
10.2  选项卡导航操作栏活动  225
10.2.1  实现基础活动类  225
10.2.2  为ActionBar分配统一的行为  227
10.2.3  实现选项卡监听器  229
10.2.4  实现选项卡操作栏活动  230
10.2.5  可滚动的调试文本视图布局  232
10.2.6  操作栏和菜单交互  233
10.2.7  Android描述文件  235
10.2.8  测试选项卡操作栏活动  235
10.3  列表导航操作栏活动  236
10.3.1  创建SpinnerAdapter  236
10.3.2  创建列表监听器  237
10.3.3  设置列表操作栏  237
10.3.4  更改BaseActionBar-Activity  238
10.3.5  更改AndroidManifest.xml  238
10.3.6  测试列表操作栏活动  239
10.4  标准导航操作栏活动  240
10.4.1  设置标准导航操作栏活动  240
10.4.2  更改BaseActionBar-Activity  241
10.4.3  更改AndroidManifest.xml  242
10.4.4  测试标准操作栏活动  242
10.5  工具栏与搜索视图  243
10.5.1  将搜索视图部件定义为菜单项  244
10.5.2  配置搜索结果活动  244
10.5.3  通过可搜索XML文件自定义搜索  245
10.5.4  在配置清单文件中定义搜索结果活动  245
10.5.5  确定搜索视图部件的搜索目标  245
10.6  操作栏和碎片  246
10.7  参考资料  246
10.8  小结  247
10.9  面试问题  247
第11章  高级调试与分析  249
11.1  启用高级调试  249
11.2  Debug透视图  249
11.3  DDMS透视图  250
11.4  Hierarchy View透视图  252
11.5  Traceview  253
11.6  adb命令  254
11.7  模拟器控制台  255
11.8  StrictMode  255
11.8.1  StrictMode策略  255
11.8.2  关闭StrictMode  256
11.8.3  在旧版本Android上使用StrictMode  257
11.8.4  StrictMode练习  258
11.9  参考资料  259
11.10  小结  259
11.11  面试问题  259
第12章  响应配置变化  261
12.1  配置变化过程  261
12.1.1  活动的销毁/创建过程  262
12.1.2  碎片的销毁/创建过程  263
12.1.3  使用FragmentManager保存碎片状态  264
12.1.4  使用碎片的setRetain-Instance  264
12.2  弃用的配置变化方法  264
12.3  参考资料  265
12.4  小结  265
12.5  面试问题  265
第13章  首选项及保存状态  266
13.1  探索首选项框架  266
13.1.1  ListPreference  266
13.1.2  CheckBoxPreference  273
13.1.3  EditTextPreference  275
13.1.4  RingtonePreference及MultiSelectListPreference  276
13.2  组织首选项  276
13.2.1  使用PreferenceCategory  276
13.2.2  创建依赖的子首选项  279
13.2.3  带标题的首选项  279
13.3  以编程方式操作首选项  281
13.3.1  使用首选项保存状态  281
13.3.2  使用DialogPreference  282
13.4  参考资料  283
13.5  小结  283
13.6  面试问题  283
第14章  探索安全性和权限  284
14.1  理解Android安全性模型  284
14.1.1  安全性概念概述  284
14.1.2  为部署签名应用程序  285
14.2  执行运行时安全性检查  290
14.2.1  进程边界上的安全性  290
14.2.2  声明和使用权限  290
14.2.3  理解和使用自定义权限  292
14.2.4  理解和使用URI权限  297
14.3  参考资料  298
14.4  小结  298
14.5  面试问题  299
第15章  构建和使用服务  300
15.1  使用HTTP服务  300
15.1.1  将HttpClient用于HTTP GET请求  300
15.1.2  将HttpClient用于HTTP POST请求(多部分POST请求示例)  302
15.1.3  SOAP、JSON和XML分析程序  304
15.1.4  处理异常  305
15.1.5  解决多线程问题  307
15.1.6  有趣的超时  309
15.1.7  使用HttpURLConnection  310
15.1.8  使用AndroidHttpClient  310
15.1.9  使用后台线程(AsyncTask)  311
15.1.10  使用DownloadManager获取文件  316
15.2  使用Android服务  321
15.2.1  Android中的服务  322
15.2.2  本地服务  323
15.2.3  AIDL服务  329
15.2.4  在AIDL中定义服务接口  329
15.2.5  实现AIDL接口  331
15.2.6  从客户端应用程序调用服务  333
15.2.7  向服务传递复杂的类型  336
15.3  参考资料  345
15.4  小结  345
15.5  面试问题  346
第16章  包  347
16.1  包和进程  347
16.1.1  包规范的细节  347
16.1.2  将包名称转换为进程名称  347
16.1.3  列出安装的包  348
16.1.4  通过包浏览器删除包  348
16.2  包签名过程回顾  349
16.2.1  理解数字签名:场景1  349
16.2.2  理解数字签名:场景2  350
16.2.3  一种理解数字签名的模式  350
16.2.4  数字签名执行方式  350
16.2.5  签名过程的影响  350
16.3  在包之间共享数据  351
16.3.1  共享用户ID的性质  351
16.3.2  共享数据的代码模式  352
16.4  库项目  353
16.4.1  库项目的概念  353
16.4.2  库项目的性质  353
16.4.3  创建库项目  355
16.4.4  创建使用库的Android项目  358
16.4.5  使用库项目的注意事项  365
16.5  参考资料  365
16.6  小结  366
16.7  面试问题  366
第17章  处理程序  368
17.1  Android组件和线程  368
17.1.1  活动在主线程上运行  369
17.1.2  广播接收程序在主线程上运行  369
17.1.3  服务在主线程上运行  369
17.1.4  ContentProvider在主线程上运行  370
17.1.5  单一主线程的影响  370
17.1.6  线程池、ContentProvider及外部服务组件  370
17.1.7  线程实用程序:发现线程  370
17.2  处理程序  371
17.2.1  持有主线程的影响  372
17.2.2  使用处理程序延迟主线程上的工作  373
17.2.3  延迟工作的处理程序源代码示例  373
17.2.4  构造合适的Message对象  375
17.2.5  将Message对象发送给队列  375
17.2.6  响应handleMessage回调  376
17.3  使用工作线程  376
17.3.1  从菜单调用工作线程  376
17.3.2  在工作线程与主线程之间通信  377
17.4  组件和进程寿命  380
17.4.1  活动生命周期  380
17.4.2  服务生命周期  381
17.4.3  接收程序生命周期  381
17.4.4  提供程序生命周期  382
17.5  参考资料  382
17.6  小结  382
17.7  面试问题  383
第18章  AsyncTask详解  384
18.1  实现一个简单的AsyncTask  385
18.1.1  实现AsyncTask的泛型  385
18.1.2  创建AsyncTask子类  386
18.1.3  实现第一个AsyncTask  386
18.1.4  调用一个AsyncTask  388
18.1.5  onPreExecute()回调方法和进度对话框  388
18.1.6  doInBackground()方法  389
18.1.7  触发onProgressUpdate()  389
18.1.8  onPostExecute()方法  390
18.1.9  升级为确定性进度对话框  390
18.2  AsyncTask的性质  392
18.3  设备旋转与AsyncTask  393
18.4  生命周期方法与AsyncTask  393
18.5  参考资料  393
18.6  小结  394
18.7  面试问题  394
第19章  广播接收程序和长期运行的服务  395
19.1  广播接收程序  395
19.1.1  发送广播  395
19.1.2  编写简单的接收程序:示例代码  396
19.1.3  在描述文件中注册接收程序  396
19.1.4  容纳多个接收程序  397
19.1.5  进程外接收程序项目  399
19.2  从接收程序使用通知  399
19.2.1  通过通知管理器监控通知  400
19.2.2  发送通知  401
19.2.3  在广播接收程序中启用活动  404
19.3  长期运行的接收程序和服务  404
19.3.1  长期运行的广播接收程序协议  404
19.3.2  IntentService  405
19.3.3  IntentService源代码  406
19.4  为广播接收程序扩展IntentService  407
19.4.1  长期运行的广播服务抽象  408
19.4.2  长期运行的接收程序  409
19.4.3  使用LightedGreenRoom抽象唤醒锁  411
19.5  长期运行的服务的实现  416
19.5.1  非粘滞性服务的细节  417
19.5.2  粘滞性服务的细节  417
19.5.3  非粘滞性的变体:重传送(redeliver)Intent  418
19.5.4  在onStartCommand中指定服务标志  418
19.5.5  挑选合适的粘滞性  418
19.5.6  从两个位置控制唤醒锁  418
19.5.7  长期运行的服务的实现  419
19.5.8  测试长期运行的服务  420
19.5.9  开发者的职责  420
19.5.10  框架的职责  421
19.6  关于项目下载文件的一些说明  421
19.7  参考资料  422
19.8  小结  422
19.9  面试问题  422
第20章  闹钟管理器  424
20.1  闹钟管理器基本知识:设置一个简单的闹钟  424
20.1.1  获取闹钟管理器人的访问权限  424
20.1.2  设置闹钟时间  424
20.1.3  创建闹钟接收程序  425
20.1.4  创建适合闹钟的PendingIntent  426
20.1.5  设置闹钟  427
20.1.6  测试项目  427
20.2  探索其他闹钟管理器场景  428
20.2.1  设置重复闹钟  428
20.2.2  取消闹钟  429
20.2.3  使用多个闹钟  430
20.2.4  Intent在设置闹钟时的首要职责  432
20.2.5  闹钟的持久化  434
20.3  闹钟管理器事实  434
20.4  参考资料  434
20.5  小结  435
20.6  面试问题  435
第21章  2D动画揭秘  436
21.1  逐帧动画  436
21.1.1  计划逐帧动画  436
21.1.2  创建活动  438
21.1.3  将动画添加到活动  439
21.2  布局动画  441
21.2.1  基本的补间动画类型  442
21.2.2  计划布局动画测试工具  442
21.2.3  创建活动和ListView  443
21.2.4  将ListView制作成动画  445
21.2.5  使用插值器  447
21.3  视图动画  449
21.3.1  理解视图动画  449
21.3.2  添加动画  451
21.3.3  使用Camera实现2D图像的深度效果  454
21.3.4  探索AnimationListener类  455
21.3.5  关于变换矩阵的一些说明  456
21.4  属性动画:新动画API  457
21.4.1  属性动画  458
21.4.2  计划一个属性动画的试验台  459
21.4.3  使用对象动画生成器创建基本视图动画  461
21.4.4  使用AnimatorSet实现顺序动画  462
21.4.5  用AnimatorSetBuilder设置动画关系  463
21.4.6  使用XML加载动画生成器  463
21.4.7  使用PropertyValuesHolder  464
21.4.8  视图属性动画  466
21.4.9  类型求值器  466
21.4.10  关键帧  468
21.4.11  布局转变  469
21.5  参考资料  470
21.6  小结  470
21.7  面试问题  471
第22章  地图和基于位置的服务  472
22.1  地图包  472
22.1.1  从谷歌获取map-api密钥  473
22.1.2  MapView和MapActivity  474
22.1.3  使用覆盖图添加标记  479
22.2  位置包  484
22.2.1  使用Android进行地理编码  484
22.2.2  使用后台线程进行地理编码  487
22.2.3  LocationManager服务  489
22.2.4  使用MyLocationOverlay显示位置  495
22.2.5  使用接近提醒  498
22.3  参考资料  502
22.4  小结  502
22.5  面试问题  503
第23章  电话API  504
23.1  使用SMS  504
23.1.1  发送SMS消息  504
23.1.2  监视传入的SMS消息  507
23.1.3  使用SMS文件夹  509
23.1.4  发送电子邮件  511
23.2  使用电话管理器  511
23.3  SIP  514
23.3.1  体验SipDemo  514
23.3.2  android.net.sip包  515
23.4  参考资料  516
23.5  小结  517
23.6  面试问题  517
第24章  媒体框架  518
24.1  使用媒体API  518
24.2  播放媒体  522
24.2.1  播放音频内容  522
24.2.2  播放视频内容  532
24.3  录制媒体  534
24.3.1  使用MediaRecorder录制音频  535
24.3.2  使用AudioRecord录制音频  538
24.3.3  视频录制  542
24.3.4  MediaStore类  551
24.3.5  使用Intnet录制音频  551
24.3.6  将媒体内容添加到媒体存储  554
24.3.7  为整个SD卡触发MediaScanner  556
24.4  参考资料  557
24.5  小结  557
24.6  面试问题  558
第25章  主屏幕部件  559
25.1  主屏幕部件的架构  559
25.1.1  什么是主屏幕部件  559
25.1.2  主屏幕部件的用户体验  560
25.1.3  部件的生命周期  563
25.2  示例部件应用程序  567
25.2.1  定义部件提供程序  568
25.2.2  定义部件尺寸  569
25.2.3  与部件布局相关的文件  570
25.2.4  实现部件提供程序  571
25.2.5  实现部件模型  573
25.2.6  实现部件配置活动  579
25.3  部件预览工具  582
25.4  部件局限性和扩展  583
25.5  基于容器的部件  583
25.6  资源  583
25.7  小结  584
25.8  面试问题  584
第26章  列表部件  586
26.1  远程视图概述  586
26.2  在远程视图中使用列表  587
26.2.1  准备远程布局  588
26.2.2  加载远程布局  590
26.2.3  创建RemoteViewsService  591
26.2.4  创建RemoteViewsFactory  592
26.2.5  创建onClick事件  595
26.2.6  响应onClick事件  597
26.3  工作样例:测试主屏幕列表部件  598
26.3.1  创建测试部件提供程序  599
26.3.2  创建远程视图工厂  602
26.3.3  编写远程视图服务的代码  604
26.3.4  部件主布局文件  604
26.3.5  部件提供程序元数据  604
26.3.6  AndroidManifest.xml  605
26.4  测试列表部件  605
26.5  参考资料  607
26.6  小结  608
26.7  面试问题  608
第27章  触摸屏  609
27.1  MotionEvent  609
27.1.1  MotionEvent对象  609
27.1.2  回收MotionEvent  619
27.1.3  使用VelocityTracker  619
27.2  多点触摸  621
27.3  触摸地图  627
27.4  手势  629
27.4.1  捏合手势  629
27.4.2  GestureDetector和OnGestureListener  629
27.4.3  自定义手势  632
27.4.4  Gestures Builder应用程序  632
27.5  参考资料  638
27.6  小结  638
27.7  面试问题  638
第28章  实现拖放操作  640
28.1  拖放操作简介  640
28.2  3.0及其以上版本的基本拖放操作  644
28.3  拖放操作示例应用程序  645
28.3.1  文件列表  646
28.3.2  示例拖放应用程序的布局  646
28.3.3  响应Dropzone的onDrag事件  648
28.3.4  创建拖动源视图  650
28.4  测试示例拖放应用程序  653
28.5  参考资料  654
28.6  小结  654
28.7  面试问题  654
第29章  传感器  655
29.1  什么是传感器  655
29.1.1  检测传感器  656
29.1.2  可以了解的传感器信息  656
29.2  获取传感器事件  658
29.3  解释传感器数据  661
29.3.1  光线传感器  661
29.3.2  接近传感器  661
29.3.3  温度传感器  662
29.3.4  压力传感器  662
29.3.5  陀螺仪传感器  662
29.3.6  加速度计  663
29.3.7  磁场传感器  667
29.3.8  结合使用加速度计和磁场传感器  668
29.3.9  方向传感器  668
29.3.10  磁偏角和Geomagnetic-Field  673
29.3.11  重力传感器  673
29.3.12  直线加速度传感器  674
29.3.13  旋转矢量传感器  674
29.3.14  近场通信传感器  674
29.4  参考资料  683
29.5  小结  683
29.6  面试问题  684
第30章  联系人API  685
30.1  账户  685
30.1.1  账户屏幕概览  686
30.1.2  账户与联系人的相关性  688
30.1.3  枚举账户  689
30.2  联系人应用程序  689
30.2.1  个人账号简介  691
30.2.2  显示联系人  692
30.2.3  显示联系人详细信息  692
30.2.4  编辑联系人详细信息  693
30.2.5  设置联系人的照片  694
30.2.6  导出联系人  694
30.2.7  各种联系人数据类型  696
30.3  联系人  696
30.3.1  联系人SQLite数据库  697
30.3.2  原始联系人  697
30.3.3  数据表  699
30.3.4  聚合联系人  700
30.3.5  view_contacts  701
30.3.6  contact_entities_view  702
30.4  联系人API  703
30.4.1  浏览账户  703
30.4.2  浏览聚合联系人  705
30.4.3  浏览原始联系人  712
30.4.4  浏览原始联系人数据  715
30.4.5  添加联系人和它的详细信息  718
30.5  控制聚合  720
30.6  同步的影响  720
30.7  个人账号  721
30.7.1  读取账号原始联系人  722
30.7.2  读取账号联系人数据  722
30.7.3  添加数据到个人账号  723
30.8  参考资料  725
30.9  小结  725
30.10  面试问题  726
第31章  部署应用程序Android Market  727
31.1  成为发布者  727
31.1.1  遵守规则  728
31.1.2  开发人员控制台  729
31.2  准备销售应用程序  731
31.2.1  针对不同设备进行测试  732
31.2.2  支持不同的屏幕尺寸  732
31.2.3  准备上传AndroidManifest.xml  732
31.2.4  本地化应用程序  733
31.2.5  准备应用程序图标  734
31.2.6  付费应用程序需要考虑的因素  734
31.2.7  将用户引导至Market  735
31.2.8  Android授权服务  735
31.2.9  使用ProGuard来优化及对抗盗版行为  736
31.2.10  准备上传.apk文件  737
31.3  上传应用程序  738
31.3.1  图表  738
31.3.2  列出详细信息  739
31.3.3  发布选项  739
31.3.4  联系信息  740
31.3.5  需遵守的规定  740
31.4  Android Market上的用户体验  741
31.5  更多发布途径  742
31.6  参考资料  742
31.7  小结  743
31.8  面试问题  743

编辑推荐

Android是谷歌的开源移动开发平台。业已成为移动开发领域的主流。近几年。随着越来越多硬件供应商加入Andrroid操作系统的阵营,谷歌已经成为移动领域的新霸主。    克曼特内尼、麦克莱恩编著的《精通Android》是权威智慧的结晶,是备受推崇的Android参考书。作为Android 4.0 SDK(Android的第一个SDK)的编程指南。相较于上一版,本书不仅在结构上做了相应的调整,内容上更是与时俱进。增加了Android内部构件编程的相关知识。介绍了线程、进程、长期运行的服务、广播接收程序、闹钟管理器、设备配置变化和异步任务。用31章涵盖了100多个主题,原书配套网站www.androidbook.com上更是展示TAndroid SDK的最新特性。    本书强调实用,突出趣味,寓教于乐。作者通过妙趣横生、切实可行的示例。向读者展示了如何使用谷歌最新的Android 4.0 SDK。为嵌入式设备、手机、平板电脑构建应用。如果你想投身Android移动开发,那么本书不容错过。

作者简介

《精通Android》在上一版的基础上进行了全面改进,不仅在结构上有了相应的调整,内容上更是与时俱进,增加了Android内部构件的相关知识,介绍了线程、进程、长期运行的服务、广播接收程序、闹钟管理器、设备配置变化和异步任务。关于碎片、碎片对话框、ActionBar和拖放等全新内容更是映入大家的眼帘。此外,《精通Android》对服务和传感器的相关章节做了大幅改进。《精通Android》囊括了Android开发人员所需的一切知识,既可为Android开发人员夯实基础,又能提高Android开发人员的技能。

图书封面


 精通Android下载 精选章节试读



发布书评

 
 


精彩短评 (总计85条)

  •     看过书的介绍,感觉不错,就是书皮有被划破...有点不爽
  •     精通android值得收藏
  •     质量很好,速度也可以
  •     书不错,需细心研读
  •     字真tm小,看瞎了
  •     挺好的,质量,快递也不错.
  •     不错的参考书,但最好要有一定基础来看才有效果。
  •     不错,就是书中代码无法获取到
  •     国外版本看起来感觉比较好!
  •     非常喜欢,内容很全,很细致,但是没有光盘,没有源码,有点美中不足。但是我想我们看书自己敲才能更好的掌握吧,喜欢。
  •     很经典的书,900多页,有的看了。只是app开发说明,没有光盘,代码书写很不方便。
  •     看着像是,主要是外国人写的都应不错,图灵出版的。
  •     还在拜读中,推荐给有一定Android基础的读者。
  •     还没来得及看,但是外观整洁,感觉挺满意的,而且图灵的书,很放心
  •     书挺好,就是当当配送有点差劲,拿个纸盒子运过来,里边也不套个袋子,虽不影响阅读,但对书还是有一定的损毁
  •     就是入门级别的书,也敢大大的说 精通 二字 现在出版社真浮躁
  •     适合有过一些开发经验的新手读的书,就是翻译太烂,强烈建议看英文版
  •     不适合初学者看,木有传感器,蓝牙,wifi部分的内容
  •     内容不错,很实用,毕竟老外写东西是传播原理和思想,而没有中国式的玩具代码
  •     对新手来说这这本书讲的太过宽泛了,对于老手这本书不太适合你!书的广度虽多,但也是十分有限,就连重要的深度更是少的可怜,大多都是点到既止,更可笑的是很多功能机制完全没有告诉读者为什么,甚至是漏写最重要的部分,这些部分直接导致读者读完之后非常糊涂。
  •     此书作为一个入了门的android程序员全方位提升很有必要。
  •     对于现在市场上非常多的android书来说,这本书我自己认为是不适合初学者的。我最近调动工作,开始从事android项目,所以买了一本看了看。如果不结合网络上的入门电子版的书,我想我是看不懂这本书。
  •     书还是不错的,很好很强大。
  •     翻了一下,感觉翻译有点点不好,手头上有英文的电子版,两者结合着看吧。
  •     正在学习Android开发,相当好的书,内容非常详细,当然是需要一定Java基础的。
  •     书里面讲的很详细,包含了android的各个方面
  •     还没细看,不予置评。
  •     很好,一定好好使用
  •     很好,写得很详细,就是没有涉及到socket部分
  •     好书收藏了,以后慢慢看
  •     比较深入一点的入门书。。。
  •     感觉不适合新人来学习
  •     作为一个开发者,我不建议购买这本书,本书的内容基本可以在官网,或者论坛找到。对于书名“精通”二字,我为作者感到羞耻,书的广度虽多,但也是十分有限,就连重要的深度更是少的可怜,大多都是点到既止,更可笑的是很多功能机制完全没有告诉读者为什么,甚至是漏写最重要的部分,这些部分直接导致读者读完之后非常糊涂。如果我作为新手的话,这本书一定会使我更加迷惑。对于翻译,我觉得有些基本名词最好不要翻译,翻译的也比较生硬。作为初学者,这本书太大了,作为老手,这本书不太适合你。
  •     深入理解android的比较好的书,翻译还算流畅,只是有些专有名词翻译的不是很好,应当在一些专有名词后注释一下原文
  •     其实不太适合新手读,可以作为一本参考,但不是全部
  •     书质量不错 是正版 物流也挺快的
  •     书中将很多专有名词都翻译成了中文,比如action翻译成操作,activity翻译成活动等等。不过书中的内容和语言还是很不错的,如果有条件,建议读E版的,原汁原味,没有错误。(我看过一半E版电子书,因为想看纸质的才买的这本)
  •     书挺不错的,就是没我想象中的多。
  •     精通ANDROID
  •     纸太差了,手都过敏痒,90多买一本这样的书。。。内容可以,但是纸好差,有味道,手摸了纸张过敏。
  •     读了有100多页,感觉写的挺好的
  •     内容讲解得很细致,值得收藏
  •     内容很全面。什么都有。
  •     很好的书,只是现在刚接触,很多地方还看不懂。
  •     送货及时,价格合理,第一感觉不错!
  •     还没看呢。。。。看了再来补评价
  •     不错,好啊~~
  •     刚收货就降价,太气人
  •     很好的参考书,必读
  •     非常好的三本书,书中案例对于开发有很大的借鉴价值。其中的思想也对个人有启发作用。
  •     这是一本深化了解的书,最好有一点android基础,这样学起来比较容易,如果一点基础都没有,这本书恐怕你看不懂
  •     内容不是我想要的Android4开发教程
  •     不错,一直都在买APRESS的书。
  •     这本书也不错,回去正在阅读中
  •     购房打算购房的时光
  •     不是说书的内容不好,这本书的内容是大家肯定的。只是今天收到货,发现书的印刷质量不好就算了,关键是里面还有4张纸是破页了,这是给欢喜拿书的我破了冷水!
  •     这本书以前就看过,是电子版的 ,书还是不错的但是不知道为什么书的封面上面都是划痕。。不开心
  •     这本书总体上来说是值得的,但书中的错误也不少,不知道是翻译问题还是原本就这样。如果有能力入原版尽量入原版吧,本书翻译的时候把有些关键字也翻译成中文了使得读者不便于理解,有时候还会有点莫名其妙,但每章后都会有详细资料的URL。另外书的纸张很薄,真怕一不小心弄坏了啊。
  •     全而杂,不知道是书的问题还是翻译问题,逻辑混乱,让人看的抓狂。建议新手还是先看第一行代码,或者是安卓编程权威指南,再看官方文档。
  •     这本书得认真看
  •     稍微看了下目录,挺不错的。
  •     略读一遍//我擦,哭了,曾经有那么一本书在我面前我没有珍惜(图书馆),直到需要他时候才发现他已不见踪迹。网上一搜,妈呀100+。追悔莫及啊
  •     感觉一般,不怎么推荐
  •     全书700多页,相当硬的一本新手提高指南。
  •     感觉介绍的很详细,做Android开发的话我觉得应该买一本。
  •     打算自学,刚到手
  •     很好,很注重细节,内容丰富
  •     国外的书,写的都比较个性,富有自己的内容,但需要适应风格
  •     精通Android
  •     系统性的进行了介绍,虽然官网也很全面,但毕竟看母语比看英文快,所以还是选择了这本书,尤其是在5折优惠时买入,感觉很值。
  •     昨天刚到,翻了下,应该还不错。
  •     看了几章,感觉还行
  •     这书太臭了,像盗版的。。。。看都看不下去,打开就一股臭味
  •     对于安卓系统4的。很实用,一点一点学习中
  •     内容非常的详细,讲解也很深入,稍微不足的可能就是书中的代码段没有明确标注对应的源码文件。
  •     物流很快,周六买的,周一就到了
  •     内容有丰富的源代码及实例,较为饱满
  •     翻译的很烂,但是有些知识比较全
  •     感觉一般般,可能是我水平不够吧!
  •     还在看,内容不错,买来学习android开发
  •     书还没看,不过先前去书店看过,代码和分析都有,是不错的书
  •     严格来说,本书不是给初学者入门的,尽管内容讲的很全但是比较浅。从结构上来说,本书更像是带领读者整个梳理一遍android的sdk,而不是循序渐进的做教程用的。所以很多时候,书中只是按部就班的讲,而不顾及读者是否能跟上节奏。如果读者是新手,会完全不知所措,打开eclipse甚至都不知道该怎么去跟着写代码。
  •     步步为营,由浅入深,适合新手编程
  •     快递速度很快,书的质量、内容都很好,赞
  •     不知道对我有没有什么大的帮助,看上去不错,先学习学习
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024