《Android应用开发实践 第2版》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:Ian F. Darwin著;胡训强,夏红梅,张文娟译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111589969
  • 页数:672 页
图书介绍:由于Android是开源许可的,因此在全世界众多智能手机上都可见Android的身影。Android也可以为平板电脑以及其他手持和移动设备(甚至上网本)提供Linux操作系统的强大功能。其具有便携性、高级语言和API的可靠性、可移植性以及实用应用程序的巨大生态系统。Android应用程序大多数都是(利用诸如Eclipse和Android Studio之类的工具)用Java语言编写的,依赖于Android API进行编译并被转换成面向Android虚拟机的字节码。本书可以帮助Android开发人群开发出更好的应用程序,目的是让Android开发对于后来者更加简单。

前言 1

第1章 入门 9

1.1理解Android应用程序体系结构 9

1.2理解Android Activity的生命周期 11

1.3了解Android发行版本 13

1.4学习Java语言 15

1.5从命令行创建“Hello World”应用程序 16

1.6用Apache Maven创建“Hello World”应用程序 20

1.7为Android开发选择集成开发环境(IDE) 22

1.8安装Android Studio 26

1.9安装Platform Editions并保持SDK更新 28

1.10用Android Studio创建“Hello World”应用程序 31

1.11将Eclipse ADT项目转换成Android Studio项目 37

1.12从Eclipse向Android Studio转换时保留历史记录 40

1.13用Eclipse和Android Studio共同构建Android应用程序 42

1.14安装带有AndMore的Eclipse(代替ADT) 44

1.15用Eclipse创建“Hello World”应用程序 51

1.16在Eclipse中安装Eclipse Marketplace Client 56

1.17将项目从Eclipse ADT升级到Eclipse AndMore 59

1.18用命令行ADB控制模拟器/设备 62

1.19共享其他Eclipse项目中的Java类 64

1.20引用库实现外围功能 66

1.21通过兼容库在老设备上使用新功能 70

1.22应用SDK示例帮助避免让人头疼的问题 72

1.23从模拟器/Android设备上截图/截取视频 73

1.24程序:一个简单的定时器示例 78

1.25程序:Tipster, Android操作系统上的小费计算器 82

第2章 设计成功的应用程序 98

2.1异常处理 101

2.2运行时请求Android访问权限 104

2.3以“单例”模式访问Android的Application对象 106

2.4在用户旋转设备时保持数据 109

2.5监控Android设备上的电池电量 111

2.6在Android中创建闪屏 112

2.7设计面向会议/野营/黑客马拉松/公共机构的应用程序 116

2.8在Android应用程序中使用Google的分析工具 118

2.9进行首次运行的偏好设置 120

2.10格式化数字 122

2.11用正确的复数形式进行格式化 126

2.12格式化时间和日期进行显示 128

2.13用Java 8的java.time API简化日期/时间计算 131

2.14用键盘监听器控制输入 133

2.15备份Android应用程序数据 136

2.16用提示(Hint)代替工具小贴士 142

第3章 应用程序测试 144

3.1针对测试设置Android虚拟设备 145

3.2在大量设备上进行云测试 151

3.3用Eclipse和JUnit进行测试 152

3.4用Android Studio和JUnit进行测试 154

3.5用Robolectric和JUnit 4进行测试 159

3.6用ATSL、 Espresso和JUnit 4进行测试 161

3.7排查应用程序崩溃原因 165

3.8用Log.d()和LogCat进行调试 168

3.9用Crash Reporting自动获取崩溃报告 169

3.10针对现场错误或情况使用本地运行时应用程序日志 172

3.11为测试重现Activity生命周期场景 176

3.12利用严苛模式让应用程序保持简洁 180

3.13用Android Lint进行静态代码测试 181

3.14用Monkey程序进行动态测试 183

3.15在AVD之间发送文本消息和通话 185

第4章 进程间/进程内通信 187

4.1用Intent打开网页、电话号码本或其他应用程序 187

4.2从视图中用电子邮件发送文本 189

4.3发送带有附件的电子邮件 192

4.4用Intent.putExtra()发送字符串值 194

4.5从子Activity向主Activity发回数据 195

4.6当其他应用程序在屏幕上显示的同时让后台服务保持运行 198

4.7发送/接收广播消息 200

4.8在设备重启后启动服务 201

4.9使用线程创建高可响应的应用程序 202

4.10使用AsyncTask进行后台处理 203

4.11利用Activity的线程队列和Handler在线程间发送消息 210

