《Android 4高级编程(第3版)》PDF下载


编辑推荐
《Android 4高级编程(第3版)》由Android权威专家编写,涵盖了所有最新的内容,是学习使用Android 4 SDK开发移动应用程序的理想指南,经典图书升级版本!

作者简介
作者:(美国)Reto Meier 译者:佘建伟 赵凯
Reto Meier,目前是Google Android团队的一名Android开发人员倡导者,帮助Android开发人员创建最优秀的应用程序。Reto是一位经验丰富的软件开发人员,拥有逾10年的GUI应用程序开发经验。进入Google之前,他曾在多种行业中工作过,包括海洋石油、天然气以及金融业。Reto始终不渝地追求掌握新技术,从2007年Android发布之初Reto就迷恋上了此项技术。在Reto个人网站Radioactive Yak上可以了解Reto的兴趣和爱好。他还在Google+和Twitter上分享各种信息。

目录
第1章 Android简介 1 
1.1 一些背景信息 2 
1.1.1 不远的过去 2 
1.1.2 未来的前景 2 
1.2 对Android的误解 3 
1.3 Android:开放的移动开发平台 3 
1.4 原生Android应用程序 4 
1.5 Android SDK的特征 5 
1.5.1 访问硬件(包括摄像头、GPS和传感器)5 
1.5.2 使用Wi—Fi、蓝牙技术和NFC进行数据传输 6 
1.5.3 地图、地理编码和基于位置的服务 6 
1.5.4 后台服务 6 
1.5.5 使用SQLite数据库进行数据存储和检索 7 
1.5.6 共享数据和应用程序间通信 7 
1.5.7 使用Widget和Live Wallpaper增强主屏幕 7 
1.5.8 广泛的媒体支持和2D/3D图形 7 
1.5.9 Cloud to Device Messaging 8 
1.5.10 优化的内存和进程管理 8 
1.6 开放手机联盟简介 8 
1.7 运行Android的环境 9 
1.8 从事移动开发的原因 9 
1.9 从事Android开发的原因 9 
1.9.1 推动Android普及的因素 10 
1.9.2 Android的独到之处 10 
1.9.3 改变移动开发格局 11 
1.10 开发框架简介 11 
1.10.1 开发包中的资源 12 
1.10.2 理解Android软件栈 12 
1.10.3 Dalvik虚拟机 14 
1.10.4 Android应用程序架构 14 
1.10.5 Android库 15 
第2章 开始入手 17 
2.1 Android开发 18 
2.1.1 开始前的准备工作 18 
2.1.2 创建第一个Android应用程序 24 
2.1.3 Android应用程序的类型 31 
2.2 面向移动设备和嵌入式设备的开发 32 
2.2.1 硬件限制带来的设计考虑事项 32 
2.2.2 考虑用户环境 35 
2.2.3 Android开发 36 
2.3 Android开发工具 40 
2.3.1 Android虚拟设备管理器 41 
2.3.2 Android SDK管理器 42 
2.3.3 Android模拟器 42 
2.3.4 Dalvik调试监控服务(DDMS)42 
2.3.5 Android调试桥(ADB)43 
2.3.6 Hierarchy Viewer和Lint工具 43 
2.3.7 Monkey和Monkey Runner 43 
第3章 创建应用程序和Activity 45 
3.1 Android应用程序的组成部分 46 
3.2 应用程序Manifest文件简介 47 
3.3 使用Manifest编辑器 54 
3.4 分离资源 55 
3.4.1 创建资源 55 
3.4.2 使用资源 63 
3.4.3 为不同的语言和硬件创建资源 66 
3.4.4 运行时配置更改 68 
3.5 Android应用程序生命周期 70 
3.6 理解应用程序的优先级和进程状态 70 
3.7 Android Application类简介 72 
3.7.1 扩展和使用Application类 72 
3.7.2 重写应用程序的生命周期事件 73 
3.8 深入探讨Android Activity 74 
3.8.1 创建Activity 74 
3.8.2 Activity的生存期 76 
3.8.3 Android Activity类 81 
第4章 创建用户界面 83 
4.1 Android UI基本设计 84 
4.2 Android UI的基础知识 84 
4.3 布局简介 85 
4.3.1 定义布局 86 
4.3.2 使用布局创建设备无关的UI 87 
4.3.3 优化布局 90 
4.4 To—Do List示例 93 
4.5 Fragment介绍 100 
4.5.1 创建新的Fragment 101 
4.5.2 Fragment的生命周期 101 
4.5.3 Fragment Manager介绍 105 
4.5.4 向Activity中添加Fragment 105 
4.5.5 Fragment和Activity之间的接口 110 
4.5.6 没有用户界面的Fragment 111 
4.5.7 Android Fragment 类 112 
4.5.8 对To—Do List示例使用Fragment 112 
4.6 Android widget 工具箱 116 
4.7 创建新视图 117 
4.7.1 修改现有的视图 118 
4.7.2 创建复合控件 122 
4.7.3 使用布局创建简单的复合控件 124 
4.7.4 创建定制的视图 124 
4.7.5 使用定制的控件 137 
4.8 Adapter简介 137 
4.8.1 部分原生Adapter简介 138 
4.8.2 定制ArrayAdapter 138 
4.8.3 使用Adapter绑定数据到视图 139 
第5章 Intent和Broadcast Receiver 145 
5.1 Intent简介 145 
5.1.1 使用Intent来启动Activity 146 
5.1.2 Linkify简介 153 
5.1.3 使用Intent广播事件 155 
5.1.4 Local Broadcast Manager 159 
5.1.5 Pending Intent简介 160 
5.2 创建Intent Filter和Broadcast Receiver 161 
5.2.1 使用Intent Filter为隐式Intent提供服务 161 
5.2.2 使用Intent Filter作为插件和扩展 170 
5.2.3 监听本地Broadcast Intent 173 
5.2.4 使用Broadcast Intent监控设备的状态变化 174 
5.2.5 在运行时管理Manifest Receiver 176 
第6章 使用Internet资源 177 
6.1 下载和分析Internet资源 177 
6.1.1 连接Internet资源 178 
6.1.2 使用XML Pull Parser分析XML 179 
6.1.3 创建一个地震查看器 180 
6.2 使用Download Manager 186 
6.2.1 下载文件 186 
6.2.2 自定义Download Manager Notification 187 
6.2.3 指定下载位置 188 
6.2.4 取消和删除下载 189 
6.2.5 查询Download Manager 189 
6.3 使用Internet服务 192 
6.4 连接到Google App Engine 192 
6.5 下载数据而不会耗尽电量的最佳实践 194 
第7章 文件、保存状态和首选项 195 
7.1 保存简单的应用程序数据 195 
7.2 创建并保存Shared Preference 196 
7.3 检索Shared Preference 197 
7.4 为地震查看器创建一个设置Activity 197 
7.5 首选项框架和Preference Activity概述 205 
7.5.1 在XML中定义一个Preference Screen布局 206 
7.5.2 Preference Fragment简介 208 
7.5.3 使用Preference Header定义Preference Fragment的层次结构 208 
7.5.4 Preference Activity简介 209 
7.5.5 向后兼容性与Preference Screen 210 
7.5.6 找到并使用Preference Screen设置的Shared Preference 210 
7.5.7 Shared Preference Change Listener简介 211 
7.6 为地震查看器创建一个标准的Preference Activity 211 
7.7 持久化应用程序实例的状态 215 
7.7.1 使用Shared Preference保存Activity状态 215 
7.7.2 使用生命周期处理程序保存和还原Activity实例 215 
7.7.3 使用生命周期处理程序保存和还原Fragment实例状态 216 
7.8 将静态文件作为资源添加 218 
7.9 在文件系统下工作 218 
7.9.1 文件管理工具 218 
7.9.2 使用特定于应用程序的文件夹存储文件 219 
7.9.3 创建私有的应用程序文件 219 
7.9.4 使用应用程序文件缓存 220 
7.9.5 存储公共可读的文件 220 
第8章 数据库和Content Provider 223 
8.1 Android数据库简介 223 
8.1.1 SQLite数据库简介 224 
8.1.2 Content Provider简介 224 
8.2 SQLite简介 224 
8.3 Content Value和Cursor 225 
8.4 使用SQLite数据库 225 
8.4.1 SQLiteOpenHelper简介 226 
8.4.2 在不使用SQLiteOpenHelper的情况下打开和创建数据库 228 
8.4.3 Android数据库设计注意事项 228 
8.4.4 查询数据库 228 
8.4.5 从Cursor中提取值 229 
8.4.6 添加、更新和删除行 230 
8.5 创建Content Provider 232 
8.5.1 注册Content Provider 233 
8.5.2 发布Content Provider的URI地址 233 
8.5.3 创建Content Provide的数据库 234 
8.5.4 实现Content Provider查询 235 
8.5.5 Content Provider事务 236 
8.5.6 在Content Provider中存储文件 239 
8.5.7 一个Content Provider的实现框架 240 
8.6 使用Content Provider 244 
8.6.1 Content Resolver简介 244 
8.6.2 查询Content Provider 244 
8.6.3 使用Cursor Loader异步查询内容 247 
8.6.4 添加、删除和更新内容 249 
8.6.5 访问Content Provider中存储的文件 251 
8.6.6 创建一个To—Do List数据库和Content Provider 253 
8.7 将搜索功能添加到应用程序中 260 
8.7.1 使Content Provider可搜索 261 
8.7.2 为应用程序创建一个搜索Activity 261 
8.7.3 将搜索Activity设置为应用程序的默认搜索Provider 263 
8.7.4 使用搜索视图微件 266 
8.7.5 由Content Provider支持搜索建议 267 
8.7.6 在快速搜索框中显示搜索结果 270 
8.8 创建可搜索的地震Content Provider 270 
8.8.1 创建Content Provider 270 
8.8.2 使用地震Content Provider 276 
8.8.3 搜索EarthquakeContent Provider 279 
8.9 本地Android Content Provider 285 
8.9.1 使用Media StoreContent Provider 285 
8.9.2 使用Contacts Contract Content Provider 286 
8.9.3 使用Calendar Content Provider 293 
第9章 在后台操作 297 
9.1 Service简介 298 
9.1.1 创建和控制Service 298 
9.1.2 将Service绑定到Activity 302 
9.1.3 地震监控Service示例 304 
9.1.4 创建前台Service 308 
9.2 使用后台线程 309 
9.2.1 使用AsyncTask运行异步任务 310 
9.2.2 Intent Service简介 312 
9.2.3 Loader简介 313 
9.2.4 手动创建线程和GUI线程同步 313 
9.3 使用Alarm 315 
9.3.1 创建、设置和取消Alarm 316 
9.3.2 设置重复Alarm 317 
9.3.3 使用重复Alarm调度网络刷新 318 
9.4 使用Intent Service简化Earthquake更新Service 320 
第10章 扩展用户体验 323 
10.1 操作栏简介 324 
10.1.1 自定义操作栏 325 
10.1.2 自定义操作栏来控制应用程序的导航行为 328 
10.1.3 操作栏操作简介 333 
10.2 向地震监控程序添加一个操作栏 333 
10.3 创建并使用菜单和操作栏操作项 339 
10.3.1 Android菜单系统简介 340 
10.3.2 创建菜单 341 
10.3.3 指定操作栏的操作 342 
10.3.4 菜单项选项 343 
10.3.5 添加操作View和操作提供程序 344 
10.3.6 在Fragment中添加菜单项 345 
10.3.7 使用XML定义菜单层次结构 345 
10.3.8 动态更新菜单项 347 
10.3.9 处理菜单选择 347 
10.3.10 子菜单和上下文菜单简介 348 
10.4 更新地震监控程序 351 
10.5 全屏显示 353 
10.6 对话框简介 355 
10.6.1 创建一个对话框 356 
10.6.2 使用AlertDialog类 356 
10.6.3 使用专门的输入对话框 357 
10.6.4 通过Dialog Fragment管理和显示对话框 358 
10.6.5 通过Activity事件处理程序管理和显示对话框 360 
10.6.6 将Activity用作对话框 361 
10.7 创建Toast 361 
10.7.1 自定义Toast 362 
10.7.2 在工作线程中使用Toast 364 
10.8 Notification简介 365 
10.8.1 Notification Manager简介 366 
10.8.2 创建Notification 366 
10.8.3 设置和自定义通知托盘UI 369 
10.8.4 配置持续和连续的Notification 373 
10.8.5 触发、更新和取消Notification 374 
10.9 向地震监控程序中添加Notification和对话框 376 
第11章 高级用户体验 381 
11.1 为每个屏幕尺寸和分辨率做设计 382 
11.1.1 分辨率无关 382 
11.1.2 为不同的屏幕大小提供支持和优化 383 
11.1.3 创建可缩放的图形资源 386 
11.1.4 创建优化的、自适应的、动态的设计 390 
11.1.5 反复测试 390 
11.2 确保可访问性 391 
11.2.1 为非触屏设备提供导航 391 
11.2.2 为每个View提供文本描述 391 
11.3 Android Text—to—Speech简介 392 
11.4 使用语音识别 394 
11.4.1 使用语音识别进行语音输入 395 
11.4.2 使用语音识别进行搜索 396 
11.5 控制设备振动 396 
11.6 使用动画 397 
11.6.1 补间View动画 397 
11.6.2 创建和使用逐帧动画 400 
11.6.3 插值属性动画 400 
11.7 强化View 404 
11.7.1 高级Canvas绘图 404 
11.7.2 硬件加速 419 
11.7.3 Surface View简介 420 
11.7.4 创建交互式控件 423 
11.8 高级Drawable资源 428 
11.9 复制、粘贴和剪贴板 431 
11.9.1 向剪贴板中复制数据 431 
11.9.2 粘贴剪贴板数据 431 
第12章 硬件传感器 433 
12.1 使用传感器和传感器管理器 433 
12.1.1 受支持的Android传感器 434 
12.1.2 虚拟传感器简介 435 
12.1.3 查找传感器 435 
12.1.4 监视传感器 436 
12.1.5 解释传感器值 438 
12.2 监视设备的移动和方向 439 
12.2.1 确定设备的自然方向 440 
12.2.2 加速计简介 441 
12.2.3 检测加速度变化 442 
12.2.4 创建一个重力计 443 
12.2.5 确定设备方向 446 
12.2.6 创建一个指南针和人工地平仪 450 
12.2.7 陀螺仪传感器简介 453 
12.3 环境传感器简介 454 
12.3.1 使用气压计传感器 454 
12.3.2 创建气象站 455 
第13章 地图、地理编码和基于位置的服务 461 
13.1 使用基于位置的服务 461 
13.2 在模拟器中使用基于位置的服务 462 
13.2.1 更新模拟器位置提供器中的位置 463 
13.2.2 配置模拟器来测试基于位置的服务 463 
13.3 选择一个位置提供器 464 
13.3.1 查找位置提供器 464 
13.3.2 通过指定条件查找位置提供器 464 
13.3.3 确定位置提供器的能力 465 
13.4 确定当前位置 466 
13.4.1 位置的隐私性 466 
13.4.2 找出上一次确定的位置 466 
13.4.3 Where Am I示例 466 
13.4.4 刷新当前位置 469 
13.4.5 在Where Am I中跟踪位置 472 
13.4.6 请求单独一次位置更新 473 
13.5 位置更新的最佳实践 474 
13.6 使用近距离提醒 477 
13.7 使用地理编码器 478 
13.7.1 反向地理编码 479 
13.7.2 前向地理编码 480 
13.7.3 对“Where Am I”示例进行地理编码 481 
13.8 创建基于地图的Activity 482 
13.8.1 MapView和MapActivity简介 482 
13.8.2 获得地图的API key 483 
13.8.3 创建一个基于地图的Activity 483 
13.8.4 地图和Fragment 485 
13.8.5 配置和使用MapView 486 
13.8.6 使用MapController 486 
13.8.7 对“Where Am I”示例使用地图 487 
13.8.8 创建和使用覆盖(Overlay)490 
13.8.9 MyLocationOverlay简介 497 
13.8.10 ItemizedOverlay和OverlayItem简介 498 
13.8.11 将视图固定到地图和地图的某个位置上 500 
13.9 对Earthquake示例添加地图功能 501 
第14章 个性化主屏幕 507 
14.1 主屏幕Widget简介 507 
14.2 创建App Widgets 509 
14.2.1 创建Widget的XML布局资源 509 
14.2.2 定义Widget设置 511 
14.2.3 创建Widget Broadcast Receiver并将其添加到应用程序的manifest文件中 512 
14.2.4 AppWidgetManager和RemoteView简介 513 
14.2.5 刷新Widget 518 
14.2.6 创建并使用Widget配置Activity 521 
14.3 创建地震Widget 522 
14.4 Collection View Widget简介 528 
14.4.1 创建Collection View Widget的布局 529 
14.4.2 创建RemoteViewsService 530 
14.4.3 创建一个RemoteViews—Factory 531 
14.4.4 使用RemoteViewsService填充CollectionViewWidget 533 
14.4.5 向Collection View Widget中的项添加交互性 534 
14.4.6 将Collection View Widget绑定到Content Provider 535 
14.4.7 刷新Collection View Widget 537 
14.4.8 创建Earthquake Collection View Widget 537 
14.5 Live Folder简介 543 
14.5.1 创建Live Folder 544 
14.5.2 创建Earthquake Live Folder 548 
14.6 使用快速搜索框显示应用程序搜索结果 551 
14.6.1 在快速搜索框中显示搜索结果 551 
14.6.2 将Earthquake示例的搜索结果添加到快速搜索框中 552 
14.7 创建Live Wallpaper 553 
14.7.1 创建Live Wallpaper定义资源 553 
14.7.2 创建Wallpaper Service 554 
14.7.3 创建Wallpaper Service引擎 555 
第15章 音频、视频以及摄像头的使用 557 
15.1 播放音频和视频 558 
15.1.1 Media Player简介 559 
15.1.2 准备音频播放 559 
15.1.3 准备视频播放 560 
15.1.4 控制Media Player的播放 564 
15.1.5 管理媒体播放输出 566 
15.1.6 响应音量控制 566 
15.1.7 响应Media播放控件 567 
15.1.8 请求和管理音频焦点 569 
15.1.9 当音频输出改变时暂停播放 571 
15.1.10 Remote Control Client简介 572 
15.2 操作原始音频 574 
15.2.1 使用AudioRecord录制声音 574 
15.2.2 使用AudioTrack播放音频 575 
15.3 创建一个Sound Pool 577 
15.4 使用音效 578 
15.5 使用摄像头拍摄照片 579 
15.5.1 使用Intent拍摄照片 579 
15.5.2 直接控制摄像头 581 
15.5.3 读取并写入 JPEG EXIF图像详细信息 588 
15.6 录制视频 589 
15.6.1 使用Intent录制视频 589 
15.6.2 使用MediaRecorder录制视频 590 
15.7 使用媒体效果 593 
15.8 向媒体库中添加新媒体 594 
15.8.1 使用媒体扫描仪插入媒体 594 
15.8.2 手动插入媒体 595 
第16章 蓝牙、NFC、网络和Wi—Fi 597 
16.1 使用蓝牙 597 
16.1.1 管理本地蓝牙设备适配器 598 
16.1.2 可发现性和远程设备发现 600 
16.1.3 蓝牙通信 604 
16.2 管理网络和Internet连接 609 
16.2.1 Connectivity Manager简介 609 
16.2.2 支持用户首选项以进行后台数据传输 609 
16.2.3 查找和监视网络连接 611 
16.3 管理Wi—Fi 612 
16.3.1 监视Wi—Fi连接 613 
16.3.2 监视活动的Wi—Fi连接的详细信息 613 
16.3.3 扫描热点 613 
16.3.4 管理Wi—Fi配置 614 
16.3.5 创建Wi—Fi网络配置 615 
16.4 使用Wi—Fi Direct传输数据 615 
16.4.1 初始化Wi—Fi Direct框架 615 
16.4.2 启用Wi—Fi Direct并监视其状态 617 
16.4.3 发现对等设备 618 
16.4.4 连接对等设备 618 
16.4.5 在对等设备之间传输数据 620 
16.5 近场通信 621 
16.5.1 读取NFC标签 622 
16.5.2 使用前台分派系统 623 
16.5.3 Android Beam简介 625 
第17章 电话服务和SMS 629 
17.1 电话服务的硬件支持 629 
17.1.1 将电话功能指定为必需的硬件功能 629 
17.1.2 检查电话硬件 630 
17.2 使用电话服务 630 
17.2.1 启动电话呼叫 630 
17.2.2 替换本机拨号程序 631 
17.2.3 访问电话服务的属性及状态 632 
17.2.4 使用PhoneStateListener监视电话状态的变化 635 
17.2.5 使用Intent Receiver监视传入的电话呼叫 639 
17.3 SMS和MMS简介 640 
17.3.1 在应用程序中使用SMS和MMS 640 
17.3.2 使用Intent从应用程序中发送SMS和MMS 640 
17.3.3 使用SMS Manager发送SMS消息 641 
17.3.4 监听传入的SMS消息 644 
17.3.5 紧急响应程序SMS示例 646 
17.3.6 自动紧急响应程序 654 
17.4 SIP和VOIP简介 662 
第18章 Android高级开发 663 
18.1 Android的安全性 664 
18.1.1 Linux内核安全 664 
18.1.2 权限简介 664 
18.2 Cloud to Device Messaging简介 666 
18.2.1 C2DM的局限性 667 
18.2.2 注册使用C2DM 667 
18.2.3 在C2DM服务器上注册设备 667 
18.2.4 向设备发送C2DM消息 670 
18.2.5 接收C2DM消息 672 
18.3 使用License Verification Library实现版权保护 673 
18.3.1 安装License Verification Library 673 
18.3.2 获得License Verification公钥 673 
18.3.3 配置License Validation Policy 674 
18.3.4 执行许可验证检查 674 
18.4 应用程序内收费 675 
18.4.1 应用程序内收费的局限性 676 
18.4.2 安装IAB库 676 
18.4.3 获得公钥和定义可购买的物品 676 
18.4.4 开始IAB交易 677 
18.4.5 处理IAB购买请求的响应 678 
18.5 使用Wake Lock 679 
18.6 使用AIDL支持Service的IPC 680 
18.7 处理不同硬件和软件的可用性 686 
18.7.1 指定硬件的要求 686 
18.7.2 确认硬件可用性 687 
18.7.3 构建向后兼容的应用程序 687 
18.8 利用STRICT模式优化UI性能 689 
第19章 推广和发布应用程序并从中获利 691 
19.1 签名和发布应用程序 691 
19.2 发布应用程序 693 
19.2.1 Google Play简介 693 
19.2.2 开始使用Google Play 694 
19.2.3 发布应用程序 695 
19.2.4 开发者控制台上的应用程序报告 697 
19.2.5 查看应用程序错误报告 697 
19.3 如何通过应用程序赚钱 698 
19.4 应用程序销售、推广和分发的策略 699 
19.4.1 应用程序的起步策略 699 
19.4.2 在Google Play上推广 700 
19.4.3 国际化 700 
19.5 分析数据和跟踪推荐人 701 
19.5.1 使用移动应用程序的Google Analytics 702 
19.5.2 使用Google Analytics追踪推荐 703

