2022年Android项目开发实训大纲[参 .pdf
黎明职业大学信息与电子工程学院Android 项目开发实训指导书2014年 6 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 2 Android 项目开发实训大纲1. 实践教学理念要培养合格的开发型、创造型人才 , 教师首先必须树立现代化的教育观, 把“以教师为主体” 、 “以课程为中心”的传统教育观转变为“以学生为主体”, “以能力为中心”的新的教育观。教师的职责不仅要“授人以鱼”, 更重要的是“授人以渔”, 把学生创新能力的培养放在重要的地位 , 在教学的各个环节, 充分体现“以教为主导”“以学为主体”的教学原则。Android项目开发 课程不但是抽象的理论课, 其综合性和实用性也是这门课程的重要特征。因此 , 教学活动也应遵循从感性到理性, 再从理性到实践; 从直观到抽象 , 再从抽象到具体实践的规律。 在理论课教学中渗透实践内容, 在实践中应用理论知识, 使理论与实践有机结合 , 这样才能真正做到理论指导实践, 实践反过来促进理论的发展, 使理论得以升华。通过实训教学 ,使学生学会应用所学知识对实践任务进行充分分析、抽象, 建立与之相适应的模式 ,使问题最终在计算机上得以实现。在这个过程中 , 学生不仅对所学知识加深了理解,更重要的是培养了学生分析问题、解决问题的能力, 这对充分发挥学生的创造能力起着重要的作用。 合理设置课程实训内容, 力争与理论课的重点、难点及实用知识联系起来; 从实际应用中精心选择有具体应用背景的实训题目, 充分发挥学生的主动性; 注重实训过程, 注重学生综合能力的培养; 建立一套完整的实训课考核方案。2.数据结构实训大纲学时: 26 学分: 1 适用:游戏软件专业先修课程: Android 开发一、实训目的要求Android项目开发是游戏软件专业的一门必修的重要实训课程。要求学生将Android开发 课程中关于Android 几个重要组件如Acitivity、Intent、Services 、BroadCast 等;UI 设计、常用控件;数据存储;网络通信;多线程编程等基本知识要求掌握。对于给定的设计目标,学生要具备分析问题、设计框架和数据模型,并选择合适的技术手段解决问题。在细节方面,采用面向对象(OOP )的思想设计编写、调试代码。在项目的实施过程中注重培养学生的团队协作精神。二、实训主要内容Android项目开发实训的主要内容和完成步骤参考:(详见附录)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 3 实训内容是要设计、实现一款在一定范围内的用户进行通信和交流的产品。三、教学方式和提交成果1、实验教学,机房调试程序2、提供源程序清单;编写课程设计报告。四、主要教学参考书1. 王东华, Android 网络开发与应用实战详解,人民邮电出版社, 2012 2. 黄宏程, Android 移动应用设计与开发,人民邮电出版社, 2012 五、实训安排表序号学时内容1 3 环境配置,包括安装JDK、Eclipse 、SDK 、ADT 2 3 案例需求分析,完成需求报告3 3 根据需求,完成数据类型设计4 3 根据需求,设计用户界面5 4 采用 MVC 架构,设计客户端6 6 编码7 2 测试六、实施方案根据实训大纲的描述。具体实施如下: 问题分析根据实验内容,充分地分析和理解问题本身,弄清要求做什么,包括功能要求、性能要求、设计要求和约束以及基本数据特性,数据间的联系等。2 模块、类和算法的设计按问题提炼和设计并画出程序运行的流程图,设计相关类,包括对类的定义,字段、函数的设计和实现。 设计分概要设计和详细设计,概要设计着重解决程序的类设计问题,这包括考虑如何把被开发的问题程序自顶向下分解成若干顺序模块,并决定类的外部接口,即类间的相互关系以及类之间的信息交换问题. 详细设计则要决定每个类内部函数的具体算法,包括输入、处理和输出。4上机调试将代码用 Java 语言描述出来,对程序进行编译,纠正程序中可能出现的语法错误,先运行名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - 4 一遍程序看看究竟将会发生什么,如果错误较多, 则进行错误跟踪,包括打印执行路径或输出中间变量值等手段。5实习报告内容将实训内容和结果写在实习报告中,主要包括:1)问题描述:包括目标、任务、条件和约束的描述。2)设计:系统整体设计和描述;主控及功能模块层次结构;主要功能模块的输入、处理( 算法框架描述 ) 和输出;功能模块之间的调用与被调用关系等。3)使用说明和作业小结:使用说明主要描述如何使用你的程序以及使用时的主要事项;在小结中说明程序的改进思想、经验和体会,并回答教师布置的讨论题。4)打印一份程序清单及运行示例的结果。将以上各项文字材料及程序清单等装订成册,形成一个完整的报告。附录1. 系统架构图:客户端从 MVC 设计模式的角度去分析有三个部分:视图、控制器和模块。其中界面视图包含了 Activity和一些 View 模块,用于展示信息给用户;模块部分对应到上图的网络模块和数据模块,各个模块能提供不同的功能被其他部分调用;控制器对应到上图的MsgService 部分,控制着整个客户端消息的处理、数据的存储和界面的刷新。1.1 代码结构Android客户端Android FrameWork 应用程序框架界面视图( View ),也就是 Activity 和一些 View 模块,包括话题、私信、好友等界面网络模块(包括网络检查,网络的连接和请求数据)数据模块(包括数据存储,数据共享,数据解析和封装)MsgService控制(Controler)、消息更新机制(包括定时请求服务器和刷新界面)模块 Model服务端(部署在 Tomcat上)处理接口数据模块(数据库MySql )客户端请求请求响应数据格式为 JSON格式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - 5 用户界面以Activity 为核心,包括基础(controller 包) 、启动( loginsignin 包)中的类数据库部分包括数据库操作类(DatabaseHelper.java) 、数据表( table 包)及数据共享(contentprovider 包) 。网络部分包括了模块 (mode 包) 、 请求类(Request.java) 及网络连接类 (HttpClient.java ) ,模块中包括了针对不同请求类型返回数据的解析类,可以实现对返回数据的解析其他一些包,如配置(application 包) 、服务( service 包) 、工具( utils 包)等实现辅助功能网络访问用户界面事件处理数据库开始捕获到相应的事件(比如刷新图标的点击)请求参数的封装,封装成 JSON格式请求参数的格式具体参见第 2章请求参数中部分数据来源于登陆后储存在SharedPreferences中的数据,当然登陆和注册就不用填写这两个参数,填后面那个 param就可以了,读者可以参见具体代码是如何填写的在相应 Activity 中的AysncTask执行网络的请求网络的请求通过调用网络模块的方法数据的解析和存储调用数据模块的方法由AysncTask通知Activity 刷新界面,请求失败时通知用户这里对应到界面视图的功能调用结束数据的解析和存储调用数据模块的方法响应参数的格式具体参见第 2章成功?响应参数的解析(解析 JSON)和储存是否名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - 6 由事件驱动的任务处理机制具体的步骤:(1)捕获到事件后确定是何种请求(有请求话题、请求私信和添加好友等);(2)封装具体的请求参数,根据请求的类型填写相应的参数;(3)将参数传送到所在Activity的 AysncTask 中进行处理,进行网络的判断和数据的请求等;(4)若请求成功,就需要调用数据模块的解析方法以解析响应的JSON 格式的数据;(5)若上述请求失败了(本案例的失败包括整个过程的所有失败,比如网络未连接和数据解析失败等) ,跳到该步骤执行通知用户请求失败;若请求成功,这通知用户刷新界面。开始程序启动时启动定时器请求参数的封装,封装成 JSON格式请求参数的格式具体参见第 2章请求参数中部分数据来源于登陆后储存在SharedPreferences中的数据,这里只涉及话题、好友和私信的消息更新,读者可参见具体代码是如何填写的在MsgService中启动新的线程执行网络的请求网络的请求通过调用网络模块的方法数据的解析和存储调用数据模块的方法由Handler通知Activity 刷新界面,请求失败时通知用户这里对应到界面视图的功能调用结束数据的解析和存储调用数据模块的方法响应参数的格式具体参见第 2章成功?响应参数的解析(解析 JSON)和储存是否名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - 7 以定时器驱动的任务机制具体步骤:(1)与事件驱动不一样的是,这里采用定时器定时启动网络访问;(2)数据的封装与事件驱动的一样;(3)在 Service 中启动新的线程来处理网络连接请求;(4)数据的解析和数据的储存与事件驱动处理中的步骤一样;(5)界面视图的更新(包含请求失败和请求成功),由于任务的操作在Service 中, Service中没有涉及界面更新的方法,所以通过 Handler 和实现了MsgRefresh 接口的 Activity 来完成界面刷新功能。2.功能模块A、启动B、注册进入启动界面启动LogoLanuch利用 getLoginUserInfo 方法获取上次登录用户的状态信息 RequestParam.STATUS判断状态信息是否为空?设置默认值为离线是判断状态跳转至主界面跳转至登陆注册选择界面结束否在线离线名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - 8 C、登陆输入完毕,点击注册启动SigninTask发送注册请求解析判断返回结果提示注册成功成功提示注册失败失败结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - 9 点击注销确认启动LogoutTask发送注销请求解析判断返回结果跳转至登录界面成功提示注销失败失败结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - 10 D、注销输入完毕点击登录启动LoginTask发送登录请求解析判断返回结果利用 setLoginUserInfo方法设置lastest_login.xml文件中当前登录的用户信息提示登录失败结束成功失败利用getLoginUserInfo方法与 SharedPreference 方式将当前登录用户的信息保存为.xml名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - 11 E、话题进入话题列表界面(BoradcastActivity.java )时首先访问本地数据库,检查是否存在话题信息,若不存在话题信息,则利用异步任务(AysncTask)机制 请求话题类ReadTask向服务器发送话题信息请求,获取所有话题信息数据,将数据进行解析,保存到数据库,再执行界面刷新,将每条话题记录的信息显示。F、好友进入好友界面时,首先访问本地数据库中是否存在,若不存在则通过异步机制(AsyncTask)向服务端请求数据。G、私信采用 Android 提供的异步任务来执行任务,包括私信的请求、回复等。具体的流程图参考上一节中的登陆、注册等流程, 他们的控制过程大同小异,不同的只是输入输出的数据不一样而已,不影响对任务处理过程的理解。H、用户资料查看个人资料或者是其他用户资料时都是用该ProfileActivity做显示和操作,当要查看某个用户的资料时, 首先在好友表中查询是否存在该用户的信息,如果不存在则通过网络向服务端请求,在请求的参数中放入该用户的ID(UID ) ,然后通过异步任务(AsyncTask)来请求用户的资料。具体的流程图参考上一节中的登陆、注册等流程, 他们的控制过程大同小异,不同的只是输入输出的数据不一样而已,不影响对任务处理过程的理解。I、消息更新机制点击注销确认启动LogoutTask发送注销请求解析判断返回结果跳转至登录界面成功提示注销失败失败结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 13 页 - - - - - - - - - 12 为了保证大案例中各个模块能实时接收到服务端变化的数据,比如好友发表了新话题、有新的私信等,本大案例中采用轮询的机制每隔一段时间自动访问服务器,读取服务器端的话题、好友和私信表,查询是否这些表中出现了新的值,若是出现了则返回这些数据。J、其他内容如:用户登录数据的存储;广播接收者;软件的更新功能3.服务端该案例采用的服务器是Tomcat6.5,代码是用Java 语言来编写的,数据库使用Mysql 。3.1 总体介绍服务端话题好友私信用户资料话题发表话题获得所有话题获得最新话题评论话题获得所有评论好友添加好友删除好友获得最新添加的好友获得所有好友私信发私信获得所有私信获得最新私信名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - 13 3.2 数据解析和控制流程在整个过程中, 用户发来的数据和返回的数据都是JSON 格式的, 整个过程主要分以下几步:(1)接收请求的参数,并分析参数,也就是解析JSON 格式里面的内容;(2)通过获得的用户ID (UID )和密码( password)去认证用户是否合法,当然如果是注册的话就跳开该步骤;(3)通过获得的请求类型(requestType)将任务分发到相应的类中,比如添加好友,此时就调到 AddFriends 中执行;(4)在相应的类中(AddFriends )首先获得数据库的连接,然后通过请求的参数执行相应的(添加好友)的操作,同时更新数据库中相应的表;(5)将执行完后的结果封装成JSON 格式并返回。接收客户端发来的请求请求数据的解析,在servlet中进行,这里获得的内容包含请求的类型、请求的UID、密码、以及其他参数判断是哪种请求类型?获得最新话题,这里包含了数据库的操作获得所有好友,这里包含了数据库的操作获得用户资料,这里包含了数据库的操作将请求的数据传递到servlet中,并通过联网返回给客户端结束存在不存在用户认证,判断发过来请求的用户是合法用户否是,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -