Android应用开发攻略
Ian F. Darwin
陈建设, 刘洋, 薛晓东 等译
出版时间:2013年03月
页数:630
“本书旨在帮助Android开发者社区分享知识,贡献这些知识的开发人员将会使追随者更轻松地进行Android的开发工作。”
——摘自本书前言
本书包含200多个经过测试的Android应用开发攻略,在这些攻略的指引下,你将能开发出质量更高的Android应用。在本书中,你能找到有关用户界面、多点触摸、手势、位置感知、Web服务、通信、照相机、加速计等设备功能的解决方案。
本书中的攻略由来自Android社区的多位资深开发工程师贡献,它适合于熟悉Java和Android基础知识以及Java SE API的开发人员阅读。每个攻略都提供了清晰的解决方案和可以马上用于项目中的示例代码。其中的一些核心攻略如下:
· 运用指导原则设计成功的Android应用程序
· 使用UI控件、高效的布局和图形元素
· 学习如何在应用程序中利用Android的丰富特性
· 存储和读取文件、SD卡和嵌入式数据库中的应用程序数据
· 访问REST风格的Web服务、RSS/Atom源以及来自网站的
信息
· 创建位置感知服务,寻找位置和地标并在Google Maps和OpenStreetMap上加以标注
· 测试单独组件和整个应用程序并排除故障
Ian F. Darwin是资深软件开发专家、咨询顾问和培训讲师,有30余年的计算机行业从业经验。撰写了《Checking C Programs with Lint》和《Java Cookbook》(均由O’Reilly出版)等著作,以及100多篇技术文章和教程,内容涉及UNIX、C、Java、Mac、Python、 Android和Web等多个方面。
  1. 前言
  2. 第1章 入门
  3. 1.1 导言:入门
  4. 1.2 学习Java语言
  5. 1.3 从命令行创建“Hello, World”应用程序
  6. 1.4 在Eclipse中创建“Hello, World”应用程序
  7. 1.5 在Windows上安装用于Android开发的IDE
  8. 1.6 理解Android生命周期
  9. 1.7 通过ADB在模拟器上安装.apk文件
  10. 1.8 通过SlideME将应用程序安装到模拟器上
  11. 1.9 共享来自其他Eclipse项目的Java类
  12. 1.10 引用程序库实现外部功能
  13. 1.11 使用SDK样例避免棘手的情况
  14. 1.12 保持Android SDK更新
  15. 1.13 从模拟器/Android设备获得屏幕截图
  16. 1.14 程序:简单的CountDownTimer示例
  17. 1.15 程序: Android OS下的小费计算器Tipster
  18. 第2章 设计成功的应用程序
  19. 2.1 导言:设计成功的Android应用程序
  20. 2.2 异常处理
  21. 2.3 作为“单例”访问Android应用程序对象
  22. 2.4 在用户旋转设备时保存数据
  23. 2.5 监控Android设备的电量
  24. 2.6 在Android中创建闪屏
  25. 2.7 设计会议/网络研讨/编程马拉松/机构用的应用程序
  26. 2.8 在Android应用中使用Google Analytics
  27. 2.9 简单的手电筒应用程序
  28. 2.10 将Android手机应用程序改编为平板电脑应用程序
  29. 2.11 设置首次运行的首选项
  30. 2.12 为显示格式化时间和日期
  31. 2.13 用KeyListener控制输入
  32. 2.14 备份Android应用程序数据
  33. 2.15 用提示代替工具提示
  34. 第3章 测试
  35. 3.1 导言:测试
  36. 3.2 在Android中进行TDD
  37. 3.3 为应用测试设置Android虚拟设备(AVD)
  38. 3.4 用基于云的测试在多种设备上进行测试
  39. 3.5 测试项目的创建和使用
  40. 3.6 应用程序崩溃排错
  41. 3.7 用Log.d和LogCat进行调试
  42. 3.8 用BugSense自动从用户那里得到缺陷报告
  43. 3.9 使用本地运行时应用程序日志分析现场错误情况
  44. 3.10 为测试重现活动生命周期场景
  45. 3.11 用StrictMode保持应用程序敏捷性
  46. 3.12 运行Monkey程序
  47. 3.13 发送文本消息以及AVD之间的通话
  48. 第4章 进程间/内通信
  49. 4.1 导言:进程间/内通信
  50. 4.2 用意图打开网页、电话号码或者其他内容
  51. 4.3 从视图中发送文本邮件
  52. 4.4 发送带有附件的电子邮件
  53. 4.5 用Intent.putExtra()推送字符串值
  54. 4.6 从子活动中获取数据到主活动中
  55. 4.7 保持服务运行同时显示其他应用
  56. 4.8 发送/接收广播消息
  57. 4.9 在设备重启之后启动服务
  58. 4.10 用线程创建响应式应用程序
  59. 4.11 用AsyncTask进行后台处理
  60. 4.12 用活动线程队列和处理器在线程之间发送消息
  61. 4.13 创建Android Epoch HTML/JavaScript日历
  62. 第5章 内容提供者
  63. 5.1 导言:内容提供者
  64. 5.2 从内容提供者获取数据
  65. 5.3 编写内容提供者
  66. 5.4 编写Android远程服务
  67. 第6章 图形
  68. 6.1 导言:图形
  69. 6.2 使用自定义字体
  70. 6.3 用OpenGL ES绘制旋转的方块
  71. 6.4 添加对OpenGL旋转方块的控制
  72. 6.5 徒手绘制平滑曲线
  73. 6.6 使用意图拍照
  74. 6.7 用android.media.Camera拍照
  75. 6.8 用Google ZXing条码扫描程序扫描条形码或QR代码
  76. 6.9 用AndroidPlot显示图表和图形
  77. 6.10 使用Inkscape创建Android启动器图标
  78. 6.11 从OpenClipArt.org用Paint.NET创建简易启动器图标
  79. 6.12 使用Nine Patch文件
  80. 6.13 用Android RGraph创建HTML5图表
  81. 6.14 添加简单的光栅动画
  82. 6.15 使用捏合缩放
  83. 第7章 GUI
  84. 7.1 导言:GUI
  85. 7.2 理解并遵循用户界面指南
  86. 7.3 通过解耦视图和模型处理配置更改
  87. 7.4 创建一个按钮及其单击事件监听器
  88. 7.5 以5种不同的方式连接事件处理器
  89. 7.6 使用CheckBox和RadioButton控件
  90. 7.7 用图形按钮改进UI设计
  91. 7.8 通过Spinner类提供下拉选择器
  92. 7.9 处理长按/长单击事件
  93. 7.10 用TextView和EditText显示文本字段
  94. 7.11 用属性和TextWatcher接口限制EditText值
  95. 7.12 实现AutoCompleteTextView
  96. 7.13 用SQLite数据库查询为AutoCompleteTextView提供数据
  97. 7.14 将编辑字段转换为密码字段
  98. 7.15 将软键盘上的Enter键改成Next键
  99. 7.16 在活动中处理按键事件
  100. 7.17 让他们看到星标:使用RatingBar
  101. 7.18 震动视图
  102. 7.19 提供触觉反馈
  103. 7.20 在TabView中浏览不同的活动
  104. 7.21 创建自定义标题栏
  105. 7.22 格式化数字
  106. 7.23 格式化正确的复数形式
  107. 7.24 从第一个屏幕启动第二个屏幕
  108. 7.25 创建出现在两个活动之间的“加载中”屏幕
  109. 7.26 使用SlidingDrawer覆盖其他组件
  110. 7.27 自定义SlidingDrawer组件,使动画/过渡的方向变为从上向下
  111. 7.28 为布局添加圆角边框
  112. 7.29 在Android中检测手势
  113. 7.30 在Android 1.6及更新版本中用Android 3.0片段构建UI
  114. 7.31 使用Android 3.0 Photo Gallery
  115. 7.32 创建简单的应用程序窗口部件
  116. 第8章 GUI警告:菜单、对话框、Toast和通知
  117. 8.1 导言:GUI警告
  118. 8.2 创建和显示菜单
  119. 8.3 处理菜单选择项
  120. 8.4 创建子菜单
  121. 8.5 创建弹出/警告对话框
  122. 8.6 使用Timepicker窗口小部件
  123. 8.7 创建类似iPhone的滚轮选择器
  124. 8.8 创建标签式对话框
  125. 8.9 创建ProgressDialog
  126. 8.10 创建带有按钮、图像和文本的自定义对话框
  127. 8.11 创建可重用的“关于”对话框类
  128. 8.12 自定义Toast显示
  129. 8.13 在状态栏中创建通知
  130. 第9章 GUI:ListView
  131. 9.1 导言:ListView
  132. 9.2 用ListView构建基于列表的应用程序
  133. 9.3 为ListView创建“无数据”视图
  134. 9.4 创建具有图像和文本的高级ListView
  135. 9.5 在ListView中使用段标题
  136. 9.6 使用户的注意力保持在ListView上
  137. 9.7 编写自定义列表适配器
  138. 9.8 处理方向变化:从ListView数据值到横向图表
  139. 第10章 多媒体
  140. 10.1 导言:多媒体
  141. 10.2 播放YouTube视频
  142. 10.3 使用Gallery和ImageSwitcher视图
  143. 10.4 用MediaRecorder捕捉视频
  144. 10.5 使用Android的面部检测功能
  145. 10.6 播放来自文件的音频
  146. 10.7 无交互播放音频
  147. 10.8 使用语音识别功能
  148. 10.9 使用设备的朗读功能
  149. 第11章 数据持久性
  150. 11.1 导言:数据持久性
  151. 11.2 获得文件信息
  152. 11.3 读取应用自带而非文件系统中的文件
  153. 11.4 列出目录
  154. 11.5 获得关于SD卡的总空间和可用空间的信息
  155. 11.6 花费最小的精力提供用户首选项设置活动
  156. 11.7 检查默认共享首选项的一致性
  157. 11.8 执行高级文本搜索
  158. 11.9 在Android应用程序中创建SQLite数据库
  159. 11.10 在SQLite数据库中插入数值
  160. 11.11 从现有的SQLite数据库加载数值
  161. 11.12 在SQLite中使用日期
  162. 11.13 用JSONObject解析JSON
  163. 11.14 用DOM API解析XML文档
  164. 11.15 用XmlPullParser解析XML文档
  165. 11.16 添加联系人
  166. 11.17 读取联系人数据
  167. 第12章 电话应用程序
  168. 12.1 导言:电话应用程序
  169. 12.2 在电话铃响的时候进行某些操作
  170. 12.3 处理呼出电话
  171. 12.4 电话自动拨号
  172. 12.5 发送单部分和多部分SMS消息
  173. 12.6 在Android应用程序中接收SMS消息
  174. 12.7 使用模拟器控制面板向模拟器发送SMS消息
  175. 12.8 使用Android的TelephonyManager获得设备信息
  176. 第13章 联网应用程序
  177. 13.1 导论:网络
  178. 13.2 使用REST风格的Web服务
  179. 13.3 用正则表达式从无结构文本中提取信息
  180. 13.4 用ROME解析RSS/Atom Feed
  181. 13.5 用MD5加密明文
  182. 13.6 将文本转换为超链接
  183. 13.7 用WebView访问网页
  184. 13.8 自定义WebView
  185. 第14章 游戏与动画
  186. 14.1 导论:游戏与动画
  187. 14.2 用flixel-android构建Android游戏
  188. 14.3 用AndEngine(Android-Engine)构建Android游戏
  189. 14.4 处理定时键盘输入
  190. 第15章 社交网络
  191. 15.1 导言:社交网络
  192. 15.2 用HTTP集成社交网络
  193. 15.3 用JSON加载用户的Twitter动态
  194. 第16章 位置和地图应用程序
  195. 16.1 导言:位置感知应用程序
  196. 16.2 获得位置信息
  197. 16.3 在应用程序中访问GPS信息
  198. 16.4 在设备上模拟GPS坐标
  199. 16.5 使用地理解析和反向地理解析
  200. 16.6 准备Google Maps开发
  201. 16.7 将设备当前位置添加到Google Maps
  202. 16.8 在Google MapView上绘制位置标志
  203. 16.9 在MapView上绘制多个位置标志
  204. 16.10 为Google MapView创建图层
  205. 16.11 改变Google MapView的模式
  206. 16.12 在不使用Drawble对象的情况下绘制图层图标
  207. 16.13 在Google Maps上实现位置搜索
  208. 16.14 在一个TabView中放置MapView
  209. 16.15 处理MapView的长按动作
  210. 16.16 使用OpenStreetMap
  211. 16.17 在OpenStreetMap地图上创建图层
  212. 16.18 在OpenStreetMap地图上使用比例尺
  213. 16.19 处理OpenStreetMap图层上的触摸事件
  214. 16.20 用OpenStreetMap地图获得位置的更新
  215. 第17章 加速计
  216. 17.1 导言:传感器
  217. 17.2 检查传感器是否存在
  218. 17.3 使用加速计检测设备的摇晃
  219. 17.4 用加速计根据屏幕方向检查设备是向上还是向下
  220. 17.5 用方向传感器发现Android设备的方向
  221. 17.6 读取温度传感器
  222. 第18章 蓝牙
  223. 18.1 导言:蓝牙
  224. 18.2 启用蓝牙并使设备处于可发现状态
  225. 18.3 连接启用蓝牙的设备
  226. 18.4 监听和接收蓝牙连接请求
  227. 18.5 实现蓝牙设备发现
  228. 第19章 系统与设备控制
  229. 19.1 导言:系统与设备控制
  230. 19.2 访问电话网络/连接性信息
  231. 19.3 从清单文件获取信息
  232. 19.4 将来电通知改为静音、振动或者普通
  233. 19.5 复制文本以及从剪贴板获取文本
  234. 19.6 使用基于LED的通知
  235. 19.7 使设备振动
  236. 19.8 从应用程序运行Shell命令
  237. 19.9 确定指定应用程序是否运行
  238. 第20章 其他编程语言和框架
  239. 20.1 导言:其他编程语言
  240. 20.2 运行外部/原生UNIX/Linux命令
  241. 20.3 在NDK上用JNI运行原生C/C++代码
  242. 20.4 从SL4A入手
  243. 20.5 用SL4A创建警告
  244. 20.6 使用SL4A读取Google文档并在ListView控件中显示
  245. 20.7 用QR码共享SL4A脚本
  246. 20.8 从WebView中通过JavaScript使用原生手机功能
  247. 20.9 用PhoneGap/Cordova创建平台无关的应用程序
  248. 第21章 字符串和国际化
  249. 21.1 导言:国际化
  250. 21.2 国际化应用程序文本
  251. 21.3 寻找和翻译字符串
  252. 21.4 处理Strings.xml的微妙之处
  253. 第22章 打包、部署和分发/销售应用程序
  254. 22.1 导言:打包、部署和分发
  255. 22.2 创建签名证书
  256. 22.3 签署应用程序
  257. 22.4 通过Android Play分发应用程序
  258. 22.5 将AdMob集成到应用中
  259. 22.6 用ProGuard进行代码混淆和优化
  260. 22.7 提供Google Play市场中发布的其他应用的链接