序言
对移动开发人员来说,现在是一个令人心潮澎湃的时代。手机从来没有像今天这样流行,强大的智能手机产品已经为消费者所普遍接受,而且Android生态系统已经扩展到了平板电脑和电视设备,进一步增加了您的Android应用程序的受众。
现在,外观时尚且用途广泛的手机带有GPS、加速计、NFC和触摸屏等硬件功能,并且具有固定费率且定价合理的数据计划,因此,它们成为了吸引越来越多的开发者创建各种新颖有趣的Android应用程序的平台。
Android为移动应用程序开发提供了一个开放的平台。因为没有了人为制造的障碍,所以Android开发人员可以自由地编写能够充分利用日益强大的手机硬件的应用程序,并在一个开放的市场上销售它们。因此,随着移动设备的销售量不断增长,开发者对Android设备的兴趣也出现了爆炸性的增长。截止到2012年,市场上有数百个手机和平板电脑OEM,包括HTC、Motorola、LG、Samsung、ASUS和Sony Ericsson。有超过3亿的Android设备已被激活,并且这个数字仍在以每天新激活850000个设备的速度增长。
通过使用Google Play,开发人员可以利用开放的市场向所有兼容的Android设备发布免费或者收费的应用程序,而不需要经历审查过程。Android构建在一个开源框架之上,并且有强大的SDK库,已经使开发人员在Google Play上发布了超过450000个应用程序。
本书将指导你使用Android SDK的版本4来构建移动应用程序。每章的讲解将通过一系列示例项目帮助你逐步掌握Android中的各种新功能和技术,以便你能够最大限度地利用Android。本书介绍了Android编程入门所需的所有基础知识,同时为有经验的移动开发人员讲解了如何利用Android的独特功能来增强现有应用程序或者创建新的、创造性的应用程序。
Google的理念是尽快发布,然后不断更新。自从2008年10月Android第一次完整发布以来,共推出了19个平台和SDK版本。由于发布周期如此之快,软件和开发库很可能会有定期的修改和丰富。虽然Android的开发团队会尽可能地保持向后兼容性,但在未来的版本中,本书提供的某些信息仍可能会过时。类似地,并不是每个用户的Android设备都在运行最新的平台版本。
只要有可能,本书就会指出哪些平台版本支持书中所介绍的功能,以及可以使用哪些方法为早期设备的用户提供支持。本书的内容和示例提供了如何使用当前SDK来编写优秀的移动应用程序所需要的基础知识,同时也保持了快速适应未来版本更强大功能的灵活性。

