第1章 Android系统概述 1
1.1智能手机 1
1.1.1什么是智能手机 1
1.1.2智能手机操作系统 2
1.2什么是Android 4
1.2.1 Android的历史 4
1.2.2 Android的发展 5
1.2.3 Android的优点 6
1.3 Android系统架构 7
1.3.1应用程序层 7
1.3.2应用程序框架层 7
1.3.3系统库 8
1.3.4 Android运行环境 8
1.3.5 Linux内核 9
1.4 Android 7新特性介绍 9
1.4.1分屏显示 9
1.4.2全新的通知设计 9
1.4.3基于配置文件的JIT/AOT编译 10
1.4.4优化的低电耗模式 10
1.4.5 Project Svelte:后台优化 10
1.4.6 Data Saver 11
1.4.7 Quick Settings Tile API 11
1.4.8号码屏蔽和来电过滤 11
1.4.9 OpenGL ES 3.2 API支持 12
1.4.10密钥认证 12
1.5小结 12
1.6习题 12
第2章 搭建Android开发环境 13
2.1系统需求 13
2.2软件安装 13
2.2.1 JDK的安装 13
2.2.2 Android Studio 14
2.2.3创建AVD 17
2.2.4 AVD与真机的区别 19
2.3 Android SDK介绍 20
2.3.1 Android SDK目录结构 20
2.3.2 Android.jar 22
2.3.3 Android API核心包 22
2.3.4 Android API扩展包 23
2.4创建第一个Android应用程序 23
2.4.1创建HelloWold工程 23
2.4.2相关代码 26
2.4.3工程文件结构解析 29
2.5调试程序 31
2.5.1设置断点 31
2.5.2调试 31
2.6小结 32
2.7习题 32
第3章 Android应用程序结构 33
3.1应用程序基本组成 33
3.1.1 Activity 33
3.1.2 Service 34
3.1.3 BroadcastReceiver 34
3.1.4 ContentProvider 34
3.1.5 Intent 34
3.2 Activity 35
3.2.1 Activity的生命周期 35
3.2.2 Activity的创建 37
3.2.3启动Activity 38
3.2.4关闭Activity 38
3.2.5 Activity数据传递 39
3.3资源 40
3.4 Manifest文件 40
3.5 App Widgets 43
3.5.1基础知识 43
3.5.2在Manifest文件中声明App Widget 44
3.5.3增加AppWidgetProviderInfo元数据 44
3.5.4创建App Widget布局 45
3.5.5为App Widget添加边界 45
3.5.6使用AppWidgetProvider类 46
3.5.7接收App Widget的广播 48
3.5.8创建App Widget的配置Activity 48
3.5.9使用配置Activity对App Widget进行更新 48
3.6进程和线程 49
3.6.1进程 49
3.6.2线程 51
3.6.3线程安全方法 54
3.6.4进程间的通信 54
3.7小结 54
3.8习题 55
第4章 Android GUI开发 56
4.1 View和ViewGroup 56
4.2使用XML定义视图 57
4.3布局 60
4.3.1 FrameLayout 60
4.3.2 LinearLayout 61
4.3.3 RelativeLayout 64
4.3.4 TableLayout 66
4.3.5 AbsoluteLayout 68
4.3.6 WebView 70
4.4常用Widget组件 71
4.4.1创建Widget组件实例 71
4.4.2按钮 73
4.4.3文本框 75
4.4.4编辑框 76
4.4.5多项选择按钮 77
4.4.6单项选择按钮组 81
4.4.7下拉列表 84
4.4.8自动完成文本 87
4.4.9日期选择器和时间选择器 89
4.4.10进度条 92
4.4.11滚动视图 95
4.4.12拖动条 96
4.4.13评价条 98
4.4.14图片视图和图片按钮 101
4.4.15 图片切换器和图库 104
4.4.16网格视图 108
4.4.17标签 110
4.5 Menu和ActionBar 113
4.5.1 Options Menu 114
4.5.2 Context Menu 117
4.5.3 SubMenu 118
4.6 Bitmap 120
4.7对话框 123
4.7.1 AlertDialog 123
4.7.2 ProgressDialog 125
4.8 Toast和Notification 127
4.8.1 Toast 127
4.8.2 Notification 128
4.8.3 Notification Group 131
4.9多窗口模式 136
4.10界面事件响应 139
4.10.1事件监听器 139
4.10.2回调事件响应 140
4.10.3界面事件响应实例 140
4.10小结 144
4.11习题 144
第5章 电话和短信应用程序开发 145
5.1 Intent 145
5.1.1显式Intent和隐式Intent 147
5.1.2 IntentFilter 147
5.2拨号程序 148
5.3短信程序 151
5.3.1 SMS简介 151
5.3.2接收短信 151
5.3.3接收短信实例 151
5.3.4发送短信 154
5.3.5短信发送实例 154
5.4照相机程序 157
5.5小结 160
5.6习题 160
第6章 多媒体开发 161
6.1 Service 161
6.1.1 Service的作用 161
6.1.2 Service的生命周期 161
6.1.3启动Service 162
6.2 BroadcastReceiver 163
6.3音频 166
6.3.1 Android N支持的音频格式 166
6.3.2音频播放器 167
6.3.3后台播放音频 170
6.3.4录音程序 173
6.3.5后台录制音频 179
6.4视频 182
6.4.1 Android N支持的视频文件 182
6.4.2视频播放器 182
6.4.3拍照程序 189
6.4.4录制视频 195
6.5小结 202
6.6习题 202
第7章 数据存储 203
7.1 SharedPreferences 203
7.1.1 SharedPreferences简介 204
7.1.2使用SharedPreferences 204
7.2文件存储 207
7.2.1文件存储方式简介 207
7.2.2使用文件存储功能 208
7.3 SQLite 211
7.3.1 SQLite数据库简介 211
7.3.2 SQLite数据库操作 212
7.3.3 SQLite数据库操作实例 215
7.4 ContentProvider 223
7.4.1 ContentProvider简介 223
7.4.2 UriMatcher 225
7.4.3访问系统提供的ContentProvider 225
7.4.4自定义ContentProvider 228
7.4.5访问自定义ContentProvider 232
7.5数据同步到云端 238
7.5.1 App Engine简介 238
7.5.2创建可相互通信的Android和App Engine应用程序 239
7.6数据备份与恢复 245
7.6.1 Android数据备份与恢复简介 245
7.6.2实现备份代理的步骤 245
7.6.3通过BackupAgent实现备份与恢复 247
7.6.4通过BackupAgentHelper实现备份与恢复 250
7.7小结 253
7.8习题 254
第8章 网络编程 255
8.1 HTTP通信 255
8.1.1访问URL指定资源 258
8.1.2使用Get方式获取网络服务 262
8.1.3使用POST方式获取网络服务 265
8.2 Socket通信 268
8.2.1 Socket简介 268
8.2.2 Socket使用方法 269
8.2.3 Socket编程实例 271
8.3 Bluetooth通信 274
8.3.1 Bluetooth简介 274
8.3.2 Android系统的蓝牙通信功能 275
8.3.3蓝牙通信实例 279
8.4 WIFI通信 296
8.4.1 WIFI简介 296
8.4.2 WIFI实例 296
8.4.3 WIFI Direct 301
8.4.4创建WIFI Direct应用程序的步骤 302
8.4.5 WIFI Direct编程实例 307
8.5 NFC 319
8.5.1 NFC简介 319
8.5.2 Android NFC技术 319
8.5.3使用前台发布系统 321
8.6 USB 323
8.6.1 USB简介 323
8.6.2 USB附件 324
8.6.3 USB主机 329
8.7 SIP 333
8.7.1 SIP简介 333
8.7.2相关API 333
8.7.3 Manifest文件配置 334
8.7.4创建SipManager对象 335
8.7.5注册SIP服务器 335
8.7.6拨打音频电话 336
8.7.7接收呼叫 337
8.8小结 339
8.9习题 339
第9章 智能传感器 340
9.1获取位置信息 340
9.1.1 LocationManager介绍 341
9.1.2 LocationProvider介绍 341
9.1.3使用GPS获取当前位置信息 344
9.2使用Google地图服务 347
9.2.1 Google Map API简介 347
9.2.2申请Android Map API Key 348
9.2.3使用Google Map显示当前位置 350
9.3传感器 354
9.3.1 Android传感器简介 354
9.3.2标识传感器 356
9.3.3传感器事件处理 357
9.4运动传感器 358
9.4.1加速度传感器 359
9.4.2重力传感器 359
9.4.3陀螺仪 359
9.4.4线性加速度传感器 361
9.4.5旋转向量传感器 361
9.5位置传感器 361
9.5.1磁场传感器 361
9.5.2方位传感器 362
9.5.3距离传感器 363
9.6环境传感器 364
9.7小结 365
9.8习题 365
第10章 绘图 366
10.1 2D绘图 366
10.1.1获取Canvas对象 366
10.1.2使用自定义View绘图 367
10.1.3使用Bitmap绘图 369
10.1.4使用SurfaceView绘制静态图像 372
10.1.5使用SurfaceView绘制动态图像 375
10.2 Drawable 379
10.2.1从资源文件中创建Drawable对象 379
10.2.2从XML文件中创建Drawable对象 380
10.2.3使用构造方法创建Drawable对象 380
10.3 3D绘图 381
10.3.1 OpenGL ES简介 381
10.3.2绘制3D图像实例 381
10.4硬件加速 385
10.4.1启用硬件加速 385
10.4.2 Android绘图模型 386
10.5 RenderScript 388
10.5.1 RenderScript综述 388
10.5.2使用动态分配的内存 389
10.5.3使用静态分配的内存 391
10.6小结 394
10.7习题 394
第11章 App的本地化 395
11.1国际化与本地化 395
11.2手机区域设置 396
11.3未本地化的应用程序 397
11.4本地化的应用程序 400
11.5小结 406
11.6习题 406
第12章 文本与输入 407
12.1剪贴板框架 407
12.2剪贴板类 408
12.3将剪贴板内的数据强制转换为文本 409
12.4复制到剪贴板 410
12.5从剪贴板中粘贴 412
12.6利用Content Provider复制复杂数据 415
12.7设计有效的复制/粘贴功能 419
12.8综合实例 420
12.9小结 428
第13章 企业应用开发 429
13.1设备管理API概述 429
13.1.1设备管理工作过程 429
13.1.2设备管理策略 430
13.2开发设备管理API应用 431
13.2.1创建程序代码 432
13.2.2 DeviceAdminReceiver的子类 434
13.2.3启用程序 435
13.2.4管理策略 436
13.3文本语音API 439
13.4 TV应用 443
13.4.1创建电视应用项目 443
13.4.2添加TV支持库 445
13.4.3建立TV应用 446
13.4.4运行TV应用 446
13.4.5 TV应用实例 447
13.5可穿戴设备应用 451
13.5.1可穿戴设备应用简介 451
13.5.2 Android Wear项目搭建 452
13.6小结 457
第14章 应用程序发布 458
14.1应用程序发布的步骤 458
14.2为什么要为应用程序签名 459
14.3 Android的签名策略 460
14.4导出未签名应用程序 461
14.5生成签名文件 462
14.5.1使用Android Studio 462
14.5.2使用keytool命令 463
14.6为应用程序签名 465
14.6.1使用Android Studio 465
14.6.2使用jarsigner命令 466
14.7使用zipalign工具优化应用程序 467
14.8发布到Google Play Store 468
14.9小结 469
14.10习题 469