Android应用开发攻略

出版时间:2013-3-31  出版社:机械工业出版社华章公司  作者:Ian F. Darwin  译者:姚军  
Tag标签:无  

前言

前言Ian Darwin对于蜂窝技术和移动计算来说,Android是“开放源码的革命”,至少是革命的一部分。从已经不存在的Openmoko FreeRunner到QT Embedded、Moblin、LiMo、Debian Mobile,以及Maemo和最近刚刚开放源码的Symbian OS、刚刚消失的HP WebOS,人们对于提供开放源码的蜂窝技术已经做出了许多的尝试。我们也不要忘记闭源系统的忠实拥趸:BlackBerry OS、Apple iPhone和Microsoft Windows Mobile(这些系统都有开发人员工具箱,但是它们的OS都不是开放源码的,并且常常有其他的“单击合同”(click-wrap)限制)。但是,正如Mike O扗ell曾经说过的,“空谈不能预测未来”。Android是否能在其他竞争者中间占据重要位置?当我们开始组织本书的材料时,我们认为它已经做到了,实践也证明了:Android绝对占据一席之地!本书旨在帮助Android开发者社区分享知识,贡献这些知识的开发人员们将会使追随者们更轻松地进行Android的开发工作。关于AndroidAndroid是一个移动技术平台,为蜂窝电话、平板电脑和其他手持或移动设备(甚至上网本)提供Linux操作系统的能力和可移植性,以及标准高级语言和API的可靠性和可移植性。Android应用使用Eclipse等工具,以Java语言编写,依靠Android API编译并转换为用于Dalvik VM的字节码。因此,Android的OS家族与Openmoko、QT Embedded、MeeGo、OPhone、LiMo和其他基于Linux的蜂窝电话项目相关联。Android还与BlackBerry和Java ME手机的编程语言,以及Java和更广泛的Java企业应用程序相关联。Android的销售量已经持续攀升;来自NPD的一篇报道称,2010年第一季度,所有Android设备的销售量超过了iPhone的销售量,上升到第二位(仍然与BlackBerry平台有一定差距)。当然,Android的销售量增长部分原因是主要运营商Verizon“买一送一”的促销行动,但是这并不是全部原因本书的由来本书是由数十位Android开发人员编写的,他们大多来自Android社区。在开放的网站上进行开发工作,我建立这个网站,是为了让人们贡献、查看、审校和评论,这一切内容组成了本书的各种“攻略”。后面的“致谢”部分包含了贡献者完整的列表。我深深地感激所有贡献者,是他们帮助我将本书从一个梦想变成你握在手中的现实(如果你阅读的是电子书,那么就是在屏幕上)。感谢所有做出贡献的人!本书读者对象要阅读本书需要了解Java语言的基本知识。如果你不了解Java,可以参见攻略1.2。本书还假定你了解Java标准版API的基础知识(它组成了Android运行时库的基础)以及Android的基本知识。活动(activity)、意图(intent)、服务(service)和内容提供者(content provider)这些术语虽然不一定是你最熟稔的,但至少也应该很熟悉。如果做不到这一点,可以参见攻略1.6。

内容概要

在200多个经过测试的攻略帮助下,你可以投入构建Android应用的工作中。通过本书,你能找到有关用户界面、多点触摸手势、位置感知、Web服务以及电话、相机、加速计等设备功能的解决方案。你还能够得到为Android Market包装应用程序的有用步骤。
本书适合于熟悉Java、Android基础知识和Java SE API的开发人员,其中的攻略由30多位Android社区的开发人员贡献。每个攻略都提供了清晰的解决方案和可以马上用于项目中的样例代码。在大量的主题中,本书能够帮助你:
运用指导原则设计成功的Android应用程序
使用UI控件、高效的布局和图形元素
学习如何在应用程序中利用Android的丰富特性
存储和读取文件、SD卡和嵌入式数据库中的应用程序数据
访问REST风格的Web服务、RSS/Atom 源以及来自网站的信息
创建位置感知服务,寻找位置和地标、并在Google Maps和OpenStreetMap上加以标注
测试单独组件和整个应用程序并排除故障

作者简介

作者:(美国)达尔文(Darwin,I F.) 译者:姚军达尔文(Darwin,I F.),在计算机行业已经工作了30年。他编写了用于Linux和BSD的免费软件file(1),是《Checking C Programs with Lint》、《Java Cookbook》的作者并撰写了一百多篇有关C、UNIX、Java及Android的文章和教程。除了编程和顾问工作之外,Ian还为世界最大的技术培训公司——Learning Tree International服务,讲授UNIX、Java和Android技术。

书籍目录

前言 1第1章 入门 91.1 导言:入门 91.2 学习Java语言 91.3 从命令行创建“Hello, World”应用程序 111.4 在Eclipse中创建“Hello, World”应用程序 141.5 在Windows上安装用于Android开发的IDE 211.6 理解Android生命周期 281.7 通过ADB在模拟器上安装.apk文件 291.8 通过SlideME将应用程序安装到模拟器上 301.9 共享来自其他Eclipse项目的Java类 311.10 引用程序库实现外部功能 341.11 使用SDK样例避免棘手的情况 371.12 保持Android SDK更新 401.13 从模拟器/Android设备获得屏幕截图 471.14 程序:简单的CountDownTimer示例 491.15 程序: Android OS下的小费计算器Tipster 52第2章 设计成功的应用程序 692.1 导言:设计成功的Android应用程序 692.2 异常处理 722.3 作为“单例”访问Android应用程序对象 752.4 在用户旋转设备时保存数据 772.5 监控Android设备的电量 792.6 在Android中创建闪屏 802.7 设计会议/网络研讨/编程马拉松/机构用的应用程序 852.8 在Android应用中使用Google Analytics 862.9 简单的手电筒应用程序 882.10 将Android手机应用程序改编为平板电脑应用程序 912.11 设置首次运行的首选项 932.12 为显示格式化时间和日期 942.13 用KeyListener控制输入 962.14 备份Android应用程序数据 992.15 用提示代替工具提示 106第3章 测试 1083.1 导言:测试 1083.2 在Android中进行TDD 1083.3 为应用测试设置Android虚拟设备(AVD) 1093.4 用基于云的测试在多种设备上进行测试 1183.5 测试项目的创建和使用 1193.6 应用程序崩溃排错 1233.7 用Log.d和LogCat进行调试 1263.8 用BugSense自动从用户那里得到缺陷报告 1273.9 使用本地运行时应用程序日志分析现场错误情况 1293.10 为测试重现活动生命周期场景 1333.11 用StrictMode保持应用程序敏捷性 1383.12 运行Monkey程序 1393.13 发送文本消息以及AVD之间的通话 141第4章 进程间/内通信 1434.1 导言:进程间/内通信 1434.2 用意图打开网页、电话号码或者其他内容 1444.3 从视图中发送文本邮件 1454.4 发送带有附件的电子邮件 1484.5 用Intent.putExtra()推送字符串值 1494.6 从子活动中获取数据到主活动中 1514.7 保持服务运行同时显示其他应用 1544.8 发送/接收广播消息 1564.9 在设备重启之后启动服务 1564.10 用线程创建响应式应用程序 1574.11 用AsyncTask进行后台处理 1594.12 用活动线程队列和处理器在线程之间发送消息 1674.13 创建Android Epoch HTML/JavaScript日历 168第5章 内容提供者 1755.1 导言:内容提供者 1755.2 从内容提供者获取数据 1755.3 编写内容提供者 1775.4 编写Android远程服务 179第6章 图形 1846.1 导言:图形 1846.2 使用自定义字体 1846.3 用OpenGL ES绘制旋转的方块 1876.4 添加对OpenGL旋转方块的控制 1916.5 徒手绘制平滑曲线 1946.6 使用意图拍照 1996.7 用android.media.Camera拍照 2016.8 用Google ZXing条码扫描程序扫描条形码或QR代码 2046.9 用AndroidPlot显示图表和图形 2086.10 使用Inkscape创建Android启动器图标 2106.11 从OpenClipArt.org用Paint.NET创建简易启动器图标 2176.12 使用Nine Patch文件 2236.13 用Android RGraph创建HTML5图表 2276.14 添加简单的光栅动画 2316.15 使用捏合缩放 234第7章 GUI 2377.1 导言:GUI 2377.2 理解并遵循用户界面指南 2387.3 通过解耦视图和模型处理配置更改 2397.4 创建一个按钮及其单击事件监听器 2427.5 以5种不同的方式连接事件处理器 2437.6 使用CheckBox和RadioButton控件 2487.7 用图形按钮改进UI设计 2517.8 通过Spinner类提供下拉选择器 2547.9 处理长按/长单击事件 2567.10 用TextView和EditText显示文本字段 2587.11 用属性和TextWatcher接口限制EditText值 2597.12 实现AutoCompleteTextView 2617.13 用SQLite数据库查询为AutoCompleteTextView提供数据 2637.14 将编辑字段转换为密码字段 2657.15 将软键盘上的Enter键改成Next键 2667.16 在活动中处理按键事件 2697.17 让他们看到星标:使用RatingBar 2707.18 震动视图 2747.19 提供触觉反馈 2757.20 在TabView中浏览不同的活动 2797.21 创建自定义标题栏 2807.22 格式化数字 2837.23 格式化正确的复数形式 2877.24 从第一个屏幕启动第二个屏幕 2907.25 创建出现在两个活动之间的“加载中”屏幕 2997.26 使用SlidingDrawer覆盖其他组件 3007.27  自定义SlidingDrawer组件,使动画/过渡的方向变为从上向下 3037.28 为布局添加圆角边框 3057.29 在Android中检测手势 3067.30  在Android 1.6及更新版本中用Android 3.0片段构建UI 3147.31 使用Android 3.0 Photo Gallery 3187.32 创建简单的应用程序窗口部件 321第8章 GUI警告:菜单、对话框、Toast和通知 3268.1 导言:GUI警告 3268.2 创建和显示菜单 3278.3 处理菜单选择项 3288.4 创建子菜单 3308.5 创建弹出/警告对话框 3338.6 使用Timepicker窗口小部件 3348.7 创建类似iPhone的滚轮选择器 3368.8 创建标签式对话框 3408.9 创建ProgressDialog 3428.10 创建带有按钮、图像和文本的自定义对话框 3448.11 创建可重用的“关于”对话框类 3468.12 自定义Toast显示 3508.13 在状态栏中创建通知 352第9章 GUI:ListView 3589.1 导言:ListView 3589.2 用ListView构建基于列表的应用程序 3589.3 为ListView创建“无数据”视图 3629.4 创建具有图像和文本的高级ListView 3639.5 在ListView中使用段标题 3689.6 使用户的注意力保持在ListView上 3739.7 编写自定义列表适配器 3749.8 处理方向变化:从ListView数据值到横向图表 377第10章 多媒体 38310.1 导言:多媒体 38310.2 播放YouTube视频 38310.3 使用Gallery和ImageSwitcher视图 38410.4 用MediaRecorder捕捉视频 38710.5 使用Android的面部检测功能 39010.6 播放来自文件的音频 39310.7 无交互播放音频 39610.8 使用语音识别功能 39710.9 使用设备的朗读功能 399第11章 数据持久性 40111.1 导言:数据持久性 40111.2 获得文件信息 40111.3 读取应用自带而非文件系统中的文件 40511.4 列出目录 40611.5 获得关于SD卡的总空间和可用空间的信息 40811.6 花费最小的精力提供用户首选项设置活动 40911.7 检查默认共享首选项的一致性 41311.8 执行高级文本搜索 41511.9  在Android应用程序中创建SQLite数据库 42011.10 在SQLite数据库中插入数值 42211.11 从现有的SQLite数据库加载数值 42211.12 在SQLite中使用日期 42311.13 用JSONObject解析JSON 42611.14 用DOM API解析XML文档 42711.15 用XmlPullParser解析XML文档 42911.16 添加联系人 43311.17 读取联系人数据 435第12章 电话应用程序 43912.1 导言:电话应用程序 43912.2 在电话铃响的时候进行某些操作 43912.3 处理呼出电话 44312.4 电话自动拨号 44712.5 发送单部分和多部分SMS消息 44812.6 在Android应用程序中接收SMS消息 45112.7 使用模拟器控制面板向模拟器发送SMS消息 45312.8 使用Android的TelephonyManager获得设备信息 453第13章 联网应用程序 46413.1 导论:网络 46413.2 使用REST风格的Web服务 46513.3 用正则表达式从无结构文本中提取信息 46713.4 用ROME解析RSS/Atom Feed 46913.5 用MD5加密明文 47313.6 将文本转换为超链接 47413.7 用WebView访问网页 47513.8 自定义WebView 476第14章 游戏与动画 47814.1 导论:游戏与动画 47814.2 用flixel-android构建Android游戏 47914.3 用AndEngine(Android-Engine)构建Android游戏 48214.4 处理定时键盘输入 488第15章 社交网络 49015.1 导言:社交网络 49015.2 用HTTP集成社交网络 49015.3 用JSON加载用户的Twitter动态 493第16章 位置和地图应用程序 49616.1 导言:位置感知应用程序 49616.2 获得位置信息 49616.3 在应用程序中访问GPS信息 49816.4 在设备上模拟GPS坐标 50016.5 使用地理解析和反向地理解析 50316.6 准备Google Maps开发 50416.7 将设备当前位置添加到Google Maps 51116.8 在Google MapView上绘制位置标志 51216.9 在MapView上绘制多个位置标志 51616.10 为Google MapView创建图层 52116.11 改变Google MapView的模式 52316.12 在不使用Drawble对象的情况下绘制图层图标 52316.13 在Google Maps上实现位置搜索 52916.14 在一个TabView中放置MapView 53016.15 处理MapView的长按动作 53316.16 使用OpenStreetMap 53716.17 在OpenStreetMap地图上创建图层 54016.18 在OpenStreetMap地图上使用比例尺 54316.19 处理OpenStreetMap图层上的触摸事件 54416.20 用OpenStreetMap地图获得位置的更新 546第17章 加速计 55117.1 导言:传感器 55117.2 检查传感器是否存在 55117.3 使用加速计检测设备的摇晃 55217.4 用加速计根据屏幕方向检查设备是向上还是向下 55617.5 用方向传感器发现Android设备的方向 55717.6 读取温度传感器 559第18章 蓝牙 56018.1 导言:蓝牙 56018.2 启用蓝牙并使设备处于可发现状态 56018.3 连接启用蓝牙的设备 56218.4 监听和接收蓝牙连接请求 56518.5 实现蓝牙设备发现 566第19章 系统与设备控制 56819.1 导言:系统与设备控制 56819.2 访问电话网络/连接性信息 56819.3 从清单文件获取信息 56919.4 将来电通知改为静音、振动或者普通 57019.5 复制文本以及从剪贴板获取文本 57219.6 使用基于LED的通知 57319.7 使设备振动 57319.8 从应用程序运行Shell命令 57519.9 确定指定应用程序是否运行 576第20章 其他编程语言和框架 57820.1 导言:其他编程语言 57820.2 运行外部/原生UNIX/Linux命令 57920.3 在NDK上用JNI运行原生C/C++代码 58020.4 从SL4A入手 58520.5 用SL4A创建警告 58820.6 使用SL4A读取Google文档并在ListView控件中显示 59220.7 用QR码共享SL4A脚本 59420.8 从WebView中通过JavaScript使用原生手机功能 59720.9 用PhoneGap/Cordova创建平台无关的应用程序 599第21章 字符串和国际化 60221.1 导言:国际化 60221.2 国际化应用程序文本 60321.3 寻找和翻译字符串 60721.4 处理Strings.xml的微妙之处 608第22章 打包、部署和分发/销售应用程序 61422.1 导言:打包、部署和分发 61422.2 创建签名证书 61422.3 签署应用程序 61722.4 通过Android Play分发应用程序 61822.5 将AdMob集成到应用中 62022.6 用ProGuard进行代码混淆和优化 62422.7 提供Google Play市场中发布的其他应用的链接 627