书名:Android应用开发攻略
作者:Ian F. Darwin
译者:陈建设, 刘洋, 薛晓东 等译
国内出版社:机械工业出版社
出版时间:2013年03月
页数:630
书号:978-7-111-41411-7
原版书书名:Android Cookbook
原版书出版商:O'Reilly Media
Ian F. Darwin
 
Ian F. Darwin在计算机行业已经工作了30年。他编写了用于Linux和BSD的免费软件file(1),是《Checking C Programs with Lint》(http://shop.oreilly.com/product/9780937175309.do)、《Java Cookbook》(http://shop.oreilly.com/product/9780596007010.do)的作者并撰写了一百多篇有关C、UNIX、Java及Android的文章和教程。除了编程和顾问工作之外,Ian还为世界最大的技术培训公司——Learning Tree International服务,讲授UNIX、Java和Android技术。
 
 
本书封面上的动物是水生的鬣鳞蜥(Amblyrhynchus cristatus)。这种巨蜥只能在加拉帕戈斯群岛找到(各个岛屿都有特殊的亚种)。据传,它们的祖先是从南美大陆用木筏运送到这个岛屿上的陆生鬣鳞蜥。
水生鬣鳞蜥是生活在水中的唯一一种巨蜥。Darwin认为这种爬行动物丑陋而笨拙,将它们归为“令人作呕的笨蜥蜴”和“黑暗中的魔鬼”,但是这些流线型的大型动物(最大的有5~6英尺长)在水中很优雅,扁平的尾巴很适合于游泳。
这些蜥蜴以海草和水藻为食。它们能够深潜(最深达到50英尺),但是通常活动于浅水,可以在水下停留长达一个小时(但是一般在5~10分钟)。和所有爬行动物一样,水生鬣鳞蜥也是冷血动物,必须通过晒太阳调节体温;它们的黑灰色皮肤使其在离开寒冷的海洋时能够最大限度地吸收热量。尽管这些无害的食草类动物通常情况下不攻击人类,但是在寒冷的时候可能变得具有攻击性。
水生鬣鳞蜥有一个特别的鼻腺,能够过滤血液中的海盐。它们依靠打喷嚏排出过多的盐分,这些盐分常常堆积在它们的头部或者面部,形成了独特的白色斑痕,有点像“假发”。它们容易遭到外来物种(包括狗和猫)的捕食,当厄尔尼诺等气候现象导致食物污染或者变化时,它们也会遭到侵害。