推荐第1篇:android实习报告
实习报告
实习目的:
生产实习是计算机科学与技术专业重要的实践性教学活动,其目的是使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会生产中应用的感性认识,深入了解计算机在各个领域中的应用状况,学生在实习的同时,进行一定的社会实践与调查活动,对于提高学生的综合能力和全面素质具有重要意义。
实习内容:
Android主要有四大组件,分别为:Activity 活动、Service 服务、Broadcast receivers 广播接受者、Content Provider 内容提供者。还有上激活组件Intent。
1.Activity
Activity就是一个用户可以直接接触并看到的窗口,当新建一个Android Project后可以
看到在工程文件下的src中有一个已建好的java类FirstActivity,系统也会自动为他配备一个布局文件main.xml ,并在AndroidManifest中对此Activity进行注册。
用户想要自己创建一个Activity,首先创建一个java类继承自Activity,可以为他配备一个布局文件用来显示Activity创建后的布局。最后在主配置文件manifest.xml中对创建的Activity进行注册,这一步是必不可少的,没有注册Activity无法运行。
在manifest.xml中会有许多的Activity,但系统一次只能运行一个Activity,因此必须修选定一个最先运行的Activity。在注册Activity是加入
可指定当前的Activity为主Activity最先被执行。其他Activity可借助激活组件Intent
进行启动。通过Intent还可实现来了两个Activity之间传递数据
Activity具有生命周期,他有三种状态:运行状态、暂停信息和停止状态。运行态是在屏幕台前位于当前任务堆栈的顶部,即获取焦点的Activity。暂停信息是指失去了焦点但对于用户仍可见,此状态下当程序处于低内存是仍有可能被消除。停止状态是指完全被另一个Activity覆盖,但他仍然保留所有的信息与状态。
2.Android图形设计UI
Android UI控件一般写在布局文件中,此次实习所学控件主要有:TextView,EditText
Button、AlertDialog、RadioButton、CheckBox、Spinner和TableRow等。将这些控件及相应的属性写在layout下的布局文件中就可在与其绑定的Activity中显示相应的对话框,文本框,按钮等。
Android的界面布局是为了使控件能够更友好的呈现在用户的眼中。主要有:绝对布局Absolutelayout、线形布局LinearLayout、框架布局FramLayout、相对布局RelativeLayout和
表格布局TableLayout。其中框架布局适合于单张图片的显示。
3.Service 服务
Service事实运行在后台的一段代码。他与Activity一样有相似的生命周期,但不同的是他不能自己运行,必须通过某一个Activity或者其他的Context对象来调用。
Service可通过调用Context.StartService()启动,还可以通过ServiceConnection来访问Service。可以将其他的组件绑定到Service上。
4.数据存储
Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/
openFileOutput()方法的第二参数用于指定操作模式,有四种模式android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/
实习流程:
2月18——2月27日,老师对于ANDROID开发进行了详细的讲解,其内容包括:ANDROID 的背景介绍,发展过程,自身的优势与不足.Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解
2月28日——3月2日: 学生自己开发ANDROID 3GABS项目,老师答疑及验收
实习心得:
时间过的飞快,半个月的实习就要结束了,在这次实习中我们不仅学习了相关的
专业知识而且让我对Android系统又有了一个更加深入的了解,它也是我们计算机专业的一个新的方向并且发展很迅速,为了今后的发展我们还需不断努力学习!我国的信息产业还很落后,随着社会的发展和国家的支持,手机上网是社会发展的趋势,到时候手机上网将无处不在!之前我对Android系统的了解之停留在应用的层次上,对于更深层次的了解是很少的,通过这次实习,让我对Android系统有了一个更深层次的了解,同时它页使我意识到无论朝哪个方向发展,主要还是要扎实深刻地学习,同时也得不断努力探索!
IT业发展速度一直都是相当惊人的,不想被社会淘汰,我们就得必须不断地学习,现在的社会不再是一劳永逸,其他行业也是如此,我们必须不断地拿知识来武装自己,不然被淘汰那是肯定的!现在就业难原因其实在于竞争的家具,为了在竞争中得到成功,我们必须时时刻刻学习,还学到了很多做人做事的道理,不仅懂得了要想在计算机这一行立足必须具备扎实的技术理论知识,还必须学会与人沟通,合作的能力,同时更懂得了尝试的重要性,很多事情不是听说是困难的它就是困难的,只有亲自去做亲自去体会才知道,其实它并没有那么困难,这就是实践的重要性! 无论做什么事情都必须要坚持,只有坚持下去,才会成功!事在人为,就怕不做!我们不能怕失败,关键是要从失败中总结经验,带着勇气,带着自信,坚持不懈,踏踏实实。这一次的实习是短暂的,但我收获良多。回顾以前所走过的路,太多的无奈和迷茫,这次实习就像是我人生道路上的航标,为我指明了前景的方向,是我对自己的前途充满了信心,我不仅知道了在人生的岔道口更适合朝哪个方向前进!更知道了在今后的道路上怎么去武装自己!
实习结果:
推荐第2篇:计算机系Android实习报告
****毕业实习报告
学生姓名学
号专
业指导教师
****
毕业实习报告
**** **********
计算机科学与技术
***
达内时代科技集团有限公司毕业实习报告
系别:信息工程学院 年级:2012级 专业:计算机科学与技术
姓名:韩温玉 学号:201252383
前 言
为期三个月的认识实习即将结束,三个月的实习时间虽然不长,但是我从中学到了很多知识,关于做人、做事、做学问。这次实习丰富了我在这方面的知识,使我向更深的层次迈进,对我在今后的社会当中立足有一定的促进作用,但我也认识到,要想做好这方面的工作单靠这短短的实习是不行的,还需要我在平时的学习和工作中一点一点的积累,不断丰富自己的经验才行。我面前的路还是很漫长的,需要不断的努力和奋斗才能真正地走好。实习这三个月期间,我拓宽了视野,增长了见识,体验到社会竞争的残酷,在设计知识方面、技能、与人沟通和交流等方面都有了不少的收获。不但认识到自己在理论知识方面的欠缺,而且还意识到只有与实践结合起来,才能使自己的知识水平和自身素质有较大的提高。以便在以后能以更加积极的姿态面对今后的学习和工作中面临的挑战。为我今后在工作上能力的提高起到了促进的作用,增强了的竞争力,为以后立足增添了一块基石
I
一.达内时代科技集团有限公司介绍 1.实习目的
毕业实习是学生大学本科教学实践的主要环节,对学生的实践能力的培养具有十分重要的意义。学生通过本次实习,能够了解计算机专业的相关新技术,了解理论知识在实际应用中的作用,了解计算机技术的新发展,体验计算机专业的工作内容和工作特点,拓宽知识面,增强人际沟通能力,加强团队协作精神,为走向社会打下基础。
Android以Linux为核心的Android行动平台,使用Java作为编程语言。本实训是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训练,要求学生掌握java语言程序设计的基本技能和Android编程的应用,并较系统地掌握JAVA语言程序设计开发方法以及帮助文件的使用等,使学生通过本次实训,能够进行独立的Android应用程序开发,能够在实际操作中得到进一步的提高,为以后的学习和工作打下良好的基础。
2.公司简介
达内全称达内时代科技集团有限公司,是中国高端IT培训的领先品牌,致力于培养面向电信和金融领域的Java、C++、C#/.Net、软件测试、嵌入式、PHP、android等方面的中高端软件人才。
由于达内优秀的教学效果和行业领先的经营模式赢得了社会各界的广泛赞誉和好评,荣获了各界权威机构的颁奖:达内成为业界唯一的一家200
6、200
7、200
8、2009连续4年入选德勤评选的 “中国高科技高成长50强公司”、“亚太地区高科技高成长500强公司”,获得首届中国留学人才归国创业“腾飞”奖、中关村管理委员会指定的“软件人才培 养示范基地”、被《计算机世界》评选的“就业服务杰出贡献奖”、被《中国计算机报》评选的“最具影响力培训机构奖”、被搜狐评为“中国十大教育集团”、被腾讯评为“中国大学生心目中最具影响力的IT品牌”。
二.Android开发实习内容及过程
此次实习是对android的简单的应用与开发,也是对android各个控件的学习与实践。在java的环境中对界面,应用进行编程。本次实习重点完成了安卓开发计算器、安卓开发学生注册界面、安卓开发音乐播放器和安卓开发游戏连连 2
看这四个项目。
做学
生
时
学习
了linearlayout,tablelayout, AbsoluteLayout, RelativeLayout四种布局,分别为线型布局,表格布局,绝对布局和相对布局,并知道了如何通过这四种布局的相互嵌套来使程序的界面更加的友好,更加的让用户接受。并简单的了解了安卓目录下SRC,gen,res等文件夹中的文件在项目中的作用,学习了切换界面的类Intent。
然后学习了Button,TextView,Seekbar等android开发的控件,并且将这些控件都运用到了所作的学生注册界面中。
做音乐播放器时学习了关于音乐文件的调用,也学习了在主文件Main.java中先创建多媒体对象后,然后通过SD卡的文件路径来创建一个播放资源,然后在创建按钮对象,同时添加6个按钮对象创造各自的侦听方法,我们用ListActivity来布局播放界面,用ImageButton来实现播放器的开始,暂停的操作。
最后在开发连连看游戏时,将前面所学的知识进行综合与加深,也学习到了新的函数与控件,该游戏主要包括claGameView(游戏视类,处理游戏中出现的情况,包括界面生成,算法等)claGameActivity(处理游戏中的消息提示),claStartActivity(游戏菜单设计),claSetActivity(菜单中游戏难度设定)这些类。比如用random函数来对连连看进行重排列,还有用menu对游戏里的功能进行操作,还有用之前学到关于多媒体对象的调用将连连看游戏进行配乐。并且选用了网格对游戏界面进行了规划,以及对于相同图片的的消去,必须满足情况:1,图片相同;2,两个图片之间必须没有障碍物,可以用若干个垂直的直线连接起来;3,连接两个图片的直线线段的转折点不超过两个(连接线由X轴和Y轴
的平行线组成,即无拐点,一个拐点,两个拐点)
此次对android应用与开发的实习分为以下几个阶段。
首先,由老师带领我们对android以及开发软件eclimpse进行了一个大概的了解与操作,并且对开发语言基础java的基础知识和编程思想进行了一次简单的复习与加深。
然后老师开始带领我们学习android界面的开发,并且告诉我们如何可以将 3
界面尽量做得美观与方便,告诉我们作为程序的开发人员要为用户考虑,在这一阶段,我们开始试着学习和操作android的简单控件,包括TextView,Button等。
接着我们开始自己开发计算器,第一次将自己学到的控件进行组合搭配,并且开始学会怎么去监听按钮,通过对安卓常用类的学习,我们完成了计算器的常用功能。然而,对于计算机功能的实现,我感觉自己还没有办法做到自己想到的所有功能这让我对android更加满兴趣的学习下去。
当初步接触到了控件的开发与搭配后,我们开始开发学生注册界面,并且将所输入的信息反应到下一个界面中,在做这个的时候,我们又新学习了Seekbar,CheckBox等控件,让我们进一步学习了android中的常用控件。
然后是对音乐播放器的开发,此阶段我开始真正的接触到了生活中自己经常用到的软件的开发,并且也让我第一次感觉到需要将自己开发的软件做的美观, 于是我们开始学会调用背景图片,调用歌曲,并且学习了RadioButton控件,以及播放器中对音乐的下跳,循环播放等功能的学习与实现。
最后是开发游戏“连连看”,在此之前老师先向我们介绍了对于图片的处理等相关知识。
对于连连看,我们很熟悉,也明白其中的游戏规则;然而把它们用计算机语言展示出来却比用文字语言展示出来要难上很多。因此这个项目也是用时最多的一个项目,期间融合了算法设计以及之前几个项目所学的知识。虽然在参考资料下,完成了项目;但是也存在很多不足。当然也有自己特点的地方,比如添加了成功几步就奖励时间,比如游戏的配备音乐,以及音乐的开关按钮。
Android主要有四大组件,分别为:Activity 活动、Service 服务、Broadcast receivers 广播接受者、Content Provider 内容提供者。还有上激活组件Intent。
Activity就是一个用户可以直接接触并看到的窗口,当新建一个Android Project后可以
看到在工程文件下的src中有一个已建好的java类FirstActivity,系统 4
也会自动为他配备一个布局文件main.xml ,并在AndroidManifest中对此Activity进行注册。
用户想要自己创建一个Activity,首先创建一个java类继承自Activity,可以为他配备一个布局文件用来显示Activity创建后的布局。最后在主配置文件manifest.xml中对创建的Activity进行注册,这一步是必不可少的,没有注册Activity无法运行。
在manifest.xml中会有许多的Activity,但系统一次只能运行一个Activity,因此必须修选定一个最先运行的Activity。在注册Activity是加入可指定当前的Activity为主Activity最先被执行。其他Activity可借助激活组件Intent
进行启动。通过Intent还可实现来了两个Activity之间传递数据
Activity具有生命周期,他有三种状态:运行状态、暂停信息和停止状态。运行态是在屏幕台前位于当前任务堆栈的顶部,即获取焦点的Activity。暂停信息是指失去了焦点但对于用户仍可见,此状态下当程序处于低内存是仍有可能被消除。停止状态是指完全被另一个Activity覆盖,但他仍然保留所有的信息与状态。
Android图形设计UI Android UI控件一般写在布局文件中,此次实习所学控件主要有:TextView,EditText Button 、AlertDialog、RadioButton、CheckBox、Spinner和TableRow等。将这些控件及相应的属性写在layout下的布局文件中就可在与其绑定的Activity中显示相应的对话框,文本框,按钮等。
Android的界面布局是为了使控件能够更友好的呈现在用户的眼中。主要有:绝对布局Absolutelayout、线形布局LinearLayout、框架布局FramLayout、相对布局RelativeLayout和
表格布局TableLayout。其中框架布局适合于单张图片的显示。 3.Service 服务
Service事实运行在后台的一段代码。他与Activity一样有相似的生命周期,但不同的是他不能自己运行,必须通过某一个Activity或者其他的Context对象来调用。
Service可通过调用Context.StartService()启动,还可以通过ServiceConnection来访问Service。可以将其他的组件绑定到Service上。 4.数据存储
Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在 5
J2SE环境中保存数据到文件中是一样的。
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/
目
录
就
可
以
看
到
该
文件。 openFileOutput()方法的第二参数用于指定操作模式,有四种模式android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/
了
Context.MODE_WORLD_READABLE
或
者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。
结语
为期四个月的Android实训已经结束,在这一个月中我学习了很多,也得到了很多。实训是把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。在此期间学生能够初次体会到实际生产中的种种技能与经验。完成一项项项目能体现出独立思考能力。Android生产实习对目前应用现状进行了分析与比较,进而研究分析Android平台的系统架构和组件模型。在此基础上,基于Android平台设计和开发,实现对android编程的理解与应用,特别是在对于控件的应用产生很深的理解。
通过这近一个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
经过对Android的控件、布局、Activity、Service等一系列基础知识的学习,我对整个Android的开发有了大致的了解。因为我们都是第一次接触android,所以老师先给我们讲了一个基本上每个程序语言都要编的,经典的程
6
序,helloworld。通过这个小程序,我们知道了如何去创建一个android的项目,了解了android项目里的每个文件夹和文件的作用。教了一些常用的控件的使用,如:TextView,Button等等。然后老师又教我们如何布局,认识了linearlayout,tablelayout, AbsoluteLayout, RelativeLayout四种布局分别为线型布局,表格布局,绝对布局和相对布局,并知道了如何通过这四种布局的相互嵌套来使程序的界面更加的友好,更加的让用户接受。例如: 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样也可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理.在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。由于我们刚刚结束了java课程,马上展开了android实训,而android和java之间又有很大的联系,所以,我们学习android也比较容易入门。最终得到的成效也很好。
这次的实训再让我们认识到Android的同时,更加让我们认识到团队合作的重要性,在团队开发过程中,我们都有自己的分工,在老师的指导下,我们很好地完成了项目,团队的重要毋庸置疑,认识到团队的重要性,对我们在未来的工作中能够更加的适应,我们也会在未来的日子里更加深刻的认识到这次实训带给我们的,让我们能受益的体会与思考。
2015年12月 20日
指导教师评语:
评分: 指导教师签字: 年 月 日
推荐第3篇:Android程序员实习报告
本科生毕业实习报告
标 题:关于在“******公司”从事Andorid开发程序员实习的报告
实习单 位:********有限公司 实习时 间: 2015.3.2 实习岗 位: Android开发程序员 学 生 姓 名: 学 号: 院 系: 专 业:
年月日
题目:关于在“*****有限公司”从事Andorid开发程序员实习的报告
一、实习单位及岗位简介
(一)实习单位的简介*******有限公司是一家刚刚成立的私营公司,在职员工大部分为80后软件精英,主营软件开发(Java方向),电子产品批发零售,信息系统集成服务,公司行业主要是互联网、电子商务、计算机软件、计算机硬件等。公司地址在*********,现共有员工大概50人。主要有Web开发部、Jsp开发部、Android开发部等。经过不断地学习和实战,每个部门都有其实力强硬的带头人,整体上是一个积极向上,团结奋进的创业型企业。
企业文化:人才是企业最大的财富,优秀的产品,良好的服务是企业价值的体现;爱祖国、爱人民、爱事业和爱生活是企业凝聚力的源泉;尊重知识、集体奋斗、艰苦创业是企业发展的要求;责任意识、创新精神、敬业态度和精诚合作是企业文化的精髓;实事求是是企业的行为准则。
(二)实习岗位的简介
我所在的实习岗位是一个所属Android部的程序开发岗位,主要工作是配合组长,做一些力所能及的东西。同时组长会针对性的给我一些网站或者资料,让我学习,这些资料主要是和他现在做的项目相关的技术实现。我自己看一边做个基本的了解,同时对这些技术和框架有个大体的认识。然后他会再结合他的项目,有针对性的给我讲解这些技术的应用,是怎样在他的项目里实现的。然后会给我分配一个小任务,让我拿来练手的同时,又一遍温习和巩固先前学到的技术。
我的实习工作从一个APP的界面开始,慢慢熟悉这个APP的框架结构,然后把组长写好的核心算法放进框架中,实现其功能。总的来说,我在这个团队中主要担任辅助的工作,将其他人写好的模块放进项目框架中,从中不断学习Amdroid开发的技巧和别人的代码风格。
二、实习内容及过程
时间一晃而过,转眼间到公司已经两个多月了。这是我人生中弥足珍贵的一段经历。在这段时间里各级领导在工作上给予了我极大的帮助,在生活上给予了我极大的关心,让我充分感受到了领导们“海纳百川”的胸襟,感受到了大发人“不经历风雨,怎能见彩虹”的豪气。在对公司各级领导肃然起敬的同时,也为我有机会成为公司的一份子而自豪。 在段时间里,在领导和同事们的悉心关怀和指导下,通过自身的努力,各方面均取得了一定的进步。
来这个公司虽然才短短两个月,收获挺多的,由对项目的一窍不通到现在对它的流程以及相关的技术都有所了解,也让我深深体会到了沟通自学的重要性。所以我们每一步都有要集中注意力,争取把每一步都做好。
刚开始我们做这个程序的时候,大家都比较盲目,只是负责人说了一下,我们就开始进行编了在这个过程之种我们吃了许多的苦,有时候凌晨三四点我们还在加班,可最后做出的作品是输入速度太慢,我们的主管于是带领我们到他们一
楼的微机室是去看他们以前编写的程序;不看不知道,一看吓了我们一大跳,以前我们那有这样想过呀,只要能做出来,没有错误就行了,可是速度呢?人家一个小时输入的东西,我们的程序可能需要一个早晨,看完之后主管对我们说:这样的程序送你,你会用吗?
那个打击呀,辛苦了几天几夜,最终却是这样的一个结果。可打击归打击,我们又得重新来做!相对而言,我们这次要比以前有经验了,一次比一次成熟起来了,在经历了又一个一天一夜的奋战,我们终于又有新希望了,可是心情刚好,那么又传来了消息,说他们的数据又发生的变动,有了新的调整,这在以前我们也想过这个问题,也想好好的做,可是我们又一想工厂不是要实用吗?这方面变化的可能性很小,于是为了方期间我将有变量写进了代码之中,这一变,无疑宣布我要失败了。和我在一起的几个同事也是这种情况,所以我们这些没有开发过软件的充当软件高手的新手们又得重新面对新的问题了.失败,又一次被打败!
几天之后我们又做出了程序,很辛苦,此时我们才明白程序员的不易了,编程是一个见效特别慢的东西,而且对方又看不见,如果一不小心你的程序可能会无法打开,或者是说出现别的什么,那就完了,你几天的成果就什么也看不见了,不像别的东西,做了,可以让大家看得见。我的程序在最后的调试时出现了一点小故障,一时间我一点思路也没有了,所以我失败了。
当然比表面来看我是失败了,败的很惨;可是从某种意义上说我又达到了我的目的,因为只有失败的人永远都不会停下思考的脚步,激起了我沉睡的思想,使我一颗盲目的心有了方向,我不能这样输了,从那儿倒下去的,我会从那儿站起来的,顶着那么大的压力,我的体会绝不低于他们中的任何一个人,说实话,在一段实习期间,我真的有点撑不住了,我也想到过放弃,可我不能就这样轻言放弃,我失败了,我输掉的是技能,不是人格;可我退缩了,就会失掉了人格,我将失去了所有,失掉技能我还会追回来的!
人生的每一步旅途中,总有着一道无形的栏杆,每一次跨越需要很多的勇气,也不是每一次跨越都能够成功,失败是不可避免的,主要的是要敢于承认失败,面对失败,努力去做,解决它,有这个决心,我想人生会成功的,至少可以无憾!这次我想我会很用心的去学习,尽量把他做到完美,至少我自己要九十分的满意我才会交出我的作品。
虽然加入公司这个大家庭已经有不短的时间了,对开发技术掌握的还不是很深,对发现问题的处理还不是很全面,对分工的工作还没有形成系统的计划。随着对公司和工作的进一步熟悉,我也希望能够在今后的工作中更加迅速的提升自己的业务能力以及技术能力,我觉得多做一些工作更能体现自己的人生价值。“业精于勤而荒于嬉”,在以后的工作中我要不断学习业务知识,通过多看、多问、多学、多练来不断的提高自己的各项业务技能。学无止境,时代的发展瞬息万变,各种学科知识日新月异。我将坚持不懈地努力学习各种知识,并用于指导实践。在今后工作中,要努力做好开发人员的本职工作,把自己的工作创造性做好做扎实,为项目的开发以及公司的发展贡献自己的力量。
通过和大家一段时间的相处,我深切地感受到,我们公司部是一个团结、上进、充满活力的集体。每天大家都是笑脸相迎,即使面临很大的工作压力,办公室里仍然会听到笑声;面对客户,大家总是热情真诚;面对技术上的困难,大家总是互相帮助,直至解决难题。整个部门和睦相处,就像一个温馨的大家庭。而部门领导就是这个家庭中的家长,给每个人很大的空间自由发挥。从他们身上,
我真正体会到了敬人、敬业、高效、高水平服务的真实意义,体会到了服务部服务、奉献的意义,体会到了创造完美、服务社会的服务理念,知道了什么是创新就是生活。特别令我感动的是,每当我遇到困难向大家求助时,谁都会无私的告诉我。
我很庆幸自己能在这样有限的时间里,在这么和谐的气氛中工作、学习,和同事们一起分享快乐,分担工作。所以我努力向同事学习,不懂就问,认真完成领导和同事交给我的每一项工作。
实习,是开端也是结束。展现在自己面前的是一片任自己驰骋的沃土,也分明感受到了沉甸甸的责任。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值
人生就是经历着风风雨雨,在风雨中倒下去,然后站起来的时候,那时的彩虹最美丽!
三、实习收获与体会
学习Android有一段时间了,了解到在智能手机软件不断发展的今天,很多传统PC机上的应用正在向智能手机客户端转移。但是在学习的过程中有出错的操作以及随之而来的全英文报错内容,让人感觉到非常的郁闷和烦躁!可是随着时间的推移,随着掌握的知识的增加,不知道从哪天开始忽然发现从最初的面对Android时的烦躁到现在居然对Android有了一探究竟的兴趣!总结了一下自己学习Android以来的一些心得,和大家分享一下!
1、首先在学习Android的时候要有一份永不放弃的决心,从某些方面来说,学习Android是一件非常枯燥的事情,尤其是刚开始的时候,面对全英文的黑白操作界面,所以,持之以恒是最重要的!
2、自己创造一个Android学习的环境!由于Android有大量的操作需要记忆,很显然,靠死记硬背是不科学的!最好的方法就是实践,多操作,联系的多了,自然而然的就记住了,而且还是记得最牢靠的!
3、细微处着眼。Android是很严肃的,也许一个命令大小写的错误就可能导致出错,甚至多一个少一个空格,或者小符号,它也会给你个“小脸色”看看,这就要求我们在操作Android虚拟机的时候非常的细心,有足够的耐心!
4、留意Android代码的报错。出现操作错误的时候,它会报错,告诉你哪里出问题了,可能有的同学英语能力比较差,碰到报错的时候看不懂,也就不去管它,这就导致了排错非常的困难。所以,碰到报错的时候即使我们看不懂,我们也努力的去读,然后根据一字半字的去“猜”,然后等找到错误了它就会潜意识的让我们明白那句全英文的报错的大体意思,时间长了,碰到的次数多了,就算我们英语能力差,我们也可以“读懂”它报错的意思!
写在最后我想告诉大家的就是学习Android要多实践,即使刚开始失败了也要继续,再失败再继续,再失败再------学习Android失败是很正常的事情,希望大家能坚持,不要害怕失败。遇到问题的时候先尝试着自己解决,等解决不了的时候再请教别人!
不仅学Android要如此,学习其他方面的东西也应该如此。学习靠积累,持之以恒方能见效。
四、致谢
在此,感谢我的实习单位给了我这次实习的机会,能让我学到这么多在学校学不到的东西。同时也要感谢我的组长,能在那么繁忙的工作中还对我提出的问题耐心解答。也感谢我周围的同事,不因为我是一个实习生而对我有偏见,他们待人都很诚恳,也因为他们,我才能这么快的融入到这个团队中,带着轻松愉快,积极奋进的心态结束了这些天的实习。再次感谢帮助过我的这些人!
指导教师签名:
成绩评定:
年 月 教学系:(签章)年 月 日
日
推荐第4篇:android生产实习报告
生产实习报告
一实习目地
生产实习是把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际,巩固所学的知识,提高对实际生活的认识,积累经验。同时生产实习也是大学生以学生身份到工作者身份的一个重要过度阶段。在此期间,学生能够初次体会到实际生产中的种种技能与经验。完成一项项项目,能体现出独立思考能力。
Android生产实习对目前应用现状进行了分析与比较,进而研究分析了Android平台的系统架构和组件模型,在此基础上,基于Android平台设计和开发,实现对android编程的理解与应用,特别是在对于控件的应用产生很深的理解。
Android平台是目前最普遍的手机应用平台,android实习可以让我们与时代最新最广泛的软件开发联系起来,锻炼我们的学习能力,并且让我们可以更加人性化,清晰的为用户考虑。
二实习内容
此次实习是对android的简单的应用与开发,也是对android各个控件的学习与实践。在java的环境中对界面,应用进行编程。本次实习重点完成了安卓开发计算器、安卓开发学生注册界面、安卓开发音乐播放器和安卓开发游戏连连看这四个项目。
做学生注册界面的时候学习了linearlayout,tablelayout, AbsoluteLayout, RelativeLayout四种布局,分别为线型布局,表格布局,绝对布局和相对布局,并知道了如何通过这四种布局的相互嵌套来使程序的界面更加的友好,更加的让用户接受。并简单的了解了安卓目录下SRC,gen,res等文件夹中的文件在项目中的作用,学习了切换界面的类Intent。
然后学习了Button,TextView,Seekbar等android开发的控件,并且将这些控件都运用到了所作的学生注册界面中。
做音乐播放器时学习了关于音乐文件的调用,也学习了在主文件Main.java中先创建多媒体对象后,然后通过SD卡的文件路径来创建一个播放资源,然后在创建按钮对象,同时添加6个按钮对象创造各自的侦听方法,我们用ListActivity来布局播放界面,用ImageButton来实现播放器的开始,暂停的操作。。
最后在开发连连看游戏时,将前面所学的知识进行综合与加深,也学习到了新的函数与控件,该游戏主要包括claGameView(游戏视类,处理游戏中出现的情况,包括界面生成,算法等)claGameActivity(处理游戏中的消息提示),claStartActivity(游戏菜单设计),claSetActivity(菜单中游戏难度设定)这些类。比如用random函数来对连连看进行重排列,还有用menu对游戏里的功能进行操作,还有用之前学到关于多媒体对象的调用将连连看游戏进行配乐。并且选用了网格对游戏界面进行了规划,以及对于相同图片的的消去,必须满足情况:1,图片相同;2,两个图片之间必须没有障碍物,可以用若干个垂直的直线连接起来;3,连接两个图片的直线线段的转折点不超过两个(连接线由X轴和Y轴的平行线组成,即无拐点,一个拐点,两个拐点)。
三实习流程
此次对android应用与开发的实习分为以下几个阶段。
首先,由老师带领我们对android以及开发软件eclimpse进行了一个大概的了解与操作,并且对开发语言基础java的基础知识和编程思想进行了一次简单的复习与加深。
然后老师开始带领我们学习android界面的开发,并且告诉我们如何可以将界面尽量做得美观与方便,告诉我们作为程序的开发人员要为用户考虑,在这一阶段,我们开始试着学习和操作android的简单控件,包括TextView,Button等。
接着我们开始自己开发计算器,第一次将自己学到的控件进行组合搭配,并且开始学会怎么去监听按钮,通过对安卓常用类的学习,我们完成了计算器的常用功能。然而,对于计算机功能的实现,我感觉自己还没有办法做到自己想到的所有功能这让我对android更加满兴趣的学习下去。
当初步接触到了控件的开发与搭配后,我们开始开发学生注册界面,并且将所输入的信息反应到下一个界面中,在做这个的时候,我们又新学习了Seekbar,CheckBox等控件,让我们进一步学习了android中的常用控件。
然后是对音乐播放器的开发,此阶段我开始真正的接触到了生活中自己经常用到的软件的开发,并且也让我第一次感觉到需要将自己开发的软件做的美观, 于是我们开始学会调用背景图片,调用歌曲,并且学习了RadioButton控件,以及播放器中对音乐的下跳,循环播放等功能的学习与实现。
最后是开发游戏“连连看”,在此之前老师先向我们介绍了对于图片的处理等相关知识。
对于连连看,我们很熟悉,也明白其中的游戏规则;然而把它们用计算机语言展示出来却比用文字语言展示出来要难上很多。因此这个项目也是用时最多的一个项目,期间融合了算法设计以及之前几个项目所学的知识。虽然在参考资料
下,完成了项目;但是也存在很多不足。当然也有自己特点的地方,比如添加了成功几步就奖励时间,比如游戏的配备音乐,以及音乐的开关按钮。
四实习心得
通过这三个星期的毕业实习,我学到了很多关于Android系统的技术知识,虽然实习的时间短暂但我仍旧收获很多。首先,在每一天我认识了新的控件及相关的使用;其次,我们了解Android系统的历史和今后的发展以及相关Android系统的总体构成,然后,我们学会了Android编译系统的搭建,以及在这个环境下编写代码,最后制作了简单的音乐播放器以及连连看游戏等软件;在这个过程中,我真正的了解到了理论与实际相结合的必要性以及独立思考的重要性。
生成实习是为将来打基础的重要阶段,珍惜自己每一个工作的机会,不论什么人,什么学历,从事什么工作,好好的表现、展示自己的能力,不要错过好的机遇。没有一件事情是轻轻松松的,但每一件事都是让人成长的,经历一段过程,喜悦或是艰辛,尽管经历的方式不尽相同,但它的结果是相同的,我们都会因涉事而成长。
通过这次实习,开阔了我的视野。这次的实习初步为我解开了安卓的神秘面纱,对于脑海中的那个可望而不可即,可玩儿不可解的安卓平台初步走入了它的神秘世界;既感到兴奋又感到惊奇,更感到压力,方知知识海洋的广大,学员任重道远。这次实习让我看清自己需要什么,同时也让我吸取了许多学习以及和人相处的经验,这将对我以后踏足社会,谋生立业有很好的借鉴和帮助作用。今后,我会珍惜这些宝贵的经验,在人生的旅途中勇往直前,迎接时代的挑战。
推荐第5篇:android实习
21日
今天是实习的第一天,上午听了专家的讲座,并分组和项目立项。下午的时候,开始了对于Android的学习,我知道了Android系统的概述和特性,并且了解到了Android的体系结构和常用系统库,使我对Android有了简单的了解。
22日
今天开始正式接触Android软件的开发,先是要把开发的环境配好,工具(Eclipse)安装好。了解了Android应用程序的组成和目录结构。在下午的时候,开始学习Activity的系统原理和生命周期,并创建了Activity,对了Activity之间的跳转这,我遇到了问题,没有办法跳转,经过仔细盘查,原来是在跳转到的Activity中没有创建Intentintent = getIntent().在开发中要注意每一点,出现一点错误就可能使整个项目出现错误。
通过今天的学习,根据自己的项目,创建了项目所需要的Activity,并在需要的地方加入了跳转。
23日
今天上午,学习了文本框和编辑框:TextView ,EditText;还有按钮Button和ImageButton, 发现TextView是显示文本的,而EditText是输入文本的,通过EditText,我自己编写了一个计算器,使用了Intent传值,实现了简单的计算。在ImageButton中发现设置背景图标Background和src的不同,一个是设置按钮背景,一个是在按钮上加入了图片。我在自己项目的主页使用了ImageButton,使我的主页更加炫了。
下午的时候学习到了怎么样去布局,感觉使用RelativeLayout比LinearLayout方便,因为可以随便的设置布局,更加的随意,LinearLayout就会有很多的限制。不过LinearLayout布局相对简单,不繁琐,RelativeLayout布局相对麻烦,容易出现错误。
通过今天的学习,在自己的项目中的Activity中根据需要修改了布局,在我的主页中我使用了RelativeLayout,这样可以使我对主页的布局控制更加简单,更加随意,使我可以把主页布置的更吸引人。而其他的一些次要界面,我使用的是LinearLayout,这样更加方便。24日
今天学习到了Toast提示类,这个可以在点击按钮的时候显示提示内容,例如 Toast.makeText(first.this,”后退”,Toast.LENGTH_LONG).show();(first是我自己的文件名)。
对于menu类的用法和怎么取创建menu的监控方法有了了解,就是在public boolean onOptionsItemSelected(MenuItem item)中加入监控方法。在表单中我还用到了RadioButton和CheckBox。在下午的时候我知道了如何在内存卡中存数据。RadioButton 和 CheckBox和java web表单中的这些功能几乎一样。
在项目中的主界面中的,我加入了menu菜单,在里面加入了两个按键,一个是“关于 ”界面,是介绍项目的开发者和项目的版本的,还有一个是“退出”按键,并对其加入了Alert对话框,防止使用者不小心退出。而且也对返回键加入了对话框,在主界面中的按钮加入了Toast提示,提示的时间是SHORT,不是LONG,这样可以提醒使用者按下的是什么按键。
25日
今天老师讲解了图形框架,让我知道了如何去使用Canvas类,Paint类。并且学会了如何绘制自定义UI、控件。
在下午的时候,学习了绘制文字,图形和图像,并且自己动手制作了软件中的一些界面 26日
今天听了企业专家讲座,然后,老师为我们讲解了如何去创建证书和签名,并且指导我们在即动手去签名打包,最后告诉我们软件做的好的会发布到移动MM上去
27日
今天学习到了类似于Java中的Alert对话框,那就是AlertDialog,感觉Android和Java更加相似了,名字都差不多。当然,还知道了用Dialog显示的View是什么样的。虽然之前我就在自己的项目中用到了对话框,但是这次的学习使我对对话框的了解更加深入了,使用更加灵活了。
下午学习到的东西非常重要,那就是Spinner,Gallery,TabHost还有ListView类,知道了Gallery可以使多张图片通过滑动显示在手机上。项目的主页上有一个图集,就是使用的Gallery,才使大量的图片有了更好的操作。TabHost类似于网页的标签,项目的“英雄”显
示界面中的“技能介绍”和“出装”介绍就是使用了TabHost,才可以在一个页面上显示出来。
28日
今天是Android数据库的学习,今天学会了如何去创建数据表,如何在表中实现增删改查。下午的时候,通过创建ContentProvider来学习和了解ContentProvider。
29日
今天主要学习广播,知道了如何发送广播,监听广播,注册和取消广播,并且通过广播监听了手机接收短信。还学习了服务,了解了创建服务,启动服务,怎么样绑定服务和进程间通信,明白了服务的生命周期。
30日
今天是最后一天,有项目答辩,所以项目需要完成,我讲我小组的所有的内容集合起来,形成一个完整的项目,并签名打包
虽然这次培训时间很短,但是我从中学到了很多内容。我知道了安卓的一些基本知识,并对其有了一定的了解,可以对其进行简单的使用,可以
推荐第6篇:android开发实习报告总结
Android开发实习总结
有一名话叫做:不经过风雨,怎么见彩虹?我想改一下:不真正进入社会,怎能了解社会呢?
在这次实习中,给我收获最大的是我觉得很多工作需要我去摸索和探讨,要不怕吃苦,勇于激流勇进,有的工作虽然单挑又重复,但这是磨练意志最有效的方法,我告诫自己要认真完成,对每项工作都要他看成是公司对自己的一次考核,做到每一件事的过程中遇到困难,一定要争取不抛弃,不放弃,坚持“战斗”,只要希望还在,胜利一定属于我们。
在此次专业实习的过程中,我进入了广州外语通科技有限公司当任Android开发实习生,并参加了两次大项目的研发,从实际到理论,加深了我们对软件技术专业的理解,和对于与社会接轨的深刻感受。
作为学生,我们更多的是课本的知识的理解,理论的优势是我们的特色,但是怎样将理论结合实际却是摆在我们面前的难题。而参观广州外语通科技有限公司正视给了我们直观的解读。广州外语通科技有限公司建立了一整套符合国际标准的质量、成本和交付体系,软件开发质量控制和过程改善能力已达到了国际先进水平,秉承“用开拓的意识、创造新的价值”的企业理念,不断跟踪国际先进技术与管理思想,研发和提供优质软件产品和技术服务,为客户不断创造和提升价值。正是因为秉持这样的理念其完整的价值链和细致的软件服务,给了我们以软件技术专业的具体实际的体验。与此同时,广州外语通科技有限公司企业的参观使我们对中国物流企业的现状有了大概的了解,参观过程中不同仓库的设施和地面的设置的挑选更是让我们多了超出理论的认识。通过指导人员的讲解我们对中国物流企业的信息化有了大致的了解:中国物流企业信息化整体水平不高是其信息化建设的核心问题。这包括:标准不统一,资源浪费严重;大型应用软件系统应用不普遍,应用层次低;现有各软件系统之间相互孤立,形成“信息孤岛”;信息化建设发展不平衡,造成“信息鸿沟”;硬件设备的利用率不高,资源浪费严重;综合信息系统是物流业信息化建设的必然趋势。
如果说前两次的参观实习是给的我们直观的视觉冲突和心理震撼,那么后来的信息化讲座就揭开了信息化和软件技术专业的神秘面纱。通过经验丰富的演讲者的ppt演示我们了解了多个行业的信息化实施过程和具体的商务转变成软件技术专业活动的流程。现实中简单的商务活动一旦设计成成功的xx专业流程将涉及多个业务流程,整体的实施过程是复杂而艰难的。鉴于中国Android专业已经很成熟,各方面的支持还不够很完备,这使得中国Android专业的发展有很大的扩展性。
作为应届毕业生,在毕业前的这次专业实习,无疑是给了我们对Android专业的清晰认识,这也是最为软件技术专业专业的学生的最大感悟。当然实习中还有着更多的感触,包括学习,生活,工作各个方面。
就学习而言,专业实习它更偏重于应用,更加细致,要求也更加严格。作为应届毕业生的我们要想适合自己的工作,在实际中实现自己的理想,必需不断的增加自己的能力,做事情更加专注。
就生活而言,专业学习展示给我们看各个不同的行业的人们的生活,不同行业的人们将自己的行业融入自己的生活,这样大的人群的生活展示给我们未来的生活远景,选择什么样的生活也是我们现在的最重要的抉择。一旦下定决心,也就要开始为自己的生活做准备,胜利是属于有准备的人的。现在的我就要为自己的生活做准备,不断的充实自己。
就工作而言,无疑的本次的xx专业专业实习,展示给我们了多种职业,而作为应届毕业生,择业的选择是大多数人所面对的问题。就我们xx专业而言,面试时常遇见的问题就是“Android专业是干什么的?”或许大多数的学生跟我一样对android专业并没有清晰的概念,所以也并不能很好的回答这样的问题。不管怎样,勤劳的人是让人钦敬的,但所接触的朋友说“多年的工作让我清楚这个社会的运转不是控制在辛勤劳动的人手上,而是那一班根深帝固的政治家、资本家手中...工作中的认真负责不是为了讨好表现,而是为了要冶练自己的品性,是在为自己,不是为老板”。
上面的认识都是正面的,也是自己受益的主要部分,但就个人而言,本次的xx专业实习更多的是让自己认识到自己的不足。作为一个即将毕业的应届生,通过此次的实习,更多的是对大学四年的回顾和反省。进入了社会,和学校的感觉是完全不一样的。只有在刚进入公司的一个月里,大家还把你当作新人,时间久了公司的领导就把你与其它同事相比较;当你开始跑客户时,客户把你与做了很多年的销售相比较,没人把再把你当新人看待,而你把你当作一个正式的有能力的人使用。
看着那些员工忙忙碌碌的来来去去,坚定的态度是那么一点一滴在铸就起来,一个被人认可的人首先一定是一个认真负责的人,一个认真负责的人无论到哪里都可以站得正。相对于经验和技术而言,这些都是可以积累的,可以日久能熟的,但是否能有正确的态度却是因人而异的,有的人永远让人感觉畏锁。我从来没有把现在的工作当作实习,我就是认定我是在工作,而不是来学习东西的。我是为工作而学习,学习是为了把工作做得更好。
总的来说,我们这一次实习是比较成功的,大家都能学习到了很多在校园、在课堂上、课本上学不到的东西,也了解很多和懂得了做人的道理,特别是体会到生活中的艰辛和找工作的不容易。
感谢这次实习,感谢这次实习的教师,感谢为我们争取了这实习机会的领导。这次实习,一定会令我的人生走向新一页!
XXX
2016-01-08
推荐第7篇:Android实习心得
Android实习心得
刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想。
我在为期半个月的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。
1通过半个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的
跳转Intent管理,通过Bundle对数据在界面之间进行传输。
4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。
在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。
由于这次实习时间较短,对于Android应用程序的高级编程讲的很少,是这次实习中的不足。要想开发一些好的应用程序,还需要更多的知识支持。在做实习最后的项目时,遇到了很多平时没有遇到或者没有特别关注的问题,如常见的Activity忘记注册,对SD卡存取需要权限,在写SQL语句时细微的错误就可能导致程序运行错误。这些问题只有自己在实际开发中才能体会到并且解决,并且在解决后可以长时间的记住。
通过Android的实习,我们在大四毕业前,我们又掌握了一项新的前沿的开发技能,也有了更多的发展方向,这在以后的找工作的过程中无疑为我们增加了砝码,也可以成为我们的一项兴趣爱好,可以根据我们自己的需要设计一些小的程序。总之,在这次实习中,我获得了很多东西,提高了自己的编程技巧和编程方法,并且认识了Android应用程序的开发,以及加深了对Java的认识。
最后,通过实习,我收获了很多东西,特别是编程方面的,这对即将毕业的我们来说,这次实习是一次较为珍贵的充电,
推荐第8篇:Android实习总结报告
实习时间:学院:专业名称:学号:姓名:指导老师:实习地点:
Xxxxxx大学
专业实习报告
——201X.XX.XX
XXXXXXXXXXX学院 计算机通信
信息技术有限公司 201X.XX.X XXXXXXXXXX XXXX XXXX XXXXXXXX
一、实训地点
XXXXXXXX信息技术有限公司是一家隶属于XXXXXXXX集团主要从事软件开发、技术咨询与服务、IT教育投资、大学生实习实训等业务的民营科技型企业。
二、实训目的
到实际生产中的种种Android
Android现对androidAndroid
Android
android实习可以让我们与时代最目的:
1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。
培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。 培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。 通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容 包括:
1、确定开发的程序,收集和调查有关技术资料。
2、按软件工程步骤进行程序设计。
3、对完成的程序进行测试和完善。
4、完成课程设计报告。
三、实训内容
学习实训的内容主要包括如下:
开发环境:了解了android的起源与发展,学习安装 Eclipse 插件 (ADT)学习AndroidSDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具
Android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。res/ 资源(Resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。aets资源目录Android除了提供/res目录存放资源文件外,在/aets目录也可以存放资源文件。AndroidManifest.xml 项目清单文件 。
基础开发
一、1.Activity:是Android系统中的四大组件之一。2.Activity生命周期:void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy() 这七个方法定义了Activity的完整生命周期
二、Intent: Intent对他要完成操作的一种抽象描述,我们可以用intent来启动一个activity,发起一个broadcast和启动或绑定一个service。Intent使应用程序代码在运行时动态绑定成为可能,这也降低了不同代码之间的耦合性。Intent最常使用的方法是用来启动一个activity。Intent封装了他要执行动作的属性,这些属性最常见的是action和data Intent主要有以下四个重要属性:dAction:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。
Data:Data通常是URI格式定义的操作数据。例如:tel:// 。通过setData()方法设置。
Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。
Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。
三、Service四大主键职业,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。要完成比较耗时的任务;不需要用户界面;
四、BroadcastRecever 生命周期
1.在广播到达接收者时调用onRecever();方法
2.注册广播的几种方式包括:代码注册;项目清单注册;
五、Handler 1.Handler、Meage、MeageQueue和Looper之间的关系的关系,Handler的作用: Handler(一个线程可以有多个Handler但是只能有一个Looper), 关系:向消息对列(MeageQueue封装在Looper中)发送消息,Handler在创建时就会关联以个Looper默认关联当前Looper.作用:发送消息(Handler在主线程启动一个子线程,在子线程调用SendMaager(),发送到主线程的HandlerMeage()方法);处理消息(调用HandlerMeage()方法处理)。
数据存储
一、Sharepreference:保存应用系统的配置信息等的键值存储机制。(使用键值机制:Bundle ContentValues Map JSONObjecdt)
二、存储方式 1)是一种键值存储方式,可以持久化存储变量的值(Sharepreference存储的值都是基本类型的数据) 存储的数据是以xml文件的形式存在,存储在/data/data/packagename/shared_prefs目录中文件存储
I/O存储,主要是用于大文件的数据的存取,比如视频、图片等,该中存储方式在使用的过程当中更新比较困难。
文件存储的使用:Activity提供了openFileOutput(name,mode)方法和openFileInput()方法,用于读写文件数据.第一个参数name中不能包含路径分隔符“/”
三、Sqlite
自定义一个数据库的操作类,该类要extends SQLiteOpenHelper类
public cla MyHelper extends SQLiteOpenHelper { //类没有实例化,是不能用作父类构造器的参数,必须声明为静态
private static final String name = "china"; //数据库名称 private static final int version = 1; //数据库版本 public MyHelper (Context context) { //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类
super(context, name, null, version); } public void onCreate(SQLiteDatabase db) {
//该方法是在第一次实例化数据库操作对象的时候被调用
//可以在其中做一些初始化的工作,比如创建数据库表等
} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//在数据库的版本发生改变的时候会被调用
} }
四、ContentProvider 实现不同应用之间数据的访问和共享: 1)通过实现一个ContentProvider的抽象借口,将本应用的数据完全暴露出去,其中数据是以表的形式暴露的,暴露数据的时候要提供公共的URI。
2)其它应用通过android提供的ContentResolver接口访问ContentProvider暴露的数据。
五、网络存储
一、通过网络提供的存储空间来上传或者是下载那些存储在网络空间的数据信息。
网络编程:分为两种 1) 基于Socket的网络编程:该网络编程使用的协议主要是TCP和UDP协议
面试题:TCP和UDP区别:TCP:面向连接 可靠 延时长 效率低UDP:面向无连接 不可靠 延时短 效率高Socket+ServerSocket+TCP(套接字)UDP+DatagrarmSocket+DatagramPackage(数据报) 2) 基于Http的网络编程:
该网络编程使用的协议是面向Http协议; 该网络编程是以xml/json格式的数据为载体,来进行相互通信数据; Android基于http协议的网络编程,使用的标准接口有两个:HttpURLConnection以及apatch的接口HttpClient Http协议通信分为两种方式:get请求方式和post请求方式
六、Xml格式数据解析Json格式数据解析:
Dom解析:dom解析一般是把xml文档转换成一棵文档节点树,存储在内存中
优点:xml文档树在内存中完整存储,可以直接对该文档树的数据和结构进行修改;可以通过解析器去访问节点树上的任何一个节点;Dom解析的API使用简单方便。
缺点:当xml文档比较大的时候,该解析方式消耗内存资源 Sax解析:
优点:对内存的要求较低,方便解析xml的部分;
缺点:当xml文档结构复杂的采用SAX解析,编码过程比较复杂 Pull解析:sdk提供的内置解析方式,解析过程类似于sax解析,节省内存资源,而且比sax解析更加简单方便。
JSON格式数据:(1)key-value键值对象(无序的)(2)数组(有序的)
用到的内容包含:4个类一个异常
JSON格式数据的解析可以使用Google提供的gson解析工具 问题:xml格式数据解析和JSON格式数据解析的比较
四、实训心得:
1通过几个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的
跳转Intent管理,通过Bundle对数据在界面之间进行传输。
4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。
在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。
推荐第9篇:Android实训实习报告总结
一、引言 Android 学习已有一年半有余,先后做过两款游戏、三款应用和搭建一台服务端,也了解过一些Android相关的源码(JDK、SDK和NDK),学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
巩固和学习了更多的Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。android入门后,只会照着别人的葫芦来画瓢,即没有设计思想,也没有自主原创的代码,不好不好
于是乎,进了公司跟着项目走,用项目来驱动自己去学习和提高
公司是1+1开发模式,即1个美工 + 1个工程师,负责完成一个项目(主要是游戏开发),就完全需要自己设计游戏的布局、逻辑,以及各种动画,来增强用户体验的效果 当时主要是看Android官方的SDK API文档、中文API文档、JDK源码,对有些感念不清楚,就上论坛去找答案,如CSDN、ITEye、IBM、知乎,或者去啃google 官方的文档。
二、新掌握的Java基础学习
2.1、Activity View、Surfaceview的理解
掌握了常用控件、view、surfaceview使用方式,知道怎样去适配不同屏幕后,每天就是重复的工作,堆砌代码,难以进一步去提升自己
于是就自己给自个找点事干,自定义控件,如对话框背景等,或去google code找些开源的代码下来研究,学习人家的设计思想、模块功能的划分、代码组织结构等知识 这个过程中,涉及到的知识比较多,如版本管理工具SVN、Git、Mercurial,如设计模式
的思想,如怎样构建通用的开源应用框架(考虑sdk1.5等版本),如何适用在不同屏幕分辨率的手机上等等
学习中会不断遇到一个又一个新的问题,因此需要不断去查资料、再学习各种工具,逐步积累,潜移默化中自己掌握的知识和工具就多了,眼界也开阔了。
2.2、android-pulltorefresh
一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView、ViewPager、WevView、ExpandableListView、GridView、ScrollView、Horizontal ScrollView、Fragment上下左右拉动刷新,比下面johannilon那个只支持ListView的强大的多。并且它实现的下拉刷新ListView在item不足一屏情况下也不会显示刷新提示,体验更好。
成果: ListView能满足一个Android 项目的列表:
(1)下拉刷新ListView (2)下拉刷新及滑动到底部加载更多ListView (3)拖动排序的ListView,同时支持ListView滑动item删除,各个Item高度不
一、单选、复选、CursorAdapter做为适配器、拖动背景变化等。
2.3、Menu MenuDrawer 滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕上下左右划出,支持当前View处于上下层,支持Windows边缘、ListView边缘、ViewPager变化划出菜单等。
SlidingMenu 滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕左右划出,支持菜单zoom、scale、slide up三种动画样式出现。
ArcMenu 支持类似Path的左下角动画旋转菜单及横向划出菜单、圆心弹出菜单
android-satellite-menu 类似Path的左下角动画旋转菜单
radial-menu-widget 圆形菜单,支持二级菜单
2.4、异常处理
登录提交时,用户名、密码不能为空,否则不与提交。 数据库返回登录信息,处理登录成功与否的异常。
注册提交时,检查注册用户名,密码不能为空,密码与确认密码要相同,否则不与提交注册。
三、Android Xutils 框架的使用
在开发中还学习了一套强大的快速开发框架,Android Xutils 框架。
3.1、xUtils使用
xUtils 包含了很多实用的android工具。
xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...xUitls最低兼容android 2.2 (api level 8)
3.2、DbUtils数据库
android中的orm框架,一行代码就可以进行增删改查; 支持事务,默认关闭;
可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
支持绑定外键,保存实体时外键关联实体自动保存或更新; 自动加载外键关联实体,支持延时加载;
支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。
3.3、ViewUtils视图
android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定; 新的事件绑定方式,使用混淆工具混淆后仍可正常工作; 目前支持常用的11种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
3.4、HttpUtils网络请求 支持同步,异步方式的请求;
支持大文件上传,上传大文件不会oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD请求;
下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本内容的GET请求支持缓存,可设置默认过期时间和针对当前请求的过期时间。
3.5、BitmapUtils图片异步加载
加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象; 支持加载网络图片和本地图片;
内存管理使用lru算法,更好的管理bitmap内存;
可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。
四:发现式学习
工作情况及遇到的问题等:
4.1、Bitmap的生成
Bitmap实现在android.graphics包中。但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化。这必然是 某个辅助类提供了创建Bitmap的接口,而这个类的实现通过JNI接口来实例化Bitmap的,这个类就是BitmapFactory。
4.2、必要知识认知
1、在使用方法decodeFile()/decodeResource()时,都可以指定一个BitmapFacotry.Options。
利用Options的下列属性,可以指定decode的选项:
inPreferredConfig 指定decode到内存中,手机中所采用的编码,可选值定义在Bitmap.Config中。缺省值是ARGB_8888。
inJustDecodeBounds 如果设置为true,并不会把图像的数据完全解码,亦即decodeXyz()返回值为null,但是Options的outAbc中解出了图像的基本信息。 inSampleSize 设置decode时的缩放比例。
谈通过HttpGet和HttpPost向服务器提交请求,并从服务器返回结果信息。通过如下3步访问Http资源。
(1)创建HttpGet或者HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。 (2)使用DefaultHttpClient.execute方法发送Http Get或Http Post请求,并返回HttpResponse对象。
(3)通过HttpResponse.getEntity方法返回响应信息,并进行相应的处理。
如果使用HttpPost方法提交Http Post请求,还需要使用HttpPost.setEntity方法设置请求参数。
2、实习任务概述:
1.面向对象编程(封装,继承,多态)。
2.this关键字使用,JavaBean定义规范以及作用
3.方法的重载(overLoading),构造方法的作用
4.package(创建包)import(导包)的使用以及作用
5.super关键字使用
6.方法的重写(override)
7.访问修饰符(public,protected,默认,private)的使用
8.static修饰符的作用及用法
9.final修饰符的作用及用法
10.抽象类(abstract)的定义和特点以及使用
11.接口(interface)的定义 12.接口的实现(implements) 13.接口和抽象类的区别
14.对象包装器,装箱和拆箱的使用
15.数组的使用。
16.String类,StringBuffer类,StringBuilder类的使用以及三者之间的区别 17.JavaSE API的使用。
18.日期类Date,SimpleDateFormat的使用,数学类Math和Random类的使用
19.异常的处理(try,catch,finally,throw,throws) 20.Java中的集合类(List,Map,Set接口的使用以及Properties属性文件的操作) 21.编写音乐播放器应用 22.编写电话及短信应用 23.编写SD卡存取应用
3、实习所用软件简介: Eclipse
Eclipse 是一个开放源代码的、基于java的可扩展开发平台。就其本身而言,它只是一个框架 和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
JDK JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。
JDK包含的基本组件包括:
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为private runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。
Android SDK 指的既是Android专属的软件开发工具包。
PopupWindow是应用开发中经常用到的组建,使用它可以在当前屏幕的上层显示一个弹窗,同时也可以指定弹窗的位置以及背景色等特性,大大提高用户体验,那么这里我就以下几点介绍它的使用:
1 从指定的位置弹出这个窗口(淡入淡出动画)
2 从屏幕底部弹出这个窗口(带有透明度背景,自定义触摸其他位置自动关闭弹窗)
4.3、遇到的问题及解决方案
在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,CC++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。
android低版本工程(如1.5)放到高版本环境中(如2.2)可能会上述错误,解决方法如下:
1。 如果不修改android sdk版本,则使用project clean 命令作用于某工程即可。
(该处理方式只是在高版本中兼容了低版本工程,未真正意义上的升级) 2。 如果修改android sdk版本,则需要以下几个步骤:
1)修改SDK:选择工程,build path -->configure build path --->library 删除引用的低版本SDK,然后add External JARs,选择高版本SDK,OK,保存。
2)修改clapath文件: 该文件可能存在该项: 。
3) 修改AndroidManifest.xml在AndroidManifest.xml文件中,application标签后添加。
4) 修改default.properties(很重要): 该文件最后一行(前面没用#的)target=android-3 该成target=android-8,保存。 再看看工程和新建的android 2.2的工程结构就一样了。
五、实习心得
Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、OpenGL与3D应用开发、网络通信编程、Android平台的Web Service、传感器应用开发、GPS应用开发、Google Map服务等都是非常重要的知识点以及学习领域。
1.IDE
这半年来,从Eclipse到Android Studio,经历了两个IDE,在这里做一下简单的评价。
如果真要说,Android Studio是基本上大胜Eclipse的,至少Android Studio不会像Eclipse那样卡,公司配的电脑是渣了点,64位,win7,只有4G内存,跑Eclipse跑久了简直就是噩梦。
Android Studio的智能提示比Eclipse强多了,快捷键也很强大。至于工程的组织结构,Android Studio和Eclipse的差距还是很大的,但习惯了也不觉得有啥,哪种都行。
Android Studio有个不好的地方就是无法在同一个窗口显示多个工程,所以只能多开一个。。。
Android Studio采用Gradle构建,一开始的构建简直是丧心病狂。。。如果没有VPN,想都不敢想。。。构建上,Eclipse是比Android Studio快,但Android Studio导第三方库很方便,写一个Gradle脚本就行,并且配置上更加灵活。可以这样说:Eclipse是帮我们搭好了房子,我们只要熟悉它就行,而Android Studio是让我们用工具去搭建自己喜欢的房子。
更加重要的是,aar包只能由Android Studio构建,而谷歌现在推崇的方式就是aar包,所以以后开源的项目很有可能都是打成aar包,并且基本上,大部分的开源项目已经是采用Gradle构建。。。
Android Studio一个不好的地方就是升级太快,在半年的 时间内,我从0.8.1升级到1.0。。。可恶的是,每次升级,Gradle也升级,并且还断代。。。虽然么官方现在是版本稳定了,因为IDEA已经出了新版本了,但我试过1.0出事了,直接撤回0.9.4。。。
总体而言,未来Android开发一定是用Android Studio或者IDEA,Eclipse已经被官方抛弃了。。。 2.版本控制工具
我使用SVN比较少,刚工作的时候,刚好就是把SVN换成Git,但对于Git的使用方式也经历了一番变化。
一开始使用Git,就像SVN一样,一个master分支,大家都往上面推,一旦出事了,大家都卡住了。。。后来使用SourceTree做管理,分支切换,提交和解决冲突好多了。现在的开发模式是这样的:
master分支是正式分支,在没确保稳定之前是不会推东西上去的,dev分支是开发分支,而每个人本地也有一个dev分支,大家可以根据自己的需求在本地开多几个分支,这样就不会出现master分支无法发布的现象,因为master分支永远是正确的。
遗憾的是,由于使用的是工具,对命令行还是不熟悉。。。 3.数据库
数据库一开始采用的是原生,编写了一大堆Helper,而且光是存表,就已经写了很多代码,一个一个set进去。。。后来换成对象数据库LitePal,好多了,但LitePal本身的效率是原生的三分之一,但基本的情况已经足够了。。。不过,必须直视的是,LitePal的功能支持还不够完善,一开始不支持索引,后来的版本才支持,并且很多情况下,采用Sql语句都比使用LitePal的接口方法方便多了,LitePal的查找数据竟然是根据那个自增长的id。。。。只要稍微改一下,LitePal还是很好用的,尤其是对象一建好,表就建好了,特别方便,还有就是数据库的升级也非常方便。
有个不好的地方就是,可以直接操作表对象,这样很可能就会将不想存的数据存进表里,于是就封装了一下,不能直接操作表对象,而是操作实体对象,数据库的操作都是通过实体对象的接口方法,而接口方法调用的就是表对象的方法。 4.网络库和异步库
这部分的工作并不是我做的,但还是可以说一下。
一开始是自己封装的网络库,但封装得太复杂了,很难维护,而且它不是一个简单的网络库,是一个网络异步和本地异步一起实现的库,基于大量的回调,使用起来也是不错的。
后来换成Volley,不过就发现Volley的实现不太满足我们的要求,就用OkHttp将Volley的底层改掉,然后上层的接口形式采用链式调用的方式,代码的形式更加简单。
原生的异步AsnyTask简直就是个坑,它就是一个任务队列,多个任务执行并不是并发的,有可能就卡在其中一个出不来了。。。试过debug的时候跳进去就跳不出来了。。。后来就自己写了一个,也是采用链式调用的接口形式。
5.事件采用EventBus作为事件管理,简直就是爽。简简单单就可以跨线程,跨组件通信,很多以前要很复杂才能实现的功能一下子就可以实现了。
6.UI上,倒是很难讲的一个方面,采用ButterKnife减少了工作量,并且基本上采用组件思想,能够提炼出组件的就变成组件,方便替换,而且形式上,偏近于MVVM的形式,可以针对业务逻辑编写单元测试,原因就是逻辑业务都在ViewModel上。
推荐第10篇:Android 课程设计报告
课 程 设 计
课程名称: 嵌入式技术课程设计 设计题目: 基于Android系统的小查询工具 学 院: 信息工程与自动化学院 专 业: 计算机科学与技术 年 级: 2010级 学生姓名: 指导教师: 日 期: 2013/7/8
教 务 处 制
课 程 设 计 任 务 书
信息工程与自动化 学院 计算机科学与技术 专业 2010 年级 学生姓名:
课程设计题目: 基于Android系统的小查询工具 课程设计主要内容:
通过本课程设计,使学生巩固软件工程的基本概念、原理,熟悉安卓应用开发环境和技术,学会完成一个移动终端应用软件的分析、设计、编码测试和安装,将理论与实际相结合,强化学生的项目开发和团队意识,提高学生分析能力和创新能力
基本理论
1、Android系统的开发方法及基本原理
2、JavaEE应用程序设计开发技术 实验方法与基本要求
要求学生掌握Windows环境下Android系统开发的一般方法,AndroidSdk 集成开发环境的构建及JavaEE应用程序的开发。整个设计过程必须由学生自己独立完成,课程设计按二人一组,分组进行全过程的设计。
设计内容
1、Windows环境下构建Android系统的开发环境
2、基于Android模拟手机,设计手机应用程序
3、将程序下载的Android手机上应用
设 计 指 导 教 师 (签字): 教学基层组织负责人(签字):
年 月 日
目录
一、课程设计的目的及要求...................................3 1.1 课程设计的目的.......................................3 1.2 课程设计要求………………………………………………………………………3
二、Android应用程序开发背景....................................................................3 2.1开发背景...............................................3 2.2开发环境...............................................4
三、Android应用程序开发环境搭建............................5 3.1所需软件的下载…………………………………………………………………… 5 3.2相应软件的安装.........................................5
四、“小查询工具”的设计与实现„„„„„„„„„„„„„„„10 1.总体设计„„„„„„„„„„„„„„„„„„„„„„„ 10 1)界面设计„„„„„„„„„„„„„„„„„„„„„10 2)功能设计„„„„„„„„„„„„„„„„„„„„„12 2.详细设计„„„„„„„„„„„„„„„„„„„„„„„ 12 1)模块设计„„„„„„„„„„„„„„„„„„„„„12 2)编码实现„„„„„„„„„„„„„„„„„„„„„12 3.手机上运行截图„„„„„„„„„„„„„„„„„„„„ 14
五、总结与体会„„„„„„„„„„„„„„„„„„„„„„„16
基于Android系统的小查询工具设计
一、课程设计的目的及要求 1.1 课程设计的目的
1) 复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;搭建一个完整的安卓开发环境。
2) 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力;
3) 培养学生在项目开发中团队合作精神,创新意识及能力。
1.2 课程设计要求
1)通过Eclipse搭建一个完整的安卓开发环境。
2)在安卓开发环境上编写一个简单的安卓软件,并且能够在手机上运行。
二、Android应用程序开发背景 2.1开发背景
1.智能手机的市场
(1)功能多样化的智能手机挑战全球PC出货量
移动互联网时代的来临,直接促进了搭载智能操作系统、具有强大扩展性的智能手机、平板电脑等移动终端产业的蓬勃发展。来自美国最大的风险投资机构KPCB的数据显示,全球智能手机出货量正在以远高于台式电脑、笔记本电脑出货量的速度快速增长,该机构预计2013年全球智能手机出货量将达到4.13亿,超过台式电脑与笔记本电脑出货量的总和。
(2)智能手机的用户使用数量正在高速增长。据市场调研机构Gartner信息,2011年全球智能手机的总出货量将会达到4.68亿部,相比2010年实现了57.7%的增长,而谷歌Android操作系统将会在今年之内成为全球最大的智能手机操作系统。另外,全球市场调研机构IDC预计未来5年中国手机市场上,智能手机替代传统功能手机的趋势将日益明显,未来5年中国智能手机市场复合增长率将达到34.1%,人们对IT设备智能化的向往是这一增长率能够实现的主要因素,并且与其他国家相比,中国智
- 345
在path变量(已存在不用新建)添加变量值:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin(注意变量值之间用“;”隔开)
检验环境变量是否配置成功:“开始”-->“运行”-->输入“javac”-->\"Enter\",如果能正常打印用法说明配置成功!
- 7选择目标工具所在的文件夹跳出安装工具的目录
勾选目录点击Next,即可开始安装; 安装的详细目录:
安装完成后,可以在Preference处查找到:
4.安装SDK(SDK解压即可使用)
安装好以后,通过SDK下载开发所需的源文件包:
这个操作只有在联网的时候才能进行下载。
四、“小查询工具”的设计与实现
1. 总体设计
1)界面设计
主界面:
- 102)功能设计
对于这次课程设计编写的小查询工具,我们需要它能够帮助我们完成的功能为:手机归属地查询、身份证信息查询、区号邮编城市查询。对于小查询工具的每个查询功能,当用户点击相应的功能时,它能够帮助用户查询用户所需要的信息。
2.详细设计
1)模块设计
I、主界面模块(选题模块)
该模块是查询软件的主界面,在该模块界面有三个功能:手机归属地查询、身份证信息查询、区号邮编城市查询。用户根据自己所要查询的信息,选择相应的功能就可以查询用户想知道的信息。 II、手机归属地查询模块
在该模块中,当用户在输入框中输入一个正确的号码时,点击“开始查询”按钮,就可以查询到该手机号码的归属地。 III、身份证信息查询模块
在该模块中,当用户在输入框中输入一个正确的身份证号码时,再点击“开始查询”按钮,就可以查询到该身份证号码所代表的人的生日、性别以及出生地址。 IV、区号邮编城市查询模块
在该模块中,当用户在输入框中输入一个正确的区号或者邮编或者城市名称时,点击“开始查询”按钮,就可以查询到其对应的省份、城市、区号、邮编以及归属地。
2)编码实现:
各包内的JAVA源文件:
- 12
界面切换等活动的基本代码:
3.手机上运行截图
手机截图:
- 1516 -
第11篇:android天气预报报告
Android天气预报论文
学 院: 专 业: 学 号: 学生姓名: 指导教师: 日 期:
电子信息工程学院 计算机应用 11033801135
郎红 黄炜 2013年11月13
一、项目背景
现有的3G技术和移动互联网技术的快速发展,智能手机功能的不断增强,让基于Android平台的查询需求越来越多。
本软件就是利用现有的网络快速获取网络上的天气信息并显示到手机终端上,为用户提供实时的天气查询和近期天气查询服务,为工作、出行等带来便利。通过Web Service等技术让用户体验到前所未有的移动计算。
二、需求分析
(一) 功能需求
在这个综合示例中,有一个显示天气情况的用户界面,可以通过图片和文字显示当前和未来几天的天气状况,包括温度、湿度、风向和雨雪情况等。这些天气数据是通过后台服务获取的,这个后台服务按照一定时间间隔,从搜索引擎上获取天气预报信息,并将天气信息保存在后台服务中。示例还需要提供基于SMS短信的天气数据服务,其他手机用户可以向本示例所在的手机上发送SMS短信,在短信中包含特定的关键字,则可以将已有的天气情况通过SMS短信回复给用户。最后,每个被发送的SMS短信都会被记录下来,用户可以浏览或删除这些记录信息。
(二) 界面需求
从上面的描述中可以基本了解软件的功能需求,但为了将需求分析过程变得简单明了,首先找出用户界面上需要显示的内容。功能描述中有“显示天气情况的用户界面”和“用户可以浏览或删除这些记录信息”,除此以外,一般应用软件还应有显示配置信息的界面。因此,本示例应该包含三个用户界面: 显示天气预报的用户界面、显示已发送SMS短信的用户界面、浏览和设置配置信息的用户界面
(三) 内部功能
从用户界面出发,分析隐藏在界面后面的内部功能,这些功能则是程序正常运行的基础 (1)显示天气预报的用户界面 ;
①获取搜索引擎的天气数据 ②保存天气数据信息 (2)显示SMS短信的用户界面
①根据关键字监视SMS短信 ②发送包含天气信息的SMS短信 ③将发送SMS短信的相关信息写入数据库 (3)浏览和设置配置信息的用户界面
①将用户设置的配置信息保存到数据库 ②启动时读取数据库中的配置信息 ③支持恢复缺省设置
三、程序设计
(一) 用户界面设计
根据需求中的用户界面分析,应用程序应包含三个主要的用户界面,每个用户界面的显示内容
在“显示天气预报的用户界面”中,显示目标城市的当前的天气状况,包括城市名称、温度、湿度、风向、雨雪情况和获取数据时间等信息。在界面的下方显示未来四天的天气状况,但仅包括温度和雨雪情况
在“显示已发送SMS短信的用户界面”中,显示每个回复短信的时间、目标手机号码、城市名称、当天的天气状况和未来一天的天气状况
在“浏览和设置配置信息的用户界面”中,显示希望获取天气预报的城市名称、获取数据的频率和短信监视的关键字,并允许用户设置是否提供短信服务,以及是否记录回复短信信息
用户界面草图:
(二) 数据库设计
本示例主要有两种数据需要存储
配置信息:因为配置信息的数据量很小,从Android支持的存储方式上分析,可以保存在SharedPreference、文件或SQLite数据库中
SMS短信服务信息: SMS短信服务信息是一个随着时间推移而不断增加的数据,属于文本信息,而且有固定的格式,因此适合使用SQLite数据库进行存储
综合分析这两个需要存储的数据,选择SQLite数据库作为存储数据的方法 (1)配置信息:
配置信息中主要保存目标城市的名称,访问搜索引擎更新天气信息的频率,请求天气信息服务短信的关键字,以及是否提供短信服务和是否记录短信服务内容,配置信息的数据库表结构
(2)SMS短信服务信息:
SMS短信服务信息主要保存请求天气服务短信的发送者、短信内容、接收时间和回复信息的内容 ,SMS短信服务信息的数据库表结构
(三) 程序设计
程序模块设计:
从功能需求上分析,可以将整个应用程序划分为4个模块,分别是用户界面、后台服务、数据库适配器和短信监听器 。下图是模块结构图
从模块结构图中不难看出,后台服务是整个应用程序的核心,主要包含数据获取子模块和短信服务子模块。数据获取子模块负责周期性的从搜索引擎获取天气信息;短信服务子模块则负责处理接收到的服务请求短信,并发送包含天气信息的短信 。
后台服务由用户界面通过Intent启动,启动后的后台服务可以在用户界面关闭后仍然保持运行状态,直到用户通过用户界面发送Intent停止服务,或系统因资源不足而强行关闭服务 。
用户界面从后台服务获取天气信息,而没有直接通过网络访问搜索引擎的天气数据 。一方面是因为后台服务使用了工作线程,通过后台服务获取天气数据可以避免因网络通信不畅造成界面失去响应 。另一方面,在用户关闭界面后,后台服务仍然需要更新天气信息,以保证短信服务数据的准确性。用户界面通过直接调用数据库适配器,向SQLite数据库中读写配置信息,或对SMS短信服务信息进行操作 。
短信监听器是一个BroadcastReceiver,监视所有接收到的短信 。如果短信中包含用户自定义的关键字,短信监听器则会认为这条短信是天气服务请求短信,将短信的相关信息写入后台服务的短信服务队列 。如果用户在配置信息中选择无需提供短信服务,短信监听器仍然继续监听所有短信,只是后台服务不再允许将服务请求短信写入服务队列 。
数据库适配器封装了所有对SQLite数据库操作的方法,用户界面和后台服务会调用它实现数据库操作 。
四、项目功能描述
(一) 系统主要功能
本软件要完成在android手机上实现天气的即时预报。所涉及的功能有: 1.启动程序后可以进行城市、更新频率的设置;
2.可以通过图片和文字显示当前和未来的天气状况,包括温度、湿度、风向和雨雪情况等。使用效果图实现与相应天气的结合。
3.这些天气数据是通过后台服务获取的,这个后台服务可以按照一定的时间间隔,通过搜索引擎提供的公共接口获取天气预报信息,并将天气信息保存在本地数据库中。(二) 工程结构
在程序开发阶段,首先确定“天气预报软件”的工程名称为WeatherDemo,包名称为edu.hrbeu.WeatherDemo。然后根据程序模块设计的内容,建立WeatherDemo示例 ,WeatherDemo示例源代码的文件结构:
为了使源代码文件的结构更加清晰,WeatherDemo示例设置了多个命名空间中,分别用来保存用户界面、数据库、后台服务、SMS短信和天气数据的源代码文件 ,WeatherDemo示例的命名空间
WeatherDemo示例将不同用途的源代码文件放置在不同的命名空间中 。WeatherDemo示例的文件用途说明
Android资源文件保存在/res的子目录中 。/res/drawable目录中保存的是图像文件, /res/layout目录中保存的是布局文件 ,/res/values目录中保存的是用来定义字符串和颜色的文件 ,/res/xml目录保存的是XML格式的数据文件 。所有在程序开发阶段可以被调用的资源都保存在这些目录中 ,资源文件名称与用途:
(三)数据库适配器
数据库适配器是最底层的模块,主要用于封装用户界面和后台服务对SQLite数据库的操作。数据库适配器的核心代码主要在DBAdapter.java文件中 用户保存配置信息的类文件Config.java Config.java文件的全部代码如下:
1 package edu.hrbeu.WeatherDemo.DB; 2 3 public cla Config { 4 public static String CityName; 5 public static String RefreshSpeed; 6 public static String ProvideSmsService; 7 public static String SaveSmsInfo; 8 public static String KeyWord; 9 10 public static void LoadDefaultConfig(){ 11 CityName = \"New York\"; 12 RefreshSpeed = \"60\"; 13 ProvideSmsService = \"true\"; 14 SaveSmsInfo = \"true\"; 15 KeyWord = \"NY\";16 }17 } 从代码中不难看出,公有静态属性CityName、RefreshSpeed、ProvideSmsService、SaveSmsInfo和KeyWord,完全对应数据库中保存配置信息表的属性(参照表12.1)。在程序启动后,保存在数据库中的城市名称、更新频率、是否提供短信服务、是否保存短信信息和关键字等内容,将被读取到这个Config类中,供其它模块做逻辑判断时使用。
代码第10行的LoadDefaultConfig()函数,保存了程序内置的配置参数此函数会在两个情况下被调用,用户主动选择“恢复缺省设置”;首次启动程序时,用来初始化保存配置参数的数据库,
DBAdapter类与以往介绍过的数据库适配器类相似,都具有继承SQLiteOpenHelper的帮助类DBOpenHelper 。DBOpenHelper在建立数据库时,同时建立两个数据库表,并对保存配置信息的表进行了初始化。
在DBAdapter类中,用户界面会调用SaveConfig()和LoadConfig(),从SQLite数据库中保存和读取配置信息。保存配置信息时,SaveConfig()函数会将Config类中的公有静态属性写入数据库;反之,LoadConfig()会将数据库中的配置信息写入Config类中的公有静态属性 。
另一个会调用DBAdapter类的是后台服务,即WeatherService类 。后台服务主要调用SaveOneSms(SimpleSms sms)、DeleteAllSms()和GetAllSms()函数,分别用来保存SMS短信记录、删除所有SMS数据记录和获取所有SMS数据记录。 在GetAllSms()函数中,调用了一个私有函数ToSimpleSms(Cursor cursor),用来将从数据库获取的数据转换为SimpleSms实例数组 。
(四)短信监听器
短信监听器本质上是BroadcastReceiver,用于监听Android系统所接收到的所有SMS短消息,可以在应用程序关闭后仍然继续运行,核心代码在SmsReceiver.java文件中 。在介绍SmsReceiver类前,先说明用来保存SMS短信内容和相关信息的SimpleSms类。android.telephony.SmsMeage是Android提供的短信类,但这里需要一个更精简、小巧的类,保存少量的信息,因此构造了SimpleSms类,仅用来保存短信的发送者、内容、接收时间和返回结果。这里的“返回结果”指的是返回包含天气信息的短信内容。
SimpleSms.java文件完整代码:
1 package edu.hrbeu.WeatherDemo.SMS; 2 import java.text.SimpleDateFormat; 3 4 public cla SimpleSms { 5 public String Sender; 6 public String Body; 7 public String ReceiveTime; 8 public String ReturnResult; 9 10 public SimpleSms(){ 11 } 12 public SimpleSms(String sender, String body){ 13 this.Sender = sender; 14 this.Body = body; 15
SimpleDateFormat tempDate = new SimpleDateFormat(\"yyyy-MM-dd\" + \" \" + \"hh:mm:\"); 16 this.ReceiveTime = tempDate.format(new java.util.Date()); 17 this.ReturnResult = \"\"; 18 } 19 } 代码第5行到第8行的属性Sender、Body、ReceiveTime和ReturnResult,分别表示SMS短信的发送者、内容、接收时间和返回结果。 第15行和第16行在SimpleSms类的构造函数中,直接将系统时间以“年-月-日 小时:分:秒”的格式保存在ReceiveTime属性中。
SmsReceiver类继承BroadcastReceiver,重载了onReceive()函数。 系统消息的识别和关键字的识别并不复杂,只要接收android.provider.Telephony.SMS_RECEIVED类型的系统消息,则表明是Android系统接收到了短信。将短信的内容拆分后,判断消息内容是否包含用户定义的关键字,则可判断该短信是否为天气服务请求短信 。
最后,在AndroidManifest.xml文件中注册短信监听器SmsReceiver,并声明可接收短信的用户许可android.permiion.RECEIVE_SMS 。如果注册的组件不在根命名空间中,则需要将子命名空间写在类的前面 ,例如下面在代码第1行中,因为SmsReceiver.java文件在edu.hrbeu.WeatherDemo.Service命名空间下,而不在根命名空间edu.hrbeu.WeatherDemo下,因此注册组件时需要在类名SmsReceiver前添加.Service 。
1 2 3 4 5 6 (五)后台服务
后台服务是WeatherDemo示例的核心模块,在用户启动后持续在后台运行,直到用户手动停止服务,后台服务功能,发送包含天气信息的SMS短信(短信发送子模块,周期性的获取搜索引擎的天气数据(数据获取子模块) 。
1.短信发送子模块
后台服务在单独的线程上运行,首先调用ProceSmsList()函数,检查短信队列中是否有需要回复的短信,然后调用Get搜索引擎WeatherData()函数获取天气数据,最后线程暂停1秒,以释放CPU资源,WeatherDemo示例后台服务的核心代码在WeatherService.java文件中。下面是线程调用函数的部分代码 :
private static ArrayList smsList = new ArrayList(); 2 3 private Runnable backgroudWork = new Runnable(){ 4 @Override 5 public void run() { 6 try{ 7 while(!Thread.interrupted()){ 8 ProceSmsList(); 9 Get搜索引擎WeatherData(); 10 Thread.sleep(1000); 11 } 12 } catch (InterruptedException e) { 13 e.printStackTrace();14 }15 }16 }; ProceSmsList()函数用来检查短信列表smsList,并根据Weather类中保存的天气数据,向请求者的发送回复。WeatherService.java文件的ProceSmsList()函数代码如下。
private void ProceSmsList(){ 2 if (smsList.size()==0){ 3 return; 4 } 5 SmsManager smsManager = SmsManager.getDefault(); 6 PendingIntent mPi = PendingIntent.getBroadcast(this, 0, new Intent(), 0); 7 while(smsList.size()>0){ 8 SimpleSms sms = smsList.get(0); 9 smsList.remove(0); 10
smsManager.sendTextMeage(sms.Sender, null, Weather.GetSmsMsg(), mPi, null); 11 sms.ReturnResult = Weather.GetSmsMsg(); 12 SaveSmsData(sms);13 }14 } 发送短信是使用SmsManager对象的sendTextMeage()方法,该方法一共需要5个参数,第1个参数是收件人地址,第2个参数是发件人地址,第3个参数是短信正文 ,第4个参数是发送服务,第5个参数是送达服。sendTextMeage()方法的收件人地址和短信正文是不可为空的参数,而且一般GSM规范要求短信内容要控制在70个汉字以内。代码第8行的Weather.GetSmsMsg(),用来获得供回复短信使用的天气信息,因为考虑到短信的字数限制,仅返回当天和未来一天的天气状况 。
2.数据获取模块
天气数据是从搜索引擎提供的Web Service中获取的,调试WeatherDemo示例时需要网络环境,数据的获取地址是 http://www.daodoc.com/ig/api?hl=en&weather=New%20York。New%20York表示获取纽约(New York)的天气数据 ,%20表示一个空格。读者可以将上面提供的地址输入到Web浏览器,在浏览器中直接看到XML格式的天气数据。
WeatherAdapter类实现了利用URL获取位图的私有函数GetURLBitmap(),以及用来下载和解析XML数据的公有函数GetWeatherData()。后台服务在调用GetWeatherData()函数解析搜索引擎提供的天气数据时,会不断调用GetURLBitmap()函数,将XML数据中的天气图标根据图标地址下载到本地保存 。 GetURLBitmap()函数的代码如下 :
private static Bitmap GetURLBitmap(String urlString){ 2 URL url = null; 3 Bitmap bitmap = null; 4 try { 5 url = new URL(\"http://www.daodoc.com\" + urlString);6 } 7 catch (MalformedURLException e){ 8 e.printStackTrace();9 }10 11 try{ 12 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 13 conn.connect(); 14 InputStream is = conn.getInputStream(); bitmap = BitmapFactory.decodeStream(is); 16 is.close(); 17 }catch (IOException e){ 18 e.printStackTrace();19 } 20 return bitmap;21 } 第12行代码构造了支持HTTP功能的URLConnection ,第14行返回字节流,第15行使用字节流产生位图 ,第16行关闭字节流 。
GetWeatherData()函数首先根据指定的URL地址,从网络获取字节流数据,然后调用轻量级XML解析器XmlPullParser对天气数据进行解析,并将解析结果保存在Weather类的公有静态属性中 。
(六)用户界面
在用户界面设计上,采用可多分页快速切换的TabHost控件。WeatherDemo示例TabHost控件的每个标签页与一个Activity相关联,这样就可以将不同标签页的代码放在不同的文件中,而且每个标签页都可以有独立的选项菜单 。
WeatherDemo类是继承TabActivity的Tab标签页,共设置3个标签页 TAB1的标题为“天气预报”,关联的Activity为WeatherActivity ,TAB2的标题为“历史数据”,关联Activity为HistoryActivity ,TAB2的标题为“系统设置”,关联Activity为SetupActivity 。
WeatherDemo.java中的代码只是用户界面的框架,设置了Tab标签页的图标、标题和所关联的Activity,标签页中的具体显示内容还要依赖于每个Activity所设置的界面布局
界面布局包含 WeatherActivity、HistoryActivity、SetupActivity 1.WeatherActivity用户界面
WeatherActivity在启动时并不能直接显示最新的天气信息,用户需要通过选项菜单的“启动服务”开启后台服务,然后点击“刷新”获取最新的天气状况 。
选项菜单还提供“停止服务”和“退出”选项 。WeatherActivity使用的布局文件是tab_weather.xml,这是个较为繁琐的界面布局,多次使用了垂直和水平的线性布局 。
2.historyActivity界面
HistoryActivity主要用来显示SQLite数据库中的短信服务信息,显示的内容包括发送者的手机号码、时间和回复短信内容 。为了能够以列表的形式显示多行数据,并且定制每行数据的显示布局,这里使用了以往章节没有介绍过的ListActivity(Android.app.ListActivity)。
ListActivity可以不通过setContentView()设置布局,也不必重载onCreate()函数,而直接将显示列表加载到ListActivity,增加了使用的便利性。在WeatherDemo示例中,仍然使用setContentView()设置布局,这样做的好处是可以在界面中设置更为复杂的显示元素,例如在列表上方增加了提示信息“SQLite数据库中的短信服务信息”。下方的代码是HistoryActivity.java文件的onCreate()函数中的设置布局和加载适配器的关键代码。 1. setContentView(R.layout.tab_history); 2 setListAdapter(dataAdapter); 3.SetupActivity界面
SetupActivity主要用来保存和恢复用户设置的运行参数 ,第一次启动或恢复缺省设置(在选项菜单中)后,界面上会显示系统的缺省设置,包括城市名称、更新频率、是否提供短信服务、是否记录短信服务数据信息和短信服务的关键字。
SetupActivity.java文件中,主要功能集中在RestoreDefaultSetup()、UpdateUI()和SaveConfig()三个函数上。RestoreDefaultSetup()用来恢复系统的缺省配置 ;UpdateUI()会根据保存在Config类中的数据更新SetupActivity的界面控件,SaveConfig()根据界面配置更改Config类,然后调用数据库适配器的DBAdapter.SaveConfig()函数,将Config类中的配置数据写入数据库。
五、总结
通过该项目的实战演练让我受益匪浅,在这个过程中,我学会了很多知识,比如Android环境的搭建、Activity、Service、ContentProvider、SQLite的用法等,但我学会的最重要的一点是,利用现有的资源去解决问题,在图书馆、网络上寻找答案。
虽然,这个软件目前运行良好,但是我认为代码的健壮性还很差,在整个工程的构思方面也不足,用户操作界面还不够灵活,这些问题还需要今后逐一解决。
第12篇:android实习周记
实习周记
第一周
2月28日
今天是实习的第一天,上午听了老师的讲座,并分组和项目立项。下午的时候,开始了对于Android的学习,我知道了Android系统的概述和特性,并且了解到了Android的体系结构和常用系统库,使我对Android有了简单的了解。
2月29日
今天开始正式接触Android软件的开发,先是要把开发的环境配好,工具(Eclipse)安装好。了解了Android应用程序的组成和目录结构。在下午的时候,开始学习Activity的系统原理和生命周期,并创建了Activity,对了Activity之间的跳转这,我遇到了问题,没有办法跳转,经过仔细盘查,原来是在跳转到的Activity中没有创建Intent intent = getIntent().在开发中要注意每一点,出现一点错误就可能使整个项目出现错误。
通过今天的学习,根据自己的项目,创建了项目所需要的Activity,并在需要的地方加入了跳转。
3月1日
今天上午,学习了文本框和编辑框:TextView ,EditText;还有按钮Button和ImageButton, 发现TextView是显示文本的,而EditText是输入文本的,通过EditText,我自己编写了一个计算器,使用了Intent传值,实现了简单的计算。在ImageButton中发现设置背景图标Background和src的不同,一个是设置按钮背景,一个是在按钮上加入了图片。我在自己项目的主页使用了ImageButton,使我的主页更加炫了。
下午的时候学习到了怎么样去布局,感觉使用RelativeLayout比LinearLayout方便,因为可以随便的设置布局,更加的随意,LinearLayout就会有很多的限制。不过LinearLayout布局相对简单,不繁琐,RelativeLayout布局相对麻烦,容易出现错误。
通过今天的学习,在自己的项目中的Activity中根据需要修改了布局,在我的主页中我使用了RelativeLayout,这样可以使我对主页的布局控制更加简单,更加随意,使我可以把主页布置的更吸引人。而其他的一些次要界面,我使用的是LinearLayout,这样更加方便。
3月2日
今天学习到了Toast提示类,这个可以在点击按钮的时候显示提示内容,例如 Toast.makeText(first.this,”后退”,Toast.LENGTH_LONG).show();(first是我自己的文件名)。
对于menu类的用法和怎么取创建menu的监控方法有了了解,就是在public boolean onOptionsItemSelected(MenuItem item)中加入监控方法。在表单中我还用到了RadioButton和CheckBox。在下午的时候我知道了如何在内存卡中存数据。RadioButton 和 CheckBox和java web表单中的这些功能几乎一样。
在项目中的主界面中的,我加入了menu菜单,在里面加入了两个按键,一个是“关于 ”界面,是介绍项目的开发者和项目的版本的,还有一个是“退出”按键,并对其加入了Alert对话框,防止使用者不小心退出。而且也对返回键加入了对话框,在主界面中的按钮加入了Toast提示,提示的时间是SHORT,不是LONG,这样可以提醒使用者按下的是什么按键。
3月3日
今天老师讲解了图形框架,让我知道了如何去使用Canvas类,Paint类。并且学会了如何绘制自定义UI、控件。
在下午的时候,学习了绘制文字,图形和图像,并且自己动手制作了软件中的一些界面
3月4日
今天听了企业专家讲座,然后,老师为我们讲解了如何去创建证书和签名,并且指导我们在即动手去签名打包,最后告诉我们软件做的好的会发布到移动MM上去
3月5日 今天学习到了类似于Java中的Alert对话框,那就是AlertDialog,感觉Android和Java更加相似了,名字都差不多。当然,还知道了用Dialog显示的View是什么样的。虽然之前我就在自己的项目中用到了对话框,但是这次的学习使我对对话框的了解更加深入了,使用更加灵活了。
下午学习到的东西非常重要,那就是Spinner,Gallery,TabHost还有ListView类,知道了Gallery可以使多张图片通过滑动显示在手机上。项目的主页上有一个图集,就是使用的Gallery,才使大量的图片有了更好的操作。TabHost类似于网页的标签,项目的“英雄”显示界面中的“技能介绍”和“出装”介绍就是使用了TabHost,才可以在一个页面上显示出来。
6日
今天是Android数据库的学习,今天学会了如何去创建数据表,如何在表中实现增删改查。下午的时候,通过创建ContentProvider来学习和了解ContentProvider。
第13篇:Android实习个人总结
个人实习总结
专 业: 软件工程
班 级: 软件4班
学 号: 20122712
姓 名: 魏仁斌
组 别: 第4小组
2015年8月
时间过得真快,在华迪的实习一转眼间实习时间就过了。在这十几天时间里,我学到了很多在学校了学不到的东西,也认识到了自己很多的不足,感觉收益非浅,以下是我在实习期间对工作的总结以及一些自己的心得体会。
作为一名刚刚接触专业知识的大学生来说,如果在学习专业课之前直接就接触深奥的专业知识是不科学的,为此,学校带领我们进行了这次实习活动,让我们从实践中对这门自己即将从事的专业获得一个感性认识,为今后专业课的学习打下坚实的基础。实践是大学生活的第二课堂,是知识常新和发展的源泉,是检验真理的试金石,也是大学生锻炼成长的有效途径。一个人的知识和能力只有在实践中才能发挥作用,才能得到丰富、完善和发展。大学生成长,就要勤于实践,将所学的理论知识与实践相结合一起,在实践中继续学习,不断总结,逐步完善,有所创新,并在实践中提高自己由知识、能力、智慧等因素融合成的综合素质和能力,为自己事业的成功打下良好的基础。
通过此次实习,我仿佛自己一下子成熟了,懂得了做人做事的道理,也懂得了学习的意义,时间的宝贵,人生的真谛。明白人世间一生不可能都是一帆风顺的,只要勇敢去面对人生中的每个驿站!这让我清楚地感到了自己肩上的重任,看清了自己的人生方向,也让我认识到了工作应支持仔细认真的工作态度,要有一种平和的心态和不耻下问的精神,不管遇到什么事都要总代表地去思考,多听别人的建议,不要太过急燥,要对自己所做事去负责,不要轻易的去承诺,承诺了就要努力去兑现。
我知道工作是一项热情的事业,并且要持之以恒的品质精神和吃苦耐劳的品质。我觉得重要的是在这段实习期间里,我第一次真正的融入了社会,在实践中了解社会掌握了一些与人交往的技能,并且在次期间,我注意观察了前辈是怎样与上级交往,怎样处理之间的关系。利用这次难得的机会,也打开了视野,增长了见识,为我们以后进一步走向社会打下坚实的基础。
在实习中,我们项目小组的工作任务是开发一个婚恋信息管理系统。此次我在项目小组中担任的是PM即项目经理的职务,担任这个职务对我来说是一个不小的挑战。我们小组在确定任务之后进行了明确的项目分工然后开始了我们各自的任务。
在这过程中我在专业知识上得到了很多的进步。
我学到了很多关于软件行业的知识,重新了解了很多知识,对Java编程语言有了跟加深刻的了解,同时学到了Android编程技术,并且对数据库有了新的认识。
我了解了在软件开发之中编写代码有一个良好的习惯是多么的重要。因此规范的编码在软件开发之中是必不可少的。良好的编码习惯会增强代码的可读性,是的开发的软件具有很高的维护性,会使得我们的工作事半功倍。
我还体会到了要开发一个项目进行正确的计划与管理是多么的重要。软件开发过程是一个十分严谨的过程,每个阶段都拥有分厂明确的任务,而我作为项目经理,因此需要我对我们的项目有一个足够的了解。然后对小组成员进行正确的任务分工,明确每个人的任务,大家共同努力完成我们的计划。
在公司实习不同于在学校学习,在学校我可以很自由,很散漫,可以根据自己的喜好做自己想做的事。然而在公司实习我就不再只是一个学生,而是一个公司员工,我必须要都对自己的一言一行负责。实习期间,我从末出现无故缺勤。我勤奋好学.谦虚谨慎,认真听取老师的指导,对于别人提出的工作建议虚心听取。并能够仔细观察、切身体验、独立思考、综合分析,并努力学到把学样学到的知道应用到实际工作中,尽力做到理论和实际相结合的最佳状态,培养了我执着的敬业精神和勤奋踏实的工作作风。也培养了我的耐心和素质。
在实习工作中,我了解到了与人沟通合作是多么的主要。我作为项目经理这方面尤为明显。我每天都需要与组员沟通了解组员的工作完成进度,分配各自的任务并且对工作中出现的问题进行处理。此次的实习任务比较艰巨由于小组成员较少,我们的工作量比较大,所以团队合作非常的重要。软件开发不是有一个厉害的人就可以很好地完成,同时也并不是人多就可以做好。必须是作为一个团队大家一起努力,按照进度有计划地进行。只要团队之中有任何一个人没有完成任务,那就会导致整个项目无法正常进行。
我想,通过这次实习让我认清了自己的很多不足和缺点。第一个就是缺乏工作经验。因为自己缺乏经验,很多问题而不能分清主次,还有些培训或是学习不能找到重点,随着实习工作的进行,我想我会逐渐积累经验的。第二是工作态度仍不够积极。在工作中仅仅能够完成布置的工作,在没有工作任务时不能主动要求布置工作,若没有工作做时就会松懈,不能做到主动学习,这主要还是因为懒惰在作怪,在今后我要努力克服惰性,没有工作任务时主动要求布置工作,没有布置工作时作到自主学习。
扎实的专业知识是提高工作水平的坚实基础.在学校学习专业知识时,可能感觉枯燥无味,但当工作以后,才会发现专业知识是多么的重要,因为在日常工作中要处处用到。要想提高我的工作效率,工作质量,很多知识只是知道是远远不行的,而是要精通。作为一个IT人员必须要有过硬的专业知识,要拥有较强的学习能力。时代在不断的发展,不断地进步。而信息行业的变化更是无比迅速。所以我们每时每刻都不能停下学习的脚步,我们只有通过不断的学习来充实自己,完善自己,才能在工作中更好地发挥自己的水平。
通过这一段时间的实习,从中获得的实践经验使我终身受益,我相信我在这次实习中的收获会在我以后的实际工作中不断地得到印证,我会持续地理解和体会实习中所学到的知识,期望在未来的工作中把学到的理论知识和实践经验不断的应用到实际工作中来,充分展示我的个人价值和人生价值,为实现自我的理想和光明的前程而努力。在这十几天时间里,我受益非浅,收获良多。我不仅学到了许多关于专业的知识,最重要的是进一步体会到了做人的原则。作为一个公司员工,我们需要规规矩矩做人、踏踏实实做事。在公司工作,就是进入了社会,在公司之中我们做人一定要正直、要实事求是,诚以待人,人品对一个人来说非常重要的。我充分的体验到了你如何待人,他人也会如是回报。总之,在实习的十几天时间里,我们脱离了学校的庇护,开始接触社会、了解我们今后工作的性质。不但增长了专业知识,还学习到了不少为人处事的方法。
回想自己在这期间的工作情况,不尽如意。对此我思考过,学习经验自然是一个因素,然而更重要的是心态的转变没有做到位。现在发现了这个不足之处,应该还算是及时吧,因为我明白了何谓工作。在接下来的日子里,我会朝这个方向努力,我相信自己能够把那些不该再存在的“特点”抹掉。感谢老师们在这段时间里对我的指导和教诲,我从中受益非浅。
本次实习使我第一次亲身感受了所学知识与实际的应用,理论与实际的相结合,让我们大开 眼界,也算是对以前所学知识的一个初审吧!这次生产实习对于我们以后学习、找工作也真是受益菲浅。在短短的十多天时间里,我初步让理性回到感性的重新认识,也初步的认识了这个社会,对于以后做人所应把握的方向也有所启发。
这十几天不仅仅是去工作,更重要的是学到了一种工作方法,一种工作态度,一种应对不同问题的经验,一种面临难题的解决思路,当然也注意到了一些自身的问题,意志不够坚定,中途有退出的想法,遇到问题有畏难情绪,但我最终还是坚持下来了,总的来说实习还是收获不少。
我很感谢学校以及实习单位给我们安排这次实习,让我学到了很多在学校所学不到的东西.让我学会了如何与人相处,学会了面对困难,学会了独立思考问题,从中收获了毅力,收获了一份坚持。
我会把这此实习作为我人生的起点,在以后的工作学习中不断要求自己,完善自己,让自己做的更好。
第14篇:Android实训报告
時間過得飛快,一週的實訓馬上就要結束了。在這次實訓中我不僅學習了相關的專業知識,而且讓我對Android系統有了一個更加深入的瞭解,它也是我們專業的一個新的方向並且发展很迅速,為了今後的发展我們還需不断努力學習!我國的信息產業還很落後,隨著社會的發展及國家的支持,手機上網必然是社會發展的趨勢,到時候手機上網將無處不在!我對Android系統的瞭解只停留在應用的層次上,對於更深層次的瞭解是很少的,通过這次實訓讓我對Android系統有了一個更深層次的瞭解,同時它也使我意識到無論朝哪個方向發展,主要還是得扎實、深刻的學習,同時也得不斷努力探索。
IT業的發展速度一直都是相當驚人的,不想被社會淘汰,我們就必須不斷的學習,現在的社會不再是一勞永逸,其它行業也是如此,我们必須不斷的拿知識來武装自己,不然被淘汰那是肯定的!現在就業難的原因其實在於競爭的加剧,為了在競爭中取得成功,我們必須時時刻刻刻學習!
在Android編程過程中巩固熟悉了Java的編程。由於Android應用程序的開發離不開Java的支持,所以基礎的Java知識是必須的。Android系统是基於Linux的手機操作系統平臺,要深入學習Android,不僅僅是有Java和Android應用開發,必須要具備Linux,C/C++高級編程才能深入的涉及Android Framework和Android内核開發。成為Android開發
的高素質人才。所以,在後續對Android的學習中可能会看一些較底層的書籍。
由於這次實訓時間較短,對於Android應用程序的高级编程學的很少,是這次實訓中的不足。要想開發一些好的應用程序,還需要更多的知識支持。在實訓時,遇到了很多平時沒有遇到或者沒有特别關注的問題。這些問題只有自己在實際開發中才能體會到並且解决。
通过對java以及Android的學習,讓我又學會了一門編程語言,這對於我以後的學習工作都會有很大的帮助。回顧以前所走的路,太多的是無奈和迷茫,這次实训就像是我人生道路上的航標,為我指明了前進的方向,使我對自己的前途充满了信心,同時也知道了自己的前進方向。
第15篇:Android专业调研报告
Android专业设置的调研报告
一、Android简介与发展历程
1、Android简介
Android 是Google历经数年和投资数亿美元开发出来的智能手机系统,是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。Google也发起了围绕Android的组织——开放手机联盟,其英文全称为“Open Handset Alliance”。 它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。
随着各大移动终端生产商大力开发和生产基于Android的移动智能设备,Android迅速得到业界和社会的认可,并成为整个产业的热点,基于Android平台的各类人才逐渐成为各大企业竞相争夺的焦点。而且Android是一个开放的系统,不管是企业还是个人都可以参与来表达自己的创意和想法。
2、发展历程
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。 根据市场研究公司Gartner的统计数据显示,2010年第二季度,谷歌Android移动操作系统的市场份额上升至17.2%,成功取代苹果IOS晋升为全球第三大移动操作系统。在2010年第二季度一系列最新智能手机发布以后,Android操作系统在美国个人消费者市场上销售的所有智能手机中所占份额为33%,超过RIM的28%和苹果的22%。2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。
Android是目前开放性最强的移动设备综合平台,使得电信运营商、手机制造商以及产业链各环节能够更好、更快地将产品推向市场,同时降低成本。和中国移动一样,中国联通的手机操作系统也是基于Android进行深入二次开发的。在这数年中,Android的发展日新月异,具体的发展历程如下: Android 1.1
发布时间:发布于 2009 年 2 月
代表手机:T-MOBILE G1
Android 1.5
发布于 2009 年 5 月
代表手机:摩托罗拉CILQ
Android 1.6
2009 年 9 月发布
代表手机:索尼爱立信 X10
Android 2.0
2009 年 10 月 26 日
代表机型:摩托罗拉XT800,HTC G6
Android 2.0/2.1 Eclair
2009 年 10 月 26 日,又一个主要版本升级以创纪录的速度放出。这次,大版本升级到了Android 2.1 “Eclair法式奶油夹心甜点”。
Android 2.2 Froyo
谷歌于北京时间2010年5月20日晚上10:30点在旧金山Moscone会展中心举办 Google I/O 2010大会第二天的会议,Google正式发布了代号是“froyo 冻酸奶”的Android操作系统2.2版。相对于上一版本的改变:整体性能大幅度的提升,3G网络共享功能,Flash的支持,App2sd功能,全新的软件商店,更多的Web应用API接口的开发。
Android 2.3 Gingerbread
北京时间12月7日凌晨,Google正式对外发布了他们的下一代智能手机操作系统Android 2.3也就被大家所熟知的Android Gingerbread系统。虽然在版本号方面Android 2.3相对于前作而言的提升并不算多,但是从功能以及界面的变化上来看还是十分明显的。
Android 2.4
就像Android 2.0和2.1版本都使用Eclair(法式奶油夹心甜点)一样,Android
2.3和2.4将会共享Gingerbread(姜饼)代号。这两个版本之间的变化不会太大,但是会有不少功能更新。
Android 3.0 Honeycomb
2011年2月3日凌晨,谷歌正式发布了专用于平板电脑的Android 3.0Honeycomb系统。这是首个基于Android的平板电脑专用操作。首款采用 Android3.0系统的是MOTOXOOM。
Android 4.0 Ice Cream Sandwich
2011年10月19日上午十点,谷歌与三星联手在中国香港举办发布会,公布有关Android 4.0(Ice Cream Sandwich,冰淇淋三明治)系统信息。Android4.0 拥有十大重点新特性。集成谷歌电视和Chrome OS的智能停放 ,运行速度得到进一步提升。
二、Android专业设置的原则
1、根据社会需求增设专业方向。Android的专业设置调整依据二十一世纪我国社会发展状况,经济建设情况和本地经济发展的需求,人才需求的情况,积极稳妥地设置专业、调整专业,以适应社会经济发展和企业的人才需求。
2、Android的专业设置以学校发展、面向市场为主,突出对学生创新能力和实践能力的培养,有利于树立现代化教育教学观念,优化课程结构,改进教学方法,促进学校内部各项改革、各项资源的合理配置。
3、Android的专业设置是在教育部高职高专教育指导性专业目录及有关行业制定的相关专业设置标准、业务方位的基础上,依据改专业在本校已经具有的软硬件条件等确定的。
三、Android专业培养目标及要求
1、培养目标
Android专业设置以高职软件技术专业人才培养方案为蓝图,培养德、智、体全面发展,即牢固掌握必需的文化科学基础知识,又以掌握软件技术专业理论知识为目标,具备桌面应用程序、中小型C/S应用程序、中小型B/S应用程序开发能力,具有较强的创新能力、较强的实践技能的“应用型”、“创业型”的复合型人才。
以毛泽东思想、邓小平理论等重要思想为指导,引导学生树立科学的世界观、人生观和爱国主义、集体主义、社会主义的思想以及良好的职业道德和行为规范,提高科学文化修养,掌握必要的文化基础知识、专业知识和熟练的职业技能,培养学生爱岗敬业的品质和适应职业变化的能力,具有创新精神,具有健康的身体和心理,具有艰苦朴素,吃苦耐劳的精神。
2、培养要求
本专业毕业生主要面向企业从事Android桌面应用程序的开发,应掌握Android开发工作所必需的基础知识、基本技能,了解我国IT行业发展及有关方针政策,培养学生在今后的学习、工作中贯彻执行政策的能力,运用所学知识分析问题、解决问题的能力,掌握本专业的Java、Java Web、J2EE以及Android应用开发等系列知识,具有较强的实践动手力能,成为懂业务、会管理、能操作,能正确地领会企业、公司的项目开发意图,能胜任团队合作开发、项目单独模块设计开发等工作,且能反馈工作中的问题并更正错误,综合职业能力强的应用型
专门人才,能胜任Android行业、Java行业岗位的工作。
四、Android专业设置的可行性
1、Android专业设置有“学科理论知识体系”的支撑
“技术专业”不像“学科专业”拥有庞大的理论体系,其“知识”只能依附于“学科体系”,“技能”只有一些零星分散在不同技术领域中的“专有技术”,这些技术无法形成“技术理论”,从来没有形成也不可能形成“技术理论体系”,因而专业设置需要“学科理论知识体系”支撑。
我系软件技术专业以C++课程为基础、数据结构课程为导向、Java系列课程为核心,有着全面完善的Java学科理论知识体系,为Android系列课程的开设奠定了良好的理论基础,并且以项目驱动为教学手段,为Android课程实训提供了培养了良好动手能力的平台。
2、Android专业的教学内容相对稳定
无论教学内容如何“与时俱进”,始终赶不上新技术发展的速度。学校培养的毕业生很难成为“先进技术的拥有者”,只能是“传统技术的传人”。现阶段,在Android方向的技术更新有着迅猛势头,但技术核心思想保持着相对稳定,所以其教学内容大体保持相对稳定,只需要更新一些就业行业上需要的新特性、新元素。
3、Android专业开设经济成本低
google提供现成的丰富api类库,并且有google doc,calendar等免费、好用的api;大量的开源代码可以借鉴;不需要缴纳例如wm或苹果或nokia的授权费用,可以大幅度降低开发成本。
4、Android专业师资培养的周期较短
“技术专业”除了执教前必须取得高校教师资格证书外,教师还必须学习所从教的专业基础课知识。只有这样,教师才能站在专业培养目标的高度重新审视自身知识体系,改造自己的知识结构。无论“技术专业”教师来自哪里,都必须经过一个“专业知识的再造过程”,因此其师资培养的周期比普通高等教育要长一些。
Android的专业课程是以Java课程的开设为基础的、在Java系列课程的开设前提下加开2门android相关知识技术方面的课程,我系老师只需针对android方面的技术知识进行自学,并参与相关的android教学培训,开展一些学术研讨
会,就能形成自己的教学模式。
5、Android专业教学师资力量可行性分析
我院有一支结构合理,整体素质优良的师资队伍,职称结构合理,老中青相结合,教研成果丰硕。Android用Java+Eclipse开发,易学易用,入门门槛低,教研室老师大都有着一定java教学经验,能够较快地进入教学角色。此外,我院通过引进大量高学历应届毕业生和企业高级技术人员,建立了一支理论扎实,实践经验丰富的双师型教师队伍。
6、Android专业实践教学可行性分析
重视实践教学环节是高等职业教育的本质特征。实践教学环节中的教学内容必须与社会岗位能力的要求相一致,至少是“高度仿真”,这就使该专业设置必须以对实践教学基地的巨额投资为基础。
我系已经有了较为完备的实践教学实验室和设备,Android的实践教学不需要再投入其他设备的投资,用现有的实验设备资源足够满足Android的实践教学内容,并且我系还可以通过校企合作等方式,让企业分担部分实践教学内容。
1)实验室的建设:有着多个设备完善的多媒体教学、实践教学实验室,配备了高端配置的计算机,能够满足现阶段各种主流开发语言的运行以及教学任务的进行,并且Android的教学与实践不需要再投入其他额外的投资,现有的硬件资源已能够满足现阶段Android主流版本的开发与教学。
2)为了使教学与实践很好地结合起来,多形式、多渠道地开展实训活动,我们将与一些实训基地建立长期的实训、培训协作关系,加强校企之间的联系,拓展实训渠道。另外,我们还将积极采取多形式的实习方式,如:顶岗实习、自择实习,校内模拟实习等,从而有力地保障学生的实训质量。
7、Android专业设置有利于提高学生的就业率
现阶段Android的流行火爆程度已经得到了社会与学校的公认,如果将社会对Android人才的需求引入到我系毕业生求职方向中,将会很大提高我系毕业生就业率与就业质量。对于高职毕业生,由于用人目的不同,用人单位考核人才的重点不是学历和学校名称,而是更看中应聘者的岗位职业能力。掌握了Android开发技能的高职毕业生能获得更好的就业和择业机会。
我系还可以通过开展相关Android技能培训考证,颁发职业资格证书,为学生的就业增加砝码。
五、Android专业建设与发展的主要思路以及实施方案
1、专业建设与发展思路
1)专业建设前要进行充分的调研。我们已经对Android专业建设情况进行了前期调研,获得了大量的有用资料,为专业的开设和发展提供了参考。
2)加强师资力量的建设。首先是有目的地、重点地、分批地提高师资水平,如选派青年教师安博牛耳进行了Android初级培训;其次是不断地完善实验设施软件环境,从而不断地满足教学发展的要求。
3)培养大批的软件技术专业人才。为了适应职业教育形势发展的要求,办出Android专业特色,今后教学发展要面向社会的就业需求,满足企业文化的理念,为社会培养中等层次的软件技术专业人才。
4)不断深化理论教学和实践教学的改革。在Android理论教学方面,要花大力气研究和把握职业教育的发展变化规律,特别是要多调查研究Android的前沿技术与发展方向,科学定位人才的培养目标,合理设置Android专业课程,增加选修课,切实做到理论与实践紧密结合。在实践教学方面,要坚持以培养职业技能为宗旨的实训方针,加强校企、校社联系,广开实训渠道,不断探索职业教育的新思路。
2、专业建设与发展实施方案
第一阶段:2011年11月7日至2011年11月9日,Android专业建设小组人员进行任务分工。收集与专业建设相关的资料,进行专项研讨,确定专业建设方案。
第二阶段:2011年11月10日至2011年11月20日,组织专业建设小组人员到企业进行调研,了解现阶段流行的移动开发平台,采集现阶段android系统开发平台的相关信息与资料。
第三阶段:2011年11月21日至2011年11月23日,专业建设小组开展学术研讨,结合专业建设研究方案,学习资料,总结与分析专业建设的具体事宜。
第四阶段: 2011年11月24日至2011年12月9日,组织2名教师参加Android系统开发培训。
第五阶段:在2012年上学期,开设一门Android软件开发相关的公共选修课程。
综上所述,开办Android专业是必要的、可行的。我系已经具备开设Android专业的条件,并将继续为此做好充分的准备。
第16篇:Android大作业报告
移动设备软件应用与开
发 大作业报告
姓 名: 学 号: 班 级: 院 系: 日 期:
任课教师:
一、程序的运行环境、安装步骤
1、运行环境 游戏运行环境:Android1.5以上版本
2、程序的组成部份:
2.1、JDK安装
1.我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: 2.JAVA_HOME值为: D:\\Program Files\\Java\\jdk1.6.0_18(你安装JDK的目录) 3.CLASSPATH值为:.;%JAVA_HOME%\\lib\\tools.jar;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\bin; 4.Path: 在开始追加 %JAVA_HOME%\\bin; 5.NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。
安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似下面的画面表示安装成功了:
2.2、Eclipse安装 2.
3、Android SDK安装
在Android Developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。 运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的\"Force https://...\"这项,再点击Available Packages 。
选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包
在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:\\AndroidDevelop\\android-sdk-windows\\tools)。 image图
2、设置Android SDK的环境变量
“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。
运行 android –h 如果有类似以下的输出,表明安装成功:
图
3、验证Android SDK是否安装成功
2.4、ADT安装
打开 Eclipse IDE,进入菜单中的 \"Help\" ->\"Install New Software\" 点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入http://dl-l.google.com/android/eclipse。如下图所示:
确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。 如下图所示:
然后就是按提示一步一步next。 完成之后:
选择Window >Preferences...在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:
D:\\AndroidDevelop\\android-sdk-windows点击Apply、OK。配置完成。 2.5、创建AVD 为使Android应用程序可以在模拟器上运行,必须创建AVD。
1、在Eclipse中。选择Windows >Android SDK and AVD Manager
2、点击左侧面板的Virtual Devices,再右侧点击New
3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值
4、点击Create AVD即可完成创建AVD 注意:如果你点击左侧面板的Virtual Devices,再右侧点击New ,而target下拉列表没有可选项时,这时候你:
点击左侧面板的Available Packages,在右侧勾选https://dl-l.google.com/android/repository/repository.xml,如下图所示:
然后点击Install Selected按钮,接下来就是按提示做就行了
要做这两步,原因是在1.3、Android SDK安装中没有安装一些必要的可用包(Available Packages)。 2.
5、创建Android工程
三、程序开发平台
(1)代码行数:1000
(2)开发环境:Android Developer Tools Build: v22.6.2-1085508
apache-ant-1.9.3
四、程序功能说明:
单机屏幕按住不放可以拖动魔方转动,魔方上下左右空白处可以转动魔方相对那一面。
五、应用核心源码
cla MFtestSurfaceView extends GLSurfaceView {
private MFtestRenderer mRenderer;
private float mPreviousX;
private float mPreviousY;//上一次的点
private float mDownPreviousX;
private float mDownPreviousY;//上一次的Down点
// private int oldDownX;
// private int
private float theta;
private float fai;//球坐标
public MFtestSurfaceView(Context context){
super(context);
theta=(float)3.14159/4;
fai=(float)3.14159/4;
// Set the Renderer for drawing on the GLSurfaceView
mRenderer = new MFtestRenderer();
setRenderer(mRenderer);
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
@Override
public boolean onTouchEvent(MotionEvent e) {
// MotionEvent reports input details from the touch screen
// and other input controls.In this case, you are only
// interested in events where the touch position changed.
float x = e.getX();
float y = e.getY();
switch (e.getAction()) {
case MotionEvent.ACTION_MOVE://如果是 移动的话
float dx = xmPreviousY;//x,y的变换值(不是0,就是1)
float te=theta;
theta=theta+dy/100; //角度是弧度值
if (!(theta>0&&theta
{
theta=te; //法线始终向上
}
fai=fai+ dx/100;
//x=rsinθcosφ
mRenderer.eyez=(float)(3*Math.sin(theta)*Math.cos(fai));
//y=rsinθsinφ
mRenderer.eyex=(float)(3*Math.sin(theta)*Math.sin(fai));
////z=rcosθ
利用球坐标使观察点始终维持在半径为3的球上
mRenderer.eyey=(float)(3*Math.cos(theta));
requestRender();
//System.out.println(x+\"
\"+y);
break;
case MotionEvent.ACTION_DOWN:
mDownPreviousX=x;
mDownPreviousY=y;
break;
case MotionEvent.ACTION_UP:
if((((x-mDownPreviousX)>-5)&&((x-mDownPreviousX)-5)&&((y-mDownPreviousY)-3)||((x-mDownPreviousX)>-3))&&(((y-mDownPreviousY)>-3)||((y-mDownPreviousY)>-3))
{
//System.out.println(x-mDownPreviousX);
if(
x
{
//左
//System.out.println(x+\"
左
\"+y);
mRenderer.action = 1;
DrawAnimation();
}
else if( x
>
mRenderer.width-(mRenderer.width*(1-Math.sqrt(18)/6)/2) )
{
//右
//System.out.println(x+\"
右
\"+y);
mRenderer.action = 2;
DrawAnimation();
}
else if(y
mRenderer.height/2.0-!)
switch(mRenderer.action){
case 1:
if( (mRenderer.eyex >0) && (mRenderer.eyez >0) ){
mRenderer.move=76;
}
else if( (mRenderer.eyex >0) && (mRenderer.eyez
mRenderer.move=70;
}
else if( (mRenderer.eyex
mRenderer.move=82;
}
else if( (mRenderer.eyex 0) ){
mRenderer.move=66;
}
break;
case 2:
if( (mRenderer.eyex >0) && (mRenderer.eyez >0) ){
mRenderer.move=66;
}
else if( (mRenderer.eyex >0) && (mRenderer.eyez
mRenderer.move=76;
}
else if( (mRenderer.eyex
mRenderer.move=70;
}
else if( (mRenderer.eyex 0) ){
mRenderer.move=82;
}
break;
case 3:
mRenderer.move=85;
break;
case 4:
mRenderer.move=68;
break;
}
}
private void memcpy(int one,int two){
mRenderer.face_color[one]=mRenderer.face_color[two];
mRenderer.face_color[one+1]=mRenderer.face_color[two+1];
mRenderer.face_color[one+2]=mRenderer.face_color[two+2];
}
private void LeftShift(int a,int b,int c,int d){
// a
float temp1=mRenderer.face_color[a];
float temp2=mRenderer.face_color[a+1];
float temp3=mRenderer.face_color[a+2];
memcpy(a,b);
memcpy(b,c);
memcpy(c,d);
mRenderer.face_color[d]= temp1;
mRenderer.face_color[d+1]=temp2;
mRenderer.face_color[d+2]=temp3;
} }
private void DrawRotation(GL10 gl){
// 绘制小立方体
switch (move) { case 70: DrawCube19(gl); DrawCube11(gl); DrawCube2(gl); DrawCube22(gl); DrawCube13(gl); DrawCube5(gl); DrawCube25(gl); DrawCube16(gl); DrawCube8(gl); DrawCube18(gl); DrawCube10(gl); DrawCube1(gl); DrawCube21(gl); DrawCube4(gl); DrawCube24(gl); DrawCube15(gl);
gl.glPushMatrix(); gl.glRotatef(-angle,0.0f,0.0f,1.0f); DrawCube0(gl); DrawCube9(gl); DrawCube17(gl); DrawCube3(gl); DrawCube12(gl); DrawCube20(gl); DrawCube6(gl); DrawCube14(gl);
DrawCube7(gl);
DrawCube23(gl);
gl.glPopMatrix(); break; case 66: DrawCube0(gl); DrawCube9(gl); DrawCube17(gl); DrawCube3(gl); DrawCube12(gl); DrawCube20(gl); DrawCube6(gl); DrawCube14(gl);
DrawCube23(gl); DrawCube18(gl); DrawCube10(gl); DrawCube1(gl);
DrawCube21(gl); DrawCube4(gl); DrawCube24(gl); DrawCube15(gl); DrawCube7(gl);
gl.glPushMatrix();
gl.glRotatef(angle,0.0f,0.0f,1.0f);
DrawCube19(gl); DrawCube11(gl); DrawCube2(gl); DrawCube22(gl);
DrawCube13(gl); DrawCube5(gl); DrawCube25(gl); DrawCube16(gl); DrawCube8(gl);
gl.glPopMatrix();
break;
case 85:
DrawCube3(gl); DrawCube23(gl);DrawCube24(gl); DrawCube25(gl);
DrawCube4(gl); DrawCube5(gl); DrawCube6(gl); DrawCube7(gl);
DrawCube8(gl); DrawCube12(gl); DrawCube13(gl); DrawCube14(gl);
DrawCube15(gl);DrawCube16(gl);DrawCube20(gl); DrawCube21(gl); DrawCube22(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,0.0f,1.0f,0.0f);
DrawCube0(gl); DrawCube1(gl); DrawCube2(gl);DrawCube9(gl);
DrawCube10(gl); DrawCube11(gl); DrawCube17(gl); DrawCube18(gl); DrawCube19(gl);
gl.glPopMatrix();
break;
case 68:
DrawCube0(gl); DrawCube1(gl); DrawCube2(gl); DrawCube3(gl);
DrawCube4(gl); DrawCube5(gl); DrawCube9(gl); DrawCube10(gl);
DrawCube11(gl);DrawCube12(gl); DrawCube13(gl); DrawCube17(gl);
DrawCube18(gl); DrawCube19(gl);DrawCube20(gl); DrawCube21(gl); DrawCube22(gl);
gl.glPushMatrix();
gl.glRotatef(angle,0.0f,-1.0f,0.0f);
DrawCube6(gl); DrawCube7(gl); DrawCube8(gl);DrawCube14(gl);
DrawCube15(gl);DrawCube16(gl); DrawCube23(gl);DrawCube24(gl); DrawCube25(gl);
gl.glPopMatrix();
break;
case 82:
DrawCube9(gl); DrawCube10(gl); DrawCube11(gl); DrawCube25(gl);
DrawCube12(gl); DrawCube13(gl); DrawCube14(gl); DrawCube15(gl);
DrawCube16(gl); DrawCube17(gl); DrawCube18(gl); DrawCube19(gl);
DrawCube20(gl); DrawCube21(gl); DrawCube22(gl); DrawCube23(gl);DrawCube24(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,1.0f,0.0f,0.0f);
DrawCube0(gl); DrawCube1(gl); DrawCube2(gl); DrawCube3(gl);
DrawCube4(gl); DrawCube5(gl); DrawCube6(gl); DrawCube7(gl); DrawCube8(gl);
gl.glPopMatrix();
break;
case 76:
DrawCube0(gl); DrawCube1(gl); DrawCube2(gl); DrawCube3(gl);
DrawCube4(gl); DrawCube5(gl); DrawCube6(gl); DrawCube7(gl);
DrawCube8(gl); DrawCube9(gl); DrawCube10(gl); DrawCube11(gl);
DrawCube12(gl); DrawCube13(gl); DrawCube14(gl); DrawCube15(gl); DrawCube16(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,-1.0f,0.0f,0.0f);
DrawCube17(gl); DrawCube18(gl); DrawCube19(gl); DrawCube20(gl);
DrawCube21(gl); DrawCube22(gl); DrawCube23(gl);DrawCube24(gl); DrawCube25(gl);
gl.glPopMatrix();
break;
default:
break;
}
六、工程运行效果截图
10月20日 查找Android开发的配置及流程 10月22日 查找资料确定要使用的算法与数据结构 10月23日 系统设计 10月24日 开始编码
10月28日 游戏基本功能完成,进入测试阶段 11月2日 程序开发完成,编写文档
八、总结
因为之前自己学习过Android游戏开发的相关知识,也自己做过一个小游戏,所以对这方面比较了解,不过之前开发的小游戏是用Cocos2d引擎完成,和Android原生的不太一样,通过这次大作业的完成,对Android的基本开发有了一定的了解。对图像的绘制有了一定的了解。
第17篇:Android实训报告
Android学院:****** 班级:****** 学号:****** 姓名:******
实训报告
目录
一、实训背景及目的要求 .........................................................................................................................3 1.1背景简介 .....................................................................................................................................3 1.2实训目的及要求 ...........................................................................................................................3
二、设计思路...........................................................................................................................................3 2.1设计题目 .....................................................................................................................................3 2.2功能分析 .....................................................................................................................................4 2.3模块划分 .....................................................................................................................................4
三、设计实现及代码分析 .........................................................................................................................4 3.1第一个Activity .............................................................................................................................4 3.1.1布局文件:main.xml:........................................................................................................4 3.1.2源代码文件:MainActivity.java ............................................................................................7 3.2第二个Activity .............................................................................................................................8 3.2.1布局文件:result.xml ..........................................................................................................8 3.2.2源代码文件:ResultActivity.java ...........................................................................................9 3.3字符串资源文件:strings.xml ......................................................................................................12 3.4程序清单文件:AndroidManifest.xml ...........................................................................................13
四、程序功能测试及截图 .......................................................................................................................14 4.1工程项目目录 ............................................................................................................................14 4.2程序运行界面: .........................................................................................................................14 4.3未填身高提示: .........................................................................................................................15 4.4计算示例: ................................................................................................................................15
五、课程设计(实训)总结....................................................................................................................16
一、实训背景及目的要求
1.1背景简介
Android(读音:[\'ændrɔid])是一种以Linux为基础的开放源码操作系统,主要使用于便携设备,目前尚未有统一中文名称,中国大陆地区较多人使用安卓或安致。Android操作系统最初由Andy Rubin创办[5],最初只支持手机。2005年由Google收购注资,并拉拢多家制造商组成开放手机联盟(Open Handset Alliance)开发改良,逐渐扩展到到平板电脑及其他领域上[6]。 2010年末数据显示,仅正式推出两年的操作系统的Android已经超越称霸十年的诺基亚Symbian系统,跃居全球最受欢迎的智慧手机平台。采用Android系统手机厂商包括HTC、Samsung、Motorola、Lenovo、LG、Sony Ericon等。 1.2实训目的及要求
Android以Linux为核心的Android行动平台,使用Java作为编程语言。本实训是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训练,要求学生掌握java语言程序设计的基本技能和Android编程的应用,并较系统地掌握JAVA语言程序设计开发方法以及帮助文件的使用等,使学生通过本次实训,能够进行独立的Android应用程序开发,能够在实际操作中得到进一步的提高,为以后的学习和工作打下良好的基础。
目的:
1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。
2、培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。
3、培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容,包括:
1、确定开发的程序,收集和调查有关技术资料。
2、按软件工程步骤进行程序设计。
3、对完成的程序进行测试和完善。
4、完成课程设计报告。
二、设计思路 2.1设计题目
以Android系统的UI界面开发为基础,设计一个可以简单计算标准体重的应用程序,要求以2个Acitivity实现,第一个Activity作为输入界面,第二个Activity作为结果输出界面,具体实现细节自行设计。 2.2功能分析
该设计题目要求实现可计算输出标准体重功能的应用程序。通过查阅资料可知,按照世界卫生组织推荐的计算标准体重的方法,需要获知的输入信息有性别、身高。故可在第一屏设置有单选框以确定性别,输入框以获取身高。另,为了增加程序的实用性,可再设一可选输入框,用来得到实际体重,与标准体重对比,给出用户一些健康提议。第二屏设置有结果输出显示区域与健康提示显示区域。
2.3模块划分
通过程序功能分析,可将程序划分为2个模块,即2个Activity:
第一个Activity:两个单选框(RadioButton)获取性别,一个输入框(EditText)获取身高,一个可选输入框(EditText)获取实际体重,一个按钮(Button)及一些提示文本。
第二个Activity:一个文本显示区(TextViw)显示计算结果,一个可选文本显示区(TextView)显示提示信息。
三、设计实现及代码分析 3.1第一个Activity 3.1.1布局文件:main.xml:
采用绝对布局,以实现控件精准显示;
RadioGroup包含两个RadioButton,以实现性别男女选择;
两个供输入的EditText限定了输入类型为numberDecimal,以确保只接收数字型数据。 main.xml完整代码如下:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
android:orientation=\"vertical\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\"
>
android:id=\"@+id/tv1\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"@string/tv1_t\"
android:textSize=\"20sp\"
android:layout_x=\"50px\"
android:layout_y=\"25px\" />
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"@string/tv_sex\"
android:layout_x=\"50px\"
android:layout_y=\"100px\"
/>
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"@string/tv_tall\"
android:layout_x=\"50px\"
android:layout_y=\"150px\"
/>
android:id=\"@+id/rg\"
android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\" android:orientation=\"horizontal\" android:layout_x=\"95px\" android:layout_y=\"90px\" >
android:id=\"@+id/rb_male\"
android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\"
android:text=\"@string/male\"
/>
android:id=\"@+id/rb_female\"
android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\" android:text=\"@string/female\"
/>
android:id=\"@+id/et_tall\" android:layout_width=\"100px\" android:layout_height=\"40px\" android:layout_x=\"100px\" android:layout_y=\"140px\"
android:inputType=\"numberDecimal\" />
android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\" android:layout_x=\"200px\" android:layout_y=\"145px\" android:textSize=\"20sp\" android:text=\"cm\" />
android:id=\"@+id/compute\"
android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\" android:layout_x=\"100px\" android:layout_y=\"280px\" android:textSize=\"20sp\"
android:text=\"@string/compute\" /> android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\" android:layout_x=\"50px\" android:layout_y=\"200px\" android:text=\"@string/tv_real\" />
android:id=\"@+id/et_real\" android:layout_width=\"100px\" android:layout_height=\"40px\" android:layout_x=\"100px\" android:layout_y=\"230px\"
android:inputType=\"numberDecimal\" />
android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\" android:layout_x=\"200px\" android:layout_y=\"235px\" android:textSize=\"20sp\" android:text=\"kg\" />
3.1.2源代码文件:MainActivity.java 使用main.xml布局文件,为计算按钮(Button)注册事件监听,添加事件响应代码; 实现未填身高提示:
Toast.makeText(MainActivity.this, R.string.tall_hint, Toast.LENGTH_SHORT).show(); 实现Activity之间跳转设置:
intent.setCla(MainActivity.this, ResultActivity.cla); 实现Activity之间数据封装传输: bundle.putDouble(\"height\", height); bundle.putString(\"sex\", sex); bundle.putString(\"real\", real); intent.putExtras(bundle); MainActivity.java完整代码如下:
package com.halcyon;
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast;
public cla MainActivity extends Activity implements OnClickListener {
private RadioButton rb1 = null; private RadioButton rb2 = null; private EditText et = null; private EditText et_real = null; private Button bt = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
rb1 = (RadioButton)findViewById(R.id.rb_male);
rb2 = (RadioButton)findViewById(R.id.rb_female);
rb1.setChecked(true);
et = (EditText)findViewById(R.id.et_tall);
et_real = (EditText)findViewById(R.id.et_real);
bt = (Button)findViewById(R.id.compute);
//默认为男性选中
bt.setOnClickListener(this); }
} @Override
public void onClick(View v) {
} // TODO Auto-generated method stub
/**事件响应代码,获取性别、身高,判断是否输入了实际体重 * 新建Intent对象用于Activity之间跳转,及传输输入的数据 * **/
if(et.getText().toString().length()==0){
} else {
}
double height = Double.parseDouble(et.getText().toString()); String real = et_real.getText().toString(); String sex = \"\"; if(rb1.isChecked()){ } else{ } Intent intent = new Intent(); intent.setCla(MainActivity.this, ResultActivity.cla);
Bundle bundle = new Bundle(); bundle.putString(\"sex\", sex); bundle.putString(\"real\", real); intent.putExtras(bundle);
this.startActivity(intent);
//存放数据,以封装传输
bundle.putDouble(\"height\", height); sex = \"F\"; sex = \"M\"; Toast.makeText(MainActivity.this,
//身高未填提示
R.string.tall_hint,
//注册点击事件监听
Toast.LENGTH_SHORT).show(); 3.2第二个Activity 3.2.1布局文件:result.xml 绝对布局,三个TextView,内容用紫色显示,提示标号用绿色显示,以达到较醒目的感觉。 result.xml完整代码如下:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\"
android:layout_margin=\"10px\">
android:id=\"@+id/tv_1\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_x=\"20px\"
android:layout_y=\"100px\"
android:textSize=\"20sp\"
android:textColor=\"#8855ff\"
/>
android:id=\"@+id/tv_2\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_x=\"20px\"
android:layout_y=\"200px\"
android:textSize=\"20sp\"
android:textColor=\"#00ff00\"
/>
android:id=\"@+id/tv_3\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_x=\"20px\"
android:layout_y=\"240px\"
android:textSize=\"20sp\"
android:textColor=\"#8855ff\" />
3.2.2源代码文件:ResultActivity.java 使用result.xml布局文件,获取intent,取得传入的数据信息,以男性:(身高cm-80)×70﹪=标准体重
女性:(身高cm-70)×60﹪=标准体重 的标准来计算标准体重,方法
private String getWeight(double height, String sex) 实现此功能;
可根据用户是否输入了实际体重,来选择是否显示健康提示信息,方法 private void healthHint(double weight) 实现此功能;
方法private String form(double d)实现数据格式化。 ResultActivity.java完整代码如下:
package com.halcyon;
import java.text.NumberFormat;
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView;
public cla ResultActivity extends Activity{
/**男性:(身高cm-80)¡Á70﹪=标准体重
* 女性:(身高cm-70)¡Á60﹪=标准体重
* **/
private TextView tv_1 = null; private TextView tv_2 = null; private TextView tv_3= null; private Intent intent = null; private Bundle bundle = null; private double height = 0; private String sex = \"\";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
tv_1 = (TextView)findViewById(R.id.tv_1);
tv_2 = (TextView)findViewById(R.id.tv_2);
tv_3 = (TextView)findViewById(R.id.tv_3);
intent = this.getIntent();
bundle = intent.getExtras();
height = bundle.getDouble(\"height\");
sex = bundle.getString(\"sex\");
tv_1.setText(this.getWeight(height,sex));
}
private String getWeight(double height, String sex) {
} private void healthHint(double weight) {
/*根据用户是否输入了实际体重来判断是否添加显示提示信息 * 如果输入了实际体重,按以下原则给用户以健康提示 * 标准体重正负10﹪为正常体重
* 标准体重正负10﹪~ 20﹪为体重过重或过轻 * 标准体重正负20﹪以上为肥胖或体重不足 * */
String result = \"\"; String real = bundle.getString(\"real\"); if(real.equals(\"\")){ } else {
double r = Double.parseDouble(real); double rate = (r-weight)/weight; if(rate>0.2){
//过胖
result = this.getString(R.string.very_fat); } else if(rate>=0.1&&rate
} else if(rate>-0.1&&rate
} else if(rate>=-0.2&&rate
//过瘦
result = this.getString(R.string.very_thin);
//瘦
result = this.getString(R.string.thin);
//正常
result = this.getString(R.string.normal);
//胖
result = this.getString(R.string.fat); result = \"\"; double weight = 0; String result = \"\"; if(sex.equals(\"M\")){
} else {
} healthHint(weight); return result; weight = (height-70)*0.6; result = \"这位女士,\\n妳的标准体重为\"+form(weight)+\"公斤。\\n\"; weight = (height-80)*0.7; result = \"这位先生,\\n你的标准体重为\"+form(weight)+\"公斤。\\n\";
}
}
} } tv_2.setText(getString(R.string.hint)); tv_3.setText(result); private String form(double d){
}
//格式化数据输出
String str = NumberFormat.getInstance().format(d); return str; 3.3字符串资源文件:strings.xml 在一个Android工程中,我们可能会使用到大量的字符串作为提示信息。这些字符串都可以作为字符串资源声明在配置文件中,从而实现程序的可配置性。
在代码中我们使用Context.getString()方法,通过传递资源ID参数来得到该字符串,也可以在其他资源文件中引用字符串资源,引用格式为:\"@string/字符串资源名称。
本程序所引用的strings.xml内容为:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
NomalWeight
计算结果
计算你/妳的标准体重!
性别:
身高:
当前体重(可选):
男的
女的
计算
你没填身高哦!
温馨提示:
体重适中,要保持哟!
\"有点偏瘦哦,应该再多吃些东西啊!\"
\"一定是受谁的虐待了,要好好补补身体的,身体要强壮才行滴!\"
\"有点胖哦,要多锻炼啊!\"
\"不能太胖啊,要为自己制作运动减肥表了!\" 3.4程序清单文件:AndroidManifest.xml 每一个Android项目都包含一个清单(Manifest)文件--AndroidManifest.xml,它存储在项目层次中的最底层。清单可以定义应用程序及其组件的结构和元数据。
它包含了组成应用程序的每一个组件(活动、服务、内容提供器和广播接收器)的节点,并使用Intent过滤器和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的。
因本程序使用了2个Activity,故对AndroidManifest.xml有一定的修改,内容如下:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
package=\"com.halcyon\"
android:versionCode=\"1\"
android:versionName=\"1.0\">
android:label=\"@string/app_name\">
四、程序功能测试及截图 4.1工程项目目录
4.2程序运行界面:
4.3未填身高提示:
4.4计算示例:
五、课程设计(实训)总结
通过本次实训:
1)练习、巩固了所学Java理论知识,提示了编程技巧;
2)体验到利用网络查找文档、解决问题的便利;
3)有幸了解到Android开发平台已及Android程序设计思想与方法;
4)开拓了视野,了解到计算机应用的广泛性,为用计算机解决实际问题打下了基础。
第18篇:安卓android课程设计报告
湘潭大学课程设计报告
课
程 课
题指
导
名
称______手机安卓开发_______ 名
称______天气预报APP_______老
师______周唯___________
姓
名____黄柳________
学
号___2012600719_________ 班
级____12计2班________
小
组______棒棒糖_______ 时
间____2015年1月26 日_____
一、需求分析 (一) 引言
1.编写目的
1.1 为用户提供一个显示天气预报的软件,可以根据百度地图显示用户需求的城市位置,以及用图标表示各城市对应的气象信息,可以简洁的表示出“晴、雨、雪”和“气温”气象信息。
2.项目风险
2.1 (项目风险识别是指找出影响项目目标顺利实现的主要风险因素,并识别出这些风险究竟有哪些基本特征、可能会影响到项目的那些方面。) 2.2 联网收费视用户电话运营商的收费标准决定
2.3 手机或者无线信号不好时,可能无法连接或更新天气情况 3.预期读者和阅读建议
3.1 预期读者:会使用已经安装安卓系统的手机或者平板电脑及其他移动设备的用户
3.2 阅读建议:读者应通过该文档可以了解相关项目的需求分析、使用注意事项以及可能存在的风险
4.产品范围
2.2 手机,平板电脑,MP4,导航仪,上网本,电纸书等使用安卓系统的数码领域 (二) 综合描述
1.产品的状况
1.1 Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。目前未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他数码领域上。我们开发的相关项目正是一个在安卓平台上开发的软件,可以用这个软件来实现用户在一些简单的手持设备如手机或者平板电脑等上面及时的了解到用户所在城市的天气预报。
2.产品的功能
2.1 天气信息获取 2.2 天气信息显示 3.系统配置功能
3.1 用户类和特性
安卓平台用户:安卓新用户可以使用软件来了解用户所在城市的天气预报。熟悉安卓平台用户还可以选择对相关软件的系统按自己的喜好进行配置并保留自己的个性化系统配置。
安卓软件开发者:安卓软件开发者(喜好者)可以通过相关的开源代码来了解软件运行的原理。
3.2 运行环境
软件需要在支持安卓系统的可移动设备中正确安装才能正常运行。安卓版本需在2.2及以上,同时建议用户如果是在手机移动设备使用的话,需确保手机支持联网服务。
3.3 设计和实现上的限制
Eclipse是开发相关应用软件的首选集成开发环境,安卓开发环境首先需要安装支持java应用软件运行的java开发软件包(即JDK),然后安装集成开发环境Eclipse,最后安装Android SDK的Eclipse的ADT插件。
Android SDK和Eclipse的ADT插件是必须使用的。
软件支持高效、快速的数据存储方式,包括快速数据存储方式SharedPreferences、文件存储和轻量级关系数据块SQLite,可软件可以使用适合的方法对数据进行进程保存和访问。
3.4 假设和约束(依赖)
软件必须在安卓系统下才可以正常运行,若需要获取天气更新或者是短信服务,需确保用户的数码设备支持联网及短信服务。 (三) 外部接口需求 1 2 用户的手机设备可以支持联网。 用户界面
3 软件接口
软件提供轻量级的进程间通信机制Intent,实现跨进程组件通信。 4 访问硬件的API库函数通讯接口
4.1 HTTP 协议:有多种接口可以调用你可以用Java类库封装的HttpConnection 或者用Apach的开源项目的 HttpGet 或者HttpPost ,服务器端 需要 编写 Serlvet来响应客户端的请求。
4.2 Sokcet : 就是 服务器端 不断监听 双方约定好的端口号,客户端通过服务器IP去请求连接,连接成功后,得到Socket 的输入输出流,直接操作即可。 (四) 系统功能需求
天气信息显示和获取
功能描述:需有一个显示天气情况的用户界面,要求百度地图显示各城市位置(如:北京、长沙、广州等3-5个城市),以及用图标表示各城市对应的气象信息,表示出“晴、雨、雪”和“气温”简洁气象信息。 输入输出信息:
输入:当触摸某一城市对应的气象图标时,显示该城市当天的温度、湿度、风向和雨雪详细天气信息,并预报该城市后面几天的气象信息。
输出:气象信息的获取,从百度上获取天气预报信息,这些天气数据是通过后台服务获取的,这个后台服务可以按照一定时间间隔,并将各城市的天气信息保存到SQLite数据库中。
二、概要设计
三、Ui界面
我们的ui界面秉承着清新的风格开发出来的。
整个软件界面使用一个线性布局,让所有的元素从屏幕上方向下填充,并给整个线性布局进行权重划分。
线性布局的最上方是一个TextView,显示当前城市的名字,接着往下是一个相对布局,相对布局的左侧是天气的图片,右侧是三个天气相关的参数。
接着是一个线性布局,布局的左上方是三个TextView,分别显示“预报”,“趋势”,“指数”功能,通过点击相应的TextView,下方的一个线性布局展现不同的功能。 功能面板文字的下方是一个大的线性布局,用来显示未来三天的天气情况。在这个大的线性布局中,又含有三个小的线性布局,这三个小线性布局中包含了日期,天气图片和风力状况等(这些控件从上到下垂直居中显示)。
通过给整个XML文件中LinearLayout布局的的子级布局添加权重,让各个部分从上到下有序的显示,让当前城市名称在屏幕的上方显示,功能面板位于屏幕下方显示,以匹配不同尺寸屏幕,让软件的显示效果更好。软件的整体布局风格是清新,优美,大方。
四、功能设计
功能上实现实时的获取天气信息,获取百度api返回数据,解析百度api返回的json数据,根据解析到的数据绘制气温趋势图,并将数据反馈到app上的相应的区域。 通过使用ViewPager类,来实现天气预报软件中多个城市间的无缝页面切换。 由于组员都缺少JAVA开发经验,对安卓开发也不熟悉,所以我们决定采用调用API的方法来实时获取不同城市的天气预报数据,在这次项目中我们将采用百度的车载API。通过HttpClient类和AsyncTask异步类来获取网络数据。最后通过Gson类来解析获取的网络数据,并给页面中的所有的布局空间设置id,在AsyncTask得到网络数据之后将这些数据同步到软件界面上,呈现给用户。
三、功能模块
我主要负责监听程序的设计,监听用户按键,并进行相应的动作。
只要用户滑动面板,就切换到下一个城市,并获得下一个城市的天气数据, 显示在面板上。每隔15分钟自动更新天气数据。 主要代码如下:
下面的代码处理网络连接部分,用GSON解析网络上获得的Json网页:
下面代码访问网络:
四、心得体会
通过这个软件的实现,我对Android编程有了更加浓厚的兴趣,对Android中的常用类和接口有了进一步的认识。对编程有了一种新的看法,编程在我的学习中不再是那样的枯燥无味,而是时时刻刻充满惊喜。虽然这是一个挺小的项目但它对我在编程方面起到了一种激励的作用。我会在此基础上更加努力做出更好的程序。
第19篇:Android操作系统应用开发报告
Android操作系统应用开发报告
项目名称: 作
者: 学
号: 完成时间:1.开发目的
本次应用开发的预期目的及相关功能介绍。
2.程序系统
对所开发程序系统的介绍,包括总体结构,程序系统中各个程序或函数的名称及其介绍,他们之间的层次关系。
3.主要功能
说明所开发程序系统具有的实际功能。
4.基本流程
用图给出所开发程序系统的实际处理流程。
5.出错原因分析
给出开发过程中出现错误的原因分析。
6.开发心得
列出本次课程开发工作中所得到的经验与教训,以及心得体会。
第20篇:Android简历
个人简历
个人信息
姓名:XXX
年龄:XX
学历:本科
联系电话:186XXXXXXX
个人技能
1.熟练掌握JAVA面向对象编程语言,有良好的编码习惯;
2.熟悉jsp、javascript、servlet、javaBean进行web应用开发,了解jQuery,ajax等技术;
3.能使用Struts
2、Hibernate、Spring等开源框架技术;
4.熟练操作SQL sever、MySQL数据库,熟悉SQL语句;
5.熟练掌握Android adt编程环境和调试流程;
6.熟练掌握Android的4大组件和5种常用布局;
7.熟练Sqlite、File、SharePreference等存储方式;
8.熟练使用xml、json等解析技术;
9.熟悉编程软件环境配置,熟练运用Eclipse和MyEclipse等编程软件。
教育培训
2009年9月——2013年6月
2012年2月——2012年5月
项目经验
1.Android选课系统
描述:一款基于Android平台的选课软件,通过软件访问WEB短的服务器进行操作,web端采用servlet实现,能进行课程的查询、添加、删除。
2.基于SSH的论坛
描述:实现简单的注册登录功能,用户可创建自己的论坛并有管理权限,会员可发帖,帖子有回复功能,版主可管理自己的帖子。
自我评价
我有一颗积极向上的心,对于软件开发有较大兴趣。喜欢运动,热爱生活,热爱学习。诚实做人,踏实做事是我的做人原则。有较强的团队意识,比较善于团队合作。我坚信,努力不一定会成功,但肯定会有收获。我期待这个收获的过程。我将投入自己全部的激情,努力奋进。
XX大学软件工程 XXXXXAndroid软件开发 性别:X 籍贯: 山东XX 专业: 软件工程 E-mail:XXXXXXX@126.com