基本信息
名称: Android开发权威指南(第2版)
作者信息: 作者: 李宁 [ 中文 pdf ]
简单介绍
第一本Android 4.X新版本的图书 所有案例来自于作者的真实项目,技术实用性强,案例含金量高
目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697
| 第1章 初识Android平台 1 1.1 Android简介 1 1.2 Android的制胜法宝 2 1.3 Android的版本发展历程 3 1.3.1 Android1.5(纸杯蛋糕) 3 1.3.2 Android1.6(甜甜圈) 4 1.3.3 Android2.1(松饼) 4 1.3.4 Android2.2(冻酸奶) 5 1.3.5 Android2.3(姜饼) 5 1.3.6 Android3.0(蜂巢) 6 1.3.7 Android4.0(冰激凌三明治) 6 1.3.8 Android4.¼.2(果冻豆) 7 1.4 Android的系统架构 8 1.5 小结 9 第2章 搭建Android开发和测试环境 10 2.1 搭建Android开发环境需要些什么 10 2.2 安装Java开发环境 10 2.2.1 安装JDK 11 2.2.2 安装和配置Eclipse 11 2.3 安装Android开发环境 12 2.3.1 下载和安装AndroidSDK 13 2.3.2 下载和安装AndroidNDK 13 2.3.3 安装和配置Eclipse插件:ADT 14 2.4 配置Android测试环境 15 2.4.1 建立Android虚拟设备(AVD) 15 2.4.2 启动Android模拟器 16 2.4.3 安装真机测试环境 17 2.5 小结 18 第3章 第一个Android应用程序 19 3.1 从第一个Android程序中可以学到什么 19 3.2 建立Android工程 19 3.3 Android工程的结构 21 3.4 在窗口上放两个按钮 22 3.5 编写窗口类 23 3.6 修改字符串资源 24 3.7 运行Android应用程序 25 3.8 调试Android应用程序 27 3.9 签名Android应用程序 27 3.10 小结 29 第4章 Android应用程序架构 30 4.1 Android应用程序中的资源 30 4.1.1 资源存放在哪里 30 4.1.2 资源的基本使用方法 30 4.2 Android的应用程序组件 32 4.2.1 窗口(Activity)组件 32 4.2.2 服务(Service)组件 32 4.2.3 广播接收者(Broadcastreceivers)组件 33 4.2.4 内容提供者(ContentProvider)组件 33 4.3 AndroidManifest.xml文件的结构 33 4.4 小结 34 第5章 窗口(Activity)与视图(View) 35 5.1 声明和使用Activity 35 5.1.1 Activity的基本用法 35 5.1.2 同时适合手机和平板电脑的窗口风格 38 5.2 Activity的生命周期 40 5.3 窗口的常用事件 43 5.3.1 设置窗口标题事件(onTitleChanged) 44 5.3.2 键盘按下和抬起事件(onKeyDown和onKeyUp) 45 5.3.3 任意情况下捕捉键盘事件(dispatchKeyEvent) 48 5.3.4 回退事件(onBackPressed) 49 5.3.5 按键长按事件(onKeyLongPress) 50 5.3.6 屏幕触摸事件(onTouchEvent) 50 5.3.7 窗口获得焦点事件(onWindowFocusChanged) 51 5.4 在不同Activity之间传递数据 52 5.4.1 使用Intent传递数据 53 5.4.2 使用静态变量传递数据 54 5.4.3 使用剪贴板传递数据 55 5.4.4 使用全局对象传递数据 57 5.5 从Activity返回数据 59 5.6 视图(View) 61 5.6.1 视图简介 61 5.6.2 使用XML布局文件定义视图 61 5.6.3 在代码中控制视图 62 5.7 显示系统窗口 64 5.7.1 直接拨号 65 5.7.2 将电话号传入拨号程序 65 5.7.3 调用拨号程序 65 5.7.4 浏览网页 65 5.7.5 查看联系人 66 5.7.6 显示系统设置界面(设置主界面、Wi—Fi设置界面) 66 5.7.7 启动处理音频的程序 66 5.7.8 回到Home窗口(相当于按Home键) 66 5.8 与Activity相关的技巧与特效 67 5.8.1 全屏显示(隐藏标题栏和状态栏) 67 5.8.2 定制窗口标题栏 71 5.8.3 为程序添加Splash 75 5.8.4 改变窗口大小、位置和透明度 76 5.8.5 按两次关闭窗口 79 5.8.6 关闭所有的窗口 79 5.8.7 窗口截屏 80 5.9 小结 82 第6章 Intent与IntentFilter 83 6.1 Android系统的信使:Intent 83 6.2 Intent对象 84 6.2.1 Intent对象可以封装和传递哪些信息 84 6.2.2 组件名(Componentname) 84 6.2.3 动作(Action) 85 6.2.4 种类(Category) 86 6.2.5 数据(Data) 87 6.2.6 附加数据(Extra) 88 6.2.7 标志(Flags) 89 6.3 显式和隐式访问窗口 89 6.4 跨应用程序访问窗口 90 6.5 Android系统的过滤机制大揭秘 96 6.5.1 过滤条件的设置 96 6.5.2 过滤器的筛选规则 97 6.5.3 示例:过滤机制应用演示 101 6.6 Android源代码与过滤器 104 6.6.1 系统内置程序有哪些窗口可以利用 104 6.6.2 显示计算器(Calculator) 105 6.6.3 用浏览器(Browser)显示网页 106 6.6.4 拨打电话(Phone)与授权 108 6.7 获取第三方程序中可调用的窗口 109 6.8 传递附加数据(Extra) 111 6.9 解析数据 113 6.10 小结 114 第7章 窗口(Activity)高级技术 115 7.1 ActivityXML属性详解 115 7.1.1 设置Activity的基本信息 115 7.1.2 屏幕方向切换(android:screenOrientation) 117 7.1.3 阻止Activity销毁和重建(android:configChanges) 119 7.1.4 允许Activity被实例化(android:enabled) 123 7.1.5 在最近应用列表中显示(android:excludeFromRecents) 124 7.1.6 允许其他程序访问当前窗口(android:exported) 124 7.1.7 硬件加速(android:hardwareAccelerated) 125 7.1.8 在多进程中创建窗口实例(android:multiprocess) 125 7.1.9 无法返回的Activity(android:noHistory) 125 7.1.10 指定要返回的窗口(android:parentActivityName) 126 7.1.11 使窗口受到权限的保护(android:permission) 126 7.1.12 改变窗口所在的进程(android:process) 127 7.1.13 不保存窗口的状态(android:stateNotNeeded) 129 7.1.14 窗口的主题(android:theme) 129 7.1.15 扩展窗口UI(android:uiOptions) 129 7.1.16 设置输入法显示模式(android:windowSoftInputMode) 130 7.2 深入探索Activity从创建到销毁的过程 130 7.2.1 任务(Task)与回退栈(BackStack) 131 7.2.2 保存窗口(Activity)状态 133 7.2.3 管理任务和回退栈 134 7.2.4 Activity的4种创建模式 135 7.2.5 用Java代码设置窗口创建模式 141 7.2.6 窗口的乾坤大挪移(affinity) 144 7.2.7 销毁不再使用的窗口 147 7.3 Activity的别名 149 7.4 小结 151 第8章 布局 152 8.1 Android的五大布局 152 8.1.1 框架布局(FrameLayout) 152 8.1.2 线性布局(LinearLayout) 154 8.1.3 相对布局(RelativeLayout) 158 8.1.4 表格布局(TableLayout) 159 8.1.5 绝对布局(AbsoluteLayout) 160 8.2 属性资源与Android命名空间 160 8.3 布局属性 162 8.4 布局高级技术 163 8.4.1 布局别名 163 8.4.2 重用布局 164 8.4.3 优化布局 166 8.4.4 动态装载布局 167 8.4.5 动态设置布局属性 169 8.4.6 从右到左布局(RTLLayout) 169 8.5 小结 170 第9章 菜单 171 9.1 菜单的基本用法 171 9.1.1 创建选项菜单(OptionsMenu) 171 9.1.2 关联Activity 173 9.1.3 响应菜单的单击动作 173 9.1.4 动态添加、修改和删除选项菜单 174 9.1.5 带复选框和选项按钮的子菜单 175 9.1.6 上下文菜单 176 9.1.7 菜单事件 177 9.1.8 从菜单资源中装载菜单 177 9.2 菜单特效 177 9.2.1 自定义菜单 178 9.2.2 模拟UCWeb菜单效果 180 9.3 小结 184 第10章 Android的资源详解(一) 185 10.1 创建资源 185 10.1.1 手工创建资源文件 185 10.1.2 用ADT模板创建本地化图标资源 186 10.1.3 用ADT模板创建XML文件资源 188 10.2 使用资源 188 10.2.1 生成资源类文件(R.java) 188 10.2.2 从XML文件中访问资源 190 10.2.3 使用Java代码访问资源 191 10.2.4 Java反射技术与枚举资源 192 10.3 字符串(String)资源 193 10.3.1 普通字符串 193 10.3.2 字符串数组 194 10.3.3 复数字符串 194 10.3.4 在字符串中使用引号 195 10.3.5 用占位符格式化字符串 195 10.3.6 用HTML标签格式化字符串资源 195 10.4 值(values)资源 196 10.4.1 整数(Integer)资源 196 10.4.2 尺寸(Dimension)资源 197 10.4.3 布尔(Boolean)资源 198 10.4.4 颜色(Color)资源 198 10.4.5 ID资源 199 10.4.6 整数数组(Integer—Array)资源 200 10.4.7 类型数组(Typed—Array)资源 200 10.5 菜单(menu)资源 200 10.6 图像(drawable)资源 203 10.6.1 普通图像资源 203 10.6.2 XML图像资源 204 10.6.3 Nine—Patch图像资源 204 10.6.4 XMLNine—Patch图像资源 205 10.6.5 图层(Layer)资源 205 10.6.6 图像状态(State)资源 206 10.6.7 图像级别(Level)资源 207 10.6.8 淡入淡出(Cross—fade)资源 208 10.6.9 嵌入(Inset)图像资源 210 10.6.10 剪切(Clip)图像资源 210 10.6.11 外形(Shape)资源 211 10.7 小结 212 第11章 Android的资源详解(二) 213 11.1 动画资源 213 11.1.1 属性(Property)动画 213 11.1.2 帧(Frame)动画 215 11.1.3 移动补间(TranslateTween)动画 217 11.1.4 循环向右移动的EditText与上下弹跳的球 218 11.1.5 缩放补间(ScaleTween)动画 220 11.1.6 跳动的心 221 11.1.7 旋转补间(RotateTween)动画 222 11.1.8 旋转的星系 222 11.1.9 透明度补间(AlphaTween)动画 223 11.1.10 投掷炸弹 224 11.1.11 震动渲染器(ShakeInterpolator) 226 11.1.12 自定义渲染器(Interpolator) 227 11.2 风格(Style)资源与主题(Theme) 229 11.3 小结 232 第12章 资源的本地化 233 12.1 建立本地化的资源目录 233 12.2 资源目录的命名规则 237 12.3 建立别名资源 237 12.3.1 图像别名资源 237 12.3.2 布局别名资源 238 12.3.3 字符串别名资源 238 12.3.4 其他简单值别名资源 238 12.4 资源目录的优先级 238 12.5屏幕适配 239 12.5.1 屏幕适配要考虑的因素 239 12.5.2 适配不同屏幕可以采用的规则 241 12.5.3 屏幕尺寸和屏幕密度 241 12.5.4 位置、尺寸和字体应使用屏幕密度单位 244 12.5.5 与屏幕适配有关的标识符 244 12.5.6 影响屏幕适配的重要因素:布局和图像 245 12.5.7 典型的屏幕适配案例 246 12.5.8 在GooglePlay上限制屏幕尺寸和屏幕密度 247 12.5.9 在Android模拟器上测试各种屏幕尺寸和密度 248 12.6 小结 248 第13章 Android的控件详解(一) 249 13.1 显示文本的控件(TextView) 249 13.1.1 显示富文本(URL、不同大小、字体、颜色的文本) 250 13.1.2 用标签在TextView控件上显示图像 252 13.1.3 单击链接弹出Activity 254 13.1.4 为指定文本添加背景 256 13.2 编辑文本的控件(EditText) 258 13.2.1 像QQ一样输入表情图像 259 13.2.2 在EditText中输入特定的字符 260 13.2.3 AutoCompleteTextView(自动完成输入内容的控件) 261 13.3 按钮(Button)和复选框(Checkbox)控件 263 13.3.1 Button(普通按钮控件) 263 13.3.2 图文混排的按钮 265 13.3.3 ImageButton(图像按钮控件) 266 13.3.4 RadioButton(选项按钮控件) 267 13.3.5 ToggleButton(开关状态按钮控件) 267 13.3.6 CheckBox(复选框控件) 268 13.4 图像控件(ImageView) 270 13.4.1 ImageView控件的基本用法 270 13.4.2 显示指定区域的图像 270 13.4.3 缩放和旋转图像 272 13.5 时间与日期控件 273 13.5.1 DatePicker(输入日期的控件) 273 13.5.2 TimePicker(输入时间的控件) 274 13.5.3 DatePicker、TimePicker与TextView同步显示日期和时间 274 13.5.4 AnalogClock和DigitalClock(显示时钟的控件) 275 13.6 小结 275 第14章 Android的控件详解(二) 276 14.1 进度条控件 276 14.1.1 ProgressBar(进度条控件) 276 14.1.2 SeekBar(拖动条控件) 278 14.1.3 设置ProgressBar和SeekBar的颜色及背景图 278 14.1.4 RatingBar(评分控件) 281 14.2 列表控件 282 14.2.1 ListView(普通列表控件) 282 14.2.2 为ListView列表项添加复选框和选项按钮 285 14.2.3 对列表项进行增、删、改操作 286 14.2.4 改变列表项的背景色 290 14.2.5 ListActivity(封装ListView的Activity) 290 14.2.6 ExpandableListView(可扩展的列表控件) 291 14.2.7 Spinner(下拉列表控件) 293 14.3 GridView(网格控件) 296 14.4 TabHost(标签控件) 298 14.5 ViewStub(惰性装载控件) 299 14.6 小结 300 第15章 可视化UI设计 301 15.1 拖放控件 301 15.2 设置视图属性 303 15.3 预览各种屏幕尺寸 303 15.4 语言和地区的本地化测试 304 15.5 其他可视化功能 304 15.6 小结 305 第16章 对话框、Toast与通知栏(Notification) 306 16.1 对话框 306 16.1.1 带2个按钮(确认/取消)的对话框 306 16.1.2 带3个按钮(覆盖/忽略/取消)的对话框 307 16.1.3 简单列表对话框 308 16.1.4 单选列表对话框 309 16.1.5 多选列表对话框 311 16.1.6 进度对话框 312 16.1.7 登录对话框 315 16.1.8 使用Activity托管对话框 316 16.2 Toast 318 16.3 通知(Notification) 319 16.3.1 在状态栏上显示通知信息 319 16.3.2 永久存在的Notification 322 16.3.3 自定义Notification 323 16.4 小结 324 第17章 封装UI和代码利器——Fragment 325 17.1 Fragment简介 325 17.2 什么时候使用Fragment 326 17.3 按照Fragment设计原则编写程序 328 17.4 Fragment的生命周期 332 17.5 创建Fragment 341 17.5.1 通过XML布局文件创建Fragment 341 17.5.2 通过Java代码创建Fragment 342 17.5.3 创建无UI的Fragment 344 17.5.4 在低版本Android中使用Fragment(SupportLibrary) 345 17.6 Activity与Fragment之间的交互 346 17.6.1 Fragment与Activity之间的交互 346 17.6.2 Fragment的回调机制 348 17.7 Fragment状态的持久化 351 17.8 Fragment与回退栈(导航) 355 17.9 FragmentManager与FragmentTransaction 357 17.9.1 管理Fragment事务 357 17.9.2 查找Fragment 357 17.9.3 跟踪回退栈状态 358 17.9.4 恢复历史状态 358 17.9.5 管理Fragment的状态 359 17.9.6 添加、删除和替换Fragment 359 17.9.7 分离(Detach)与附加(Attach)Fragment 360 17.9.8 显示和隐藏Fragment 361 17.10 Fragment扩展 361 17.10.1 ListFragment 361 17.10.2 DialogFragment 363 17.10.3 其他Fragment扩展类 366 17.11 Fragment模板源代码分析 366 17.12 小结 368 第18章 动作栏——ActionBar 369 18.1 ActionBar简介 369 18.2 ActionBar基础 370 18.2.1 隐藏/显示ActionBar 370 18.2.2 添加和响应Action按钮 372 18.3可上下两分的ActionBar 374 18.4 应用程序图标导航 376 18.5 收缩和展开ActionView 377 18.6 ActionProvider 380 18.6.1 分享信息(ShareActionProvider) 380 18.6.2 定制ActionProvider 382 18.7 导航标签 384 18.8 下拉导航列表 388 18.9 小结 390 第19章 Android的拖放技术 391 19.1 Android中的拖放操作 391 19.2 拖放状态与拖放处理 391 19.3 拖动阴影 392 19.4 示例:拖动复制图像 393 19.5 小结 395 第20章 数据存储解决方案 396 20.1 读写key—value对:SharedPreferences 396 20.2 文件流操作 397 20.2.1 openFileOutput和openFileInput方法 398 20.2.2 读写SD卡中的文件 399 20.3 读写JSON格式的数据 400 20.4 SQLite数据库 404 20.4.1 SQLite数据库管理工具 404 20.4.2 SQLiteOpenHelper类与自动升级数据库 405 20.4.3 数据绑定与SimpleCursorAdapter类 406 20.4.4 操作SD卡上的数据库 409 20.4.5 将数据库与应用程序一起发布 410 20.4.6 内存数据库 411 20.5 小结 412 第21章 内容提供者(ContentProvider) 413 21.1 ContentProvider的作用 413 21.2 获得系统数据 413 21.2.1 读取联系人信息 414 21.2.2 查看收件箱的短信 415 21.3 自定义ContentProvider 417 21.3.1 查询城市信息 417 21.3.2 为ContentProvider添加访问权限 422 21.4 如何查找系统提供的ContentProvider 423 21.5 小结 425 第22章 广播接收器(BroadcastReceiver) 426 22.1 什么是广播 426 22.2 接收系统广播 427 22.2.1 短信拦截 427 22.2.2 用代码注册广播接收器 429 22.2.3 广播接收器的优先级 429 22.2.4 来去电拦截 430 22.2.5 截获屏幕休眠与唤醒 432 22.2.6 开机自动运行 433 22.2.7 显示手机电池的当前电量 434 22.3 发送广播 434 22.4 小结 435 第23章 服务(Service) 436 23.1 Service基础 436 23.1.1 Service的生命周期 436 23.1.2 开机启动Service 438 23.2 跨进程访问(AIDL服务) 439 23.2.1 什么是AIDL服务 439 23.2.2 建立AIDL服务的步骤 439 23.2.3 创建和调用AIDL服务 440 23.2.4 传递复杂数据的AIDL服务 442 23.2.5 AIDL与来去电自动挂断 445 23.3 小结 447 第24章 Android的组件开发 448 24.1 Android支持哪些组件开发方式 448 24.2 引用jar文件 449 24.3 跨工程引用 450 24.4 引用NDKLibrary 451 24.5 动态引用APK文件 451 24.6 动静结合的组件 453 24.7 脚本类型组件(JavaScript)与WebView控件 453 24.8 如何确定动态组件是否安装 457 24.9 升级动态组件 459 24.10 小结 461 第25章 Android的蓝牙开发技术 462 25.1 蓝牙简介 462 25.2 打开和关闭蓝牙设备 462 25.3 搜索蓝牙设备 463 25.4 蓝牙数据传输 465 25.5 蓝牙通信一定需要UUID吗 467 25.6 小结 467 第26章 近距离天线通信——NFC技术 468 26.1 NFC简介 468 26.2 NFC、蓝牙和红外之间的差异 469 26.3 NFC技术的未来前景 470 26.4 Android中的NFC技术 471 26.4.1 NDEF与非NDEF数据 471 26.4.2 NFC的三重过滤机制 471 26.4.3 开启Android的NFC功能 472 26.4.4 编写NFC程序的基本步骤 473 26.5 测试NFC程序需要的设备 474 26.6 让Android手机自动运行程序 475 26.6.1 向NFC标签写入数据的基本步骤 475 26.6.2 向NFC标签写入启动Android应用程序的消息 476 26.7 让Android手机自动打开网页 483 26.8 读写NFC标签中的文本 485 26.8.1 实现读写文本数据应用的基本思路 485 26.8.2 如何将NFC标签变成NDEF文本格式 485 26.8.3 NDEF文本格式解析 486 26.8.4 实现读写文本数据的Android应用程序 490 26.9 读写NFC标签中的Uri 496 26.9.1 NDEFUri格式解析 496 26.9.2 实现读写Uri的Android应用程序 499 26.10 利用NFC标签支持的数据格式进行过滤 502 26.11 处理任意NFC标签 504 26.12 读写非NDEF格式的数据 505 26.13 AndroidBeam技术与数据交互 507 26.13.1 传递NDEF消息 507 26.13.2 传输文件 511 26.14 小结 513 第27章 Android的网络开发技术 514 27.1 提交HTTPGET和HTTPPOST请求 514 27.2 HttpURLConnection类 516 27.3 上传文件 517 27.4 下载管理(DownloadManager) 519 27.5 Wi—FiDirect 524 27.5.1 Wi—FiDirectAPI的核心部分 524 27.5.2 创建监听Wi—FiDirect动作的广播接收器 524 27.5.3 注册广播接收器 525 27.5.4 发现Wi—FiDirect设备 526 27.5.5 连接Wi—FiDirect设备 526 27.5.6 数据传输 527 27.6 Internet电话(SIP) 528 27.6.1 使用SIP的要求和限制 528 27.6.2 配置Android版SIP电话 528 27.6.3 创建SipManager 529 27.6.4 注册SIP服务器 529 27.6.5 开始打电话 530 27.6.6 接听电话 530 27.7 小结 531 第28章 并发与定时器 532 28.1 Handler 532 28.1.1 更新UI 532 28.1.2 延迟执行 535 28.2 定时器 537 28.2.1 单秒循环的定时器:Chronometer 537 28.2.2 任意时间间隔的定时器:Timer 538 28.2.3 全局定时器:AlarmManager 539 28.3 AsyncTask 541 28.4 小结 543 第29章 异步装载(Loader) 544 29.1 Loader简介 544 29.2 Loader的核心类/接口 544 29.3 如何使用Loader 545 29.3.1 创建/重用Loader 545 29.3.2 遗弃旧的数据 546 29.3.3 LoaderManager与方法回调 546 29.3.4 创建Loader对象(onCreateLoader) 547 29.3.5 完成数据装载(onLoadFinished) 547 29.3.6 Loader被重置(onLoaderReset) 548 29.4 异步装载联系人(CursorLoader的应用) 548 29.5 小结 552 第30章 Android推送技术 553 30.1 IOS的推送方案 553 30.2 WindowsPhone的推送方案 554 30.3 Android的推送方案 554 30.4 第三方推送服务:极光推送 556 30.5 自己搭建推送服务器:AndroidPN 557 30.6 小结 558 第31章 Android的多媒体开发技术 559 31.1 音频 559 31.1.1 音频播放 559 31.1.2 录制音频 561 31.2 视频 563 31.2.1 播放视频 563 31.2.2 录制视频 564 31.3 相机 565 31.3.1 调用系统的拍照功能 565 31.3.2 自定义拍照功能 566 31.4 铃声 570 31.5 小结 572 第32章 Android的2D绘图 573 32.1 绘制基本的图形 573 32.1.1 绘制像素点 573 32.1.2 绘制直线 574 32.1.3 绘制圆形 574 32.1.4 绘制圆弧 574 32.1.5 绘制文本 575 32.1.6 示例:绘制基本的图形和文本 575 32.2 绘制位图 578 32.2.1 绘制Bitmap对象 578 32.2.2 使用Drawable.draw方法绘制位图 579 32.2.3 示例:用两种方式绘制位图 579 32.3 设置图像的透明度 580 32.4 旋转图像 581 32.5 小结 583 第33章 3D绘图之OpenGLES 584 33.1 OpenGLES简介 584 33.2 在3D空间中绘图 585 33.2.1 要绘制3D图形了,第一步要做什么 585 33.2.2 定义顶点 587 33.2.3 绘制三角形 588 33.2.4 三角形合并法绘制矩形 590 33.2.5 顶点法绘制矩形 592 33.2.6 顶点的选取顺序 592 33.2.7 索引法绘制矩形 593 33.2.8 基于OpenGLES的动画原理 594 33.2.9 旋转的矩形 594 33.3 视图 595 33.3.1 有趣的比喻:照相机拍照 596 33.3.2 模型变换:立方体旋转 597 33.3.3 用gluLookAt方法变换视图 599 33.4 颜色 600 33.5 小结 602 第34章 Android的桌面上的“尤物” 603 34.1 窗口小部件(AppWidget) 603 34.1.1 在Android桌面上添加AppWidget 603 34.1.2 开发AppWidget的步骤 603 34.1.3 数字时钟 605 34.1.4 AppWidgetProvider类 607 34.1.5 向AppWidget添加配置窗口 608 34.1.6 可以选择风格的数字时钟 608 34.2 动态壁纸(随机变换的圆圈) 612 34.3 小结 618 第35章 Android中的短信(SMS)与彩信(MMS)开发技术 619 35.1 通过系统程序发短信 619 35.2 直接发送短信 619 35.3 保存短信发送记录 620 35.4 监听短信和彩信 621 35.5 显示视频缩略图 622 35.6 彩信内容与SMIL协议 624 35.7 小结 631 第36章 Android的传感器开发技术 632 36.1 如何使用传感器 632 36.2 加速度传感器(Accelerometer) 635 36.3 重力传感器(Gravity) 635 36.4 光线传感器(Light) 636 36.5 陀螺仪传感器(Gyroscope) 636 36.5 方向传感器(Orientation) 637 36.6 其他传感器 638 36.7 小结 638 第37章 Android的全球定位系统(GPS) 639 37.1 GPS的核心API 639 37.2 获取位置提供者(LocationProvider) 641 37.2.1 获取所有可用的LocationProvider 641 37.2.2 根据名称获取LocationProvider 642 37.2.3 根据条件(Criteria)获取LocationProvider 642 37.3 实时获取GPS定位数据 643 37.4 测量地球上任意两点之间的距离 645 37.5 邻近警告 646 37.6 小结 647 第38章 谷歌地图(GoogleMap)开发应用 648 38.1 GoogleMap的跨平台解决方案:MapsJavaScriptAPIv3 648 38.2 GoogleMap的显示与定位 648 38.3 在GoogleMap上插入图像标志 651 38.4 插入多个图像标志 653 38.5 带阴影的位置坐标信息 653 38.6 地图与Java交互 655 38.7 小结 657 第39章 Android中的人机交互设计 658 39.1 手势(Gesture) 658 39.1.1 创建手势文件 658 39.1.2 通过手势输入字符串 658 39.1.3 通过手势调用程序 660 39.1.4 编写自己的手势创建器 661 39.2 多点触摸与放大/缩小操作 662 39.3 语音识别 664 39.4 让手机说话(TTS) 665 39.5 小结 666 第40章 Android中的输入法开发 667 40.1 Android输入法简介 667 40.2 控制输入法 668 40.3 输入法实战 669 40.3.1 实现输入法的步骤 669 40.3.2 编写输入法程序 669 40.3.3 输入法服务的生命周期 672 40.3.4 预输入文本 672 40.3.5 输入法设置 673 40.4 小结 673 第41章 AndroidNDK开发 674 41.1 AndroidNDK简介 674 41.2 安装、配置和测试NDK开发环境 674 41.2.1 系统和软件要求 675 41.2.2 下载和安装AndroidNDK 675 41.2.3 下载和安装Cygwin 675 41.2.4 配置AndroidNDK的开发环境 677 41.3 利用NDKSamples学习NDK开发 678 41.3.1 编译NDKSamples 678 41.3.2 NDK程序的结构与命名规则 678 41.4 AndroidNDK配置文件详解 679 41.4.1 AndroidNDK定义的变量 680 41.4.2 AndroidNDK定义的函数 680 41.4.3 描述模块的变量 681 41.4.4 配置Application.mk文件 682 41.5 第一个NDK示例:字母的大小写转换 682 41.5.1 编写NDK程序 682 41.5.2 编写调用NDK函数的Java程序 684 41.5.3 在Eclipse中开发和编译NDK程序 684 41.6 NDK程序读取Java字段值 686 41.7 小结 687 第42章 Android的测试驱动开发(TDD) 688 42.1 JUnit测试框架 688 42.2 测试Activity 688 42.3 测试ContentProvider 691 42.4 测试Service 692 42.5 测试普通类 692 42.6 小结 693 第43章 Android应用的性能优化 694 43.1 性能优化的基础知识 694 43.2 编写Java程序的最优化原则 695 43.2.1 用静态工厂方法代替构造方法 695 43.2.2 避免创建重复的对象 695 43.2.3 防止内存泄漏 697 43.2.4 返回零长度的集合而不是null 697 43.2.5 通过接口引用对象 698 43.3 避免ANR 698 43.4 执行时间测试 699 43.5 内存消耗测试 700 43.6 测试性能的工具:traceview 701 43.7 小结 702 第44章 游戏项目实战:笑脸连连看 703 44.1 游戏玩法 703 44.2 准备图像素材 703 44.3 实现主界面 704 44.4 随机生成连连看图像 705 44.5 选中两个相同图像后消失 705 44.6 用定时器限制游戏时间 706 44.7 小结 707 第45章 开源项目实战:NFC侠(NFCMan) 708 45.1 什么是NFCMan 708 45.2 用Android模拟器和非NFC设备测试NFC应用 709 45.3 NFCMan的实现原理 711 45.4 实现服务端程序(NFCMan) 711 45.4.1 可视化SWT开发环境 712 45.4.2 创建NFC标签 712 45.4.3 描述虚拟NFC标签的NFCTag类 714 45.4.4 保证虚拟NFC标签的全局唯一 715 45.4.5 显示与保存虚拟NFC标签 716 45.4.6 装载已经存在的虚拟NFC标签 719 45.4.7 开启服务 720 45.4.8 处理客户端请求 721 45.4.9 保证虚拟Android设备全局唯一 723 45.4.10 描述虚拟Android设备 724 45.4.11 添加虚拟Android设备 725 45.4.12 异常处理机制 727 45.5 客户端与服务端之间的数据管道(NFCManService) 728 45.5.1 与NFCMan交互(Socket方式) 728 45.5.2 与ANFCMan交互(广播方式) 732 45.6 客户端Library(ANFCMan) 733 45.6.1 ANFCMan的数据结构和异常类 733 45.6.2 ANFCMan的入口类 734 45.6.3 模拟检测到NFC标签的广播接收器 734 45.6.4 同时处理物理NFC标签和虚拟NFC标签的窗口 735 45.7 测试ANFCMan(TestANFCMan) 738 45.8 小结 739
|
亚马逊链接