第1章 Android概览
1.1 Android的演化
1.2 Android的两面性
1.3 运行Android的设备
1.3.1 HTC系列机型
1.3.2 摩托罗拉系列机型
1.3.3 三星系列机型
1.3.4 平板电脑
1.3.5 其他设备
1.4 Android设备间的硬件差异
1.4.1 屏幕
1.4.2 用户输入法
1.4.3 传感器
1.5 Android的特性
1.5.1 多线程应用微件
1.5.2 触摸、手势和多点触摸
1.5.3 硬键盘和软键盘
1.6 Android开发
1.6.1 良好的应用设计
1.6.2 保持向前兼容
1.6.3 确保健壮性
1.7 软件开发工具包(SDK)
1.7.1 安装和升级
1.7.2 软件特性和API级别
1.7.3 用模拟器或Android设备进行调试
1.7.4 使用Android调试桥
1.7.5 签名和发布
1.8 Google Play
1.8.1 最终用户许可协议
1.8.2 提升应用的曝光度
1.8.3 让应用脱颖而出
1.8.4 为应用收费
1.8.5 管理评价和更新
1.8.6 Google Play以外的其他选择
第2章 应用程序基础:Activity和Intent
2.1 Android应用程序概览
技巧1:创建项目和Activity
2.1.1 项目目录结构及自动生成的内容
2.1.2 Android包和manifest文件
技巧2:重命名应用程序的某些部分
技巧3:使用库项目
2.2 Activity的生命周期
技巧4:使用Activity生命周期函数
技巧5:强制采用单任务模式
技巧6:强制规定屏幕方向
技巧7:保存和恢复Activity信息
技巧8:使用Fragment
2.3 多个Activity
技巧9:使用按钮和文本视图
技巧10:通过事件启动另外一个Activity
技巧11:通过使用语音转文本功能启动一个Activity
技巧12:实现选择列表
技巧13:使用隐式Intent创建Activity
技巧14:在Activity间传递基本数据类型
第3章 线程、服务、接收器和警报
3.1 线程
技巧15:启动一个辅助线程
技巧16:创建实现Runnable接口的Activity
技巧17:设置线程的优先级
技巧18:取消线程
技巧19:在两个应用程序间共享线程
3.2 线程间的消息机制:Handler
技巧20:从主线程调度Runnable型的任务
技巧21:使用倒数计时器
技巧22:处理耗时的初始化工作
3.3 警报
技巧23:利用Toast在屏幕上显示一条简单的信息
技巧24:使用AlertDialog对话框
技巧25:在状态栏中显示通知
3.4 服务
技巧26:创建自足式服务
技巧27:添加唤醒锁
技巧28:使用前台服务
技巧29:使用IntentService
3.5 广播接收器
技巧30:当按下拍照按钮时启动一个服务
3.6 应用微件
技巧31:创建应用微件
第4章 高级线程技术
4.1 装载器
技巧32:使用CursorLoader
4.2 AsyncTask
技巧33:使用AsyncTask
4.3 Android进程间通信
技巧34:实现远程过程调用
技巧35:使用Messenger
技巧36:使用ResultReceiver
第5章 用户界面布局
5.1 资源目录和常规属性
技巧37:指定替代资源
5.2 View和ViewGroup
技巧38:用Eclipse编辑器生成布局
技巧39:控制UI元素的宽度和高度
技巧40:设置相对布局和布局ID
技巧41:通过编程声明布局
技巧42:通过独立线程更新布局
5.3 文本操作
技巧43:设置和改变文本属性
技巧44:提供文本输入
技巧45:创建表单
5.4 其他微件:从按钮到拖动条
技巧46:在表格布局中使用图像按钮
技巧47:使用复选框和开关按钮
技巧48:使用单选按钮
技巧49:创建下拉菜单
技巧50:使用进度条
技巧51:使用拖动条
第6章 用户界面事件
6.1 事件处理器和事件监听器
技巧52:截取物理按键事件
技巧53:构建菜单
技巧54:在XML文件中定义菜单
技巧55:创建操作栏
技巧56:使用ActionBarSherlock
技巧57:使用搜索键
技巧58:响应触摸事件
技巧59:监听滑动手势
技巧60:使用多点触控
6.2 高级用户界面库
技巧61:使用手势
技巧62:绘制3D图像
第7章 高级用户界面技术
7.1 Android自定义视图
技巧63:自定义按钮
7.2 Android动画
技巧64:创建动画
技巧65:使用属性动画
7.3 辅助功能
技巧66:使用辅助功能特性
7.4 Fragment
技巧67:同时显示多个Fragment
技巧68:使用对话框Fragment
第8章 多媒体技术
8.1 图像
技巧69:装载和显示一幅可供操作的图像
8.2 音频
技巧70:选择和播放音频文件
技巧71:录制音频文件
技巧72:操作原始音频
技巧73:有效利用声音资源
技巧74:添加媒体并更新路径
8.3 视频
技巧75:使用VideoView
技巧76:使用MediaPlayer播放视频
第9章 硬件接口
9.1 摄像头
技巧77:自定义摄像头
9.2 其他传感器
技巧78:获取设备的旋转姿态
技巧79:使用温度传感器和光传感器
9.3 电话
技巧80:使用电话管理器
技巧81:监听电话状态
技巧82:拨叫一个号码
9.4 蓝牙
技巧83:开启蓝牙
技巧84:发现蓝牙设备
技巧85:与已绑定的蓝牙设备配对
技巧86:打开蓝牙套接字
技巧87:使用设备振动功能
技巧88:访问无线网络
9.5 近场通信(NFC)
技巧89:读取NFC标签
技巧90:写入NFC标签
9.6 通用串行总线(USB)
第10章 网络
10.1 响应网络状态
技巧91:检查网络连接
技巧92:接收连接变化信息
10.2 使用短消息
技巧93:收到短消息后自动回复
10.3 使用Web内容
技巧94:自定义Web浏览器
技巧95:使用HTTP GET请求
技巧96:使用HTTP POST请求
技巧97:使用WebView
技巧98:解析JSON
技巧99:解析XML
10.4 社交网络
技巧100:读取所有者设定档
技巧101:与Twitter集成
技巧102:与Facebook集成
第11章 数据存储方法
11.1 shared preference
技巧103:创建和检索shared preference
技巧104:使用preference框架
技巧105:基于存储的数据改变用户界面
技巧106:添加最终用户许可协议
11.2 SQLite数据库
技巧107:创建一个独立的数据库包
技巧108:使用独立的数据库包
技巧109:创建个人日记
11.3 内容提供器
技巧110:创建自定义的内容提供器
11.4 文件的保存和载入
技巧111:使用AsyncTask进行异步处理
第12章 基于位置的服务
12.1 位置服务基础
技巧112:检索最近保存的位置
技巧113:在位置改变时更新信息
技巧114:列出所有可用的提供器
技巧115:将位置转化为地址(逆向地理编码)
技巧116:将地址转化为位置(地理编码)
12.2 使用Google地图
技巧117:向应用程序中添加Google地图
技巧118:为地图添加标记
技巧119:向地图上添加视图
技巧120:设置临近警告
12.3 使用Little Fluffy位置库
技巧121:使用Little Fluffy位置库添加通知
第13章 应用内计费
Google Play应用内计费
技巧122:安装Google的应用内计费服务
技巧123:为Activity添加应用内计费机制
技巧124:列出应用内可购买的项目清单
第14章 推送消息
14.1 Google云消息设置
技巧125:准备Google云消息
14.2 发送和接收推送信息
技巧126:准备manifest
14.3 接收消息
技巧127:添加BroadcastReceiver类
技巧128:添加IntentService类
技巧129:注册设备
14.4 发送消息
技巧130:发送文本消息
技巧131:通过AsyncTask发送消息
第15章 原生Android开发
Android原生组件
技巧132:使用Java原生接口
技巧133:使用NativeActivity
第16章 测试和调试
16.1 Android测试项目
技巧134:创建测试项目
技巧135:在Android上加入单元测试
技巧136:使用Robotium
16.2 Eclipse内建测试工具
技巧137:指定运行配置
技巧138:使用DDMS
技巧139:借助断点进行调试
16.3 Android SDK调试工具
技巧140:开启和终止Android调试桥
技巧141:使用LogCat
技巧142:使用Hierachy Viewer
技巧143:使用TraceView
技巧144:使用lint
16.4 Android系统调试工具
技巧145:设置GDB调试
附录A 使用OpenIntents Sensor Simulator
附录B 使用兼容包
附录C 使用持续集成系统
附录D Android操作系统发布版本一览
展开