0.1读者对象
本书适合所有对在Android移动手机平台上创建应用程序感兴趣的人。不管是经验丰富的移动开发人员,还是想通过Android开发移动应用程序的新手,都能够从本书中获得十分有价值的信息。
如果读者使用过手机(特别是运行Android的手机),那么这些使用经验会对阅读本书有所帮助,但这不是必需的。同样,如果以前有过手机开发经验,那么也有一定的帮助,但这也不是必需的。
不过希望读者具有一定的软件开发经验,并且熟悉基本的面向对象开发实践。对Java语法的了解是必需的。深入理解Java并具有Java开发经验会带来明显的优势,不过没有这些知识和经验也没太大影响。
第1章和第2章简要介绍移动应用程序的开发过程,并包含如何在Android上开始开发的说明。除了这两章之外,对其他章节的阅读顺序不做要求。如果对第3~9章中描述的基本组件有所理解,将有利于你对其他章节的学习。第10章和第11章详细介绍了如何创建应用程序来提供丰富而一致的用户体验。第12~19章讨论了各种可选功能和高级功能,可以按照顺序阅读,也可以按需阅读。

0.2本书内容
第1章简要介绍Android,包括它是什么,以及它如何适应当前的移动开发。然后详细讲述了Android作为一个开发平台能够提供什么功能,并解释了它为什么是一个创建移动应用程序的良机。第2章讲述了移动开发的一些最佳实践,并解释了如何下载Android SDK和开始开发应用程序。该章同时也介绍了Android开发工具,并说明了如何从头创建新的应用程序。第3~9章深入探讨了基本的Android应用程序组件。首先讲述了组成Android应用程序和它的生命周期的每个部分,然后介绍了应用程序清单和外部资源,以及活动及其生存期与生命周期。
之后将学习如何使用布局、视图和Fragment创建用户界面,并且还将了解在应用程序组件之间执行动作和发送消息的Intent和Broadcast Receiver机制。接着将介绍Internet资源,之后详细讲述了数据存储、检索和共享。读者在此将了解首选项保存机制、文件处理、数据库和游标。还将学习如何使用内容提供器来共享应用程序数据,以及如何访问原生内容提供器的数据。这一部分最后介绍了如何使用Service和后台线程在后台工作。
第10章和第11章以第4章介绍的UI知识为基础,介绍了如何使用操作栏、菜单系统和通知来增强用户体验。在这里将学习如何让应用程序适合各种显示屏(针对多种屏幕尺寸和分辨率进行优化),如何使应用程序更易于访问,以及如何在应用程序内使用语音识别。
第12~18章涉及较高级的主题。在这里将学习如何使用罗盘、加速计和其他硬件传感器来让应用程序能够对环境做出响应,然后介绍了地图以及基于位置的服务。接着介绍了如何使用动态Widget、Live Wallpaper和快速搜索框,使你的应用程序通过主屏幕与用户直接交互。
在介绍了播放和录制多媒体以及使用摄像头以后,你将了解到Android的通信功能。在介绍了蓝牙、NFC、Wi-FiDirect和网络管理(包括Wi-Fi和移动数据连接)之后,讨论了电话服务和用来发送及接收SMS消息的API。
第18章介绍几个高级开发主题,其中包括安全、IPC、Cloud to Device Messaging、License Verification Library和Strict Mode。最后,第19章介绍了在发布和分发应用程序以及利用应用程序盈利时面临的机会和可以采用的选择,重点讨论了Google Play。