4.12结合Android和HTM L/JavaScri pt创建一个万年历应用程序 211

第5章 图形 218

5.1使用自定义字体 218

5.2用OpenGL ES绘制旋转正方体 221

5.3为OpenGL旋转正方体添加控制 224

5.4手绘光滑曲线 227

5.5用Intent拍照 232

5.6用android.media.Camera照相 234

5.7用Google的条形码扫描器ZXin9扫描条形码和二维码 238

5.8用AndroidPlot显示图表和图形 240

5.9使用Inkscape借助OpenClipArt.org创建Android启动器图标 244

5.10使用Paint.NET借助OpenClipArt.org创建Android启动器图标 248

5.11使用九宫格文件 254

5.12使用Android RGraph创建HTML5图表 258

5.13添加一个简单的光栅动画 262

5.14用拇指和食指进行缩放 265

第6章 图形用户界面 268

6.1理解和遵循用户界面准则 269

6.2用原质化设计赋予应用程序良好外观 270

6.3选择布局管理器(ViewGroup)排列组件 274

6.4通过解耦视图与模型处理配置变化 275

6.5处理动作栏 277

6.6向动作栏添加共享动作 281

6.7用Fragment API构建现代UI 285

6.8创建按钮及其单击事件监听器 289

6.9用图像按钮增强UI设计 290

6.10使用FloatingActionButton 291

6.11以多种不同方式编写事件监听器 294

6.12使用复选框和单选按钮 298

6.13使用卡片窗口部件 302

6.14通过Spinner类提供下拉选择器 304

6.15处理长按/长点事件 307

6.16用TextView和EditText显示文本域 308

6.17用属性和TextWatcher接口限制EditText的值 309

6.18实现AutoCompleteTextView 311

6.19使用SQLite数据库查询填充AutoCompleteTextView 313

6.20将文本域转换为密码域 315

6.21将软键盘上的回车键改为“下一个” 315

6.22在Activity中处理键盘按键事件 318

6.23让他们看星星:使用RatingBar 319

6.24让视图晃动 323

6.25提供触觉反馈 325

6.26在TabView中的各个Activity之间切换 328

6.27创建在两个Activity之间显示的载入界面 329

6.28为布局添加带有圆角的边框 331

6.29在Android中检测手势 333

6.30创建一个简单的应用程序窗口小部件 340

第7章 GUI中的警告:菜单、对话框、Toast、Snackbar和通知 344

7.1用Toast和Snackbar向用户发出警告 344

7.2自定义Toast的外观 346

7.3创建和显示菜单 348

7.4处理菜单项的选择 349

7.5创建子菜单 350

7.6创建弹出式/警告对话框 352

7.7创建时间选择器窗口部件 353

7.8针对选择创建iPhone风格的滚轮选择器 356

7.9创建选项卡式对话框 358

7.10创建进度对话框 361

7.11创建带有按钮、图像和文本的自定义对话框 362

7.12创建可重用的“关于对话框”类 364

7.13在状态栏中创建通知 368

第8章 其他GUI组件:列表和视图 373

8.1用RecyclerView构建基于列表的应用程序 373

8.2用ListView构建基于列表的应用程序 376

8.3为ListView创建“无数据”视图 381

8.4创建带有图像和文本的高级ListView 382

8.5在ListView中使用分组标题 386

8.6让ListView始终处于用户的关注点上 390

8.7编写自定义列表适配器 391

8.8利用SearchView在ListView中查找数据 394

8.9处理方向变化:从ListView数据值到全局模式中的图表绘制 396

第9章 多媒体 402

9.1播放YouTube视频 402

9.2利用MediaRecorder录制视频 403

9.3使用Android的人脸检测功能 406

9.4播放音频文件 409

9.5在没有交互的情况下播放音频 411

9.6使用语音文本转换 412

9.7利用文本语音转换让设备发声 414

第10章 数据持久化 416

10.1读写内存储器和外存储器中的文件 416

10.2获取文件和文件夹信息 421

10.3读取应用程序自带而非文件系统中的文件 426

10.4获取SD卡的存储空间信息 427

10.5提供偏好设置Activity 428

10.6检查共享偏好设置的一致性 433

10.7在Android应用程序中使用SQLite数据库 435

10.8在SQLite数据库上执行高级文本检索 438

10.9处理SQLite中的日期 443

10.10将非SQL数据对外暴露为SQL游标 445

10.11用CursorLoader显示数据 448

