《移动互联网应用开发》课程标准.doc
移动互联网应用开发课程标准一、课程基本信息课程编码:32479课程名称:移动互联网应用开发课程类型:B类课程属类:职业能力课课程学分:4参考课时:64课程性质:必修课开课部门:信息工程系适用专业(层次):软件技术(高职)先修课程: C语言程序设计、使用Java理解程序逻辑、Java面向对象编、3G移动应用开发后续课程:顶岗实习、毕业设计等课程职业资格:Android软件设计师制 订:移动互联网应用开发课程开发团队批 准 人: 姜义林课程负责人:王倩二、课程详细信息(一)课程简介移动互联网应用开发课程是软件技术专业的专业拓展课,是专业人才培养目标得以实现的保证。本课程针对Android工程师岗位中典型工作任务,使学生更深入地掌握Android平台下应用程序开发技能,通过完成学习性任务,逐步培养学生具备软件设计和编码能力,通过小组学习、项目实训,培养学生在Android平台下进行程序设计、软件测试、项目实施、软件维护所需的职业能力和素质能力,同时通过多种教学方法和教学手段的灵活运用,培养学生的可持续发展能力,为专业培养目标奠定基础。(二)课程性质与定位1.课程性质根据专业人才培养方案制定的培养目标,移动互联网应用开发课程为软件技术专业高职学生的职业能力课,是软件技术专业的专业核心课。2.课程定位本课程面向Android软件开发、Android软件技术支持以Android及软件测试三个岗位,在3G移动应用开发技术的基础上综合设计测试Android项目,从而使学生能够更好地适应就业岗位。本课程的主要授课对象为软件专业高职二年级第二学期的学生,已经系统学习过C语言程序设计、页面美化、使用Java理解程序逻辑、数据结构、使用JSP开发Web应用系统、Java面向对象编程及3G移动应用开发等课程,具备软件开发的基础能力。(三)课程设计思路1.课程设计依据本课程遵照教高200614号1、教高200616号2、教高厅函200747号3等文件精神,依据本专业的人才培养方案,确定本课程的目标和教学内容,具体应遵循以下原则。Ø 在课程设计上,坚持以能力为本位,以学生为主体,教师角色转换为倡导者。Ø 在课程内容选取上,应以过程性知识为主、陈述性知识为辅,即以实际应用的经验和策略的习得为主、以适度够用的概念和原理的理解为辅。Ø 在课程内容排列上,应以工作过程为参照系整合陈述性知识与过程性知识。Ø 在课程内容结构上,突出模块化设置,以便新技术新产品进入教学内容。Ø 在课程职业技能培养上,要把职业资格证书(职业标准)的考核项目与要求纳入到专业课程标准之中,为学生就业服务。Ø 在课程教学组织设计上,要以真实工作任务或社会产品为载体组织教学,积极推广探索教学做一体化、情境式教学、互动式教学。Ø 以“REACT”设计情境教学,以“3P”和“ARCS”模式设计互动式教学活动。Ø 在教学资源建设上,突出学习包教学标准建设和借助教学平台开发网络教学资源。Ø 在培养过程中,注重全人发展、服务学习、学长计划、过程资历认可(RPL)的实施。2.具体设计思路本课程根据软件技术专业Android软件开发、Android软件技术支持以Android及软件测试三个岗位的工作任务及职业能力分析表中的程序设计工作项目的要求设置的。设计思路是:在3G移动应用开发课程的基础上,打破传统学科课程模式,转变为以任务或项目为中心,结合Android应用程序设计中的常用知识点组织课程教学内容,通过讲练结合,使学生在完成Activity、Intent、Service和ContentProvider四部分工作任务或具体项目,在完成任务的过程中学会知识的应用,构建相关理论知识,发展职业能力。课程内容突出对高职学生职业能力的训练,理论知识的选取紧紧围绕工作任务完成的需要来进行,同时又充分考虑了高等职业教育对理论知识学习的需要,并融合了相关职业资格证书对知识、技能和态度的要求。本课程以项目为导向,以培养学生软件设计职业能力为目标,以模块化的结构方式安排教学内容,采用任务驱动、项目导向、校企合作,讲、练、做一体化技能训练式教学,通过精选案例,项目设计以学生编程能力的培养为线索来进行,分解企业真实项目任务,讲、练、做有机融合,课程做到课堂在实验室、实验做到课堂,教学过程中广泛推行“学中做,练中学”的方法,按照软件开发的工作流程组织教学,全面提升学生的技术应用能力。教学过程中,要通过校企合作、校内实训基地建设等多种途径,采取工学结合、课程设计等形式,充分开发学习资源,给学生提供丰富的实践机会。教学效果评价采取过程性评价与结果性评价相结合,理论与实践相结合,理论考试重点考核与实践能力紧密相关的知识,重点评价学生的职业能力。(四)课程培养目标1.总体目标本课程针对Android工程师岗位中典型工作任务,使学生更深入地了解Java技术平台,掌握Android平台下应用程序开发基本技能,通过完成学习性任务,逐步培养学生具备软件设计和编码能力,通过小组学习、项目实训,培养学生在Android平台下进行程序设计、软件测试、项目实施、软件维护所需的职业能力和素质能力,同时通过多种教学方法和教学手段的灵活运用,培养学生的可持续发展能力,为专业培养目标奠定基础。2.具体目标(1)知识目标Ø 学会自定义广播Ø 掌握有序广播和无序广播的使用Ø 掌握常用广播接收者(开机启动、短信接收)的使用Ø 掌握服务的生命周期Ø 掌握服务的两种启动方式Ø 学会使用服务与 进行通信Ø 学会调用其他应用的服务(跨进程通信)Ø 了解HTTP协议Ø 学会使用HttpURLConnection、HttpClient访问网络提交数据Ø 了解AsyncHttpClient、SmartImageView开源项目的使用Ø 掌握Handler原理,会使用Handler进行线程通信Ø 学会使用多线程下载文件Ø 掌握图形图像处理,学会为图片添加特效、动画Ø 掌握设计AppWidget的设计方法Ø 掌握多媒体程序的设计,会使用MediaPlayer、VideoView。Ø 掌握传感器的使用,会使用重力传感器、加速度传感器等Ø 掌握Fragment的生命周期,学会使用Frament(2)能力目标Ø 开发环境的搭建、配置与使用Ø 移动APP和移动互联网产品的设计、开发、测试、维护Ø Android程序的发布流程(3)素质目标Ø 培养按时守时的软件交付观念和规范优化的程序代码的习惯Ø 培养诚实守信坚忍不拔的性格Ø 培养良好的自我表现、与人沟通能力Ø 培养良好的团队合作精神Ø 培养良好的团队合作精神(五)课程内容和要求序号单元名称教学内容与要求单元学时实践考核项目与要求实践学时1广播接收者1. 自定义广播的发送与接收过程2. 有序广播、无序广播和拦截有序广播3. 常用的广播接收者以及使用,并用这些广播接收者完成实际应用中的功能8项目:设计一个,根据关键词过滤经常接收到的骚扰短信要求:实现项目需求的功能42服务1. 服务的生命周期2. 服务的两种启动方式3. 服务和Activity进行通信4. 远程调用支付宝案例12项目:设计一个计时服务项目要求:能过实现计时开始、停止等服务63多媒体程序设计1. 能够实现音频播放2. 能够实现视频播放 3. 能够实现照相功能的使用8项目:实现音乐播放器软件要求:实现项目需求的功能44AppWidget1. 能够理解AppWidget的作用2. 能够实现AppWidget的设计及实现3. 能够处理AppWidget中的事件处理4. 能够改变AppWidget控件的状态8项目:设计一个AppWidget要求:熟练掌握AppWidget中的事件处理,实现项目需求的功能45网络通信1. HTTP协议2. 使用HttpURLConnection、HttpClient访问网络提交数据3. AsyncHttpClient、SmartImageView开源项目的使用4. Handler原理,会使用Handler进行线程间通信5. 使用多线程下载文件12项目:设计一个网页浏览项目要求:实现项目需求的功能66高级编程1. 图形图像处理,学会为图片添加特效、动画2. 补间动画、逐帧动画3. 传感器的使用,会使用重力传感器、加速度传感器等4. Fragment的生命周期,学会使用Fragment16项目:设计一个项目,包含三个页面,要求各个页面切换时加入动画并且页面使用Fragment编写要求:实现项目需求的功能8合计6432注:1. 根据学期教学周数(校历)的安排,微调教学时数,即总课时数可根据学期实际情况上下浮动,建议浮动不要超过10%。2. 各单元课时数可根据学生实际掌握情况适当增删。3. 具体教学内容可根据学生实际掌握情况酌情增删相关内容,特别是较高要求部分,如果学生基础较差,可以概要性介绍以节约部分课时,而加大实践教学和项目实战的课时。(六)教师任职要求专任教师兼职教师教学能力要求专业能力要求专业能力要求1了解Android应用程序开发流程与技术;2掌握Android应用程序打包发布的流程及方法;3熟练掌握Android应用程序开发平台的搭建及配置;4了解SQLite数据库的特点及使用方法;5掌握Android系统中操作硬件的方法。除专任教师专业能力外,还包括:1熟练掌握MVC架构和DAO开发模式;2了解业界的研究最新动向、最新技术、最新方法以及应用3具有创新、创业意识,了解企业管理和企业对员工的综合素质的要求4有2年以上的实际项目开发经验5具备项目开发以及团队驾驭和协调能力。1具备承担教育教学工作所必需的基本素质和能力。2普通话水平应当达到国家规定标准,有良好的语言表达和沟通能力。3具有良好的身体素质和心理素质。4有爱心、耐心和忍耐力,有良好的课堂驾驭能力。(七)教学条件与设施要求移动互联网应用开发课程课堂教学采用“教学做一体化”的教学模式,对专业实训室有教高要求。1.硬件要求Ø 配置服务器,用来存放教师提供的教学素材等教学资源;Ø 配置教师机,供教师示范操作使用;Ø 教师机和学生机,建议内存4G以上;2.软件要求Ø JDK1.6及以上版本Ø Android SDK2.2及以上版本Ø ADT15及以上版本Ø 必须实现全部计算机联网并按照多媒体教学广播软件,教师可将示范的内容通过广播软件显示在学生机的屏幕上,不建议使用投影仪。3.其他要求必须提供学生自由上机的时间,软件开发需要大量的课余时间进行练习,提供一个学习的环境。学生课余学习时间要达到上课课时的2倍以上。(八)实施建议1.教学建议Ø 在教学过程中,应立足于加强学生实际操作能力的培养,以工作任务引领提高学生学习兴趣,激发学生的成就动机。Ø 在教学过程中,由教师提出要求或示范,组织学生进行活动,注重“教”与“学”的互动,让学生在活动中增强重合同守信用意识,掌握本课程的职业能力。Ø 在教学过程中,应加大实践实操的容量,提高学生的岗位适应能力。Ø 在教学过程中,要应用多媒体、投影等教学资源辅助教学。Ø 在教学过程中,要为学生提供职业生涯发展的空间,努力培养学生参与社会实践的创新精神和职业能力。Ø 教学过程中教师应积极引导学生提升职业素养,提高职业道德。2.考核评价建议Ø 改革传统的学生评价手段和方法,采用阶段评价、目标评价、过程评价,理论与实践一体化评价模式。Ø 关注评价的多元性,结合课堂提问、学生作业、平时测验、实验实训、技能竞赛及考试情况,综合评价学生成绩。Ø 应注重学生动手能力和实践中分析问题、解决问题能力的考核,对在学习和应用上有创新的学生应予特别鼓励,全面综合评价学生能力。3.教材编写和选用建议争取组织本教学部教师编写移动互联网应用开发课程的校本教材,目前建议选用清华大学出版社李刚主编的Android疯狂讲义教材。教材编写,建议由校企双方人员共同编写。教材要从Android程序员的职业岗位能力要求出发,根据学生认知规律精心组织教材内容,采用通俗易懂的语言和丰富多彩的实例,使学生能够循序渐进地学习Android应用程序开发的基础知识和相关技术。由于本课程属于提高类课程,建议教材要以案例的形式编写,并具有一定的难度和深度。4.学生学习资源建议建议建立移动互联网应用开发课程的资源共享网站,将教师授课的PPT、教案、习题等资料进行共享,并开通网上交流和答辩平台。5.课程资源开发与利用建议Ø 注重实验实训指导书和实验实训教材的开发和应用。Ø 注重课程资源和现代化教学资源的开发和利用,这些资源有利于创设形象生动的工作情景,激发学生的学习兴趣,促进学生对知识的理解和掌握。同时,建议加强课程资源的开发,建立多媒体课程资源的数据库,努力实现跨学院多媒体资源的共享,以提高课程资源利用效率。Ø 积极开发和利用网络课程资源,充分利用诸如电子书籍、电子期刊、数据库、数字图书馆、教育网站和电子论坛等网上信息资源,使教学从单一媒体向多种媒体转变;教学活动从信息的单向传递向双向交换转变;学生单独学习向合作学习转变。同时应积极创造条件搭建远程教学平台,扩大课程资源的交互空间。Ø 产学合作开发实验实训课程资源,充分利用本行业典型的生产企业的资源,进行产学合作,建立实习实训基地,实践“做中学、学中做、边做边学”的育人理念,满足学生的实习实训,同时为学生的就业创造机会。Ø 建立本专业开放实训中心,使之具备现场教学、实验实训、职业技能证书考证的功能,实现教学与实训合一、教学与培训合一、教学与考证合一,满足学生综合职业能力培养的要求。6.其他建议Ø 总课时数可根据学期实际情况上下浮动10%左右Ø 学习情境课时数可根据学生实际掌握情况适当删减Ø 学习情境内容可根据学生实际掌握情况适当删减(九)附录1.常用术语解释Ø APIApplication Programming Interface(应用编程接口), 语言、框架以及类库对外提供的编码的接口。;Ø JVMJava Virtual Machine(Java虚拟机),它是一个虚构 出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的,。 Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在 Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指 令执行。;Ø AVDAndroid Virtual Device,表示Android的虚拟设备。;Ø SDKSoftware Development Kit(软件开发工具包): 软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件开发工具的集合;Ø ADTAndroid Development Tools:是集成到Eclipse上的一个插件,能够提供一个强大的开发环境来开发Android应用。2.常用专业英语单词Ø activity 活动Ø intent 意图Ø Content Providers 内容提供者Ø extend 扩展Ø implement 实现(用作动词) Ø service 服务Ø broadcast 广播Ø receiver 接收器Ø adapter 适配器Ø resource 资源3.典型案例(1)使用照相机拍照新建Android项目:takepicture 照相package: Layout包下布局文件 main.xml<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <SurfaceView android:id="+id/surfaceView" android:layout_width="match_parent" android:layout_height="match_parent" /> <RelativeLayout android:id="+id/buttonLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" > <Button android:id="+id/autoFocus"android:onClick="takepicture" android:text="string/autoFocus" /> <Button android:id="+id/takepicture" android:onClick="takepicture" android:text="string/tackpicture" /> </RelativeLayout></FrameLayout>public class MainActivity extends Activity private View layout; private SurfaceView surfaceView; private Camera camera; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(, ; setContentView(; layout = findViewById(; surfaceView = (SurfaceView) findViewById(; surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceView.getHolder().setFixedSize(176, 144); surfaceView.getHolder().setKeepScreenOn(true); surfaceView.getHolder().addCallback(new SurfaceCallback(); public void takepicture(View v) if(camera != null) switch(v.getId() case /内部异步处理照片,/参数1为快门按下去时产生的事件,参数二为照片的原始数据,参数三为经过压缩处理后的数据 camera.takePicture(null, null, new MyPictureCallback(); break; case camera.autoFocus(null);/参数为对焦后的事件 break; private final class MyPictureCallback implements PictureCallbackpublic void onPictureTaken(byte data, Camera camera) / TODO Auto-generated method stubtryFile jpgFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg");FileOutputStream outStream = new FileOutputStream(jpgFile);outStream.write(data);outStream.close();camera.startPreview();catch(Exception e)e.printStackTrace(); private final class SurfaceCallback implements Callbackpublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) / TODO Auto-generated method stubpublic void surfaceCreated(SurfaceHolder holder) / TODO Auto-generated method stubtrycamera= Camera.open();/打开摄像头camera.setPreviewDisplay(holder);/camera.stopPreview();Camera.Parameters parameters = camera.getParameters();parameters.setPreviewFrameRate(5);parameters.setPictureSize(1024, 768);parameters.setJpegQuality(80);parameters.setPreviewSize(640, 480);camera.setParameters(parameters);camera.startPreview();Log.i("MainActivity", parameters.flatten();catch(Exception e)e.printStackTrace();public void surfaceDestroyed(SurfaceHolder holder) / TODO Auto-generated method stubif(camera != null)camera.stopPreview();camera.release();camera = null; Overridepublic boolean onTouchEvent(MotionEvent event) if(event.getAction() = MotionEvent.ACTION_DOWN)layout.setVisibility(ViewGroup.VISIBLE);return true;return super.onTouchEvent(event); AndroidManifest.xml文件<uses-permission android:name=""/><uses-permission android:name=""/><uses-permission android:name=""/> <activity android:name=".MainActivity" android:screenOrientation="landscape"></activity>(2)音频文件的播放。新建Android项目:AudioPlayerpackage: Layout包下布局文件 main.xmlpackage ;public class MainActivity extends Activity /* Called when the activity is first created. */private EditText nameText;private String path;private MediaPlayer mediaPalyer;private boolean pause ; /是否暂停private int position;/记录停止时的位置 public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(; mediaPalyer = new MediaPlayer(); nameText = (EditText) findViewById(; TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(new MyPhoneListener(), PhoneStateListener.LISTEN_CALL_STATE); private final class MyPhoneListener extends PhoneStateListenerpublic void onCallStateChanged(int state, String incomingNumber) switch(state)case TelephonyManager.if(mediaPalyer.isPlaying()position = mediaPalyer.getCurrentPosition();mediaPalyer.stop();break;case TelephonyManager.if(position>0 && path!=null)play();mediaPalyer.seekTo(position);position = 0;super.onCallStateChanged(state, incomingNumber); protected void onDestroy() /Activity销毁时,释放mediaPalyer mediaPalyer.release(); mediaPalyer = null; super.onDestroy();/protected void onPause() / TODO Auto-generated method stub/if(mediaPalyer.isPlaying()/position = mediaPalyer.getCurrentPosition();/mediaPalyer.stop();/super.onPause();/protected void onResume() / TODO Auto-generated method stub/if(position>0 && path!=null)/play();/mediaPalyer.seekTo(position);/position = 0;/super.onResume();/public void mediaplay(View v) switch(v.getId() case String filename = nameText.getText().toString(); File audio = new File(Environment.getExternalStorageDirectory(),filename); if(audio.exists()/播放文件 path = audio.getAbsolutePath(); play(); else path = null; Toast.makeText(this, , 1).show(); break; case if(mediaPalyer.isPlaying() /判断播放器是否在播放 mediaPalyer.pause(); /暂停 pause = true; (Button)v).setText(; else if(pause) mediaPalyer.start();/继续 pause = false; (Button)v).setText(; break; case if(mediaPalyer.isPlaying() mediaPalyer.seekTo(0);/重开始位置播放音乐 else if(path!=null) play(); break; case if(mediaPalyer.isPlaying() mediaPalyer.stop(); break; /播放文件private void play() / TODO Auto-generated method stubmediaPalyer.reset();/考虑到会有重播功能,该方法把各项参数恢复到初始状态try mediaPalyer.reset();/考虑到会有重播功能,该方法把各项参数恢复到初始状态mediaPalyer.setDataSource(path);/设置数据源mediaPalyer.prepare();/进行数据缓冲mediaPalyer.setOnPreparedListener(new PrepareListener(); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();private final class PrepareListener implements OnPreparedListenerpublic void onPrepared(MediaPlayer mp) /当缓冲完毕时调用/ TODO Auto-generated method stubmediaPalyer.start();/开始播放AndroidManifest.xml文件<uses-permission android:name=""/>