章节摘录

十几年前,我有了自己的第一部手机,当时的手机除了电话和短信,几乎谈不上有什么其他功能,通信录、计算器和简单的记事本都已经是令我们惊喜的商务功能了。而当时对手机的编程几乎也没什么概念,恐怕大多数精通计算机编程的朋友也和我一样,认为手机的编程是直接与机器码打交道的技术人员的工作,而手机的应用程序不过是一些简单的逻辑而已。最近十年,移动市场的发展用“沧桑巨变”来形容也毫不过分。硬件和运营商网络的高速发展,使手机超越电视、电脑成为最重要的民用终端之一,面对这个庞大的市场,不仅是IT行业,传统的电子行业甚至零售行业的巨子都渴望分一杯羹。移动终端的编程也终于离开了工厂,进入了传统开发人员的视野。仅仅十年的时间,移动终端性能的发展速度远远超越了电脑,现在我们手中的移动电话已经具备了超越过去台式机的数据处理、通信和存储能力,作为开发人员,谁还能忽视它呢?但是,真正让桌面开发人员开始重视移动终端开发的原因还不仅是广阔的市场,软件支撑平台的成熟也是重要的一环,Android、iOS、Windows Phone等新兴操作系统不仅在开发上带来了巨大的便利,同时通过成功的网络商业运作,为专业和业余的开发人员带来了获利的空间,从而使大量开发人员趋之若鹜。在当前流行的移动平台中,苹果公司的创意无疑受到最多人的称赞,然而,Android以其非凡的开放性和兼容性牢牢地占据了一席之地,最吸引人的是,相对苹果公司的Objective-C,Android平台所使用的Java语言更为人熟知,为其量身定做的大量开发框架更有着巨大的用户群,这些框架对Android平台的支持,意味着桌面Java开发人员可以很方便地转向这一平台。移动平台的开发需要创意、能够带来利益、与传统开发有着延续性,万事俱备,相信喜欢挑战的开发者不会再犹豫了吧?很多人摩拳擦掌,等着烹调“Android”大餐。等一等,开始之前,各位大厨应该需要一本“食谱”吧?我们现在为大家送上的这本Android开发的“食谱”,就是由Android社区的一群资深的“大厨”贡献的,不管你是煎、炒、烹、炸、涮,书中都有着详细的说明,实用的示例。从最简单的“Hello,World”程序开始,本书阐述了从基本概念到界面设计,从设备中的传感器到程序国际化/本地化的各种主题,通过对本书的阅读,你一定能全面了解到Android开发的方方面面,甚至可以直接地将书中的许多程序作为模板,开始你的Android开发之旅。在翻译的过程中,我们为作者的思路和Android的丰富特性而惊叹,同时也有一种冲动,想自己动手开发一个有趣的Android程序。本书的翻译工作主要由姚军完成,徐锋、陈绍继、郑端、吴兰陟、施游、林起浪、刘建林、陈志勇等人也为本书的翻译工作做出了贡献,由于译者水平所限,错漏在所难免,敬请广大读者批评指正,在此也深深感谢机械工业出版社的编辑对翻译工作提出的中肯意见。