0.3本书结构
本书按照一种合理的顺序进行组织,从而帮助具有不同开发背景的读者更好地学习编写高级Android应用程序的方法。尽管对阅读每个章节的顺序不做要求,但是请注意,某些示例项目是跨越多个章节开发的,在其中每个阶段都会添加一些新功能并做一些改进。
富有移动开发经验且拥有能正常工作的Android开发环境的开发人员可以跳过前两章的内容——这两章简要介绍了移动开发的基本知识以及如何创建开发环境——直接学习第3~9章。因为这几章涵盖了Android开发的基础知识,所以深入理解这几章所讲述的概念非常重要。
在学习这几章之后,读者就可以继续学习其余章节了,它们主要介绍了地图、基于位置的服务、后台应用程序以及诸如硬件交互和联网这样的更高级主题。

0.4使用本书的要求
要使用本书中的示例代码,你需要通过下载Android SDK库和开发工具以及Java开发包,来创建一个Android开发环境。你可能还希望通过下载和安装Eclipse和Android开发工具插件来简化开发工作,但是这些都不是必需的。
Windows、Mac OS和Linux系统环境都支持Android开发,可以从Android站点下载相应的SDK。
学习本书内容或者开发Android应用程序并不需要Android设备,但是有一台Android设备的帮助很大,尤其是在测试应用程序时。
后记

