Ⅰ android编程权威指南 第二版 16章挑战练习 优化照片显示和优化缩略图显示
Android编程权威指南挑战练习参考答案(修订版) 2015-04-07上传大小:711KB Android 为《Android编程权威指南》所做的答案,其中包含个人以及论坛上提供
Ⅱ 《Android编程权威指南》这本书翻译的怎么样
原书名:Androidprogramming:thebignerdranchguide原出版社:BigNerdRanchGuides作者:(美)BillPhillipsBrianHardy译者:王明发丛书名:图灵程序设计丛书出版社:人民邮电出版社ISBN:9787115346438上架时间:2014-3-18出版日期:2014年4月开本:16开页码:523版次:1-1所属分类:计算机>软件与程序设计>移动开发>Android编辑推荐Amazon榜首畅销书全面覆盖Android开发知识点全真示例、循循善诱、轻松上手内容简介书籍计算机书籍BigNerdRanch是美国一家专业的移动开发技术培训机构,《Android编程权威指南》主要以训练营的5天教学课程为基础,融合了两位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共37章,详细介绍了GeoQuiz、HelloMoon、DragAndDraw等8个Android应用。这些应用的难易程度不一,最复杂的CriminalIntent应用占用了13章的篇幅。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得最前沿的开发经验。如果你熟悉java语言,或者了解对面向对象编程,那就立刻开始Android编程之旅吧!作译者BillPhillipsBigNerdRanch资深Android讲师、高级软件工程师。他与BrianHardy合作,为BigNerdRanch开发了广受好评的5天Android训练营培训课程。Bill擅长透彻地理解事物的本质,并帮助其他人做到这一点。闲暇时间,Bill喜欢阅读和弹钢琴。BrianHardyBigNerdRanch首席软件工程师、资深讲师。BigNerdRanch的Android、iOS和Ruby培训课程均由Brian设计开发。闲暇时间,Brian喜欢骑自行车和听音乐。目录《Android编程权威指南》第1章Android应用初体验11.1应用基础21.2创建Android项目21.3Eclipse工作区导航51.4用户界面设计61.4.1视图层级结构91.4.2组件属性101.4.3创建字符串资源111.4.4预览界面布局121.5从布局XML到视图对象131.6组件的实际应用151.6.1类包组织导入161.6.2引用组件161.6.3设置监听器171.7使用模拟器运行应用211.8Android编译过程22第2章Android与MVC设计模式262.1创建新类262.2Android与MVC设计模式30↓全部内容译者序2007年,苹果公司发布了革命性的iPhone,自此开启了智能手机的新时代。随后,2008年,谷歌公司和开放手机联盟共同开发并推出了Android智能手机。时至今日,移动智能设备不仅深刻影响了智能手机行业,也改变了整个科技产业以及人们生活的方方面面,在全球掀起巨大的移动浪潮。迎着这股浪潮,国际巨头、创业公司、独立开发者各展身手,奋力搏击,抢登浪潮之巅。苹果一度成了全球市值最高的公司,三星则是卖出了数亿部Android手机。2013年,网络以19亿美元的价格收购了91无线。2014年开春,Facebook更是以190亿美元的天价收购了开发WhatsApp应用仅有50名员工的公司,直接把这股移动浪潮推到了巅峰。豪不夸张地说,所有这一切都离不开移动软件的开发。目前主流的开发平台是苹果的iOS系统和谷歌的Android系统。凭借精美绝伦的UI、流畅顺滑的交互体验,iOS开发在早期抢占了先机。但如今,谷歌在Android系统UI设计及优化方面的前进步伐已赶超苹果在创新方面的进步。越来越多的软件人开始投身Android应用开发阵营。对于业余爱好者来说,Android还是iOS,喜欢谁就选谁。而对于专业开发人员,果粉也好,Android迷也罢,从职业发展及商业利益角度来说,掌握双平台开发是必须的。作为荣获2012Jolt生产力大奖的iOS编程教程的姊妹篇,BigNerdRanch公司再接再厉,推出了这本《Android编程权威指南》。英文版甫一上架立即赢得了Amazon读者的广泛赞誉。本书基于BigNerdRanch公司的Bootcamp教程编写而成。BigNerdRanch创于2001年,是美国一家知名IT培训公司,每年为微软、谷歌、Faceboook等行业巨头培养众多专业人才。而BootCamp在英文中原意为美国海军陆战队新兵训练营,应用于IT培训行业中,意指通过全真IT项目实战,培训出像美国海军陆战队员那样优秀的IT人才。本书适合有一定Java编程经验(至少熟悉Java)并对Android开发感兴趣的读者阅读。本书最大的特点是,从Android应用的基本概念及组成开始介绍直至完成一个复杂实用的谷歌地图应用,作者巧妙地把Android开发所需的庞杂知识、行业实践、编程规范等融入本书,并以一种润物无声的导学方式引领读者轻松完成全书的开发学习。第26章在讲解后台任务和线程时,作者寓教于乐,还精心安排了在鞋店工作的闪电侠案例,既能帮助读者形象地理解复杂抽象概念,又让人印象深刻,难以忘却。类似这样的案例、幽默全书俯拾皆是,还是等读者自己去发掘吧。另外,几乎每章都配有深入学习及难度逐步升级的挑战练习版块。深入学习意在让读者进一步掌握本章关键知识点并指明学习更高级主题的方向;挑战练习能够让读者立即获得练手的机会,通过练习巩固运用所学知识。学完本书,在实际开发中,读者自然而然就会知道该做什么,如何去做以及为什么这样做。最后,感谢图灵各位编辑老师的辛勤工作,尤其感谢李静老师的细心指导,本书及本人都获益良多。更要感谢的是我的clover和千寻,没有他们的宽容、理解与支持,本书译稿不可能完成。虽然我已尽力传达原作本意并保证译稿的较高质量,但有时拼写错误、因版本升级而导致某些内容不再适用,甚至是囿于个人水平而犯错的情况再所难免。如果你发现了问题或有好的建议,请批评指正并不吝电邮提交至[email protected]或反馈至图灵社区。2014年2月28日于上海
Ⅲ 《Android 开发入门与实战 第二版》 完全版pdf+源代码 下载 谢谢
Android 开发入门与实战(第二版)完全版pdf+源代码
2016-10-26 上传大小:54.88MBAndroid开发入门实战第二版源代码
网页链接
Ⅳ 第一行代码和android编程权威指南哪个好
这里我们给Crime实体类添加两个变量,java.util.Date类型的mDate和布尔类型的mSolved
用于表示陋习记录的时间和是否更改陋习。
public class Crime {
private UUID mUid;
private String mTitle = "";
private Date mDate;
private Boolean Solved = false;
/**省略get set方法*/
同时在布局中也添加一个Button和CheckBox
android:id="@+id/crime_date"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textSize="20sp"
android:text="@string/submit"
android:background="@drawable/submit"
/>
android:id="@+id/isSolved"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/isSolved"
/>
这边我门再给Button进行背景设置,在res/drawable下面创建submit.xml的安装文件
有关android:state
android 标签描述
android:state_pressed
是否按下,如一个按钮触摸或者点击
android:state_focused是否取得焦点,比如用户选择了一个文本框
android:state_hovered 光标是否悬停
android:state_selected它与focus state并不完全一样,如一个list view
被选中的时候,它里面的各个子组件可能通过方向键,被选中了。
android:state_checkable组件是否能被check。如:RadioButton是可以被check的
android:state_checked被checked了,如:一个RadioButton可以被check了
android:state_enabled能够接受触摸或者点击事件
android:state_activated被激活
android:state_window_focused应用程序是否在前台,当有通知栏被拉下来或者一个对话框弹出的时候应用程序就不在前台了
如果有多个item,那么程序将自动从上到下进行匹配,最先匹配的将得到应用
效果如下:点击Button按钮后会显示颜色的变化。但是如果将,屏幕旋转,效果将变化为button横跨整个屏幕,我们希望Button和CheckBox是各占整行的50%
为此我们再添加一个landscape(横向)布局
在res目录下右键,选择Android XML File写入名字,要与原来纵向布局的名字一样。选择纵向的
这样以后你会看到在res 目录下多出一个layout-land目录,表示在横向情况下用该布局文件。修改横向布局,在原来checkBox和Button位置替换为一下代码
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
android:id="@+id/crime_date"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="1"
android:textSize="20sp"
android:text="@string/submit"
android:background="@drawable/submit"
/>
android:id="@+id/isSolved"
android:layout_weight="1"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/isSolved"
/>
书上有个图能够很好的表示android:layout_weight属性。android:layout_weight属性与android:layout:width属性相关(LinearLayout纵向条件下与android:layout:height相关)
如果Button和CheckBox的android:layout_width属性都为wrap_content,则空间分配如下,含有额外的空间(extra
space)然后给Button和CheckBox添加android:layout_weight="1"属性,则会将额外空间按1:1的比例分配给Button和CheckBox如果android:layout_weight比例是2:1(Button 2,CheckBox 1)那么额外空间会按2;1进行分配那么,如果想让Button和CheckBox总的空间分配各占一般怎么办呢?
可以在初始将android:layout_width="0dp",即在一开始不设置宽度,通过android:layout_weight进行空间分配。这样我们完全控制了CrimeFragment在Portrait(纵向)和Landscape(横向)情况下的布局情况。纵向图在上面可以找到
Ⅳ Arino权威指南pdf
只有完整的英文版PDF(第二版),《Arino Cookbook》byMichael Margolis. 2nd Ed.
度盘Link: 前面的链接是省略了哈/s/1i6jwoOP
Password: ibqd
请采纳,谢谢。
Ⅵ Android编程权威指南的目录
第1章Android应用初体验11.1 应用基础21.2 创建Android项目21.3 Eclipse工作区导航51.4 用户界面设计61.4.1 视图层级结构91.4.2 组件属性101.4.3 创建字符串资源111.4.4 预览界面布局121.5 从布局XML到视图对象131.6 组件的实际应用151.6.1 类包组织导入161.6.2 引用组件161.6.3 设置监听器171.7 使用模拟器运行应用211.8 Android编译过程22第2章Android与MVC设计模式262.1 创建新类262.2 Android与MVC设计模式302.3 更新视图层312.4 更新控制层332.5 在设备上运行应用372.5.1 连接设备372.5.2 配置设备用于应用开发382.6 添加图标资源382.6.1 向项目中添加资源392.6.2 在XML文件中引用资源402.7 关于挑战练习412.8 挑战练习一:为TextView添加监听器412.9 挑战练习二:添加后退按钮422.10 挑战练习三:从按钮到图标按钮42第3章Activity的生命周期453.1 日志跟踪理解Activity生命周期463.1.1 输出日志信息463.1.2 使用 LogCat483.2 设备旋转与Activity生命周期523.3 设备旋转前保存数据563.4 再探Activity生命周期573.5 深入学习:测试onSaveInstanceState-(Bundle)方法593.6 深入学习:日志记录的级别与方法60第4章Android应用的调试624.1 DDMS应用调试透视图634.2 异常与栈跟踪644.2.1 诊断应用异常654.2.2 记录栈跟踪日志664.2.3 设置断点684.2.4 使用异常断点714.3 文件浏览器724.4 Android特有的调试工具734.4.1 使用Android Lint734.4.2 R类的问题74第5章第二个activity755.1 创建第二个activity765.1.1 创建新布局775.1.2 创建新的activity子类805.1.3 在manifest配置文件中声明activity815.1.4 为QuizActivity添加cheat按钮825.2 启动activity835.3 activity间的数据传递855.3.1 使用intent extra865.3.2 从子activity获取返回结果885.4 activity的使用与管理925.5 挑战练习95第6章Android SDK版本与兼容966.1 Android SDK版本966.2 Android编程与兼容性问题976.2.1 全新的系统版本——Honeycomb976.2.2 SDK最低版本996.2.3 SDK目标版本996.2.4 SDK编译版本996.2.5 安全添加新版本API中的代码1006.3 使用Android开发者文档1036.4 挑战练习:报告编译版本105第7章UI fragment与fragment 管理器1067.1 UI设计的灵活性需求1077.2 fragment的引入1077.3 着手开发CriminalIntent1087.3.1 创建新项目1107.3.2 fragment与支持库1127.3.3 创建Crime类1137.4 托管UI fragment1157.4.1 fragment的生命周期1157.4.2 托管的两种方式1167.4.3 定义容器视图1167.5 创建UI fragment1177.5.1 定义CrimeFragment的布局1187.5.2 创建CrimeFragment类1197.6 添加UI fragment到FragmentManager1227.6.1 fragment事务1237.6.2 FragmentManager与fragment生命周期1257.7 activity使用fragment的理由1277.8 深入学习:Honeycomb、ICS、Jelly Bean以及更高版本系统上的应用开发127第8章使用布局与组件创建用户界面1288.1 升级Crime类1288.2 更新布局1298.3 生成并使用组件1318.4 深入探讨XML布局属性1328.4.1 样式、主题及主题属性1328.4.2 dp、sp以及屏幕像素密度1338.4.3 Android开发设计原则1348.4.4 布局参数1358.4.5 边距与内边距1358.5 使用图形布局工具1368.5.1 添加新组件1388.5.2 属性视图中编辑组件属性1388.5.3 在框架视图中重新组织组件1398.5.4 更新子组件的布局参数1408.5.5android:layout_weight属性的工作原理1418.5.6 图形布局工具使用总结1428.5.7 组件ID与多种布局1428.6 挑战练习:日期格式化143第9章使用ListFragment显示列表1449.1 更新CriminalIntent应用的模型层1459.2 创建ListFragment1479.3 使用抽象activity托管fragment1499.3.1 通用的fragment托管布局1499.3.2 抽象activity类1509.4 ListFragment、ListView及ArrayAdapter1549.4.1 创建ArrayAdapter<T>类实例1579.4.2 响应列表项的点击事件1599.5 定制列表项1609.5.1 创建列表项布局1609.5.2 创建adapter子类162第10章使用fragment argument16510.1 从fragment中启动activity16510.1.1 附加extra信息16610.1.2 获取extra信息16710.1.3 使用Crime数据更新CrimeFragment视图16710.1.4 直接获取extra信息方式的缺点16910.2 fragment argument16910.2.1 附加argument给fragment16910.2.2 获取argument17010.3 重新加载显示列表项17110.4 通过fragment获取返回结果172第11章使用ViewPager17411.1 创建CrimePagerActivity17511.1.1 以代码的方式定义并产生布局17611.1.2 ViewPager与Pager-Adapter17711.1.3 整合配置并使用CrimePagerActivity17811.1.4 FragmentStatePager-Adapter与Fragment-PagerAdapter18011.2 深入学习:ViewPager的工作原理182第12章对话框18412.1 创建DialogFragment18612.1.1 显示DialogFragment18712.1.2 设置对话框的显示内容18812.2 fragment间的数据传递19012.2.1 传递数据给DatePicker-Fragment19112.2.2 返回数据给CrimeFragment19312.3 挑战练习:更多对话框198第13章使用MediaPlayer播放音频19913.1 添加资源20013.2 定义HelloMoonFragment布局文件20213.3 创建HelloMoonFragment20313.4 使用布局fragment20413.5 音频播放20513.6 挑战练习:暂停音频播放20813.7 深入学习:播放视频20813.8 挑战练习:在HelloMoon应用中播放视频208第14章fragment的保留20914.1 保留fragment实例20914.2 设备旋转与保留的fragment21014.3 保留的fragment:一切都完美了吗21214.4 设备旋转处理与onSaveInstance-State(Bundle)方法21214.5 深入学习:fragment引入前的设备旋转问题214第15章应用本地化21515.1 本地化资源21515.2 配置修饰符21615.2.1 可用资源优先级排定21715.2.2 多重配置修饰符21815.2.3 寻找最匹配的资源21915.3 更多资源使用原则及控制22015.3.1 资源命名22015.3.2 资源目录结构22015.4 测试备选资源221第16章操作栏22316.1 选项菜单22316.1.1 在XML文件中定义选项菜单22516.1.2 创建选项菜单22716.1.3 响应菜单项选择23016.2 实现层级式导航23216.2.1 启用应用图标的导航功能23216.2.2 响应向上按钮23316.3 可选菜单项23616.3.1 创建可选菜单XML文件23616.3.2 切换菜单项标题23716.3.3 “还有个问题”23816.4 挑战练习:用于列表的空视图239第17章存储与加载本地文件24117.1 CriminalIntent应用的数据存取24117.1.1 保存crime数据到JSON文件24217.1.2 从文件中读取crime数据24617.2 挑战练习:使用外部存储24817.3 深入学习:Android文件系统与Java I/O248第18章上下文菜单与上下文操作模式25018.1 定义上下文菜单资源25118.2 实施浮动上下文菜单25118.2.1 创建上下文菜单25118.2.2 为上下文菜单登记视图25218.2.3 响应菜单项选择25318.3 实施上下文操作模式25418.3.1 实现列表视图的多选操作25518.3.2 列表视图中的操作模式回调方法25618.3.3 改变已激活视图的显示背景25818.3.4 实现其他视图的上下文操作模式25918.4 兼容性问题:回退还是复制26018.5 挑战练习:在CrimeFragment视图中删除crime记录26118.6 深入学习:ActionBarSherlock26118.7 挑战练习:使用ActionBarSherlock26318.7.1 CriminalIntent应用中ABS的基本整合26418.7.2 ABS的深度整合26418.7.3 ABS的完全整合265第19章相机I:取景器26619.1 创建Fragment布局26719.2 创建CrimeCameraFragment26919.3 创建CrimeCameraActivity26919.4 使用相机API27119.4.1 打开并释放相机27119.4.2 SurfaceView、Surface-Holder与Surface27219.4.3 确定预览界面大小27619.4.4 启动CrimeCamera-Activity27719.5 深入学习:以命令行的方式运行activity281第20章相机 II:拍摄并处理照片28320.1 拍摄照片28320.1.1 实现相机回调方法28520.1.2 设置图片尺寸大小28820.2 返回数据给CrimeFragment28820.2.1 以接收返回值的方式启动CrimeCameraActivity28920.2.2 在CrimeCameraFragment中设置返回值29020.2.3 在CrimeFragment中获取照片文件名29020.3 更新模型层29120.3.1 新增Photo类29220.3.2 为Crime添加photo属性29320.3.3 设置photo属性29320.4 更新CrimeFragment的视图29420.4.1 添加ImageView组件29520.4.2 图像处理29620.5 在DialogFragment中显示大图片30020.6 挑战练习:Crime照片的显示方向30320.7 挑战练习:删除照片30320.8 深入学习:Android代码的废弃处理303第21章隐式intent30521.1 添加按钮组件30621.2 添加嫌疑人信息至模型层30721.3 使用格式化字符串30821.4 使用隐式intent30921.4.1 典型隐式intent的组成31021.4.2 发送陋习报告31121.4.3 获取联系人信息31321.4.4 检查可以响应的activity31621.5 挑战练习:又一个隐式intent317第22章Master-Detail用户界面31822.1 增加布局灵活性31922.1.1 修改SingleFragment-Activity32022.1.2 创建包含两个fragment容器的布局32022.1.3 使用别名资源32222.2 Activity:fragment的托管者32322.3 深入学习:设备屏幕尺寸的确定331第23章深入学习intent和任务33323.1 创建NerdLauncher项目33323.2 解析隐式intent33423.3 在运行时创建显式intent33723.4 任务与后退栈33823.5 使用NerdLauncher应用作为设备主屏幕34123.6 挑战练习:应用图标与任务重排34123.7 进程与任务341第24章样式与include标签的使用34324.1 创建RemoteControl项目34424.1.1 编码实现RemoteControl-Activity34424.1.2 创建RemoteControl-Fragment34524.2 使用样式消除重复代码34824.3 完善布局定义35024.4 深入学习:使用include与merge标签35324.5 挑战练习:样式的继承354第25章XML Drawable与9-Patches35525.1 XML drawable35625.2 state list drawable35825.3 layer list与inset drawable36025.4 使用9-patch图像362第26章HTTP与后台任务36826.1 创建PhotoGallery应用36926.2 网络连接基本37226.3 使用AsyncTask在后台线程上运行代码37326.4 线程与主线程37526.5 获取Flickr XML数据37726.6 从AsyncTask回到主线程38226.7 深入学习:再探AsyncTask38526.8 挑战练习:分页386第27章Looper、Handler与HandlerThread38727.1 设置GridView以显示图片38727.2 批量下载缩略图39027.3 与主线程通信39027.4 创建并启动后台线程39127.5 Message与message Handler39327.5.1 消息的剖析39327.5.2 Handler的剖析39327.5.3 使用handler39527.5.4 传递handler39727.6 深入学习:AsyncTask与Thread40127.7 挑战练习:预加载以及缓存401第28章搜索40228.1 搜索Flickr网站40228.2 搜索对话框40428.2.1 创建搜索界面40428.2.2 可搜索的activity40628.2.3 物理搜索键40828.2.4 搜索的工作原理40928.2.5 启动模式与新的intent8.2.6 使用shared preferences实现轻量级数据存储41228.3 在Android 3.0以后版本的设备上使用SearchView41428.4 挑战练习416第29章后台服务41729.1 创建IntentService41729.2 服务的作用41929.3 查找最新返回结果42129.4 使用AlarmManager延迟运行服务42229.4.1 PendingIntent42429.4.2 使用PendingIntent管理定时器42429.5 控制定时器42529.6 通知信息42829.7 深入学习:服务细节内容42929.7.1 服务的能与不能43029.7.2 服务的生命周期43029.7.3 non-sticky服务43029.7.4 sticky服务43129.7.5 绑定服务431第30章broadcast Intent43330.1 随设备重启而重启的定时器43330.1.1 配置文件中的broadcast receiver43430.1.2 如何使用receiver43530.2 过滤前台通知消息43630.2.1 发送broadcast intent43730.2.2 动态broadcast receiver43730.2.3 使用私有权限44030.2.4 使用ordered broadcast接收结果44230.3 receiver与长时运行任务446第31章网页浏览44731.1 最后一段Flickr数据44731.2 简单方式:使用隐式intent44831.3 较难方式:使用WebView44931.3.1 使用WebChromeClient优化WebView的显示45331.3.2 处理WebView的设备旋转问题45531.4 深入学习:注入JavaScript对象456第32章定制视图与触摸事件45732.1 创建DragAndDraw项目45732.1.1 创建DragAndDraw-Activity45832.1.2 创建DragAndDraw-Fragment45932.2 创建定制视图46032.3 处理触摸事件46232.4 onDraw(...)方法内的图形绘制46532.5 挑战练习:设备旋转问题467第33章跟踪设备的地理位置46833.1 启动RunTracker项目46833.1.1 创建RunActivity46933.1.2 创建RunFragment47033.2 地理位置与LocationManager47233.3 接收定位数据更新broadcast47433.4 使用定位数据刷新UI显示47533.5 快速定位:最近一次地理位置47933.6 在物理和虚拟设备上测试地理位置定位480第34章使用SQLite本地数据库48234.1 在数据库中存储旅程和地理位置信息48234.2 查询数据库中的旅程列表48834.3 使用CursorAdapter显示旅程列表49034.4 创建新旅程49334.5 管理现有旅程49434.6 挑战练习:识别当前跟踪的旅程500第35章使用Loader加载异步数据50135.1 Loader与LoaderManager50135.2 在RunTracker应用中使用Loader50235.3 加载旅程列表50335.4 加载单个旅程50635.5 加载旅程的最近一次地理位置509第36章使用地图51136.1 添加Maps API给RunTracker应用51136.1.1 使用物理设备测试地图51136.1.2 安装使用Google Play services SDK51136.1.3 获取Google Maps API key51236.1.4 更新RunTracker应用的manifest配置文件51236.2 在地图上显示用户的地理位置51336.3 显示旅程路线51636.4 为旅程添加开始和结束地图标注52036.5 挑战练习:实时数据更新521第37章编后语52237.1 终极挑战52237.2 关于我们52337.3 致谢523
Ⅶ 求android开发权威指南第二版源码
这个就是了 上传 不容易 多给个 财富值吧,兄弟!
Ⅷ 求《android应用案例开发大全第二版》PDF和源码
Google Android SDK开发范例大全,源代码已经增加附件。
Ⅸ 关于《Android驱动开发权威指南》这本书怎么样,我的感受是大坑
《Android驱动开发权威指南》根据作者(杨柳)多年的从业经验,从开发实战出发,全面深入地讲解了Android驱动开发。全书以Android驱动本质为源,深入浅出地剖析了Android驱动程序开发要用到的DMA、中断、同步、等待队列与signal等多项技术。还从系统的角度描述了Android驱动与Android其他部分的有机结合,为Android用户提供各类智能输入/输出服务。