媒体关注与评论

O'Reilly Radar博客有口皆碑。——WiredO'Reilly凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业务。——Business 2.0O'Reilly Conference是聚集关键思想领袖的绝对典范。——CRN一本O'Reilly的书就代表一个有用、有前途、需要学习的主题。——Irish TimesTim是位特立独行的商人,他不光放眼于最长远、最广阔的视野并且切实地按照Yogi Berra的建议去做了:‘如果你在路上遇到岔路口,走小路(岔路)。’回顾过去Tim似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路也不错。——Linux Journal

编辑推荐

《Android应用开发攻略》编辑推荐:200多个经过测试的应用开发攻略,为开发高质量Android应用指点迷津。

图书封面

图书标签Tags

评论、评分、阅读与下载


    Android应用开发攻略 PDF格式下载


用户评论 (总计6条)

 
 

  •   书的内容还是可以的。只是机械工业出版社的通病,书的纸张真的不敢恭维。如果能力OK的建议阅读英文原版的。
  •   貌似是给从事安卓开发多年的人看的,作为初学者理解还是很困难的
  •   不知道是不是翻译的问题,内容组织的有点散乱,真是对不起ORelly的名声。。。
  •   还没 有开始看,随便翻了翻,感觉写得比较系统,入门的时候买一本,还是很值得的。
  •   对此书的翻译水准可以定义如下: 金山快译+初中生矫正!
  •   项目管理人员的必读,发货速度也很快。
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7