如今的智能手机,功能越来越强大。CUP主频1.5G、双核甚至四核已经成为主流,智能手机已然成为一个“小型PC”。在PC上能够完成的应用功能,手机上基本都可以完成,这给从事手机端应用开发的程序员提供了很大的空间和挑战。智能手机最核心的部分当然是操作系统,目前使用最多的操作系统包括Android、iOS、Symbian、Windows Phone和BlackBerry OS。
Android是一种以Linux为基础的开放源代码操作系统。
Google于2011年10月19日正式发布Android4.0(代号:Ice Cream Sandwich),距离Android操作系统中的第一个正式版本(于2008年9月23日发布,代号为铁臂阿童木(Astro))的发布,仅仅过去四年。该版本在前一个版本的基础上修复了bug并且添加了一些新功能。较之前的版本,Android4.0统一了手机和平板电脑使用的系统,UI更加人性化,速度也有了很大的提升。对于Android应用开发者而言,他们更关注Android4.0支持的新功能,以开发出更炫、更实用的应用。
本书可谓是学习Android4.0的少见的精品,结构清晰、内容新颖且覆盖面广。不仅涵盖了开发Android应用所需的基本知识,如Android平台的基本概念、构建用户界面、消息和广播机制、网络资源的使用、文件系统、构建多任务应用、数据库和数据的搜索,而且还介绍了Android应用开发的高级深入的技术和经验,如怎样才能开发出拥有良好而高级的用户体验和个性UI的应用、地图、人脸识别、传感器、摄像头、蓝牙WIFINFC等硬件的使用,以及多媒体、云客户端开发、应用程序内收费等。书中的代码示例,通用性很强,甚至可以直接应用到项目当中。该书非常适合要进一步提高自己Android开发水平的从业人员和对Android开发有兴趣的读者,也适合作为高校的教材。
在翻译本书的过程中,我们尽量遵照作者的原意。一些新的Android词汇我们甚至保留为英文单词,这样更利于开发人员理解!为了保证翻译技术的准确性,大部分的技术点我们都亲自编码上机调试,确保给广大的读者提供最准确的翻译内容和技术指导。确保翻译技术的准确性之外,我们也在内容的通俗易懂上下了功夫,常把译稿交给第一线的开发人员阅读,不断听取他们的意见,期望能给读者带来一本Android编程方面的精品书籍。
在这期间,我投入了几乎所有的业余时间,感谢我的爱人对我工作的支持和理解,更要感谢我的翻译合作伙伴的鼎力相助。特别要感谢的是清华大学出版社编辑,他们给了我很多的指导。没有大家的帮助本书就不可能得以成功出版。
我们希望广大的读者能够从该书中受益。虽然,我们竭尽所能让译文准确通俗,但由于水平有限,时间有限,书中难免有疏漏的地方,敬请广大读者给予批评和指正。
译者
 

下载地址

免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论