10.12利用JSONObject解析JSON 451

10.13利用DOM API解析XML文档 453

10.14利用ContentProvider存储和获取数据 455

10.15编写一个ContentProvider 456

10.16通过联系人内容提供器添加联系人 460

10.17利用ContentProvider读取联系人数据 462

10.18实现拖放 464

10.19通过FileProvider共享文件 468

10.20利用SyncAdapter把SQLite中的数据备份到云端 473

10.21利用Google Firebase将数据存放到云端 482

第11章 电话应用程序 487

11.1来电处理 487

11.2处理去电呼叫 490

11.3拨打电话 494

11.4发送单段式或多段式短信 495

11.5接收短信 498

11.6利用模拟器控制台向模拟器发送短信 499

11.7利用Android的TelephonyManager获取设备信息 500

第12章 网络应用程序 511

12.1借助URLConnection利用RESTful Web服务 512

12.2借助Volley利用RESTful Web服务 515

12.3利用Google Cloud Messaging的“推送消息”向应用程序发出通知消息 517

12.4利用正则表达式从非结构化文本中提取信息 525

12.5利用ROME解析RSS/Atom订阅内容 526

12.6利用MD5加密纯文本 531

12.7将文本转换为超链接 531

12.8利用WebView访问网页 532

12.9自定义WebView 533

12.10编写进程间通信服务 534

第13章 游戏和动画 539

13.1利用flixel-gdx制作Android游戏 540

13.2利用AndEngine制作Android游戏 544

13.3处理与时间相关的键盘输入 549

第14章 社交网络 551

14.1利用OAUTH2对用户进行身份认证 551

14.2利用HTTP集成社交网络 555

14.3利用HTML或JSON加载用户的Twitter时间线 557

第15章 定位和地图应用程序 559

15.1获取位置信息 559

15.2在应用程序内获取GPS信息 561

15.3在设备上模拟GPS坐标 563

15.4使用地理编码和逆向地理编码 565

15.5为使用Google Maps API V2进行开发做好准备 566

15.6使用Google Maps API V2 571

15.7利用OpenStreetMap显示地图数据 576

15.8利用OpenStreetMap地图创建覆盖图层 578

15.9在OpenStreetMap地图上使用比例尺 581

15.10在OpenStreetMap覆盖图层上处理触摸事件 582

15.11利用OpenStreetMap获取定位更新 584

第16章 加速计 588

16.1检查传感器是否存在 588

16.2利用加速计检测晃动 589

16.3检测设备正面朝上还是朝下 593

16.4读取温度传感器 594

第17章 蓝牙 595

17.1启用蓝牙并让设备可被发现 595

17.2连接启用了蓝牙的设备 597

17.3接受来自蓝牙设备的连接 599

17.4实现发现蓝牙设备的功能 600

第18章 系统和设备控制 602

18.1获取手机的网络/连接信息 602

18.2从应用程序清单文件中获取信息 603

18.3将来电通知改为静音、振动或普通铃声 604

18.4复制文本并从剪切板中获取文本 606

18.5使用基于LED的通知 606

18.6让设备振动 607

18.7确定指定的应用程序是否正在运行 608

第19章 世上并非只有Java:其他编程语言和框架 609

19.1了解跨平台解决方案 610

19.2在应用程序中执行Shell命令 611

19.3利用JNI在NDK上运行原生C/C ++代码 613

19.4 Android脚本编程层S L4A入门 618

19.5在S L4A中创建警告消息 620

19.6利用SL4A获取Google文档并在ListView中显示 624

19.7在二维码中共享SL4A脚本 626

19.8通过JavaScript在WebView中使用原生的手机功能 628

19.9利用Xamarin构建跨平台应用程序 630

19.10利用PhoneGap/Cordova构建跨平台应用程序 634

第20章 世上并非只有英语:字符串和国际化 639

20.1国际化应用程序中的文本 640

20.2查找和翻译字符串 643

20.3处理strings.xml中的细微差别 644

第21章 打包、部署及发布/出售应用程序 650

21.1创建签名证书并用其对应用程序签名 650

21.2通过Google Play应用商店发布应用程序 653

21.3通过其他应用商店发布应用程序 655

21.4利用AdMob让你的应用程序赚钱 656

21.5利用ProGuard进行混淆和优化 662

21.6让应用程序驻留在你自己的服务器上 664

21.7创建“自行更新”的应用程序 666

21.8为Google Play应用商店中其他已发布的应用程序提供链接 668