内容简介
《移动操作系统原理与实践——基于Java语言的Android应用开发》系统论述了Android操作系统的原理、架构及应用开发:首先介绍了移动操作系统的概念及理论,然后介绍了Android应用开发技术,最后给出了一个Android课程设计参考的综合案例,并介绍了如何将应用发布到GooglePlay应用商店。
《移动操作系统原理与实践——基于Java语言的Android应用开发》共包括23章及3个附录,分别介绍了如下内容:移动操作系统概论;Android开发环境搭建;Android应用程序;调试Android应用程序;Android界面编程;Android界面布局;Android简单控件;Android高级控件;活动;碎片;意图;数据存储;使用内容提供者共享数据;Android多线程开发;服务;广播接收器;多媒体开发;网络通信技术;百度地图与定位服务;Android2D图形与动画技术;手机功能开发;分层架构设计与重构健康助手应用;内容提供者重构健康助手应用;课程设计参考——Android播放器应用开发;把应用发布到GooglePlay应用商店;练习题参考答案。
为便于读者高效学习,快速掌握《移动操作系统原理与实践——基于Java语言的Android应用开发》内容,作者精心制作了完整的教学课件,提供完整的源代码,赠送一套完整的Android视频教程(超过1300分钟)及一本畅销的Java电子书,并提供在线答疑服务等内容。作者简介
关东升:一个在IT领域摸爬滚打20多年的老程序员、培训师、作者。精通多种IT技术。参与设计和开发北京市公交一卡通大型项目,开发国家农产品追溯系统、金融系统微博等移动客户端项目,并在AppStore发布多款游戏和应用软件。近期为中国移动、中国联通、南方航空、中石油、工商银行、平安银行和天津港务局等企事业单位授课。著有《iOS开发指南》《从零开始学Swift》《Android网络游戏开发实战》《Cocos2d-x实战》系列和《JSP网络程序设计》等40多本计算机书籍。目录
目录
基础篇
第1章移动操作系统概论
1.1操作系统的原理与概念
1.1.1隐藏硬件细节
1.1.2资源管理
1.1.3操作系统的历史
1.2操作系统的分类
1.2.1批处理操作系统
1.2.2分时操作系统
1.2.3实时操作系统
1.2.4个人计算机操作系统
1.2.5网络操作系统
1.2.6分布式操作系统
1.2.7嵌入式操作系统
1.3移动操作系统
1.3.1移动设备的特征
1.3.2主要的移动操作系统
1.3.3移动操作系统的应用和发展
1.4Android移动操作系统概述
1.4.1Android历史介绍
1.4.2Android架构
1.4.3Android平台介绍
本章练习题
第2章Android开发环境搭建
2.1JDK安装与配置
2.2安装AndroidStudio
2.3安装AndroidSDK
2.4创建Android模拟器
本章总结
本章练习题
第3章第一个Android应用程序
3.1使用AndroidStudio工具创建项目
3.2Android工程剖析
3.2.1Android工程目录结构
3.2.2R.java文件
3.2.3MainActivity.java文件
3.2.4activity_main.xml布局文件
3.2.5AndroidManifest.xml文件
3.3运行工程
3.4学会使用Android开发者社区帮助
3.4.1在线帮助文档
3.4.2AndroidSDKAPI文档
3.4.3AndroidSDK开发指南
3.4.4使用AndroidSDK案例
本章总结
本章练习题
第4章调试Android应用程序
4.1使用DDMS帮助调试程序
4.1.1设备列表
4.1.2文件浏览器
4.1.3LogCat
4.2使用AndroidStudio调试
4.3使用ADB帮助调试程序
4.3.1查询模拟器实例和设备
4.3.2进入shell
4.3.3导入导出文件
本章总结
本章练习题
第5章Android界面编程
5.1Android界面组成
5.1.1视图
5.1.2视图组
5.2界面构建
5.2.1使用AndroidStudio界面设计工具
5.2.2实例:标签和按钮
5.3事件处理模型
5.3.1活动作为事件监听器
5.3.2内部类事件监听器
5.3.3匿名内部类事件监听器
5.4屏幕上的事件处理
5.4.1触摸事件
5.4.2实例:屏幕触摸事件
5.4.3键盘事件
5.4.4实例:改变图片的透明度
本章总结
本章练习题
第6章Android界面布局
6.1Android界面布局设计模式
6.1.1表单布局模式
6.1.2列表布局模式
6.1.3网格布局模式
6.2布局管理
6.2.1帧布局
6.2.2实例:使用帧布局
6.2.3线性布局
6.2.4实例:使用线性布局实现登录界面
6.2.5相对布局
6.2.6实例:使用相对布局实现查询功能界面
6.2.7网格布局
6.2.8实例1:使用网格布局实现计算器界面
6.2.9实例2:布局嵌套实现登录界面
6.3屏幕旋转问题
6.3.1解决方案
6.3.2实例:加载不同布局文件
本章总结
本章练习题
第7章Android简单控件
7.1按钮
7.1.1Button
7.1.2ImageButton
7.1.3ToggleButton
7.1.4实例:ButtonSample
7.2标签
7.3文本框
7.3.1文本框相关属性
7.3.2实例1:用户登录
7.3.3实例2:文本框输入控制
7.4单选按钮
7.4.1RadioButton
7.4.2RadioGroup
7.4.3实例:使用单选按钮
7.5复选框
7.5.1CheckBox
7.5.2实例:使用复选框
7.6进度栏
7.6.1进度栏相关属性和方法
7.6.2实例1:水平条状进度栏
7.6.3实例2:圆形进度栏
7.7拖动栏
7.7.1SeekBar
7.7.2实例:使用拖动栏
本章总结
本章练习题
第8章Android高级控件
8.1列表类控件
8.1.1适配器
8.1.2Spinner
8.1.3实例:使用Spinner进行选择
8.1.4ListView
8.1.5实例1:使用ListView实现选择文本
8.1.6实例2:使用ListView实现选择文本+图片
8.2Toast
8.2.1实例1:文本类型Toast
8.2.2实例2:图片类型Toast
8.2.3实例3:文本+图片Toast
8.3对话框
8.3.1实例1:显示文本信息对话框
8.3.2实例2:简单列表项对话框
8.3.3实例3:单选列表对话框
8.3.4实例4:复选列表项对话框
8.3.5实例5:复杂布局对话框
8.4操作栏和菜单
8.4.1操作栏
8.4.2菜单编程
8.4.3实例:文本菜单
8.4.4实例:操作表按钮
本章总结
本章练习题
第9章活动
9.1活动概述
9.1.1创建活动
9.1.2活动的生命周期
9.1.3实例:Back和Home按钮的区别
9.2多活动之间跳转
9.2.1登录案例介绍
9.2.2启动下一个活动
9.2.3参数传递
9.2.4返回上一个活动
9.3活动任务与返回栈
本章总结
本章练习题
第10章碎片
10.1界面重用问题
10.2碎片技术
10.3碎片的生命周期
10.3.1三种状态
10.3.211种方法
10.4使用碎片开发
10.4.1碎片相关类
10.4.2创建碎片
10.4.3静态添加碎片到活动
10.4.4动态添加碎片到活动
10.4.5管理碎片事务
10.4.6碎片与活动之间的通信
10.5案例:比赛项目
10.5.1创建两个碎片
10.5.2创建MainActivity活动
10.5.3单击Master碎片列表项
10.5.4数据访问对象
本章总结
本章练习题
第11章意图
11.1什么是意图
11.1.1意图与目标组件间的通信
11.1.2意图包含内容
11.2意图类型
11.2.1显式意图
11.2.2隐式意图
11.3匹配组件
11.3.1动作
11.3.2数据
11.3.3类别
11.4实例:Android系统内置意图
本章总结
本章练习题
第12章数据存储
12.1Android数据存储概述
12.2健康助手应用
12.2.1需求分析
12.2.2原型设计
12.2.3UI设计
12.2.4数据库设计
12.3本地文件
12.3.1沙箱目录设计
12.3.2访问应用程序files目录
12.3.3实例:访问CSV文件
12.4SQLite数据库
12.4.1SQLite数据类型
12.4.2Android平台下管理SQLite数据库
12.5案例:SQLite实现健康助手数据存储
12.5.1SQLiteOpenHelper帮助类
12.5.2数据插入
12.5.3数据删除
12.5.4数据修改
12.5.5数据查询
12.6使用SharedPreferences
12.6.1实例:写入SharedPreferences
12.6.2实例:读取SharedPreferences
本章总结
本章练习题
第13章使用内容提供者共享数据
13.1内容提供者概述
13.2ContentURI
13.2.1ContentURI概述
13.2.2内置ContentURI
13.3实例:访问联系人信息
13.3.1查询联系人
13.3.2普通权限和运行时权限
13.3.3通过联系人id查询联系人的Email
13.3.4查询联系人的电话
13.4实例:访问通话记录
13.5实例:访问短信记录
本章总结
本章练习题
进阶篇
第14章Android多线程开发
14.1线程概念
14.1.1进程概念
14.1.2线程概念
14.2计时器案例介绍
14.3Java中的线程
14.3.1Thread类实现线程体
14.3.2Runnable接口实现线程体
14.3.3匿名内部类实现线程体
14.4Android中的多线程
14.4.1主线程之外更新UI问题
14.4.2Android异步消息处理机制
14.4.3Handler发送消息方法
14.4.4计时器案例:异步消息机制实现
本章总结
本章练习题
第15章服务
15.1服务概述
15.1.1创建服务
15.1.2服务的分类
15.2启动类型服务
15.2.1启动服务生命周期
15.2.2实例:启动类型服务
15.3绑定类型服务
15.3.1绑定服务生命周期
15.3.2实例:绑定类型服务
15.4IntentService
15.4.1IntentService优势
15.4.2实例:IntentService与Service比较
本章总结
本章练习题
第16章广播接收器
16.1广播概述
16.2广播接收器概述
16.2.1编写广播接收器
16.2.2注册广播接收器
16.2.3实例:发送广播
16.3系统广播
16.3.1系统广播动作
16.3.2实例:Downloader
16.4本地广播
16.4.1本地广播API
16.4.2实例:发送本地广播
16.5通知
16.5.1实例:普通通知
16.5.2其他形式的Notification
本章总结
本章练习题
第17章多媒体开发
17.1多媒体文件介绍
17.1.1音频多媒体文件介绍
17.1.2视频多媒体文件介绍
17.2Android音频/视频播放API
17.2.1核心API——MediaPlayer类
17.2.2播放状态
17.3实例:音频播放
17.3.1资源音频文件播放
17.3.2本地音频文件播放
17.4Android音频/视频录制API
17.5实例:音频录制
17.6视频播放
17.6.1VideoView控件
17.6.2实例:VideoView播放视频
本章总结
本章练习题
第18章网络通信技术
18.1网络通信技术介绍
18.1.1Socket通信
18.1.2HTTP协议
18.1.3HTTPS协议
18.1.4Web服务
18.2案例:MyNotes
18.3发送网络请求
18.3.1使用java.net.URL
18.3.2使用HttpURLConnection发送GET请求
18.3.3使用HttpURLConnection发送POST请求
18.3.4实例:Downloader
18.4数据交换格式
18.4.1XML文档结构
18.4.2解析XML文档
18.4.3实例:DOM解析XML文档
18.4.4JSON文档结构
18.4.5JSON数据编码和解码
18.4.6实例:解码JOSN数据
本章总结
本章练习题
第19章百度地图与定位服务
19.1使用百度地图
19.1.1申请APIKey
19.1.2获得Android签名证书中的SHA1值
19.1.3搭建和配置环境
19.1.4实例:显示地图
19.1.5实例:设置地图状态
19.1.6实例:地图覆盖物
19.2定位服务
19.2.1定位服务授权
19.2.2位置信息提供者
19.2.3管理定位服务
19.2.4实例:MyLocation
19.2.5测试定位服务
19.3定位服务与地图结合实例:WhereAMI
本章总结
本章练习题
第20章Android2D图形与动画技术
20.1Android2D绘图技术
20.1.1画布和画笔
20.1.2实例:绘制点和线
20.1.3实例:绘制矩形
20.1.4实例:绘制弧线
20.1.5实例:绘制位图
20.2位图变换
20.2.1矩阵
20.2.2实例:位图变换
20.3调用Android照相机获取图片
20.3.1调用Android照相机
20.3.2实例:调用Android照相机
20.4Android动画技术
20.4.1渐变动画
20.4.2实例:渐变动画
20.4.3动画插值器
20.4.4使用动画集
20.4.5帧动画
本章总结
本章练习题
第21章手机功能开发
21.1电话应用开发
21.1.1拨打电话功能
21.1.2实例:拨打电话
21.1.3呼入电话状态
21.1.4实例:电话黑名单
21.2短信和彩信应用开发
21.2.1发送短信功能
21.2.2发送彩信功能
本章总结
本章练习题
实战篇
第22章分层架构设计与重构健康助手应用
22.1分层架构设计
22.1.1低耦合企业级系统架构设计
22.1.2Android平台分层架构设计
22.2健康助手应用架构设计
22.3重构健康助手数据持久层
22.3.1DAO设计模式
22.3.2工厂设计模式
22.4表示层开发
22.4.1Health列表界面
22.4.2Health添加界面
22.4.3Health修改界面
本章总结
本章练习题
第23章内容提供者重构健康助手应用
23.1分层架构与内容提供者
23.2自定义内容提供者访问数据库
23.2.1编写内容提供者
23.2.2注册内容提供者
23.3重构健康助手数据持久层
本章总结
本章练习题
附录A课程设计参考——Android播放器应用开发
A.1应用分析与设计
A.1.1应用概述
A.1.2需求分析
A.1.3原型设计
A.1.4界面设计
A.1.5架构设计
A.2任务1:创建工程
A.3任务2:音频列表功能
A.3.1任务2.1:界面布局
A.3.2任务2.2:AudioListActivity
A.3.3任务2.3:AudioCursorAdapter
A.4任务3:音频控制功能
A.4.1任务3.1:界面布局
A.4.2任务3.2:初始化AudioPlayerActivity活动
A.4.3任务3.3:初始化AudioService服务
A.4.4任务3.4:播放控制
A.4.5任务3.5:进度控制
A.5任务4:后台播放回到前台功能
A.6任务5:更新专辑图片功能
附录B把应用发布到Googleplay应用商店
B.1谷歌Android应用商店Googleplay
B.2Android设备测试
B.3还有“最后一公里”
B.3.1添加图标
B.3.2生成数字签名文件
B.3.3发布打包
B.4发布产品
B.4.1上传APK
B.4.2填写商品详细信息
B.4.3定价和发布范围
附录C练习题参考答案
精彩书摘
《移动操作系统原理与实践——基于Java语言的Android应用开发》:
提示
匿名内部类就是在使用接口(或者抽象类)的时候,直接给出这个接口(或者抽象类)实现创建实例。在Java中,接口(或者抽象类)是不能实例化的,实例化的是它们的实现类。匿名内部类的优点是:编译之后代码紧凑,可以在一定程度上减少字节码文件长度,提高虚拟机的加载速度,从而提高运行速度。它的缺点是:代码可读性差。
纵观三种事件处理模型,各有利弊,用户可以根据自己的喜好来选择,在实际的应用开发过程中,事件处理情况会更加复杂,同一个事件源上会有多个不同事件,因此有的时候不是单一的一种处理模型,而是多种模型的结合。
5.4屏幕上的事件处理
在Android系统中,屏幕是通过活动(Activity)管理的,一个活动相当于一个屏幕,那么屏幕上的事件处理就是活动的事件处理,活动是事件源,活动有触摸事件和键盘事件等。
屏幕事件是在Android应用中常用的事件,本节介绍屏幕中的触摸事件和键盘事件。
5.4.1触摸事件
现在,智能手机设计的一个理念是:可触摸且大屏幕。Android系统支持触摸屏开发,触摸屏事件要通过运动事件(MotionEvent)接收信息,如果屏幕中触摸事件的事件源是活动,开发人员需要重写活动方法:
publicbooleanonTouchEvent(MotionEventevent)
onTouchEvent方法返回值是布尔类型,返回true表示已经处理了该事件,false表示还没有处理该事件。参数event是MotionEvent类型,MotionEvent是运动事件,通过MotionEvent的intgetAction()方法可以获得触摸动作,触摸动作有三种,通过MotionEvent三个常量表示:
MotionEvent.ACTION_UP。在屏幕上手指抬起。
MotionEvent.ACTION_DOWN。在屏幕上手指按下。
MotionEvent.ACTION_MOVE。在屏幕上手指移动。
另外,触摸点的坐标可以通过MotionEvent的getX()和getY()方法获得。
5.4.2实例:屏幕触摸事件
图510是屏幕触摸事件实例,当手指在屏幕上按下、抬起和移动时候,手指的动作会显示在屏幕的标签(TextView)上,触摸点的坐标也会显示在屏幕的标签(TextView)。
……前言/序言
前言
2008年,谷歌公司推出了Android操作系统。Android作为一款为移动终端打造的开源移动操作系统平台,引领了突破垄断技术、降低开发成本的潮流。因此,Android移动操作系统对于中国的IT产业发展有着深远的影响。我有幸在2009年开始接触Android,并被其深深吸引。从2010年起,我开始从事Android教学与培训工作,并主持开发了一些Android项目。为满足广大高校教师的要求,应清华大学出版社盛东亮编辑之邀,笔者决定出版一套Android应用开发方面的教材(配套视频课程、教学课件等)。
《移动操作系统原理与实践——基于Java语言的Android应用开发》优点
《移动操作系统原理与实践——基于Java语言的Android应用开发》介绍的Android应用开发基于大家熟悉的Java语言,初学者能够很快入门,特别适合高校学生学习Android应用开发。书中首先介绍了移动操作系统和原理,然后展开介绍了Android应用开发技术,附录中还介绍了一个综合案例,以及如何将应用发布到GooglePlay应用商店。为了更好地消化吸收书中内容,在每章后都有同步练习,并在附录中给出参考答案。另外,我们还为购买《移动操作系统原理与实践——基于Java语言的Android应用开发》的高校教师提供配套教学课件、素材、源代码和赠送视频。
适用读者
《移动操作系统原理与实践——基于Java语言的Android应用开发》虽然主要是为高校编写,以满足高校师生学习Android应用开发,但也适合对Android应用开发技术感兴趣的读者。
《移动操作系统原理与实践——基于Java语言的Android应用开发》服务网址
为了更好地为广大读者提供服务,我们专门为《移动操作系统原理与实践——基于Java语言的Android应用开发》建立了一个服务网址www.zhijieketang.com/group/7,读者可以了解书中内容、下载源代码、下载课件等,并对《移动操作系统原理与实践——基于Java语言的Android应用开发》内容发表评论,提出宝贵意见。
勘误与支持
为了及时地把书中的勘误反馈给广大读者,我们专门在www.zhijieketang.com/group/7中建立了一个勘误专区。如果您发现了问题,可以在网上留言,也可以发送电子邮件到eorient@sina.com,我们会在第一时间回复您。您也可以通过新浪微博(@tony_关东升)或微信(q270258799)联系我们。
致谢
《移动操作系统原理与实践——基于Java语言的Android应用开发》主要由关东升编写。此外,智捷课堂团队的赵大羽、赵志荣、关锦华、赵浩丞、刘佳笑、王馨然、关秀华和闫婷娇也参与了部分内容的写作。感谢赵大羽老师手绘了书中全部草图,并从专业的角度修改书中图片,力求更加真实完美地奉献给广大读者。在此感谢清华大学出版社的盛东亮编辑给我们提供了宝贵的意见。感谢我的家人对我的关心和照顾,使我能抽出这么多时间,专心编写《移动操作系统原理与实践——基于Java语言的Android应用开发》。
关东升
2018年6月