Kotlin移动应用开发技术 教学大纲_第1页
Kotlin移动应用开发技术 教学大纲_第2页
Kotlin移动应用开发技术 教学大纲_第3页
Kotlin移动应用开发技术 教学大纲_第4页
Kotlin移动应用开发技术 教学大纲_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Kotlin开发Android移动应用程序》课程教学大纲课程编码:XX0001课程总学时(理论总学时/实践总学时):108(68/40)周学时(理论学时/实践学时):6学分:6一、课程说明1.课程性质:专业必修课/专业选修课2.适用专业与学时分配:适用于软件工程/计算机科学与技术专业。教学内容与时间安排表章次内容总课时理论课时实践课时一Android的概述321二Kotlin的基础语法321三Kotlin的面向对象基础541四Kotlin的面向对象进阶862五Android的基础控件642六Android的布局组件532七Android的进阶控件与适配绑定752八Android的基本程序单元954九Android的后台服务与广播743十Android的数据存储与共享1064十一Android的多媒体与传感器1284十二Android的HTTP网络通信844十三Android的快速开发套件844十四《粉色辣椒》全流程开发171163.课程教学目的与要求:本课程是XX学院XX专业必修课/选修课。本课程讲授了基于Kotlin语言开发Android移动应用的基础知识,使学生掌握Kotlin语法、面向对象编程、Android的基本控件和组件、Android的多媒体开发、Android的HTTP通讯、Android的常用快速开发套件,并通过《粉色辣椒》全流程开发使学生深入了解移动应用开发。4.本门课程与其它课程关系:学生在修完《计算机理论基础》、《C语言》、《计算机网络》等课程,具备相关理论与计算机知识后方可进行本课程学习。5.推荐教材及参考资料:推荐教材:《Kotlin开发Android移动应用程序》参考资料:《Kotlin核心编程》水滴技术团队人机械工业出版社《第一行代码Android第3版》郭霖人民邮电出版社《Kotlin移动和服务器端应用开发》布雷特·麦克劳克林清华大学出版社6.课程教学方法与手段:多媒体教学7.课程考试方法与要求:综合设计成绩(50%)、实验成绩(40%)与平时成绩(10%)相结合。二、教学内容纲要第一章Android的概述(2学时)1、教学目标了解Android的发展历史,掌握开发环境的创建、工程的创建以及工程的结构。2、主要内容1.1Android的发展历史1.2Android的开发环境1.3Android的工程创建1.4Android的工程结构第二章Kotlin的基础语法(2学时)1、教学目标了解变量的概念、基本数据类型、字符串,掌握运算符和位运算、分支语句、循环语句、数组、函数和Lambda表达式的使用方法。2、主要内容2.1变量2.2数据类型2.3运算符和位运算2.4字符串2.5分支语句2.6循环语句2.7数组2.8函数和Lambda表达式第三章Kotlin的面向对象基础(4学时)1、教学目标了解类、重写与重载、包的概念,掌握类声明和实例化、抽象类和抽象方法、封装和访问控制符、接口、委托、属性的延迟初始化的使用方法,使学生建立面向对象编程的思维方式。2、主要内容3.1类3.2重写与重载3.3抽象类和抽象方法3.4包3.5封装和访问控制符3.6接口3.7委托3.8属性的延迟初始化第四章Kotlin的面向对象进阶(6学时)1、教学目标掌握数据类、密封类、对象类的创建和调用方法,以及伴生对象、枚举、三种不同类型集合、泛型的使用方法,能够恰当使用异常处理方法捕捉异常,合理使用多线程和协程。2、主要内容4.1数据类4.2密封类4.3对象类4.4伴生对象4.5枚举4.6集合4.7泛型4.8异常处理4.9多线程4.10协程第五章Android的基础控件(4学时)1、教学目标了解控件的概念,掌握文本视图、输入框、按钮、图片视图、图像按钮、单选按钮、复选框、开关按钮、提示信息、对话框、日期选择器、时间选择器、滚动条视图、通知等控件的使用方法。2、主要内容5.1控件5.2文本视图5.3输入框5.4按钮5.5图片视图5.6图像按钮5.7单选按钮5.8复选框5.9开关按钮5.10提示信息5.11对话框5.12日期选择器5.13时间选择器5.14滚动条视图5.15通知第六章Android的布局组件(3学时)1、教学目标掌握线性布局、相对布局、表格布局、网格布局、帧布局和约束布局的使用方法,并能够灵活运用布局的嵌套。2、主要内容6.1线性布局6.2相对布局6.3表格布局6.4网格布局6.5帧布局6.6约束布局第七章Android的进阶控件与适配绑定(5学时)1、教学目标了解数据适配的原理,掌握列表视图、网格视图、悬浮框、翻转视图、分页视图的使用方法。了解视图绑定和数据绑定的区别,能够针对不同情况恰当使用。2、主要内容7.1数据适配原理7.2列表视图7.3网格视图7.4悬浮框7.5翻转视图7.6分页视图7.7视图绑定7.8数据绑定第八章Android的基本程序单元(5学时)1、教学目标了解Activity的生命周期和启动模式和Fragment的生命周期,掌握Activity和Fragment的创建方法,能够使用Fragment制作导航分页。2、主要内容8.1Activity组件8.2Fragment组件第九章Android的后台服务与广播(4学时)1、教学目标了解Service组件的生命周期,掌握Service组件的开启、停止、绑定和数据传递,以及BroadcastReceiver组件的显式和隐式接收广播、发送标准广播和有序广播。2、主要内容9.1Service组件9.2BroadcastReceiver组件第十章Android的数据存储与共享(6学时)1、教学目标了解URI、数据交换原理和JSON数据结构,掌握SharedPreferences组件读写本地数据和SQLite组件创建并使用本地数据库的方法,使用ContentProvider组件在不同应用之间数据访问,能够熟练使用JSONObject类合成和解析数据。2、主要内容10.1SharedPreferences组件10.2SQLite组件10.3ContentProvider组件10.4JSONObject类第十一章Android的多媒体与传感器(8学时)1、教学目标掌握使用系统相机进行拍照和录像,并将照片和视频保存在相册中,能够分别使用AudioRecord和MediaRecorder录音。了解运动类传感器、位置类传感器和环境类传感器的使用方法,使用Location组件获取当前位置的经纬度。2、主要内容11.1系统相机和相册11.2拍摄照片和录制视频11.3录制音频11.4传感器11.5位置服务第十二章Android的HTTP网络通信(4学时)1、教学目标了解HttpURLConnection类的属性和方法,能够使用HttpURLConnection类加载存储在服务器端的图片,并且能够使用POST方式和GET方式向服务器端发送数据和接收服务器端的数据。2、主要内容12.1HttpURLConnection类12.2实例工程:加载网络图片(带缓存)12.3实例工程:发布动态(POST方式)12.4实例工程:动态列表(GET方式)第十三章Android的布局组件(4学时)1、教学目标了解Jetpack,能够正确使用RecyclerView控件、SwipeRefreshLayout组件、Biometric组件、Lifecycle组件、ViewModel组件和LiveData组件提高开发效率。2、主要内容13.1Jetpack简介13.2RecyclerView控件13.3SwipeRefreshLayout组件13.4Biometric组件13.5Lifecycle组件13.6ViewModel组件13.7LiveData组件第十四章《粉色辣椒》全流程开发(11学时)1、教学目标了解开发流程和《粉色辣椒》的开放平台,掌握设置启动图标的方法,对数据模型进行封装,能够使用MVVM模式进行开发,完成《粉色辣椒》的全流程开发。2、主要内容14.1项目介绍14.2开发流程14.3开放平台介绍14.4启动图标14.5数据模型14.6欢迎模块14.7注册模块组14.8首页模块组114.8发布动态模块14.10MVVM模式14.11首页模块组214.12回复动态模块14.13关注和粉丝列表模块14.14搜索动态模块14.15私信模块14.16设置模块组14.17应用程序发布三、实验教学内容实验一Android开发环境1学时1、实验目的掌握AndroidStudio的下载和安装方法。学会更新Gradle的方法。学会新建Android项目,了解Android项目的工程结构。掌握生成带签名的APK文件的方法。2、实验内容AndroidStudio的下载和安装打开网址(/studio/),单击“DOWNLOADOPTIONS”链接,跳转至AndroidStudio下载列表。双击下载的

exe格式安装文件,根据安装向导的指示安装AndroidStudio和所有所需的SDK工具。

安装进度完成后,单击“Finish”按钮。更新Gradle打开Gradle网址(/distributions/)使用迅雷等软件通过手动下载的方式进行更新。把下载的新版本Gradle解压到gradle更新文件夹内(如REF_Ref53430465\h图120所示)。然后在AndroidStudio中,选择【File】-【Settings】命令。在打开的对话框中,选择左侧的“Gradle”选项。然后选择右侧的“Uselocalgradledistribution”单选项,单击“Gradlehome”后面的路径选择按钮,选择刚才解压的gradle文件夹,单击“OK”按钮。新建Android项目单击菜单中的【File】-【New】-【NewPreject】命令,打开“CreateNewProject”对话框,进行工程创建的向导。工程创建向导的第1页用于选择工程的类型,选择“EmptyActivity”进行手机项目的App开发。单击“Next”按钮,进入工程创建向导的第2页,进行“Name”、“Packagename”、“Savelocation”、“Language”、“MinimumSDK”等配置。单击“OK”按钮,再单击“Finish”按钮完成工程的创建向导,然后显示AndroidStudio的界面。生成签名的APK文件选择【Build】→【GenerateSignedBundle/APK...】命令。打开“GenerateSignedBundleorAPK”对话框后,选择“APK”单选按钮,然后单击“Next”按钮进入下一个页面。单击“Createnew...”按钮,打开“NewKeyStore”对话框,设置签名文件密码、签名密码、有效年限和证书内容,然后单击“OK”按钮完成签名文件的创建。创建签名文件后,在“GenerateSignedBundleorAPK”对话框中会自动填入签名路径、签名路径密码、签名别名和签名密码,点击“Next”按钮,进入下一个页面。“BuildVariants”选项选择“release”,“SignatureVersions”勾选“V2(FullAPKSignature)”复选框,单击“Finish”按钮生成签名的APK文件。实验二Kotlin的基础语法1学时1、实验目的理解并掌握高阶函数的使用方法。理解并掌握匿名函数的使用方法。掌握Lambda表达式的基本形式,以及参数的省略形式。2、实验内容高阶函数高阶函数是作为另一个函数参数或返回值的函数。参考C0223工程,创建一个高阶函数,并作作为数据类型和返回值使用。匿名函数匿名函数是指没有函数名称的函数,可以直接赋值给变量,然后通过变量名调用。参考C0224工程,创建计算圆形面积的匿名函数,并进行调用。Lambda表达式Lambda表达式的本质是匿名函数,多作为高阶函数使用,也可以直接使用。参考C0225工程,创建以Lambda表达式作为返回值的计算面积的函数,并进行调用。参考C0226工程,创建repeatDown()函数,使用Lambda表达式实现递减功能repeat语句功能,并使用了三种等价形式调用了该函数。实验三Kotlin的面向对象基础1学时1、实验目的理解并掌握抽象类和抽象方法的使用方法。理解访问控制符的作用域,合理使用访问控制符。理解属性的延迟初始化的作用,并其掌握使用方法。2、实验内容抽象类和抽象方法抽象类是一种特殊的类,声明了抽象方法,通常用于继承。抽象类不能实例化对象,而是必须实例化其具体的子类。参考C0307工程,创建抽象类和抽象方法,并使用。访问控制符访问控制有4种类型:public、private、protected和internal,默认缺省访问控制符是public。参考C0309工程,新建car包,在car包内新建Car类,然后为Car类添加两个属性和三个方法。在car包内新建Bus类,使其继承Car类,并为其添加主构造方法的初始化块和三个方法。属性的延迟初始化属性需要在声明时或构造方法中初始化,否则会报错。如果不需要在声明时或构造方法中初始化就需要设置延迟初始化。有两种延迟初始化的方式:lateinit和bylazy。参考C0313工程,使用lateinit延迟初始化属性的使用方法。参考C0314工程,使用bylazy延迟初始化属性的使用方法。实验四Kotlin的面向对象进阶2学时1、实验目的理解并掌握伴生对象的使用方法。掌握三种不同类型集合的使用方法。掌握泛型类和泛型方法的使用方法。掌握异常处理的使用方法。理解多线程的原理,并掌握使用方法。理解协程的原理,并掌握使用方法。2、实验内容伴生对象伴生对象用于在普通类中实现静态属性和静态方法的功能,使用companionobject{}语句创建伴生对象。伴生对象内,方法中不能使用在伴生对象外声明的属性,只能使用伴生对象内声明的属性,而伴生对象外声明的方法可以调用伴生对象内声明的属性。参考C0404工程,创建伴生对象,并调用伴生对象内的态属性和静态方法。集合集合通常包含相同类型的对象,集合中的对象称为元素。集合分为可变集合和不可变集合,可变集合可以增减元素,而不可变集合不可以增加元算。Set类用于存储不重复的同一类型数据的集合,提供了size属性用于获取元素数量。参考C0407工程,创建Set集合和MutableSet集合的实例,并调用其常用属性和方法。List类用于也可以存储不重复的同一类型数据的集合,但是元素都有对应的顺序索引,因此允许使用重复元素,可以通过索引来访问指定位置的集合元素。参考C0408工程,创建List集合和MutableList集合的实例,并调用其常用属性和方法。Map类使用键名和键值保存同一类型数据,键名不能重复,键值可以重复。参考C0409工程,创建Map和MutableMap集合的实例,并调用其常用属性和方法。泛型类和泛型方法泛型是一种特殊的类型,可以接收不同类型的数据。泛型的本质是参数化类型,泛型并不是变量,所操作的数据类型被指定为一个参数。参考C0410工程,声明并调用泛型类。参考C0412工程,声明并调用泛型方法。异常处理异常处理是指对程序运行中的错误或问题的处理机制。参考C0413工程,使用基本形式捕获异常。多线程进程中包含两个或两个以上的线程被称为多线程,多线程能更好地利用CPU资源,但是对内存的消耗也会更多。每个线程都有独立的生命周期,包含新建状态、运行状态、就绪状态、阻塞状态和死亡状态等五种状态。参考C0416工程,创建自定义多线程类,并实例化后启动多线程。参考C0417工程,通过实现Runnable接口的类并调用重写的run()抽象方法开启多线程。参考C0418工程,通过Callable接口重写的call()方法实现多线程。协程协程是一种轻量级的异步解决方案。协程不是进程也不是线程,而是一个特殊的函数,这个函数可以在某个地方挂起,并且可以重新在挂起处外继续运行。REF_Ref67006818\r\h[22]协程依赖于线程,一个线程中可以创建多个协程,但是协程挂起时不需要阻塞线程,消耗内存更少,几乎不会引起OOM异常。参考C0421工程,调用GlobalScope.launch()方法开启全局域协程。参考C0422工程,在CoroutineScope.launch()方法开启协程内使用launch()方法开启子协程。参考C0423工程,在主线程上使用runBlocking()函数开启协程及其子协程。参考C0424工程,使用withContext()函数和使用suspend关键字自定义的挂起方法。实验五Android的基础控件2学时1、实验目的掌握TextView控件的使用方法。掌握EditText控件的使用方法。掌握Button控件的使用方法。掌握ImageView控件的使用方法。掌握RadioButton控件的使用方法。掌握AlertDialog控件的使用方法。掌握DatePicker控件的使用方法。掌握ScrollView控件的使用方法。掌握Notification控件的使用方法。2、实验内容TextView控件TextView控件是用于显示文本信息的控件。参考C0501工程,使用两种方法创建TextView控件。第一个TextView控件使用标签创建,使用setText()方法修改文本内容;第二个TextView控件通过代码动态创建,使用代码设置内容、字号大小、布局等属性。EditText控件EditText控件是用于输入和编辑文本内容的控件。参考C0502工程,创建三种不同效果的EditText控件。第一个EditText控件输入的字符超过ems属性设置的长度后,之前输入的字符会被推后隐藏起来,第二个EditText控件输入的字符超过maxEms属性设置的长度后,会在maxLength属性设置的范围内自动延长控件的长度,第三个EditText控件输入换行后,控件会在maxLines属性设置的范围内自动增加一行。Button控件Button控件是按钮的控件。参考C0503工程,创建Button控件及其点击监听事件,单击“获取当前系统时间”按钮,在其上方的TextView控件中显示出当前的系统时间。ImageView控件ImageView控件是用显示图片的控件。参考C0504工程,使用ImageView控件显示图像的三种缩放匹配效果。第一张图片是等比例最大化居中显示;第二张图片是原始尺寸在左上角显示;第三张图片是完全填充显示,可能会导致图片被拉伸变形。RadioButton控件RadioButton控件是单选框的控件。参考C0506工程,使用RadioButton控件选择性别,单击改变选择的选项或提交按钮时,会在控制台中输出相应的信息。AlertDialog控件AlertDialog控件是用于显示对话框的控件。参考C0510工程,创建默认AlertDialog控件和自定义AlertDialog控件。单击“默认对话框”按钮显示默认AlertDialog控件,单击AlertDialog控件以外的区域可以直接关闭对话框。单击“自定义对话框”按钮显示自定义AlertDialog控件,然后输入框自动获取焦点后弹出虚拟键盘,此时单击该控件以外的区域不会关闭对话框。DatePicker控件DatePicker控件是用于选择日期的控件。参考C0511工程,创建spinner外观样式的DatePicker控件。滑动DatePicker控件可以修改年月日。单击“重置”按钮,会将DatePicker控件的日期设置为“2020年1月1日”。单击“确定”按钮,会获取DatePicker控件设置的日期。ScrollView控件ScrollView控件是可滚动的用于显示其他控件的控件。参考C0513工程,创建ScrollView控件并添加子控件,子控件超出显示范围时通过滚动的方式进行显示。ScrollView控件先向下滑动到1000像素,然后单击其下方的四个按钮实现不同位置的滑动。Notification控件Notification控件是显示通知的控件。参考C0514工程,创建弹出式状态栏通知和自定义视图状态栏通知,单击“关闭状态栏通知”关闭通知。实验六Android的布局组件2学时1、实验目的掌握LinearLayout组件的使用方法。掌握RelativeLayout组件的使用方法。掌握TableLayout组件的使用方法。掌握GridLayout组件的使用方法。掌握FrameLayout组件的使用方法。掌握ConstraintLayout组件的使用方法。2、实验内容LinearLayout组件LinearLayout组件是进行水平或垂直排列布局的容器组件。参考C0601工程,创建水平和垂直两种线性布局以及嵌套布局,整体使用垂直线性布局,局部使用了多重嵌套的线性布局。RelativeLayout组件RelativeLayout组件是相对排列布局的容器组件。参考C0602工程,创建九个相对布局,“中”“顶端”“底端”“左端”和“右端”是相对于父标签的相对布局,“上”“下”“左”和“右”是相对于“中”的相对布局。TableLayout组件TableLayout组件是使用表格的形式布局的容器组件。参考C0603工程,创建表格布局显示登录界面,“登录”按钮占用了两个单元格,其余控件各占用一个单元格。GridLayout组件GridLayout组件是网格形式排列布局的容器组件。参考C0604工程,创建网格布局显示计算器的界面,第一行的控件占用了4列网格,第二行的控件各占用2列网格。FrameLayout组件FrameLayout组件是依次堆叠形式排列布局的容器组件。参考C0605工程,创建帧布局叠加显示图像片,文字和汽车图像包含透明区域,透明区域直接显示出背景图像。ConstraintLayout组件ConstraintLayout组件是依次堆叠形式排列布局的容器组件。参考C0606工程,创建约束布局模仿朋友圈顶部的效果,背景图像与其父标签进行约束,头像图像与背景图像进行约束,昵称文本与头像图像进行约束。实验七Android的进阶控件与适配绑定2学时1、实验目的掌握ListView控件的使用方法。掌握GirView控件的使用方法。掌握PopupWindow控件的使用方法。掌握ViewPager控件的使用方法。理解并掌握视图绑定的使用方法。理解并掌握数据绑定使用方法。2、实验内容ListView控件ListView控件是可以滚动显示列表信息的控件。参考C0701工程,从资源文件中获取字符串数组显示到ListView控件,并为ListView控件添加顶部视图,单击列表项后显示相应的提示信息。GirView控件GirView控件是以滚动网格形式显示信息的控件。参考C0703工程,创建GirView控件分两行排列商品类别,每个类别都配有文字和图片,单击后显示相应的提示信息。PopupWindow控件PopupWindow控件是悬浮显示的控件。参考C0705工程,创建PopupWindow控件,单击按钮显示PopupWindow控件,单击悬浮框内的按钮后显示提示信息且PopupWindow控件消失,PopupWindow控件显示和消失的过称中使用动画效果。当PopupWindow控件显示时,单击PopupWindow控件以外的区域悬浮框会消失,且不会触发点击区域控件的事件。ViewPager控件ViewFlipper控件是多视图轮转的控件。参考C0606工程,创建ViewFlipper控件,轮转显示图片,单击图像后通过提示信息显示当前子视图的索引号,当子视图开始执行显示动画时当前子视图索引号就会改变。视图绑定ViewBinding是通过为xml布局自动生成一个绑定类,将控件的id转换为绑定类的属性,通过绑定类的实例直接调用控件的操作方式。参考C0708工程,使用视图绑定的方式改造“欢迎引导页”,实现精简代码。数据绑定DataBinding是通过为xml布局自动生成一个绑定类(和ViewBinding共用一个绑定类),将布局文件中控件的属性与数据类的属性或方法进行关联,通过对数据类的实例间接修改控件属性或处理控件事件的操作方式。参考C0709工程,使用数据绑定的方式改造“欢迎引导页”,实现对控件属性的单向数据绑定和双向数据绑定。点击第四个分页的“开始”按钮,通过双向绑定获取控件的text属性值,并使用通知显示出来。实验八Android的基本程序单元4学时1、实验目的掌握Activity创建和删除的使用方法。掌握Activity启动和关闭的使用方法。理解Activity的生命周期。掌握Activity的启动模式,并能够正确使用。掌握Activity之间的数据传递方法。掌握Fragment的使用方法,能够实现导航分页功能。2、实验内容Activity的创建和删除创建工程后,新建Activity,并设置的配置参数。然后删除创建的Activity,并删除配置参数。Activity的启动和关闭参考C0802工程,使用8种方式打开Activity,其中2个为显式的方式启动,1个为自定义隐式的方式启动和5个为使用预设隐式的方式启动。Activity的生命周期Activity的生命周期主要包含7个方法和6个状态(Created、Started、Resumed、Paused、Stoped、Destroyed)。完整生命周期从回调onCreate()方法开始,到回调onDestroy()方法结束。可见生命周期从回调onStart()方法开始,到回调onStop()方法结束。前台生命周期从回调onResume()方法开始,到回调onPause()方法结束。参考C0803工程,重写MainActivity的7个生命周期方法,观察生命周期的执行顺序。Activity的启动模式Activity启动模式本质区别在于任务栈的分配,共有四种启动模式:standard、singleTop、singleTask和singleInstance。启动模式需要在AndroidManifest.xml文件中,设置android:launchMode属性进行设置,默认值是standard。参考C0804工程,启动standard标准模式的Activity时,创建一个新的实例,放置在启动该Activity的任务栈顶部。参考C0805工程,启动singleTop栈顶复用模式模式的Activity处于当前栈的顶部时,不会创建新的实例,而是直接启动该Activity。参考C0806工程,任务栈中存在singleTask栈内复用模式的Activity时,再次启动该Activity时,栈内该Activity上面的所有Activity全部出栈,并且会回调该实例的onNewIntent()方法。参考C0807工程,singleInstance单例模式的Activity除了具有singleTask模式特性外,还具有全局唯一性。系统中只能存在一个实例且单独占用一个任务栈,被该Activity开启的其他Activity会分配到其他任务栈内。首次启动该Activity时,会新建任务栈存放该Activity实例。再次启动该Activity时,除非该Activity实例已经销毁,否则不会新栈内创建新的实例;重用该Activity实例,不会调用onCreat()方法,会调用onNewIntent()方法。Activity的数据传递启动和关闭Activity可以通过Intent对象传递数据。参考C0808工程,简单数据类型的数据通过Intent对象在各Activity之间进行传递,Intent类的putExtra()方法提供了丰富的重载方法,可以传递不同类型的数据。关闭Activity时,还可以回传数据。导航分页的主界面Fragment是嵌入到Activity的程序单元,必须依赖于Activity,不能独立存在的。有独立的生命周期,能接收输入事件,Activity可以动态添加或删除Fragment。一个Activity里可以包含多个Fragment,可以实现分页导航功能。参考C0809工程,底部包含5个导航按钮,第5个按钮上默认显示数字圆点提示。单击导航按钮后,显示数字圆点提示会消失,顶部的标题会相应改变,并且中间的区域会显示相应的Fragment。每个Fragment都包含一个“显示TAB圆点”按钮,单击后相应的导航按钮会显示数字圆点提示。实验九Android的后台服务与广播3学时1、实验目的掌握Service开启和停止的方法。掌握Service绑定和数据传递的方法。掌握Service显示Notification的方法。掌握显式和隐式接收广播的方法。掌握发送标准广播和有序广播的方法。2、实验内容Service的开启和停止参考C0901工程,创建Service类,命名为MyService。单击“启动SERVICE”按钮启动MyService类实例在后台运行,单击“停止SERVICE”按钮停止MyService类实例的运行。Service的绑定和数据传递参考C0902工程,创建Service类,命名为MyService,重写声明周期方法,声明getSecond()方法用于获取运行时间。单击“启动SubActivity”按钮启动SubActivity。在SubActivity中,单击“启动Service”按钮启动MyService实例,单击“绑定Service”按钮绑定MyService实例,再单击“获取Service运行时间按钮”会通过提示信息显示Service已经运行的时间。未停止Service时,关闭SubActivity会停止运行Service。Service显示Notification参考C0903工程,使用Service显示前台通知。单击“启动前台通知服务”按钮,会在状态栏显示通知图标,将状态栏下拉后会看到通知。单击“停止前台通知服务”按钮会关闭通知,否则即使关闭该App通知依然不会消失。显式和隐式接收广播参考C0904工程,通过BroadcastReceiver组件实现显式和隐式接收广播。单击“注册广播接收器”按钮,不但能够对网络、屏幕和电量等隐式广播进行接收,还能对自定义的显式广播进行接收。发送标准广播和有序广播参考C0905工程,新建两个自定义广播接收器类:MyBroadcastReceiver1和MyBroadcastReceiver2,用于接收有序广播。创建三个按钮,分别发送标准广播、连续有序广播和单次有序广播。实验十Android的数据存储与共享4学时1、实验目的掌握SharedPreferences接口保存本地数据,实现用户保存登录数据。掌握SQLite组件创建并使用本地数据库,实现自定义通讯录数据的保存。掌握ContentProvider组件向所在的App提供数据,以及向其他App提供数据。掌握JSONObject类合成和解析数据。2、实验内容用户登陆SharedPreferences接口主要用于获取共享偏好设置数据。参考C1001工程,App常用的登录功能,登陆后保存用户的登录数据,再次打开App时会自动登录。登陆后单击“退出”按钮,可以清除用户登录数据,然后再次打开App时需要登录。自定义通讯录SQLite组件是一个轻量级的关系型数据库,无服务器端,零配置,运算速度快,占用资源少,支持大部分标准SQL语法。参考C1002工程,使用SQLite进行存储数据的通讯录,顶部使用ListView控件显示通讯录中的联系人,单击后在底部的EditText控件中显示该联系人的信息,可以通过底部的按钮对该联系人进行相应的操作或显示其所有联系人。自定义内容提供者ContentProvider组件不但可以向所在的App提供数据,还可以向其他App提供数据。参考C1003工程和C1004工程,两个App之间的数据访问和修改,模仿了系统通讯录提供内容服务的方式。合成和解析JSON数据JSON(JavaScriptObjectNotation)是一种轻量级的数据交换方法,是基于JavaScript的一个子集,主要用于网络或程序之间传递数据。参考C1006工程,模拟发布朋友圈或微博动态前合成JSON,对JSON数据进行解析后显示。单击“合成单行”或“合成多行”按钮,会在下方显示合成后的单行或多行JSON字符串。单击“清空”按钮,清空顶部EditText控件的内容。然后单击“解析”按钮,将合成的JSON数据解析后显示在顶部相应的EditText控件内。实验十一Android的多媒体与传感器4学时1、实验目的掌握获取权限调用内置相机拍照和录制视频,并保存在相册内的方法。掌握AudioRecord类读取麦克风采集的音频数据流的方法。掌握调用运动类传感器的使用方法,并实现摇一摇的功能。掌握调用位置类传感器的使用方法,并实现指南针的功能。2、实验内容拍照、选取和显示图片获取权限后使用系统相机App拍摄照片以及使用系统相册选取图片。参考C1101工程,首次运行时会弹出权限请求的系统对话框,单击“拒绝”按钮后会弹出自定义的对话框提示需要开启的权限,再单击“打开应用设置”按钮。单击“拍照”按钮会调用系统相机,拍照后返回的拍摄照片画质较低不适合实际使用;单击“拍照(指定位置保存)”按钮会调用系统相机,拍照后返回的拍摄照片画质正常,保存在指定文件夹中,并且能够显示在系统相册中;单击“选取图片”按钮会调用系统相册选取照片,选取照片后调用剪裁的功能,进行剪裁后显示方形图像。调用系统相机拍照不会自动将照片保存显示在系统相册中,需要创建保存照片的文件,扫描媒体文件并发送广播才会显示在系统相册中。录制、选取和播放视频获取权限后使用系统相机App录制视频以及使用系统相册选取视频。参考C1102工程,录制视频后保存到系统相册内,使用VideoView控件播放视频。单击“录制视频”按钮调用系统相机可以录制15秒以内的视频,单击“选取视频”按钮调用系统相册选取视频后在VideoView控件中播放,单击VideoView控件可以显示出播放控制器。AudioRecord录音AudioRecord类用于读取麦克风采集的音频数据流。参考C1105工程,使用不同模式通过AudioRecord录制音频,然后使用AudioTrack播放录音。单击“开始录音”按钮开始录音后会显示已经录制的时间,底部显示录制音频文件保存的文件路径。该按钮文字变成了“暂停”,单击后暂停录音,按钮文字变成“继续”,再次单击后继续录音。单击“结束录音”按钮停止录音,单击“播放声音”按钮播放录制的音频。由于虚拟设备无法使用麦克风,因此需要使用物理设备运行才能录制和播放音频。摇一摇比大小运动类传感器用于测量设备的运动,包含加速度传感器和陀螺仪传感器。参考C1107工程,摇动手机产生0-9随机数的聚会小游戏。单击“开始”按钮,摇动手机会自动生成数字。如果使用虚拟设备运行,需要打开虚拟传感器的控制界面,左右拖拽Y轴移动的滑动条模拟上下摇晃效果。指南针位置类传感器用于测量设备的物理位置或与附近物体的距离,包含地磁场传感器、方向传感器和距离传感器。参考C1108工程,指南针以及手机姿态的数据,单击虚拟设备右侧的旋转按钮可以改变手机的方向,可以观察到方向和数据的变化。实验十二Android的HTTP网络通信4学时1、实验目的掌握HttpURLConnection类的属性和方法。掌握使用HttpURLConnection类加载存储在服务器端的图片的方法。掌握使用POST方式和GET方式向服务器端发送数据和接收服务器端数据的方法。2、实验内容加载网络图片(带缓存)使用HttpURLConnection类下载图片并进行本地缓存,以及清除本地缓存。参考C1201工程,单击“加载图片”按钮,开始下载图片,图片下载完成后保存在本地缓存文件夹内,然后显示在ImageView控件中。由于没有下载提示,只有图片下载后才能看到下载是否成功。单击“清除缓存”按钮,清除本地缓存,ImageView控件显示R.mipmap.img_error_m资源图片。发布动态(POST方式)使用HttpURLConnection类发送带附件的POST请求,服务器端检验后返回成功值后关闭Activity。参考C1204工程,单击“动态列表”按钮,启动DailyListActivity。单击➕按钮,使用系统提供的功能选取图片,选取图片后对图片进行压缩保存在本地缓存文件夹。这样处理不但可以避免OOM异常的出现,还能减少上传数据的大小。单击“发布”按钮,将控件输入的昵称和内容以及选择后缓存在本地的缓存图片,合成为POST数据流后进行发送。动态列表(GET方式)使用HttpURLConnection类发送GET请求获取动态列表的数据,服务器端返回动态列表的JSON数据。参考C1205工程,对JSON数据进行解析后使用ListView控件显示动态的昵称和内容、下载图片并显示。实验十三Android的快速开发套件4学时1、实验目的掌握RecyclerView控件的使用方法,实现瀑布流显示功能。掌握SwipeRefreshLayout组件的使用方法,实现下拉刷新和上拉加载的动态列表功能。掌握Biometric组件的使用方法,实现模拟指纹支付功能。掌握ViewModel组件的使用方法,实现重建视图功能。掌握LiveData组件的使用方法,实现联想搜索关键字功能。2、实验内容瀑布流动态列表使用RecyclerView类和RecyclerView.Adapter类实现使用瀑布流的形式显示动态列表。参考C1301工程,单击子视图中的图片会通过提示信息显示当前的子视图的位置。下拉刷新和上拉加载的动态列表使用SwipeRefreshLayout类实现上拉刷新和下拉加载功能的瀑布流动态列表。参考C1302工程,顶部时下拉刷新动态列表;底部时上拉加载更多的动态到列表中;打开飞行模式后,再上拉加载更多时,脚页子视图显示“网络故障稍后再试”。指纹支付使用BiometricManager组件模拟支付时的指纹验证。参考C1303工程,单击“支付”按钮显示生物识别提示框,在模拟器的“Extendedcontrols”窗口的“Fingerprint”选项卡中,选择“Finger1”,然后单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论