人人范文网 实习报告

安卓实习报告(精选多篇)

发布时间:2021-08-19 07:57:39 来源:实习报告 收藏本文 下载本文 手机版

推荐第1篇:安卓实习报告

通信与电子信息专业实训报告

项目名称:基于android的游戏开发

班 级 10通信1班

姓 名

学 号

指导教师

成 绩

实训时间:年月日—

目录

一、实训目的及其意义 ............................................3 1.1、目的及意义..............................................3 1.

2、研究现状................................................3

二、实训主要任务、重点及难点 ....................................4 2.1、任务....................................................4 2.

2、重点内容及实现途径......................................4

三、实训具体内容及完成的主要工作 ................................5 3.1、认识基础开发............................................6 3.

2、了解数据存储............................................6 3.3、总体实训过程............................................7

四、实际遇到的困难,解决问题的方法和措施 ........................8

(一)、所遇问题 .................................................8

(二)、解决方法与措施 ...........................................9

五、心得体会 ....................................................9

一、实训目的及其意义 1.1、目的及意义 了解现阶段互联网发展主流,了解移动互联网,认识移动互联网的发展与展望,认识android,了解基于android的应用软件开发方法及其商业流程。把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。使学生在此期间能够初次体会到实际生产中的种种技能与经验,完成一项项目锻炼独立思考及团队合作能力。使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会生产中应用的感性认识,深入了解计算机在各个领域中的应用状况。生产实习是学校教学的重要补充部分,是区别于普通学校教育的一个显著特征,是教育教学体系中的一个不可缺少的重要组成部分和不可替代的重要环节。它是与今后的职业生活最直接联系的,学生在生产实习过程中将完成学习到就业的过渡,因此生产实习是培养技能型人才,实现培养目标的主要途径。它不仅是校内教学的延续,而且是校内教学的总结。生产实习一方面巩固了书本上学到的理论知识,另一方面,可获得在书本上不易了解和不易学到的生产现场的实际知识,使我们在实践中得到提高实训环节对于提高学生的综合能力和全面素质具有重要意义。 1.

2、研究现状 android 是google开发的基于linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序 —— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。google与开放手机联盟合作开发了 android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 t-mobile 在内的 30 多家技术和无线应用的领军企业组成。google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。 android主要使用于移动设备,如智能手机和平板电脑,由google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。android操作系统最初由andy rubin开发,主要支持手机。2005年8月由google收购注资。2007年11月,google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良android系统。随后google以apache开源许可证的授权方式,发布了android的源代码。第一部android智能手机发布于2008年10月。android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。目前基于android的移动终端上的软件应用开发很火热,android平台的开发已越来越强大。 android是一种以linux为基础的开放源码操作系统,主要使用于便携设备。android操作系统最初由andy rubin创办,最初只支持手机。2005年由google收购注资,并拉拢多家制造商组成开放手机联盟(open handset alliance)开发改良,逐渐扩展到到平板电脑及其他领域上。

二、实训主要任务、重点及难点 2.1、任务

认识移动互联网,了解移动互联网的开发,认识及了解android,在给定时间内完成基于android平台的游戏项目的开发,实现预想游戏效果,熟悉项目开发的商业流程,给出游戏全套文档及代码。

2.2、重点内容及实现途径 2.2.

1、重点内容:熟悉游戏开发代码,了解项目流程,对android游戏开发有基本了解。 2.2.2、实现途径:

所需运行硬件环境:

安卓系统2.2以上 3.5寸以上移动设备

软件开发环境的配置:

(1) 配置java程序开发环境

(2) 安装并汉化eclipse(jdk) (3) android sdk的安装

(4) adt的安装及配置

(5) android模拟器的配置

(6) office2003以上版本的软件(绘图visio) 然后运用eclipse完成项目代码的编写,运行与调试; 最终在实体终端上进行测试,最终完成项目

三、实训具体内容及完成的主要工作

实训前期,有老师给我们讲解了现阶段移动互联网的发展,了解移动互联网的发展主流,说明了现阶段移动互联的发展重要性。老师着重给我们讲解了android的发展,以及现阶段移动互联中android所扮演的角色。接下来我们将针对基于android的游戏开发进行学习,由于时间的原因,我们主要了解了一下游戏开发的基本项目流程,具体的操作将在实训过程中一一讲解验证。

接下来老师为我们讲解了实训的具体内容,对于一个游戏开发项目,首先我们需要进行游戏开发的前期准备,主要是游戏开发环境的配置,以及团队开发过程中的任务分配,之后紧张的游戏项目开发拉开了帷幕。在第一天我们主要学习了eclipse软件的使用,包括游戏工程的创建等等。并且针对eclipse中的 android项目结构进行了讲解:android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由android开发工具自动生成的文件。目录中最重要的就是r.java文件。 这个文件由android开发工具自动产生的。res/ 资源(resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。aets资源目录android除了提供/res目录存放资源文件外,在/aets目录也可以存放资源文件。androidmanifest.xml 项目清单文件 。篇二: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//files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击eclipse菜单“window”-“show view”-“other”,在对话窗口中展开android文件夹,选择下面的file explorer视图,然后在file explorer视图中展开/data/data//files目录就可以看到该文件。 openfileoutput()方法的第二参数用于指定操作模式,有四种模式android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data//files),其他程序无法访问。除非在创建时指定了context.mode_world_readable或者context.mode_world_writeable ,只有这样其他程序才能正确访问。

实习流程: 2月18——2月27日,老师对于android开发进行了详细的讲解,其内容包括:android 的背景介绍,发展过程,自身的优势与不足.android的控件、布局、activity、service等一系列基础知识,对整个android的开发有了大致的了解 2月28日——3月2日: 学生自己开发android 3gabs项目,老师答疑及验收

实习心得:

时间过的飞快,半个月的实习就要结束了,在这次实习中我们不仅学习了相关的

专业知识而且让我对android系统又有了一个更加深入的了解,它也是我们计算机专业的一个新的方向并且发展很迅速,为了今后的发展我们还需不断努力学习!我国的信息产业还很落后,随着社会的发展和国家的支持,手机上网是社会发展的趋势,到时候手机上网将无处不在!之前我对android系统的了解之停留在应用的层次上,对于更深层次的了解是很少的,通过这次实习,让我对android系统有了一个更深层次的了解,同时它页使我意识到无论朝哪个方向发展,主要还是要扎实深刻地学习,同时也得不断努力探索! it业发展速度一直都是相当惊人的,不想被社会淘汰,我们就得必须不断地学习,现在的社会不再是一劳永逸,其他行业也是如此,我们必须不断地拿知识来武装自己,不然被淘汰那是肯定的!现在就业难原因其实在于竞争的家具,为了在竞争中得到成功,我们必须时时刻刻学习,还学到了很多做人做事的道理,不仅懂得了要想在计算机这一行立足必须具备扎实的技术理论知识,还必须学会与人沟通,合作的能力,同时更懂得了尝试的重要性,很多事情不是听说是困难的它就是困难的,只有亲自去做亲自去体会才知道,其实它并没有那么困难,这就是实践的重要性! 无论做什么事情都必须要坚持,只有坚持下去,才会成功!事在人为,就怕不做!我们不能怕失败,关键是要从失败中总结经验,带着勇气,带着自信,坚持不懈,踏踏实实。这一次的实习是短暂的,但我收获良多。回顾以前所走过的路,太多的无奈和迷茫,这次实习就像是我人生道路上的航标,为我指明了前景的方向,是我对自己的前途充满了信心,我不仅知道了在人生的岔道口更适合朝哪个方向前进!更知道了在今后的道路上怎么去武装自己!

实习结果:篇三: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(处理游戏中的消息提示),clatartactivity(游戏菜单设计),claetactivity(菜单中游戏难度设定)这些类。比如用random函数来对连连看进行重排列,还有用menu对游戏里的功能进行操作,还有用之前学到关于多媒体对象的调用将连连看游戏进行配乐。并且选用了网格对游戏界面进行了规划,以及对于相同图片的的消去,必须满足情况:1,图片相同;2,两个图片之间必须没有障碍物,可以用若干个垂直的直线连接起来;3,连接两个图片的直线线段的转折点不超过两个(连接线由x轴和y轴 的平行线组成,即无拐点,一个拐点,两个拐点)。

三 实习流程

此次对android应用与开发的实习分为以下几个阶段。

首先,由老师带领我们对android以及开发软件eclimpse进行了一个大概的了解与操作,并且对开发语言基础java的基础知识和编程思想进行了一次简单的复习与加深。

然后老师开始带领我们学习android界面的开发,并且告诉我们如何可以将界面尽量做得美观与方便,告诉我们作为程序的开发人员要为用户考虑,在这一阶段,我们开始试着学习和操作android的简单控件,包括textview,button等。

接着我们开始自己开发计算器,第一次将自己学到的控件进行组合搭配,并且开始学会怎么去监听按钮,通过对安卓常用类的学习,我们完成了计算器的常用功能。然而,对于计算机功能的实现,我感觉自己还没有办法做到自己想到的所有功能这让我对android更加满兴趣的学习下去。

当初步接触到了控件的开发与搭配后,我们开始开发学生注册界面,并且将所输入的信息反应到下一个界面中,在做这个的时候,我们又新学习了seekbar,checkbox等控件,让我们进一步学习了android中的常用控件。

然后是对音乐播放器的开发,此阶段我开始真正的接触到了生活中自己经常用到的软件的开发,并且也让我第一次感觉到需要将自己开发的软件做的美观, 于是我们开始学会调用背景图片,调用歌曲,并且学习了radiobutton控件,以及播放器中对音乐的下跳,循环播放等功能的学习与实现。

最后是开发游戏“连连看”,在此之前老师先向我们介绍了对于图片的处理等相关知识。

对于连连看,我们很熟悉,也明白其中的游戏规则;然而把它们用计算机语言展示出来却比用文字语言展示出来要难上很多。因此这个项目也是用时最多的一个项目,期间融合了算法设计以及之前几个项目所学的知识。虽然在参考资料

下,完成了项目;但是也存在很多不足。当然也有自己特点的地方,比如添加了成功几步就奖励时间,比如游戏的配备音乐,以及音乐的开关按钮。

四 实习心得

通过这三个星期的毕业实习,我学到了很多关于android系统的技术知识,虽然实习的时间短暂但我仍旧收获很多。首先,在每一天我认识了新的控件及相关的使用;其次,我们了解android系统的历史和今后的发展以及相关android系统的总体构成,然后,我们学会了android编译系统的搭建,以及在这个环境下编写代码,最后制作了简单的音乐播放器以及连连看游戏等软件;在这个过程中,我真正的了解到了理论与实际相结合的必要性以及独立思考的重要性。

生成实习是为将来打基础的重要阶段,珍惜自己每一个工作的机会,不论什么人,什么学历,从事什么工作,好好的表现、展示自己的能力,不要错过好的机遇。没有一件事情是轻轻松松的,但每一件事都是让人成长的,经历一段过程,喜悦或是艰辛,尽管经历的方式不尽相同,但它的结果是相同的,我们都会因涉事而成长。 通过这次实习,开阔了我的视野。这次的实习初步为我解开了安卓的神秘面纱,对于脑海中的那个可望而不可即,可玩儿不可解的安卓平台初步走入了它的神秘世界;既感到兴奋又感到惊奇,更感到压力,方知知识海洋的广大,学员任重道远。这次实习让我看清自己需要什么,同时也让我吸取了许多学习以及和人相处的经验,这将对我以后踏足社会,谋生立业有很好的借鉴和帮助作用。今后,我会珍惜这些宝贵的经验,在人生的旅途中勇往直前,迎接时代的挑战。篇四:安卓实训报告

实习报告书

专 业 计算机科学与技术 系 别

报告题目

安卓

报告人 班

指导教师

带队教师 实习时间 实习地点

教务处监制 篇五:安卓记事本实习报告 android记事本的设计与实现 ——sqlite数据库的设计和操作

学生姓名: 指导老师:

摘 要: 随着智能手机的快速普及,智能手机操作系统市场风生水起。android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。

本文主要介绍了一款android记事本sqlite数据库模块的设计与实现。根据人们日常生活的需要,该记事本的内容包括运用sqlite封装好的方法对数据进行添加、删除、修改、更新和密码进入等功能,并且将查询到的数据传递给activity,具有一定的实用性。 关键词: 记事本;android;手势密码;sqlite;activity design and implementation of android notepad — design and operation of the sqlite database student name: advisor: this paper describes the design and implementation of an android notepad sqlite database module.according to the needs of daily life, including the contents of the notepad good way to use sqlite package data to add, delete, modify, update and paword to acce other functions, and query the data is paed to the activity, has a certain practicality . keywords notepad; android; gesture paword; sqlite; activity 目录 目录 .....................................................................................................................................................................3 1.引言 ...............................................................................................................................................................4 1.1 项目背景 ..............................................................................................................................................4 1.2 项目意义 ..............................................................................................................................................4 1.3 系统可行性分析 ..................................................................................................................................5 1.4 系统主要任务 ....................................................................................................................................5 2.系统方案设计 .................................................................................................................................................6 2.1 搭建android开发平台 .....................................................................................................................6 2.2 sqlite数据库简介 ............................................................................................................................7 2.3 总体方案设计 ...................................................................................................................................10 3.系统软件开发环境 .......................................................................................................................................10 3.1 windows开发环境 ...........................................................................................................................10 3.2 java集成开发环境eclipse ...........................................................................................................11 3.3 adt plugin for eclipse ...............................................................................................................11 4.程序设计 .......................................................................................................................................................12 4.1 程序详细设计 ...................................................................................................................................12 4.2 程序运行及效果截图 .......................................................................................................................13 4.3 对sqlite数据库增删改查代码实现 .............................................................................................18 5.工作总结与展望 ...........................................................................................................................................23 参考文献 ...........................................................................................................................................................24 1.引言

1.1 项目背景 window操作系统的诞生成就了微软帝国,同时也造就了pc时代的繁荣,然而如今,以android和iphone手机为代表的智能移动设备的发明与互联网云技术的兴起却敲响了pc时代的丧钟!这也预示着移动互联网时代(3g)已经来临。 在这个互联网繁荣的时代,有一颗超新星,以它独特性能优势与人性化的ui设计使它在短短的几年迅速的占领了智能移动设备的市场份额,它就是google的android!这也意味着google在移动互联网时代开始抢跑并领跑。

通过调查显示,大部分消费者都会使用手机记事本功能。随着手机记事本功能的不断加强与完善,手机记事本对于人们的意义,已不仅仅像一般记事簿一样简单记录,而是向着更个性化人性化的方向发展。android[1]系统是开源的,它以迅猛的姿势已经占领了全球一半多的市场。记事本在生活和工作也日益凸显出它的重要性,它能更好地帮助人们更好地管理自己的工作和生活,极大的方便了人们的生活。因其开源,我们可以在之上开发安卓记事本软件,同时这也符合广大的市场需求。 1.2 项目意义近几年来随着3g技术成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。在google和android手机联盟的共同推动下,android在众多移动应用开发平台中脱颖而出。android是一个真正意义上的开源智能手机操作系统,该系统一经推出立即受到全球移动设备厂商和开发者的热捧。

我们都知道,无论是产品还是技术,商业应用都是它最大的发展动力。安卓如此受到厂商与开发者的青睐,它的前景是一片光明的。国内对于安卓这方面的市场还没有完全开发出来。只要我们努力学习安卓,对理想,对生活都会有很大的补益。因此,开发这样一套很简单的记事本软件对我们来讲是一件很有必要的事情,在下面的各章中我们将以开发安卓记事本软件为例,谈谈其开发过程和所涉及到的问题及解决方法。 1.3 系统可行性分析 1.3.1 课题调研

(1)与实践活动和相关的文件和资料由作者本人网络查找,以及老师帮助。

(2)具有遇到问题,具有独立思考,耐心钻研,向老师虚心求教的良好态度。

(3)关于技术方面的难题,跟指导老师面谈。 1.3.2 可行性分析

(1)技术可行性:本项目仅需要一台装有eclipse及配置好android开发环境的计算机即可,对计算机本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系统。

(2)经济可行性:由于本软件开发只有三个人,三台电脑就行,基本不需要太大的成本.在经济上完全可行。

(3)操作可行性:界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储。并没有太大的难度,所以,该项目完全有可操作性。 1.4 系统主要任务 (1)设计实现”添加新记事”,”编辑内容”,”删除当前记事”这三个主要的功能模块。 (2)分析并解决实现中的若干技术问题,像组件的选择以及保存方式的选择。 (3)进行测试并分析结果。

当然记事本的基本功能,建立新文件、修改现有文件、删除文件、查看已建立文件等功能是首先必须完成的。可以编写内容,编辑及删除,让记事的方式多样化。记事本软件的界面设计力求简洁,给人清爽的感觉,让图标及按钮以协调的布局呈现出了,菜单功能要相对简单,让用户操作方便,从而让用户体会到此款软件的实用。因为上述操作涉及到的数据量不大,所以将数据库定为安卓系统自带的sqlite数据库[3],所以这就要求我们要实现在sqlite数据库上面的增删改查。不少人希望自己记事本上面的内容不被被人查看,所以要以设置密码的形式来实现保密。鉴于各种各样的密码实现方式,我们选择了用户体验最好的手势解锁方式。以及采用了更加友好的时间显示方式,让用户在使用过程中更加的舒服方便。记事本软件要内存占用适中,cpu占用也是适中,这样让软件运行顺畅。

推荐第2篇:安卓记事本实习报告

Android记事本的设计与实现

Android记事本的设计与实现

——SQLite数据库的设计和操作

学生姓名:

指导老师:

摘 要: 随着智能手机的快速普及,智能手机操作系统市场风生水起。Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。

本文主要介绍了一款Android记事本SQLite数据库模块的设计与实现。根据人们日常生活的需要,该记事本的内容包括运用SQLite封装好的方法对数据进行添加、删除、修改、更新和密码进入等功能,并且将查询到的数据传递给activity,具有一定的实用性。 关键词: 记事本;Android;手势密码;SQLite;Activity

Android记事本的设计与实现

Design and implementation of Android

notepad — Design and operation of the SQLite database

Student name:

Advisor:

Abstract

With the rapid proliferation of smart phones, smart phone operating system market burgeoned.Android\'s biggest feature is its open architecture, not only has a very good development, debugging environment, but also supports a variety of scalable user experience, including rich graphical components, multimedia support and powerful browser. This paper describes the design and implementation of an Android notepad SQLite database module.According to the needs of daily life, including the contents of the notepad good way to use SQLite package data to add, delete, modify, update and paword to acce other functions, and query the data is paed to the activity, has a certain practicality .Keywords Notepad; Android; gesture paword; SQLite; Activity 2

Android记事本的设计与实现

目录

目录 .....................................................................................................................................................................3 1.引言 ...............................................................................................................................................................4 1.1 项目背景 ..............................................................................................................................................4 1.2 项目意义 ..............................................................................................................................................4 1.3 系统可行性分析 ..................................................................................................................................5 1.4 系统主要任务 ....................................................................................................................................5 2.系统方案设计 .................................................................................................................................................6 2.1 搭建Android开发平台 .....................................................................................................................6 2.2 SQLite数据库简介 ............................................................................................................................7 2.3 总体方案设计 ...................................................................................................................................10 3.系统软件开发环境 .......................................................................................................................................10 3.1 Windows开发环境 ...........................................................................................................................10 3.2 JAVA集成开发环境eclipse ...........................................................................................................11 3.3 ADT Plugin for Eclipse ...............................................................................................................11 4.程序设计 .......................................................................................................................................................12 4.1 程序详细设计 ...................................................................................................................................12 4.2 程序运行及效果截图 .......................................................................................................................13 4.3 对SQLite数据库增删改查代码实现 .............................................................................................18 5.工作总结与展望 ...........................................................................................................................................23 参考文献 ...........................................................................................................................................................24

Android记事本的设计与实现

1.引言

1.1 项目背景

Window操作系统的诞生成就了微软帝国,同时也造就了PC时代的繁荣,然而如今,以Android和iPhone手机为代表的智能移动设备的发明与互联网云技术的兴起却敲响了PC时代的丧钟!这也预示着移动互联网时代(3G)已经来临。

在这个互联网繁荣的时代,有一颗超新星,以它独特性能优势与人性化的UI设计使它在短短的几年迅速的占领了智能移动设备的市场份额,它就是Google的Android!这也意味着Google在移动互联网时代开始抢跑并领跑。

通过调查显示,大部分消费者都会使用手机记事本功能。随着手机记事本功能的不断加强与完善,手机记事本对于人们的意义,已不仅仅像一般记事簿一样简单记录,而是向着更个性化人性化的方向发展。Android[1]系统是开源的,它以迅猛的姿势已经占领了全球一半多的市场。记事本在生活和工作也日益凸显出它的重要性,它能更好地帮助人们更好地管理自己的工作和生活,极大的方便了人们的生活。因其开源,我们可以在之上开发安卓记事本软件,同时这也符合广大的市场需求。

1.2 项目意义

近几年来随着3G技术成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。在Google和Android手机联盟的共同推动下,Android在众多移动应用开发平台中脱颖而出。Android是一个真正意义上的开源智能手机操作系统,该系统一经推出立即受到全球移动设备厂商和开发者的热捧。

我们都知道,无论是产品还是技术,商业应用都是它最大的发展动力。安卓如此受到厂商与开发者的青睐,它的前景是一片光明的。国内对于安卓这方面的市场还没有完全开发出来。只要我们努力学习安卓,对理想,对生活都会有很大的补益。因此,开发这样一套很简单的记事本软件对我们来讲是一件很有必要的事情,在下面的各章中我们将以开发安卓记事本软件为例,谈谈其开发过程和所涉及到的问题及解决方法。

Android记事本的设计与实现

1.3 系统可行性分析

1.3.1 课题调研

(1)与实践活动和相关的文件和资料由作者本人网络查找,以及老师帮助。

(2)具有遇到问题,具有独立思考,耐心钻研,向老师虚心求教的良好态度。 (3)关于技术方面的难题,跟指导老师面谈。 1.3.2 可行性分析

(1)技术可行性:本项目仅需要一台装有Eclipse及配置好Android开发环境的计算机即可,对计算机本身有一定的要求,它可以使用Windows Xp及其以上版本,Mac os,Linux等操作系统。

(2)经济可行性:由于本软件开发只有三个人,三台电脑就行,基本不需要太大的成本.在经济上完全可行。

(3)操作可行性:界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储。并没有太大的难度,所以,该项目完全有可操作性。

1.4 系统主要任务

(1)设计实现”添加新记事”,”编辑内容”,”删除当前记事”这三个主要的功能模块。

(2)分析并解决实现中的若干技术问题,像组件的选择以及保存方式的选择。 (3)进行测试并分析结果。

当然记事本的基本功能,建立新文件、修改现有文件、删除文件、查看已建立文件等功能是首先必须完成的。可以编写内容,编辑及删除,让记事的方式多样化。记事本软件的界面设计力求简洁,给人清爽的感觉,让图标及按钮以协调的布局呈现出了,菜单功能要相对简单,让用户操作方便,从而让用户体会到此款软件的实用。因为上述操作涉及到的数据量不大,所以将数据库定为安卓系统自带的SQLite数据库[3],所以这就要求我们要实现在SQLite数据库上面的增删改查。不少人希望自己记事本上面的内容不被被人查看,所以要以设置密码的形式来实现保密。鉴于各种各样的密码实现方式,我们选择了用户体验最好的手势解锁方式。以及采用了更加友好的时间显示方式,让用户在使用过程中更加的舒服方便。记事本软件要内存占用适中,CPU占用也是适中,这样让软件运行顺畅。

Android记事本的设计与实现

2.系统方案设计

2.1 搭建Android开发平台

2.1.1 安装包下载 (1)java JDK下载

进入http://java.sun.com/javase/downloads/index.jsp选择Download JDK只下载JDK,无需下载jre。

(2)Eclipse下载

进入http://www.daodoc.com/downloads我们选择第一个,即Eclipse IDE for java EE Developers。

(3)Android SDK下载

说明:Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本,完全版下载(Android sdk 2.01)。

2.1.2 软件安装 (1)安装JDK 安装完成即可。 (2)解压Eclipse Eclipse无需安装,解压后,直接打开就行。 (3)解压Android SDK 这个也无需安装,解压后供后面使。 (4)配置Eclipse 打开Eclipse,在菜单栏上选择 help->Install New SoftWare点击Add按钮,出现如下界面,输入网址:https://dl-l.google.com/android/eclipse/(如果出错,请将https改成http),名称:Android(这里可以自定义),点击OK,点击Next按钮,点击Next按钮,出现如下界面:选择I accept the terms of the license agreements,点击Next,进入安装插件界面安装完成后,点击Yes按钮,重启Eclips。

(5)配置Android SDK 点击菜单window->preferences选择你的Android SDK解压后的目录,选错了就会报 6

Android记事本的设计与实现

错,这个是升级工具,目前还没有一个版本的SDK。

升级SDK版本,选择菜单window->Android sdk and avd manager。选择update all按钮,出现如下界面选择左边的某一项,点击accept表示安装,点击reject表示不安装,我这里只选了SDK 2.1和samples for api 7。自己可以任意自定义,确定后,选择install按钮,进入安装界面:安装完成。

(6)新建AVD(Android vitural device) 和上面一样,进入Android sdk and avd manager,选中Vitural Devices 在点击New按钮后,名称可以随便取,target选择你需要的SDK版本,SD卡大小自定义,点击Create AVD,显示创建AVD完毕。

(7)新建Android项目

选择菜单file->new->other 进入如下界面:选择新建Android Project项目,点击Next按钮,进入如下界面名称自定义,应用程序名自定义,报名必须包含一个点以上,min SDK version里面必须输入整数

(8)配置运行

右键项目->Run as->Run Configuration该界面,点击Browse按钮,选择你要运行的项目选择Target切换到以下界面该界面选择运行的AVD,将AVD前面的方框设置为选择状态。

(9)测试项目运行右键项目名称->run as->Android Application即可启动运行该Android程序。

2.2 SQLite数据库简介

SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本SQLite 3已经发布。

Android记事本的设计与实现

2.2.1 SQLite功能特性 1.ACID事务

2.零配置–无需安装和管理配置

3.储存在单一磁盘文件中的一个完整的数据库 4.数据库文件可以在不同字节顺序的机器间自由的共享 5.支持数据库大小至2TB 6.足够小,大致13万行C代码,4.43M 7.比一些流行的数据库在大部分普通数据库操作要快 8.简单,轻松的API 9.包含TCL绑定,同时通过Wrapper支持其他语言的绑定 10.良好注释的源代码,并且有着90%以上的测试覆盖率 11.独立:没有额外依赖

12.源码完全的开源,你可以用于任何用途,包括出售它

13.支持多种开发语言,C, C++, PHP, Perl, Java, C#,Python, Ruby等

同时它还支持事务处理功能等等。也有人说它象Microsoft的Acce,有时候真的觉得有点象,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Acce一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么你可以考虑使用SQLite。到2013年10月17日最新版本是 3.8.1 。能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士.2.2.2 Java连接SQLite数据库:

publiccla TestSQLite { publicstaticvoid main(String[] args) { try { 8

Android记事本的设计与实现

//连接SQLite的JDBC Cla.forName(\"org.sqlite.JDBC\"); //建立一个数据库名zieckey.db的连接,如果不存在就在当前目录下创建之 Connection conn =DriverManager.getConnection(\"jdbc:sqlite:zieckey.db\"); Statement stat = conn.createStatement(); stat.executeUpdate(\"create table tbl1(name varchar(20), salary int);\");//创建一个表,两列 stat.executeUpdate(\"insert into tbl1values(\'ZhangSan\',8000);\");//插入数据 stat.executeUpdate(\"insert into tbl1values(\'LiSi\',7800);\"); stat.executeUpdate(\"insert into tbl1values(\'WangWu\',5800);\"); stat.executeUpdate(\"insert into tbl1values(\'ZhaoLiu\',9100);\"); ResultSet rs = stat.executeQuery(\"select * from tbl1;\");//查询数据 while(rs.next()){//将查询到的数据打印出来

System.out.print(\"name = \"+ rs.getString(\"name\")+\" \");//列属性一 System.out.println(\"salary = \"+ rs.getString(\"salary\"));//列属性二 } rs.close(); conn.close();//结束数据库的连接 } catch(Exception e ) { e.printStackTrace(); } } }

Android记事本的设计与实现

2.3 总体方案设计

在本模块中,主要设计到三个文件,第一个是与数据库表相对应的实体类,第二个是创建数据库、创建表的类,第三个是对应的增删改查的方法。下面是整个项目的总体方案设计:

本次Android项目中运用的技术比较广,从基础的Activity、SQLite到开源的手势密码组件,因此将项目尽可能完美的整合到一起成了很重要的一部,如何将总体方案设计的规范以及高校是必不可少。

从人员安排上,我们三人分头进行,各不影响,我主要负责的是Activity的展示,也就是将其他组员的劳动成果展示出来,那么如何美观以及高性能的展示变成了难点。

从设计模式上,我们严格遵循Android Design的规格,并且使用Google在I/O大会上推荐的一些开发方法,从而尽可能的讲模块规范化。

从时间分配上,我们进行了敏捷性开发,充分合理的利用了大家的时间。

3.系统软件开发环境

3.1 Windows开发环境

1.用户界面统

一、友好、漂亮:

Windows应用程序大多符合IBM公司提出的CUA (Common User Ace)标准,所有的程序拥有相同的或相似的基本外观,包括窗口、菜单、工具条等。用户只要掌握其中一个,就不难学会其他软件,从而降低了用户培训学习的费用。 2.丰富的设备无关的图形操作:

Windows的图形设备接口(GDI)提供了丰富的图形操作函数,可以绘制出诸如线、圆、框等的几何图形,并支持各种输出设备。设备无关意味着在针式打印机上和高分辨率的显示器上都能显示出相同效果的图形。 3.多任务:

Windows是一个多任务的操作环境,它允许用户同时运行多个应用程序,或在一个程序中同时做几件事情。每个程序在屏幕上占据一块矩形区域,这个区域称为窗口,窗口是可以重叠的。用户可以移动这些窗口,或在不同的应用程序之间进行切换,并可以在程序

Android记事本的设计与实现

之间进行手工和自动的数据交换和通信。

虽然同一时刻计算机可以运行多个应用程序,但仅有一个是处于活动状态的,其标题栏呈现高亮颜色。一个活动的程序是指当前能够接收用户键盘输入的程序。

3.2 JAVA集成开发环境eclipse Eclipse 是一个开放源代码的、基于Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础。

[7]

[6]3.3 ADT Plugin for Eclipse ADT Plugin for Eclipse 是Eclipse插件,作用是关联Android SDK,使Eclipse能够创建Android工程。

Android开发工具(ADT)是一个Eclipse IDE,目的是给你一个强大的插件,集成环境中构建Android应用程序。

Eclipse的ADT延伸的能力,可以快速建立新的Android

[10]

[9]

项目,创建一个应用程序的用户界面,添加组件基于Android框架API,使用Android SDK工具调试程序,甚至出口签名(或无)APKs以分发你的应用。

Android记事本的设计与实现

4.程序设计

4.1 程序详细设计

开始绘制修改密码否绘制密码是保存or绘制成功新建记事本成功失败登陆更新记事本删除记事本

图4.1 系统流程图

安卓记事本本人涉及到的是SQLite的设计与操作,主要设计到的文件有三个。分别是:MemoItem.java(与数据库表相对应的实体类)、MemoService.java(对SQLite数据库进行增删改查的方法)、DBHelper.java(建立数据库、建立表的方法)。

在SQLite上建数据库,建表主要要继承SQLiteOpenHelper这个类。在构造方法中实现建数据库,在onCreate方法中进行建表。

实现数据的增删改查,先用dbOpenHelper获得WritableDatabase,再进行相应的操作。还要用到cursor来移动游标,MemoItem返回每一条记录,List返回记录的list集合。

Android记事本的设计与实现

在设计SQLite数据库的同时,还进行了几个简单的Activity的编写。Activity是Android开发的重点,它与XML一个负责界面,一个负责界面实现。此外,在写Activity的时候充分利用JAVA的继承特性,将MainActivity作为基类,让其他Activity继承它,虽然整个项目比较小,但是这种利用JAVA特征的设计模式还是充分利用了。

4.2 程序运行及效果截图

图4.2 程序的首页

Android记事本的设计与实现

图4.3 绘制手势

图4.4 通过手势登录

Android记事本的设计与实现

图4.5 登录成功

图4.6 创建新笔记

Android记事本的设计与实现

图4.7 创建成功

图4.8 更新笔记

Android记事本的设计与实现

图4.9 更新成功

图4.10 所有笔记显示页面

Android记事本的设计与实现

4.3 对SQLite数据库增删改查代码实现

增删改查:

package com.example.others; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public cla MemoService { private DBOpenHelper dbOpenHelper; private SQLiteDatabase db; private Cursor cursor;

public MemoService(Context context) {

this.dbOpenHelper = new DBOpenHelper(context); }

public long save(MemoItem item) //保存每一条数据 { db = dbOpenHelper.getWritableDatabase(); String sql = \"insert into memo(content, time) values(?,?)\"; db.execSQL(sql, new Object[]{item.getContent(),item.getTime()}); //将时间插入

cursor= db.rawQuery(\"SELECT last_insert_rowid()\", null);

cursor.moveToFirst(); //每次插入保证都在最前面一个

long result = cursor.getLong(0);

cursor.close();

db.close();

return result; }

public MemoItem getMemoById(long time) //显示每一条具体的记录 { db = dbOpenHelper.getReadableDatabase();

cursor = db.rawQuery(\"select * from memo where memoid=?\",

new String[]{time+\"\"}); if (cursor.moveToFirst()) { String content

=

Android记事本的设计与实现

cursor.getString(cursor.getColumnIndex(\"content\"));

long times = cursor.getLong(cursor.getColumnIndex(\"time\"));

cursor.close();

db.close();

return new MemoItem(content, times);

}

cursor.close();

db.close();

return null; }

public void updateContent(MemoItem item) //更新每一条记录 { db = dbOpenHelper.getWritableDatabase(); db.execSQL(

\"update memo set content=? where time=?\",

new Object[] { item.getContent(), item.getTime()

}); db.close(); }

public void delete(long time) //删除一条记录 { db = dbOpenHelper.getWritableDatabase(); db.execSQL(\"delete from memo where time=?\", new Object[] {time}); db.close(); }

public long getCount() //得到所有的记录数 { db = dbOpenHelper.getReadableDatabase(); cursor = db.rawQuery(\"select count(*) from memo\", null); cursor.moveToFirst(); long result = cursor.getLong(0); cursor.close(); db.close(); return result; } public List getScrollData(int offset, long maxResult) //列表显示

{

List books = new ArrayList();

db = dbOpenHelper.getReadableDatabase();

Android记事本的设计与实现

cursor = db.rawQuery(

\"select * from memo order by time desc limit ?,?\",

new String[] { String.valueOf(offset),

String.valueOf(maxResult) });

while (cursor.moveToNext())

{

long time = cursor.getLong(cursor.getColumnIndex(\"time\"));

String content cursor.getString(cursor.getColumnIndex(\"content\"));

books.add(new MemoItem(content,time));

}

cursor.close();

db.close();

return books; } }

建数据库、建表

package com.example.others;

import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;

public cla DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context) {

super(context, \"csust.db\", null, 1); //创建一个数据库 } public void onCreate(SQLiteDatabase db) { db.execSQL(\"CREATE TABLE memo(memoid integer primary autoincrement, content varchar,time interger)\"); //创建一个memo表 } public void onUpgrade(SQLiteDatabase db, int oldVersion, newVersion) {

db.execSQL(null); //更新数据库

} }

表所对应的实体类

package com.example.others;

= key

int Android记事本的设计与实现

import android.os.Parcel; import android.os.Parcelable;

public cla MemoItem implements Parcelable { private String content; private long time; public MemoItem(){} public MemoItem(String content, long time) {

this.content = content;

this.time = time; } public String getContent() {

return content; } public void setContent(String content) {

this.content = content; } public long getTime() {

return time; } public void setTime(long time) {

this.time = time; } @Override public String toString() {

return \"BaseItem [content=\" + content + \", time=\" + time + \"]\"; } @Override public int describeContents() {

return 0; } @Override public void writeToParcel(Parcel dest, int flags) {

dest.writeString(content);

21

Android记事本的设计与实现

dest.writeLong(time); } public static final Parcelable.Creator CREATOR = new Creator() {

@Override

public MemoItem createFromParcel(Parcel source)

{

MemoItem item = new MemoItem();

item.content = source.readString();

item.time = source.readLong();

return item;

}

@Override

public MemoItem[] newArray(int size)

{

return new MemoItem[size];

} }; }

22

Android记事本的设计与实现

5.工作总结与展望

整个过程中,我总结了一些经验: 1.体会感触最深的一点

事先必须制定计划。这样即使出现问题,解决时也会像修改几个元素一样简单。最简单的原因是,当真正开始项目后,毫无疑问自己将充分了解自己正在尝试着作什么。通过前期的规划,会让自己的工作变得轻松。 2.选择合适的开发环境

好的工具可以给我们带来方便,减少工作量。最好使用集成的开发环境,我使用ADT这个集成的开发环境对安卓记事本进行制作,它的功能强大,增强了功能并节省了应用开发的时间。

3.不可忽视界面的设计

从真正的使用方面来讲,一个系统的界面是十分重要的,好的界面可大大刺激顾客的购买欲,收到以像不到的效果,所以可千万不要设计得太单调乏味,而要尽量友好一些。4.一定要做好调试工作

倘若像开发一个成功的安卓记事本,那么一定要设置好菜单,其原则是简单、美观和实用,最重要的是可靠。在安卓记事本投入运行之前,一定要做大量的调试工作,除了在自己的机上调试外,还应在别的机上测试,保证万无一失 5.相互讨论,虚心求教

这是相互学习的好方法,也是节约开发时间的一个有力途径,同时我们可以利用网络这个有利的条件在网上求教。 6.本次实践的收获

由于实践的机会太少,对编程不够熟悉,这次实习设计给了我一个很好的动手机会。通过自己的努力,我学会了如何构建一个安卓记事本,数据库的基本构架,基本掌握了Android的编程技术,了解一个系统的整个开发调试过程。在这一次设计中,翻阅大量资料,虽然结果还未尽完美,但在设计过程中,亦使我专业技能上有了很大的提高,对系统开发过程、步骤有了比较深刻的认识。开发的过程中,我遇到了不少疑难问题,除了向指导老师请教外,更多的时候是请教同学,共同探讨,一起寻找解决问题的方案。这些宝贵的经验对于我今后走上工作岗位将有很大的帮助。

23

Android记事本的设计与实现

参考文献

[1]熊刚.基于Android的智能手机的设计与实现[D].武汉: 武汉理工大学,2010.[2]周恒民译.Java TCP/IP Socket编程(原书第2版)[M].北京: 机械工业出版,2009.[3]张桂珠 刘丽 陈爱国 Java面向对象程序设计(第2版)北京邮电大学出版社.[4]Joshua Bloch.Effective Java: Second Edition[M].Addison-Wesley,2008.[5]胡伟编著 .Android系统架构及其驱动研究[J].广州.广州广播电视大学学报.2008 [6]余志龙.Google Android SDK 开发范例大全[M].北京:人民邮电出版社.2009-7-1 [7]靳岩,姚尚朗.Google Android 开发入门与实战[M].北京:人民邮电出版社.2009-7-1.[8]毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2007年 [9]林邦杰,彻底研究java.北京:电子工业出版社,2002年

[10]王保罗.Java面向对象程序设计[M].北京:清华大学出版社,2003年

24

推荐第3篇:安卓课程设计报告

安 卓 课 程 设 计

班 级 09级计算机二班

学 号 20097923 姓 名 郭丹

目录

第1章

安卓应用程序开发背景 ..........................................................3 §1.1开发背景 ...................................................................................3 §1.2开发环境 ...................................................................................4 第2章 第3章 §3.1 §3.2 §3.3 第4章

安卓应用程序开发理论与方法 ..............................................4 “计算器”应用程序的设计与实现 .......................................6 拟解决的问题及目标 .............................................................6 总体设计 ................................................................................7 详细设计与编码实现 .............................................................7 总结 .......................................................................................17 2

第1章

安卓应用程序开发背景

§1.1开发背景

1.智能手机的市场

(1)功能多样化的智能手机挑战全球PC出货量

移动互联网时代的来临,直接促进了搭载智能操作系统、具有强大扩展性的智能手机、平板电脑等移动终端产业的蓬勃发展。来自美国最大的风险投资机构KPCB的数据显示,全球智能手机出货量正在以远高于台式电脑、笔记本电脑出货量的速度快速增长,该机构预计2011年全球智能手机出货量将达到4.13亿,超过台式电脑与笔记本电脑出货量的总和。

(2)智能手机的用户使用数量正在高速增长。据市场调研机构Gartner信息,2011年全球智能手机的总出货量将会达到4.68亿部,相比2010年实现了57.7%的增长,而谷歌Android操作系统将会在今年之内成为全球最大的智能手机操作系统。另外,全球市场调研机构IDC预计未来5年中国手机市场上,智能手机替代传统功能手机的趋势将日益明显,未来5年中国智能手机市场复合增长率将达到34.1%,人们对IT设备智能化的向往是这一增长率能够实现的主要因素,并且与其他国家相比,中国智能手机市场的发展空间更加广阔。 (3)操作系统格局预测:Android有望成为智能手机市场主导力量

搭载Android操作系统的智能手机目前已经成为市场上最炙手可热的智能产品。来自美国市场研究机构Gartner的数据显示,Android操作系统所占的市场份额从2008年的0.5%急剧增长到2011年的15.94%。开放的源代码和零成本已经让Android在全世界范围内受到青睐并迅速获得了主要手机厂商和数百万软件开发者的支持,Gartner预计,未来Android系统的市场份额有望超过其他操作系统,从而成为全球第一大智能手机操作系统。 2.安卓手机介绍

安卓手机指的是用Android操作系统的手机。安卓(Android)是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。

同样都是手机上面用的智能系统,安卓的系统是新生系统,界面更为华丽,

3 开源性更强,当然因为是新生系统,所以在第三方软件方面暂时还不太多。因此,安卓应用程序的需求还是很迫切的。 3.软件人才需求

据业内统计,目前国内的Android研发人才缺口至少30万。由于目前Android技术较新,无论是相关书籍、培训还是大学教育,都处于初级阶段,因此Android人才短期将供不应求。从长期来看,随着各种移动应用和手机游戏等内容需求日益增加,也将激励大中小型手机应用开发商加大对Android应用的开发力度,因此Android人才的就业前景也非常广泛。

综上所述,在这样的背景下,安卓有很强的生命力。同时,作为一个新生的系统,其应用程序目前并不多,安卓应用程序的需求还是很迫切的,安卓研发人才的缺口还很大。这些都促进了我们学习开发安卓应用程序。

§1.2开发环境

安卓应用程序开发环境如下:

①JDK 5 or JDK 6 (JRE alone is not sufficient) ②Eclipse 3.3 (Europa), 3.4 (Ganymede) ③Android SDK ④ADT 0.8.0 ⑤Eclipse安装ADT 插件

第2章

安卓应用程序开发理论与方法

1、Activity的相关知识

简单理解Activity 代表一个用户所能看到的屏幕,Activity 主要是处理一个应用的整体性工作。Activity是最基本的Android 应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。大多数的应用是由多个屏幕显示组成,因而要用到多个Activity。

4 (1)Activity的相关方法及相关函数: A、void onCreate(Bundle) 首次启动时调用,接受参数:Null or savedInstanceState(保存的以前某些状态信息) B、void onStart() 说明了将要显示给用户的活动

C、void onRestart() 将处于停止状态的活动重新显示给用户 D、void onResume() 用户可以开始与活动进行交互时调用。如动画播放和音乐播放。 E、void onPause() 活动将要进入后台运行时调用。(此时前台启动了另一个活动) F、void onStop() 不需要某个活动了,就调用 G、void onDestroy() 销毁活动

(2)多个Activity之间的跳转:

通过Intent类实现屏幕之间的跳转(包括没有参数关系和需要传递参数两种情况)。

(3)两个Activity之间进行数据交换: startActivity() 只有Intent一个参数。

public void startSubActivity(Intent intent, int requestCode) (requestCode:用来标识某一个调用,一般定义一个常量。)

传过去:函数原型为: public Intent setData(ContentURI data) 然后,参数带到新的Activity后,同样用Activity.getIntent()函数可得到当前过来的Intent对象,然后用getData()就取到参数了。 传回来:函数原型为: public final void setResult(int resultCode, String data)

2、Intent的相关知识

5 Intent 是描述应用想要做什么。Android 使用了Intent 这个特殊类,实现在屏幕与屏幕之间移动。Intent 数据结构两个最重要的部分是动作和动作对应的数据。Intent类绑定一次操作,它负责携带这次操作所需要的数据以及操作的类型等。

3、Layout 用于用户界面设计。包含AbsoluteLayout, FrameLayout,GridView, LinearLayout, ListLayout, RadioGroup, TableLayout等等。

在本程序中用到的有: (1) 线性布局LinearLayout 垂直:android:orientation=\"vertical“ 水平:android:orientation=\"horizontal\" (2) 相对布局RelativeLayout 让子元素指定它们相对于其他元素的位置(通过ID 来指定)或相对于父布局对象。在RelativeLayout布局里的控件包含丰富的排列属性: Layout above:控件在指定控件的上方

Layout below:控件在指定控件的下方 Layout to left of„„

第3章

“计算器”应用程序的设计与实现

§3.1 拟解决的问题及目标

本计算器程序要解决日常生活中常见的基本数据计算问题,程序要实现的目标有如下几个:

(1) 要实现基本的加、减、乘、除四则运算。

(2) 可以实现在前一步计算结果上继续作加、减、乘、除,即连加、减、乘、除。

(3) 有清空功能,即清除所有数据,重新开始计算。

(4) 可实现基本的三角函数的计算,如:正弦,余弦,正切,余切。 (5) 可实现一些特殊运算,如:平方,立方,开方,求对数等。

6

§3.2 总体设计

1、系统的软件结构图

计算器基本加减乘除运算三角函数运算其他运算加减乘法法法除法正弦余弦正余切切平方立方开方对数 图3-1

2、功能的操作流程

首先用户根据自己的实际需要选择计算的类型,然后进入不同的计算类型,再进行要执行的运算,输入数据,选择运算符号,即可得到结果。

§3.3 详细设计与编码实现

1、功能选择界面

图3-2为系统主界面。用户可以根据需要点击不同按钮进入不同功能的子界面。亦可以点击退出按钮退出本程序。

7

图3-2

本界面用LinearLayout来布局,主要用到的控件是Button。页面的跳转是通过intent来是实现的。跳转的主要代码如下: public void onClick(View v)

{

Button btn=(Button)v; switch (btn.getId()) { case R.id.button1: Intent intent=new Intent(); intent.setCla(mycalActivity.this, secondactivity.cla); startActivity(intent); break;

case R.id.button2: Intent intent=new Intent(); intent.setCla(mycalActivity.this, thirdactivity.cla);

startActivity(intent);

8 break;

case R.id.button3: Intent intent=new Intent(); intent.setCla(mycalActivity.this, forthactivity.cla); startActivity(intent); break;

case R.id.button4: finish();

}

2、基本加减乘除界面

图3-3为加基本减乘除界面。用户在文本框中输入参加运算的数据,并点击要进行的运算符号,然后点击等号之后,将在等号下方显示结果处显示出计算结果。点击clear按钮,可以将两个文本框中的内容以及显示的结果一起清空,用户可以输入新的数据计算。

在文本框中输入时可以用图右侧的硬键盘,或者是手机自带的软键盘。

9

图3-3

示例如下:

(1)用户要计算1.23+2.16.在文本框1中输入1.23,点击“+”,再在文本框2中输入2.16,点击“=”,就可以显示出计算结果3.39.如下:

图3-4

(2)计算1-0.32,如图3-5

10 图3-5

(3) 计算3.24*0.25,如图3-6所示。

图3-6

4) 计算55/4,结果为13.75.如下图所示:

11 (图3-7

(5) 计算1/6.如下图所示。由图3-8可以看出,当除不尽时本计算器保留到8位小数,并且最后一位采用了四舍五入的方法,比较科学、准确。

图3-8 (6) 点击clear之后全部清空:

图3-9

具体的实现:主要的思路是,用户先输第一个数,然后点击运算符号,在程序中监听按钮的点击,如果点击了+、--、*、/中某一按钮,这时,就取editText1中的值,通过myeditText1= editText1.getText().toString()实现,为了参与运算,需要把字符串类型转换为浮点型,并将其值赋给变量a,代码为a=Float.parseFloat(myeditText1);用flag的不同值记录用户点击的不同的运算按钮。当用户点击“=”时,就将editText2中的内容取出,也同样转化为数值,并用b记录,然后判断flag的值即可知道对应应采取哪种计算,进而算出最终结果,并用textView1显示出计算结果。“清空”的实现是使对应控件的内容取空即可。核心代码如下:

private OnClickListener listener=new OnClickListener() {

String myeditText1; String myeditText2; float a=0; int flag=0;

float b=0; float result;

13 public void onClick(View v) {

Button btn=(Button)v; switch (btn.getId()) { case R.id.button1: myeditText1= editText1.getText().toString();

flag=1;

break; case R.id.button2:

myeditText1= editText1.getText().toString();

a=Float.parseFloat(myeditText1);

flag=2; break; case R.id.button3:

myeditText1= editText1.getText().toString();

a=Float.parseFloat(myeditText1);

flag=3; break; case R.id.button4:

myeditText1= editText1.getText().toString();

a=Float.parseFloat(myeditText1);

flag=4; break; case R.id.button5:

myeditText2= editText2.getText().toString(); b=Float.parseFloat(myeditText2);

a=Float.parseFloat(myeditText1);

};

}

if(flag==1) result = a+b;

else if(flag==2) result = a-b; else if(flag==3) result = a*b;

else

result=a/b;

String s = \"显示结果: \"; s += result;

textView1.setText(s); break; case R.id.button6:

} editText1.setText(\"\"); editText2.setText(\"\"); textView1.setText(\"显示结果:\"); break;

3、三角函数运算界面

图3-10为三角函数运算界面。用户在文本框中输入参与计算的数据,然后选择点击要进行的运算类型,这时在显示结果处就会显示计算结果。例如,要计算sin30度,先在文本框中输入30,然后点击sin按钮,这时就会显示结果为0.5.同理,可进行其他计算。

15

图3-10

4、其他运算界面

图3-11为其他运算界面,目前可实现平方、立方、开方、求以10为底的对数四种运算,由于时间有限,这个界面目前功能并不完善,暂时实现四种运算,不过,基于本计算器程序的设计理念,本界面主要实现一些其他运算,包括一些特殊运算。在今后,这个界面可以修改和扩充,以至拥有更加完善丰富的计算功能。在现有的界面上的操作流程如下:用户在文本框中输入要进行运算的数据,然后选择点击运算按钮,即可显示运算结果。如输入0.5,点击平方,即显示结果0.25,操作方便。

图3-11

16

第4章

总结

在本次安卓应用程序开发之中,我收获很多,现总结如下:

安卓设计开发过程初期,我打算设计制作一个计算器。但是,刚开始并不能预测难度,不知道在短期内能否很好的完成,于是我的想法是,先实现基本的加、减、乘、除四则运算,然后在此基础上进一步完善丰富其运算功能。首先遇到的问题便是要不要做一个数字键盘。刚开始也试着做了一个键盘,是用button做的,需要很好的布局,但是每当扩充一种功能时,为了使界面整体美观,甚至都要重新设计,很麻烦。后来候突然想到手机有硬键盘,也有自带的软键盘,何不运算的时候直接调出已有的软键盘?这样,根本没有什么必要自己做键盘了,而只需做出运算的按钮即可了。由于当时的目标只是实现加减乘除,因此设计的界面是用两个文本框输入两个数据,然后有+、-、*、/四个按钮供选择,又加一个“=”按钮用于触发显示结果。界面很简单,使用很方便。然后就是才用合适的算法来实现功能。经过思考和多次修改,最后确定了一种比较简明的算法实现。

基本加减乘除功能已经实现,但是计算器的功能过于简单了,接下来便是扩充功能。我首先想到的是需要能实现三角函数运算,常见的平方、开方等运算。但是我遇到了困难。由于刚开始设计的加减乘除运算都是二元运算,因此界面设计的是在两个文本框中输入两个数,但是三角函数计算,平方开方计算都是一元运算,参加运算的数据都只有一个,因而,在原界面上直接扩充并不合适,两个文本框成了扩充的限制。后来经过思考,决定将这些扩充的功能做到别的界面上,与已有的界面相独立,重新设计,这样只需将运算分类,再做一个功能选择的界面,点击不同的运算类别进入不同的运算界面即可,这样这个问题便得到了很好的解决。但是这次设计却给了我很大的教训,开发应用软件的初期设计很重要,不仅要实现现在的目标,还要考虑以后能否进行功能扩充,设计要便于以后的功能扩充,否则,到后来需要扩充时遇到困难,甚至要推翻已有的设计,花费很大的代价。另外,由于时间紧迫,三角函数界面和其他运算界面的功能并不十分完善,只是一些基本的运算,初步体现出了设计的思想,今后还可以进行进一步的扩充,以完善其功能。

在本次开发过程中,我对开发环境进一步的熟悉,基本上可以熟练运用这个

17 环境,也基本掌握了安卓的开发方法及基本流程。在本次开发过程中,主要用到的知识有Activity的使用,在程序中用到了多个窗口,因而需创建多个Activity。还用到了Intent,主要是用于多个Activity之间的跳转,对Intent的作用和用法有了更进一步的熟悉。在本次程序设计中,我也对用户界面设计有了更进一步的掌握,熟练运用Layout,本次用到的主要是LinearLayout和RelativeLayout。

开发期间,我学会了有目的的去学习一些将要用到的东西,仔细地考虑工作流程的规律和步骤,充分利用手中的开发工具,利用其所具备的功能,尽量使自己的开发在代码上实现少而精确、让用户能够尽量简单地进行操作。但是在检测过程中,还是出现了很多的不足之处,这些都是要在今后的工作中需要努力改进和完善的。

在这次程序开发设计中,我也难免会遇到不少困难,这主要是由于我对所用的开发环境并不是很熟悉,开发软件的经验不足。安卓开发用的语言是java,但是我对java的学习并不多,这次开发对我来说可以算是一个全新的尝试,整个开发过程并不是很顺利,却使我从中充分体会到学习的快乐,开发的程序也在一步步得到完善。 这次程序开发由于个人水平及时间有限等原因,只能完成一些基本的功能,好多设想并未完全实现,这不能不说是个遗憾,后期仍需努力。

18

推荐第4篇:安卓实习周记

生产实习周记

激动人心的时刻终于到了,为期三周的生产实习终于开始了。在这宝贵的三周时间里,我们会将理论付诸实践,完成老师安排的任务的同时,学习新的知识。

第一周

实验室三位老师启动了二手书租赁系统这个项目,我们一起讨论了二手书租赁系统的需求。本项目后台采用.net mvc4+ms sqlserver2008,分为后台管理和前台展示,前台分为平台端和手机端。手机端需要有展示图书和预订等功能,我们android组的同学负责手机端的ui设计和功能实现。

由于首次接触android开发,接下来我们开始各自学习android编程基础。自己在图书馆借了一些有关android开发的图书,还在网上下了许多android开发视频。全心投入android技术的学习之中。

初识activity,编写第一个android程序。学习的内容主要有:android 基本组件(activity、intent、broadcast receiver、adapter、service)。activity实际上就是表示的是一个人机的交互程序,用于存放各个显示控件,也是 android的基本组成,所有的android项目都使用java语言进行开发,所以每一个继承了android.app.activity的java类都将成为一个activity程序,而一个android项目将由多个activity程序所组成,而所有的显示组件都必须放在activity上才可以进行显示。activity类的常用方法。android项目中的文件夹作用。android项目中的文件作用。android项目由若干个activity程序所组成,每一个activity都是一个java类;一个android项目中所有用到的资源都保存在res文件夹之中;android中的组件需要在布局管理器中进行配置,之后在activity程序中可以使用findviewbyid()方法查找并进行控制;在布局管理器中定义的每一个组件都有其对应的操作类,用户可以直接实例化这些类的对象进行组件的定义显示;标准的android项目,所有的文字显示信息应该保存在strings.xml文件中保存。 android中的基本控件的学习。掌握文本显示组件的配置及使用;掌握文本显示组件的继承结;掌握文本显示组件的基本属性及操作方法。textview组件的主要功能是用于显示文本,实际上这种控件主要就是提供了一个标签的显示操作。组件的常用属性及对应方法。配置文本显示框。设置“android:text”属性设置文字的显示风格(android:textstyle):正常

(normal)粗体(bold)斜体(italic)。android中设置文字大小的定义类型。在android中所有的组件可以设置大小,但是在设置大小的时候需要指定其单位,这些单位如下:px(pixels):像素; dip(device independent pixels):依赖于设备的像素;sp(scaled pixels —— best for text size):带比例的像素; pt(points):点;in(inches):英尺;mm(millimeters):毫米。使用样式表文件,在android中为了方便美工对组件进行修饰,也可以使用一些样

式文件对组件显示进行控制,用户只需要按照如下的xml文件格式即可定义组件的显示样式。textview作为文本组件主要的功能是显示文本数据;所有的组件可以直接通过一个样式表文件进行属性的配置。

第二周

本周张栋老师又启动了一个新的项目——电子名片管理系统。该项目包括三个部分:个人app、企业版app和管理平台。 该项目的开发背景是:名片是商务交往的纽带。而制作名片的核心目的就是自我展示和业务推介,通过名片建立自己的人脉圈。

传统的纸质名片不易传递,存储和管理。

在商务场合中很多时候需要给多名客户分发名片,而传统的纸质名片需要准备一定的数量和一定的时间进行分发。同时分发和接受的名片并不易存储,极易丢失。大量的纸质名片很难对其进行管理,例如很难找到某张名片。

为了达成以下几个目标决定开发该应用。 1.名片交换方便快捷:1对1名片交换更加方便 2.多人交换一步即成:多人之间的名片交换更加方便,使用应用一

键可以达到目的

3.名片信息清晰易得:对于用户的信息可以进行实时的维护,也可

订制自己的名片信息

4.云人脉圈智能可控:名片信息可同步到云端,保留信息

项目一启动,我们就开始进行需求分析,然后开始设计和制作原型,在大家熬夜奋战的情况下,我们终于完成了个人app、企业app和平台的原型制作。

在完成任务的同时,我还继续深入学习android技术,各自开始编写一些简单的android应用程序。实现简单的界面布局功能。

学习android中各种基本组件的使用

掌握radiogroup类和radiobutton类的使用,单选钮在开发中提供了一种多选一的操作模式,也是经常见到的一种组件,例如:在选择文件编码的时候只能从多种编码中选择一种,或者是选择性别的时候只能从“男”或“女”之中选择一个,而在android中可以使用radiogroup来定义单选钮组件。radiogroup类的常用操作方法。radiogroup提供的只是一个单选钮的容器,只有在此容器之中配置多个按钮组件之后才可以使用,而要想设置单选钮的内容,则需要使用radiobutton类。掌握radiogroup类相当于定义了一个单选钮的容器;radiobutton类用于定义单选钮中的内容。

掌握checkbox组件的使用。checkbox的主要功能是完成复选框的操作,在用户输入信息的时候,可以一次性选择多个内容,例如:用户在选择个人兴趣爱好的时候一定会存在多个,则此时就直接使用checkbox即可完成功能。checkbox类的常用方法。通过程序操作复选框组件。checkbox组件用于实现复

选框的功能。掌握下拉列表spinner的使用;可以通过程序配置spinner显示内容;可以通过配置文件配置spinner显示内容。下拉列表框也是一种常见的图形组件,它可以为用户提供列表的选则方式,与复选框或单选钮相比还可以节省手机的屏幕空间,在android中可以使用android.widget.spinner类实现。spinner类的常用方法。配置列表项:在android中,可以直接在main.xml文件中定义“”节点,但是在定义此元素的时候却不能直接设置其显示的列表项,关于下拉列表框中的列表项有以下两种方式进行配置:方式一:直接通过资源文件配置;方式二:通过android.widget.arrayadapter类读取资源文件或者是指定具体设置的数据。其中,arrayadapter类的功能:有两个主要功能:读取资源文件中定义的列表项或者是通过list集合设置列表项。值得注意的是,对于下拉列表项的显示风格一般都会将其设置为:

“android.r.layout.simple_spinner_item”,下面分别在values文件夹之中定义两个资源文件,用于保存所需要的下拉列表信息。使用spinner可以完成下拉列表框的显示功能;下拉列表框的显示内容可以通过配置文件或程序进行填充。掌握时间选择器的使用;可以通过程序配置显示的时间。在android中使用 timepicker(时间选择器),可以进行时间的快速调整。timepicker的常用方法。掌握日期选择器的配置及使用。与时间选择器对应的还有一个日期选择器 (datepicker),可以完成年、月、日的设置。datepicker类的常用方法。日期选择器可以进行日期的配置;可以通过设置配置不同的显示风格。

线型布局管理器的配置;通过activity程序进行线型布局。布局管理器分类:在android中一共有以下四种布局管理器:linearlayout:线性布局管理器(默认),分为水平和垂直两种,只能进行单行布局;framelayout:所有的组件放在左上角,一个覆盖一个;tablelayout:任意行和列的表格布局管理器,其中tablerow代表一行,可以向行中增加组件;relativelayout:相对布局管理器,更具最近一个视图组件,或是顶层父组件来确定下一个组件的位置。废除的布局管理器:在android 2.3.3版本之前还存在着一种绝对布局管理器

(absolutelayout),此布局管理器使用x、y轴坐标的形式排列组件。线型布局有两种排列方式:水平和垂直可以通过linearlayout 类定义线型布局,而布局参数可以使用linearlayout.layoutparams类完成。framelayout布局(帧布局)就是在屏幕上开辟一个区域以填充所有的组件,但是使用framelayout布局会将所有的组件都放在屏幕的左上角,而且所有的组件可以层叠进行显示。框架布局是在一个指定的区域内使用组件进行填充;可以使用framelayout和 framelayout.layoutparams类手工配置布局。掌握表格布局管理器的基本使用;掌握tablelayout和tablerow的操作关系;掌握表格布局管理器中常见属性的作用。tablelayout是采用表格的形式对控件的布局进行管理的,在tablelayout布局管理器之中,要使用tablerow进行表格行的控制,之后所有的组件要在tablerow中增加。表格布局管理器使用tablerow控制表格行;表格布局的几个属性:定义伸缩列:android:shrinkcolumns=3设置不显示列:

android:collapsecolumns=0,3增加背景图

片:android:background=@drawable/mldn_logo表格布局也可以使用 activity程序动态生成。掌握相对布局管理器的主要特点及使用;可以使用activity程序动态增加组件。相对布局管理器指的是参考某一其他控件进行摆放,可以通过控制,将组件摆放在一个指定参考组件的上、下、左、右等位置,

这些可以直接通过各个组件提供的属性完成。相对布局管理器是以一个组件进行定位的参考;使用relativelayout和relativelayout.layoutparams类可以在activity程序中动态配置布局管理器。 android事件处理的学习。了解事件处理的作用,了解常用的事件及相关处理接口。android程序的开发主要是借助于java语言,其事件的处理流程也是参考了java中的事件处理操作,在java之中,如果要想进行图形界面的事件处理则首先必须有一个事件源,而造成事件源产生可以有多种形式,例如:单击按钮或者是修改下拉列表选项,之后根据此事件源找到相应的事件处理操作类,对事件进行处理。事件处理的核心在于如下操作:注册监听程序;根据指定的事件编写指定的处理程序;在事件处理类之中完成事件的处理操作。单击事件、单选按钮与oncheckedchangelistener、下拉列表框与onitemselectedlistener、监听日期与时间的改变、焦点事件、长按事件、键盘事件、触摸事件。 expandablelistview。

第三周

本周开始编写电子名片管理系统项目规格说明书。接着又和同学们一起分析和设计数据库。在这期间,我不仅学会了分析问题、撰写文档的能力,还学会了许多以前没有使用过得软件。当然在确保完成任务的同时,我还不忘继续学习android开发技术。

本周还学习了android提供的数据的存储方式:在android中一共提供了五种数据存储:sharedpreferences存储;文件存储;sqlite数据库存储;contentprovider存储;网络存储。sharedpreferences提供了一些基础的信息保存功能,所有的信息都是按照“key=value”的形式进行保存的,但是android.content.sharedpreferences接口所保存的信息只能是一些基本的数据类型,例如:字符串、整型、布尔型等。sharedpreferences可以实现简单的数据存储功能实现,可以利用super.getsharedpreferences()方法取得实例。 使用sharedpreferences可以方便的完成数据的存储功能,但是其只能保存一些很简单的数据,如果想存储更多类型的数据,则可以使用文件的存储操作,如果要想操作文件,则需要activity类的支持。利用io流操作文件,考虑到用户要自定义保存目录,以及在“sdcard”上操作,所以本程序不太适合直接使用activity类提供的文件操作方法,用户可以直接使用最传统的io流完成。使用io流完成了文件的保存,但是却存在一个最大的问题,因为现在文件的路径采用的是硬编码的方式设置,那么就有可能因为sdcard不存在而出现错误,即:最好的做法就是判断sdcard是否存在,如果存在则保存,如果不存在则提示用 户“sdcard”不存在,无法保存,而要想完成这个判断的功能就必须通过android.os.environment类取得目录的信息。dom操作:使用文件保存数据固然很方便,但是如果现在数据较多的话,则管理起来就不方便了,所以在使用文件保存时,也往往会采用xml文件形式进行数据的保存,而一旦使用xml操作,那么就肯定需要对xml文件进行解析,而dom解析就是最常用的一种。 sax操作:虽然dom操作使用广泛,但是并不适合于使用dom进行大数据文件的操作,而这个时候就可以使用sax解析方式进行xml文件的读取。使用xmlpull解析:dom和sax在使用上各有特点,但是使用起来也都很不方便,而开发过java ee程序的读者应该很清楚,在日常的工作之中往往会用多种开源组件(jdom、dom4j)来完成xml解析的操作,但是在android操作系统之中又提供了一种pull解析的方式。在android中如果要完成pull解析处理需要org.xmlpull.v1.xmlpullparserfactory类和org.xmlpull.v1.xmlpullparser接口的支持,xmlpullparserfactory类的主要功能是可以通过里面提供的newpullparser()方法取得一个xmlpullparser接口的对象 。以上的程序使用了pull解析方式完成了xml文档的解析操作,但是android中的pull解析方式也可以同样完成xml文档的输出功能,而这个时候就可以利用org.xmlpull.v1.xmlserializer接口完成,此接口主要功能是可以通过程序控制xml文件中的元素、属性、文字的关系结构 。json数据解析:json采用完全独立于语言平台的文本格式(这一点与xml作用类似),使用json可以将对象中表示的一组数据转换为字符串,然后可以在各个应用程序之间传递这些字符串,或者在异步系统中进行服务器和客户端之间的数据传递。 json操作本身有其自己的数据格式,这些数据格式,用户可以自己使用字符串拼凑,也可以直接利用json给出的操作类完成,而在android系统之中,json操作所需要的数据包已经默认集成了,所以用户不再需要任何导包的操作,即可进行开发使用文件存储可以保存更加丰富的数据;在android之中可以使用xml的dom和sax解析方式进行文件操作;在android之中提供了pull解析用于完成xml解析;json可以进行简便的信息传送,性能更高;可以将要读取的文件配置到项目的res文件目录之中,这样可以采用resource直接进行资源文件的读取。 了解sqlite数据库的基本作用;掌握数据库操作辅助类:sqlitedatabase的使用;可以使用命令操作sqlite数据库;可以完成数据库的crud操作;掌握数据库查询及cursor接口的使用。sqlite是一个轻量级的、嵌入式的、关系型数据库,是遵守acid的关联式数据库管理系统,其主要的是针对于嵌入式设备专门设计的数据库,由于其本身占用的存储空间较小,所以目前已经在android操作系统之中广泛的使用着,而且在sqlite数据库之中可以方便的使用sql语句实现数据的增加、修改、删除、查询等操作,最新版本的sqlite数据库为sqlite 3。 在android系统之中,一个android.database.sqlite.sqlitedatabase类的实例都代表了一个sqlite数据库的操作,通过sqlitedatabase类可以执行sql语句,以完成对数据表的增加、修改、删除、查询等操作,在此类之中定义了基本的数据库执行sql语句的操作方法以及一些操作的模式常量。sqlite数据库是一个专门用于嵌入式设备的数据库;sqlite支持sql语句的操作;可以使用sqliteopenhelper类完成数据库的操作;所有的查询数据使用cursor进行接收。 在android当中,每一个应用程序的数据都是采用私有的形式进行操作的,篇2:安卓记事本实习报告 android记事本的设计与实现

——sqlite数据库的设计和操作

学生姓名: 指导老师:

摘 要: 随着智能手机的快速普及,智能手机操作系统市场风生水起。android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。

本文主要介绍了一款android记事本sqlite数据库模块的设计与实现。根据人们日常生活的需要,该记事本的内容包括运用sqlite封装好的方法对数据进行添加、删除、修改、更新和密码进入等功能,并且将查询到的数据传递给activity,具有一定的实用性。 关键词: 记事本;android;手势密码;sqlite;activity design and implementation of android notepad — design and operation of the sqlite database student name: advisor: this paper describes the design and implementation of an android notepad sqlite database module.according to the needs of daily life, including the contents of the notepad good way to use sqlite package data to add, delete, modify, update and paword to acce other functions, and query the data is paed to the activity, has a certain practicality . keywords notepad; android; gesture paword; sqlite; activity 目录

目录 .....................................................................................................................................................................3 1.引言 ...............................................................................................................................................................4 1.1 项目背景 ..............................................................................................................................................4 1.2 项目意义 ..............................................................................................................................................4 1.3 系统可行性分析 ..................................................................................................................................5 1.4 系统主要任务 ....................................................................................................................................5 2.系统方案设计 .................................................................................................................................................6 2.1 搭建android开发平台 .....................................................................................................................6 2.2 sqlite数据库简介 ............................................................................................................................7 2.3 总体方案设计 ...................................................................................................................................10 3.系统软件开发环境 .......................................................................................................................................10 3.1 windows开发环境 ...........................................................................................................................10 3.2 java集成开发环境eclipse ...........................................................................................................11 3.3 adt plugin for eclipse ...............................................................................................................11 4.程序设计 .......................................................................................................................................................12 4.1 程序详细设计 ...................................................................................................................................12 4.2 程序运行及效果截图 .......................................................................................................................13 4.3 对sqlite数据库增删改查代码实现 .............................................................................................18 5.工作总结与展望 ...........................................................................................................................................23 参考文献 ...........................................................................................................................................................24 1.引言

1.1 项目背景 window操作系统的诞生成就了微软帝国,同时也造就了pc时代的繁荣,然而如今,以android和iphone手机为代表的智能移动设备的发明与互联网云技术的兴起却敲响了pc时代的丧钟!这也预示着移动互联网时代(3g)已经来临。

在这个互联网繁荣的时代,有一颗超新星,以它独特性能优势与人性化的ui设计使它在短短的几年迅速的占领了智能移动设备的市场份额,它就是google的android!这也意味着google在移动互联网时代开始抢跑并领跑。

通过调查显示,大部分消费者都会使用手机记事本功能。随着手机记事本功能的不断加强与完善,手机记事本对于人们的意义,已不仅仅像一般记事簿一样简单记录,而是向着更个性化人性化的方向发展。android[1]系统是开源的,它以迅猛的姿势已经占领了全球一半多的市场。记事本在生活和工作也日益凸显出它的重要性,它能更好地帮助人们更好地管理自己的工作和生活,极大的方便了人们的生活。因其开源,我们可以在之上开发安卓记事本软件,同时这也符合广大的市场需求。 1.2 项目意义近几年来随着3g技术成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。在google和android手机联盟的共同推动下,android在众多移动应用开发平台中脱颖而出。android是一个真正意义上的开源智能手机操作系统,该系统一经推出立即受到全球移动设备厂商和开发者的热捧。

我们都知道,无论是产品还是技术,商业应用都是它最大的发展动力。安卓如此受到厂商与开发者的青睐,它的前景是一片光明的。国内对于安卓这方面的市场还没有完全开发出来。只要我们努力学习安卓,对理想,对生活都会有很大的补益。因此,开发这样一套很简单的记事本软件对我们来讲是一件很有必要的事情,在下面的各章中我们将以开发安卓记事本软件为例,谈谈其开发过程和所涉及到的问题及解决方法。 1.3 系统可行性分析 1.3.1 课题调研

(1)与实践活动和相关的文件和资料由作者本人网络查找,以及老师帮助。

(2)具有遇到问题,具有独立思考,耐心钻研,向老师虚心求教的良好态度。

(3)关于技术方面的难题,跟指导老师面谈。 1.3.2 可行性分析

(1)技术可行性:本项目仅需要一台装有eclipse及配置好android开发环境的计算机即可,对计算机本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系统。

(2)经济可行性:由于本软件开发只有三个人,三台电脑就行,基本不需要太大的成本.在经济上完全可行。

(3)操作可行性:界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储。并没有太大的难度,所以,该项目完全有可操作性。 1.4 系统主要任务 (1)设计实现”添加新记事”,”编辑内容”,”删除当前记事”这三个主要的功能模块。 (2)分析并解决实现中的若干技术问题,像组件的选择以及保存方式的选择。 (3)进行测试并分析结果。

当然记事本的基本功能,建立新文件、修改现有文件、删除文件、查看已建立文件等功能是首先必须完成的。可以编写内容,编辑及删除,让记事的方式多样化。记事本软件的界面设计力求简洁,给人清爽的感觉,让图标及按钮以协调的布局呈现出了,菜单功能要相对简单,让用户操作方便,从而让用户体会到此款软件的实用。因为上述操作涉及到的数据量不大,所以将数据库定为安卓系统自带的sqlite数据库[3],所以这就要求我们要实现在sqlite数据库上面的增删改查。不少人希望自己记事本上面的内容不被被人查看,所以要以设置密码的形式来实现保密。鉴于各种各样的密码实现方式,我们选择了用户体验最好的手势解锁方式。以及采用了更加友好的时间显示方式,让用户在使用过程中更加的舒服方便。记事本软件要内存占用适中,cpu占用也是适中,这样让软件运行顺畅。篇3:安卓实习报告

太原科技大学 taiyuan university of science and technology 毕 业 实习报 告

学生姓名:郭锦涛 学 号:201120010106 指导教师: 刘静

所属系部:计算机科学与技术

专业班级:计算机112001班

实习单位:西安软件服务外包学员 2014 年 9 月 19 日

目录

一、实习的目的意义 ...........................................................1 1.1目的: .................................................................1 1.2意义: .................................................................1

二、实习单位计算机应用简介 ...................................................2

三、实习的内容 ...............................................................3 3.1实习课题 ...............................................................3 3.2课题背景和意义 .........................................................3 3.3技术架构 ...............................................................4 3.4系统功能模块图(基础功能) .............................................4 3.5项目截图 ...............................................................5 3.6 概要设计和数据库设计 ...................................................5

四、实习感受 ................................................................10

一、实习的目的意义

毕业实习是学生大学本科教学实践的主要环节,对学生的实践能力的培养具有十分重要的意义。学生通过本次实习,能够了解计算机专业的相关新技术,了解理论知识在实际应用中的作用,了解计算机技术的新发展,体验计算机专业的工作内容和工作特点,拓宽知识面,增强人际沟通能力,加强团队协作精神,为走向社会打下基础。 android以linux为核心的android行动平台,使用java作为编程语言。本实训是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训练,要求学生掌握java语言程序设计的基本技能和android编程的应用,并较系统地掌握java语言程序设计开发方法以及帮助文件的使用等,使学生通过本次实训,能够进行独立的android应用程序开发,能够在实际操作中得到进一步的提高,为以后的学习和工作打下良好的基础。 1.1目的: 1.培养学生运用所学课程java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。

2.培养学生在java语言程序设计的基础上,开发android应用程序的思想和方法。 3.培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。 通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容,包括: 1.确定开发的程序,收集和调查有关技术资料。 2.按软件工程步骤进行程序设计。 3 .对完成的程序进行测试和完善。 4.完成课程设计报告。 1.2意义:

1.锻炼自己的动手能力,将学习的理论知识运用于实践当中,反过来检验书本

上理论的正确性。将自己的理论知识与实践融合,进一步巩固、深化已经学过的理论知识,提高综合运用所学过的知识,并且培养自己发现问题、解决问题的能力,加强对市场营销过程的认识; 2.更广泛的直接接触社会,了解社会需要,加深对社会的认识,增强对社会的适应性,将自己融合到社会中去,培养自己的实践能力,缩短我们从一名大学生到一名工作人员之间的思想与业务距离。为以后进一步走向社会打下坚实的基础; 3.了解公司部门的构成和职能,整个工作流程,从而确立自己在公司里最擅长的工作岗位。为自己未来的职业生涯规划起到关键的指导作用。

二、实习单位计算机应用简介 西安软件服务外包学院(cit)是由市政府主导,产业主管部门及教育主管部门出资,共同组建的一所非营利性质的民办教育机构;是依托陕西(西安)科教优势、软件服务外包产业基础,创建的新型it人才培养基地。学院旨在促进西安软件服务外包产业发展,合理利用西安高校资源的优势、为企业提供人才解决方案服务、拓宽大学生就业通道、打造百万产业队伍,从而推动西安区域经济稳步增长。 西安软件服务外包学院是陕西省软件服务外包人才实训基地、西安市高校大学生就业见习基地、高新区软件服务外包人才实习实训基地,已经成为高等教育的有益补充,成为大学生实习实践的最佳选择。

学院以市场为导向,内部实行企业化管理模式。从企业聘请具有十年以上开发和项目管理经验,并具备授课能力的软件开发工程师担任专职教师,从企业聘请在职工程师担任项目实训师;建立了ojt-s(on job training for student“面向就业的培训”)教学模式;开展对日软件开发、对欧美软件开发、嵌入式技术、数字艺术、软件测试、3g手机应用、kpo等八大专业人才培养方向;与oracle、microsoft、hitachi、sap等国际知名it企业合作,建设对日软件开发实训平台、对欧美软件开发实训平台、嵌入式开发实训平台、数字艺术实训平台;与阿里巴巴、英国伦敦工商会考试局合作,培养kpo(知识流程外包)人才,推动产业结构升级;从企业实际项目转化的项目案例库涵盖有制造、流通、医疗、金融、政府、零售等行业的it项目和最新的it技术;自主开发出40个针对应届

毕业生毕业设计的项目及方案, 12个关于软件工程等相关专业的实习方案,50个应届毕业生实习项目案例。 学院立足西安、面向全国,培养“实用化、国际化、个性化”应用型技术人才,以建设有特色、高水平it应用型职业培训机构为发展目标。用3-5年左右时间建成西北地区较高水平的知名it培训机构。用5-10年左右时间,办成国内高水平的一流it应用型人才培养基地。

三、实习的内容 3.1实习课题

《android移动互联网订餐系统》是基于移动互联网开发的应用项目,项目涉及java、数据库、android等技术领,并在平台领上集成了打印系统,符合餐饮行业的工作流程与业务需求,极大地提高了现有外卖行业的工作效率与经济效益。 3.2课题背景和意义 随着生活水平的提高,学生对饮食的要求越来越高,生活节奏的加快,企业员工订餐人数不断增加,由于大量的学生与企业员工订餐比例不断提高,对订餐行为的信息化需求十分迫切。急需一个适合用户需求的全新便捷订餐平台。这是社会发展不可逆转的趋势。 android移动互联网订餐系统提供全部餐厅信息,订餐方便快捷。订餐用户无须保留订餐传单,全部餐厅信息收入手机中,随身携带方便快捷。不再为吃什么而烦恼。对于喜欢的商家与菜品可进行收藏,以后可直接完成订餐。本系统能够有效地完成用户分享美食、搜索美食、进入该美食所在餐厅进行订餐、餐厅导航等一系列方便用户享 用美食的服务,为android移动互联网服务在餐饮业上的应用提供了一个可能。系统采用android平台开发,可应用在规模庞大的android手机用户当中,界面 友好,操作简单。同时,web端基于b/s结构,餐厅管理员和网站管理员通过web浏览器便可访问web管理端,具有较好的扩展性、可维护性和移植性。篇4:毕业实习周记 20 篇

第一周:

通过紧张的面试,我终于如愿进入到xx公司实习,实习期为三个月。学习相关的专业近3年了,但这是我第一次真正的接触相关的工作。因为这是我的第一份实习工作,心里难免有些忐忑不安。怕自己没有能够做好相关的工作,给该企业带来不好的影响以及麻烦。在该企业安顿下来的时候,我们首先进行了为期5天的培训。在这5天的培训当中,我们对该企业的环境以及企业理念有了初步的了解。但由于我初来乍到,对我们的工作流程还不太不熟悉,幸好我们实习的负责人耐心的给我们讲解了一些需要注意的地方。在他的引导下我们的实习工作也逐步进入正轨。这一周学习的内容不是很多,但是最主要的还是尽快适应单位的节奏以及熟悉各个部门的工作,以便在工作中能很好的协作。

第二周

在这一个星期里,我们结束了我们的培训。正式开始了我们的实习生活。我们的工作就是在基层里做一个普通的工人,起初不能理解该企业的用意。后来慢慢就想通了。只有下放到企业的最基层才能让我们更好的去了解该企业的运作、了解该企业的企业理念。而对于我们个人来说,我们之间的大部分人都是第一次参加工作也许只有这样才能让我们更好的贯彻吃苦耐劳的精神。这个社会不缺少聪明的人,缺少的是能在困难中顶住压力的人。只有在最艰苦的工作里才能培养我们的抗打击能力,从而使我们更具社会竞争力。不过由于是我的第一份实习工作,而且是刚完成了从学生到工人角色的转换,特别是在如此艰苦的条件下所以难免觉得有些无所适从。但是,我会尽量调整心态,希望能够圆满完成这次的实习工作。

第三周

有时候我们觉得时间过得很慢,但时间又总是在不知不觉中过去了。不知不觉,来到这里已经有3个星期。在这3个星期的实习生活里虽然觉得很辛苦但还是觉得有所收获。经过了那么长的时间总算觉得自己已经进入了实习的正轨,不管是在工作上还是在生活上都在慢慢适应。我们的工作相比较学校生活来说还是有些枯燥,只是每天重复着一样的步调一样的工作。毕业和想象中的工作生活有所出入!在我的想象里,每天的工作是充满着活力以及挑战的,也许每天会忙忙碌碌,没有时间吃饭没有时间好好的休息,但是至少是充实的。我向往着那样的生活。但是生活总是事与愿违的,但即使如此我也不希望让这稍显枯燥的生活消磨掉我原有的对生活的向往以及激情。除了,调整心态我们别无选择。 第四周

到单位已经有一段时间了,但对单位的了解紧是片面还需要进一步的了解。我本是个不善于交际的人,这也一直是我的障碍。所以我到单位这么长时间了,交际圈只限于我们部门,对于部门的同事也是了解得甚少,由于平时的生活除了上班和下班没有多大的交集,因此每次一下班之后和同事之间也就没有了什么交流。由于一些老员工彼此相处的时间比较长,对彼此也要更加的了解地多,在他们之间的友谊会比我们新来的同事要深厚,于是我明显感觉到了新老员工之间的区别。我努力尝试要改变这样的状态,但是即使遇上面熟的同事也只是偶尔打个招呼,有时候我只是不知该如何开口,我做过很多这方面的努力,只是效果不佳。我希望在接下来的日子里这种状态会有所改变。我也会更加努力的融合进这个部门 。 第五周

在这一周了,我尝试了很多的方法让自己融入这个部门的圈子。于是我尽量找他 们感兴趣的话题、尽可能的在上班的空闲时间里和他们有更多的交流。在工作上,当我完成我的工作之时我也尽可能的去帮助他们。下了班以后,我并没有像以前一样整天呆在宿舍玩电脑,更多的我选择了和同事出去打打球或者是吃吃宵夜。有时候我们不得不承认有很多的感情都是在球场上以及饭桌上产生的。经过这一个星期的努力,我和部门的同事对彼此之间的了解也越来越深。对于我,他们也少了刚开始的一点点尴尬及隔阂。也许这个世界上的人形形色色,但是没有人会拒绝善意。只要你拿真心去和别人交往,你一定会得到相应的回报。在这个社会上我们不能总是太过于被动要自己去掌握与人交流的主动权,只有这样我们的未来才不会处处处于被动的状态。 第六周

由于与老员工之间相处的越来越好,于是在工作上也给我带来了很多的便利。他们很耐心的给我讲解了一些工作上的注意事项,以及他们多年来的工作经验。我们不得不承认好的人际关系对我们自身的反正来说存在着重要的意义。不仅是个人也好还是企业也好,只有在良好的人际关系下才会有良好的合作。良好的合作往往有助于我们工作的高效完成。能让我们事半功倍而不是事倍功半。这些体会都是在实习过程中所得到的,我终于明白在我们真正踏入社会之前为什么要进行实习。因为学校所教与我们的知识毕竟有限,只有在实际的工作中我们才能学到更多的知识及体验。而这些体验是我们花再多的钱也不能购买的。因为这是只属于我们自己的,不会随着时间的流逝而被遗忘。

第七周

工作中,我们难免会犯错所以挨骂也是在所难免的。当这件事发生在我的身上的时候我才深刻体会到解释就是找理由,据理力争是没有用的。你对领导解释得越多结果就会变得更糟,所以主动承认错误是关键。由于认错态度良好于是领导也就随便骂骂也就算了。我们常常会做错事,也常常会被误解。在工作中不管我们是犯错还是被误解,我们首先要做的不是跟上级阐述我们犯错的理由首先要做的是承认错误。当被误解的时候我们不要忙着去解释,当领导处于愤怒之时,过多的争论只会让事情往更加恶劣的情况发展,倒不如听他说完然后道个歉。其实对于我们来说认错只不过是一件很简单的事情。而且关于误解,总会随着时间的的推移而水落石出的。所以没必要和上级激励力争,因为你们之间本来就是不平等的! 第八周

幸好上次的错误没有给领导留下太多的坏的印象,由于这阵子的工作完成的还算是比较好,于是领导在大家面前夸奖了我,也算是这阵子辛勤工作的回报吧。所以下班的时候觉得心情特别舒畅。我想这也许就是为什么马斯洛把自我价值的实现放在人类需要的最顶端的原因吧。每个人都需要自身的价值被肯定,当我们的价值得到实现的时候我们就会觉得愉悦,而当我们的不能得到他人的认可的时候我们就觉得难过。虽然这只是一个小小的夸奖,但对于一个实习生来说,能在众多的老员工之间得到夸奖也算是小有成就感吧。因为不是我们所做的努力都是能够被人们所认可的,这就是为什么那么多人不能得志的原因。但是我相信上帝都是公平的,我们的努力一定能够得到回报的除非我们所做的努力还不够多。因此,不要放弃的太早不走下去你不知道你接下来遇到的是什么。

第九周

这一周我们的工作比较忙,大部分的时间里我们都是在加班。加班的时间多了工人的工资也就比较高了。虽然很累但是大部分的员工还是很高兴,也许对于我们 这些刚出社会的人来说不太能够理解。在加班的过程中和一位老员工闲聊,在闲聊的过程中我得知原来他已经在这个厂里面工作了

7、8年。我很冒昧的问了他一个问题:为什么,在这里工作了那么多年还是一个普通员工。他没有责备我如此唐突。而是跟我说:那也没办法大字都不认识几个呢,怎么能去做那些工作呢?我突然觉得知识是多么的重要,虽然我们不能说一个人的学时就代表了一个人的能力,但是在如此功力、竞争如此大的社会。在一定的程度上一个人的学历代表着一个人的水平。因为没有企业有时间、而且愿意花时间去验证你到底有没有能力。所以只能通过一个人的学历来判断了。第一次觉得原来知识是那么的重要。 第十周 相比上一周,这一周的工作就稍微轻松一点了也没有忙了。所以下班以后我们就有了更多的时间做自己的事情了,一般在下班的时候我们都会选择去运动运动。尽管上班也有点累了,但是至少能做一些自己喜欢做的事情也算是一种放松的方法。突然在运动中觉得学校的生活已经离我们越来越远了,好好像从来没有如此的怀念过我们的校园生活。当我们还在学校的时候我们曾拼命的想要逃离我们的学校生活但是真正步入社会以后才能明白,校园的生活是我们一生中最美好的时光。在上学的时候我们常常觉得压力很大,但是现在才明白原来上学所带给我们的压力是人一生中所有的压力中最小的一部分。不得不说一句很俗的话:每个人都是这样,只有在失去的时候才会觉得可贵。

第十一周

由于学校还有一些重要的事情要做的的原因,这个星期我们领导给我们批了几天假让我们回去学校处理一些事情。当我们走进学校,那种熟悉的感觉迎面而来。这种熟悉的感觉让我们每一个人都觉得心情特别的愉悦。虽然以后还不知道还有多少次机会踏进我们的校园,但是每个人都要成长,而成长中总伴随着得到与失去。所以我们不应该只看到自己失去的那部分,而忽略了自己得到的那一部分。还记得刚上大学的时候对这个学校的种种嫌弃。突然想起一句话:学校就是自己在心里骂一千遍但不允许别人骂一遍的地方。对啊,我们总是对我们的母校带着如此复杂的感情。我们很快就办完事情在学校多呆了一天以后我们就回到了工作的地方。不知道为什么的,从学校回来突然觉得好像觉得没有那么的累了„„ 第十二周

不知不觉中,来这里实习已经快两个月了,虽然时间已接近两个月,对工作也是越来越熟悉,但是有时还是会觉得力不从心。而且也失去了刚开始来实习的那种兴奋与好奇,觉得心情总是处在低谷当中,总是振奋不起来。在和领导的偶然闲聊的时候他很友好的跟我说:只要我用心地做,就会左右逢源。越做越觉乐趣,越做越起劲。听他说完顿时觉得茅塞顿开。有人说过:凡职业都具有趣味的,只要你肯干下去,趣味自然会发生。切忌不要粗心大意,马虎了事,心浮气躁。做任何事都一样,需要有恒心、细心和毅力,那才会到达成功的彼岸!对啊,每个职业都会有它的趣味所在的,像我之前所说的不走下去,我们不知道接下来会遇到什么。所以耐心等候吧。 第十三周 在上一周和领导的闲聊之后,在这一周我反省了一下这阵子的工作状态。我突然意识到与其自怨自艾还不如干些别的事情来充实自己,于是我主动要求在空闲的时间去帮帮别的部门的忙。一方面我可以打发打发自己的时间,让自己变得充实而不至于自己的觉得生活无趣。另一方面,既然我们实习是为了学到更多的知识那就趁着实习的期间尽可能的去不同的部门感受一下不同部门的工作。也许这样对我们真正踏上社会的时候也是有所帮助的。即使是生活无趣,其实我们也是可

以让它变得有趣的。其实大部分的原因不在于生活,而是取决于我们带着怎么样的心态去看待生活。

第十四周

由于这一周领导批准了我提出的要去别的部门帮忙的请求,在这一周我也正式到别的部门去帮忙了。所以会比以往更加的,忙碌一点。虽然如此,但是和以往的生活相比我倒是更加喜欢现在的生活忙忙碌碌的。通过在别的部门帮忙,我发现每个部门的工作都是紧密相连的,而每个部门的价值也是相同的,只有在每个部门的互补之中才能使整个企业的利润达到最大化。相反的只要任何一个部门稍有差池都会让整个企业的利益有所下降。因此,我觉得不管是哪一个企业都好,都应该加强企业个部门之间的联系,才能让企业在这个竞争强烈的社会生存下去。才能让企业立于不败之地。

第十五周

慢慢的在别的部门的帮忙工作也慢慢熟悉了,得到了上级领导的好评及赞扬。相比刚进入这个公司的时候不管是在为人处世上还是在工作的处理能力上也有所提高了,慢慢觉得一个人不管工作能力有多强要是不懂得怎么去和别人相处一切都是空谈的。这个实习教给我们最多的不是让我们去如何运用我们的专业知识,不是让我们去获得更多的知识,而是让我们明白何如去生活。相信没有一个人不懂的如何生活,但是却不是所有人都懂得如何在这个社会上生活。通过在这里的观察我发现一般个性太强烈的人都不会再这里呆的太久,反倒是一些较为平和的人留了下来。我想了很久,也许是因为较为平和的人更加适应这个社会的发展趋势吧。

第十六周

在这一个星期里,我还是像往常一样工作一样下班。没有什么特别的事情发生。有时候没有什么事情发生也是一件很好的事情。虽然生活没有什么惊喜但是却也是至少没有什么不好的事情。突然回过头去想在这里的那么多个日子,慢慢的好像已经很习惯。习惯这里的生活、这里的工作。日子好像也比之前想的要过的快一点,刚开始的时候曾经想过要快点结束现在也觉得还好。有时候我们觉得可能会很艰难的日子其实也是很快就过去了。所以我们总要对生活充满希望。

第十七周

这个星期又犯了点小小的错。虽然领导没有过多的责备但是心里还是觉得又些许的过意不去。人都是这个样子难免会有过错,首先要自己学会原谅自己。如果自己一直处于纠结之中不愿意给自己宽恕,那么别人又怎么来宽恕你呢?我们可以犯错但是不能一错再错。于是我这样安慰自己。在这样想之后自己也觉得心里好受一点,既然过去的事情已经不能再挽回了,那至少从现在开始我们还可以好好把握,避免下一个错误的发生。也许生活没有必要太过于纠结。

第十八周

我们都说社会这趟水太深。有时候和朋友闲聊都说说起诸如此类的事情,比如上级的什么亲戚被提升为了什么什么„„经过在这个企业那么长时间的实习,我不得不承认:不管是在任何一个地方都会有太多的潜规则。可是即使是这样我们还是不能被潜规则。我始终坚信只要是你有能力,只要是你能让企业有所发展,利益有所提高,不管是什么潜规则都会给你让步。与其抱怨还不如让自己更强一点, 强大到有一天你会被别人看到为止„„ 第十九周

离实习结束的日子不远了,而实习结束了也就意味着我们很快就要真正踏入社会了。其实我在想在这段时间的实习过程中进入这个社会的各方面的准备呢?我想也许我已经做好了大部分的准备了,不管是心态上也好、生活上、工作上也好。在这个实习的过程中我们每一个人都在不知不觉中做好了准备。也许我们从来也没有发觉到这一点。我想这也许就是我们实习最大的意义吧。对于每一个刚出校门的我们,身上有太多的锐气以及娇气。我们就像是刚出山上开凿下来的石头,有太多的棱角。而这实习的几个月就像是刻石把我们打磨得更加的圆滑。只有这样子才能让我们更好的去适应这个社会。而不被社会所淘汰。我感谢这个实习来得恰到好处,让我能够及时明白:怎么样的人才是这个社会真正需要的人。 第二十周

到现在为止我的实习工作就要接近尾声,我也即将结束在这里的实习工作。在这几个月里面带给我的感触太多太多,连自己也觉得奇怪到最后竟然有点舍不得,但是生活是向前的我们必须要忘前走。也许以后我们不再需要做如此艰辛的工作,也可以脱离低层的工作。但是我不会忘记这一段时间的实习所带与我的感受,不会忘记自己的原来的样子。也许以后的路不会比现在更加顺畅,但是我坚信,这几个月的实习都挺过来了那么以后的路上还有什么可怕的呢。我相信只要努力未来一定会越来越美好的。“实践是检验真理的唯一标准”,通过这次实习,我也发觉自己有许多不足之处,但是所谓真诚所至,金石为开。在今后的生活中,我会朝着自己的目标,不断努力学习,弥补不足,为自己的理想而奋。篇5:于斌彬实习报告

毕业实习报告

关于在北京翡翠教育科技有限公司从

事java程序员的实习报告

实习单 位: 北京翡翠教育科技有限公司

实习时 间: 2013.11.14—2013.12.13 学 生 姓 名: 余彬斌

学 号: 1042152145 院 系: 信息工程学院

专 业: 信息管理与信息系统 2013年 12月13日

题目:关于在北京翡翠教育科技有限公司从事java程序员的实习报告

一、实习单位及岗位简介

(一)实习单位简介

北京翡翠教育科技有限公司是由教育培训行业精英和海外归国留学人员发起创办的专注于移动互联网及数字娱乐领域职业教育的机构。自年成立以来,致力于培养移动互联网、android 智能手机应用软件、ios平台开发、游戏研发、动漫设计等国家紧缺人才。公司业务涵盖技术培训、产品开发、产品孵化、产业合作等。

拥有翡翠教育研究部门、卓新思创移动互联网教育联盟、上海志趣动漫设计有限公司、完美空间动漫游戏培训中心等。

致力于通过领先的技术方案、高品位的教育服务和变革性的创新资源,完善个体的终生学习和学习型组织的发展进程,助力于全社会的创新能力和国民素质的提升。

拥有一支具有多年android、ios、symbian、windowsphone、j2me等不同平台开发经验的大型研发团队,已经自主研发了数百款移动互联网软件和游戏,均已在中国移动、中国联通、中国电信等各大平台上商业运行,构建自主知识产权的产品开发生产线。

在北京、上海、深圳、广州、成都、西安等地设立了分支机构,并且与国内外顶尖高校和研究机构,包括国际知名企业建立深入合作关系,并且与中国移动通信、中国联通、中国电信等大型移动互联网运营商及上百家移动互联网企业形成了人才战略合作伙伴关系,联合培养众多精通最新移动开发技术的专业开发人才,通过职业培训建立相关人才库,为有潜力的开发团队进行资金支持,通过整合权威教育资源和产业资源,有力地推动了自身和行业企业的发展。

(二)实习岗位简介

这次我实习的岗位是java程序员,由于之前我学习过c++语言,其和java有共通之处。所以学起来相对较轻松。每天我和我同学一起去机房听老师给我们讲解java上的知识,上课我们认真听讲并随时做笔记。老师会给我们布置一些课堂作业和课后作业让我们去完成,我们每个人都很积极的去完成老师教给我们的任务。我们需要掌握老师讲解的知识,把老师布置的作业在java上完整的实现出来,在实习结束的时候能够按照老师的要求完成我们学习的项目,最后我们需要完整独立的做出一个项目。

二、实习内容及过程

这次实习我学习了java和一些安卓方面的知识,实习时间一共四周。我努力的做一个合格的java程序员。

第一周我们学习了java介绍和安装eclipse(集成开发工具)。它的作用是方便程序员开发应用和游戏,eclipse的安装(重点):

1、解压eclipse到某个盘下

2、安装jdk

3、配置环境变量

符号

1+号在数字和字符串之间起到连接作用;2/号如果两个整数相除,/号用来取整;3%号;4==号;5!号将比较后的结果反一反;6&&(短路与),||(短路或),&&表示并且的意思,只有当两个条件全都正确才返回true,否则返回false||表示或者的意思,两个条件中如果有一个或者两个条件成立就返回true,否则返回false;7

变量:数值可以随意变化,在java中每个变量前必须有一种类型

常量:数值是固定的,不会变化 java中的类型

常用类random(随机数) scanner(控制台文本扫描)

基本数据类型 1)整数类型

--byte(字节)-128~127 --short(短整型) -2的15次方到2的15次方-1 --int(整型) 常量整形省略(int)2 --long(长整型) 63次方,最后加一个l标识一下 2)浮点(小数)类型

--float(单精度) 加f标识一下 32位 --double(双精度) 64位 3)字符类型

--char16范围:0~65535 4)布尔(逻辑)类型

--boolean 对或错 作用:判断

2、引用类型

1、类类型 string字符串 random随机数 在这一周内我过得很充实。早上我们正常起床,吃过早饭我们立马去教室,上课我们认真听讲,一晃一上午过去了。感觉时间过得特别快,但是我们学到了很多知识。我们的学习氛围也特别好。

推荐第5篇:安卓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中的常用类和接口有了进一步的认识。对编程有了一种新的看法,编程在我的学习中不再是那样的枯燥无味,而是时时刻刻充满惊喜。虽然这是一个挺小的项目但它对我在编程方面起到了一种激励的作用。我会在此基础上更加努力做出更好的程序。

推荐第6篇:安卓实训报告

通信与电子信息专业实训报告

项目名称:基于android的游戏开发

班 级 10通信1班

姓 名

学 号

指导教师

成 绩

实训时间:年月日—

目录

一、实训目的及其意义 ............................................3 1.1、目的及意义..............................................3 1.

2、研究现状................................................3

二、实训主要任务、重点及难点 ....................................4 2.1、任务....................................................4 2.

2、重点内容及实现途径......................................4

三、实训具体内容及完成的主要工作 ................................5 3.1、认识基础开发............................................6 3.

2、了解数据存储............................................6 3.3、总体实训过程............................................7

四、实际遇到的困难,解决问题的方法和措施 ........................8

(一)、所遇问题 .................................................8

(二)、解决方法与措施 ...........................................9

五、心得体会 ....................................................9

一、实训目的及其意义 1.1、目的及意义 了解现阶段互联网发展主流,了解移动互联网,认识移动互联网的发展与展望,认识android,了解基于android的应用软件开发方法及其商业流程。把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。使学生在此期间能够初次体会到实际生产中的种种技能与经验,完成一项项目锻炼独立思考及团队合作能力。使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会生产中应用的感性认识,深入了解计算机在各个领域中的应用状况。生产实习是学校教学的重要补充部分,是区别于普通学校教育的一个显著特征,是教育教学体系中的一个不可缺少的重要组成部分和不可替代的重要环节。它是与今后的职业生活最直接联系的,学生在生产实习过程中将完成学习到就业的过渡,因此生产实习是培养技能型人才,实现培养目标的主要途径。它不仅是校内教学的延续,而且是校内教学的总结。生产实习一方面巩固了书本上学到的理论知识,另一方面,可获得在书本上不易了解和不易学到的生产现场的实际知识,使我们在实践中得到提高实训环节对于提高学生的综合能力和全面素质具有重要意义。 1.

2、研究现状 android 是google开发的基于linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序 —— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。google与开放手机联盟合作开发了 android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 t-mobile 在内的 30 多家技术和无线应用的领军企业组成。google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。 android主要使用于移动设备,如智能手机和平板电脑,由google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。android操作系统最初由andy rubin开发,主要支持手机。2005年8月由google收购注资。2007年11月,google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良android系统。随后google以apache开源许可证的授权方式,发布了android的源代码。第一部android智能手机发布于2008年10月。android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。目前基于android的移动终端上的软件应用开发很火热,android平台的开发已越来越强大。 android是一种以linux为基础的开放源码操作系统,主要使用于便携设备。android操作系统最初由andy rubin创办,最初只支持手机。2005年由google收购注资,并拉拢多家制造商组成开放手机联盟(open handset alliance)开发改良,逐渐扩展到到平板电脑及其他领域上。

二、实训主要任务、重点及难点 2.1、任务

认识移动互联网,了解移动互联网的开发,认识及了解android,在给定时间内完成基于android平台的游戏项目的开发,实现预想游戏效果,熟悉项目开发的商业流程,给出游戏全套文档及代码。

2.2、重点内容及实现途径 2.2.

1、重点内容:熟悉游戏开发代码,了解项目流程,对android游戏开发有基本了解。 2.2.2、实现途径:

所需运行硬件环境:

安卓系统2.2以上 3.5寸以上移动设备

软件开发环境的配置:

(1) 配置java程序开发环境

(2) 安装并汉化eclipse(jdk) (3) android sdk的安装

(4) adt的安装及配置

(5) android模拟器的配置

(6) office2003以上版本的软件(绘图visio) 然后运用eclipse完成项目代码的编写,运行与调试; 最终在实体终端上进行测试,最终完成项目

三、实训具体内容及完成的主要工作

实训前期,有老师给我们讲解了现阶段移动互联网的发展,了解移动互联网的发展主流,说明了现阶段移动互联的发展重要性。老师着重给我们讲解了android的发展,以及现阶段移动互联中android所扮演的角色。接下来我们将针对基于android的游戏开发进行学习,由于时间的原因,我们主要了解了一下游戏开发的基本项目流程,具体的操作将在实训过程中一一讲解验证。

接下来老师为我们讲解了实训的具体内容,对于一个游戏开发项目,首先我们需要进行游戏开发的前期准备,主要是游戏开发环境的配置,以及团队开发过程中的任务分配,之后紧张的游戏项目开发拉开了帷幕。在第一天我们主要学习了eclipse软件的使用,包括游戏工程的创建等等。并且针对eclipse中的 android项目结构进行了讲解:android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由android开发工具自动生成的文件。目录中最重要的就是r.java文件。 这个文件由android开发工具自动产生的。res/ 资源(resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。aets资源目录android除了提供/res目录存放资源文件外,在/aets目录也可以存放资源文件。androidmanifest.xml 项目清单文件 。篇二:安卓实训报告

实习报告书

专 业 计算机科学与技术 系 别

报告题目

安卓

报告人 班

指导教师

带队教师 实习时间 实习地点

教务处监制 篇三: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//files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击eclipse菜单“window”-“show view”-“other”,在对话窗口中展开android文件夹,选择下面的file explorer视图,然后在file explorer视图中展开/data/data//files目录就可以看到该文件。 openfileoutput()方法的第二参数用于指定操作模式,有四种模式android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data//files),其他程序无法访问。除非在创建时指定了context.mode_world_readable或者context.mode_world_writeable ,只有这样其他程序才能正确访问。 实习流程: 2月18——2月27日,老师对于android开发进行了详细的讲解,其内容包括:android 的背景介绍,发展过程,自身的优势与不足.android的控件、布局、activity、service等一系列基础知识,对整个android的开发有了大致的了解 2月28日——3月2日: 学生自己开发android 3gabs项目,老师答疑及验收

实习心得:

时间过的飞快,半个月的实习就要结束了,在这次实习中我们不仅学习了相关的

专业知识而且让我对android系统又有了一个更加深入的了解,它也是我们计算机专业的一个新的方向并且发展很迅速,为了今后的发展我们还需不断努力学习!我国的信息产业还很落后,随着社会的发展和国家的支持,手机上网是社会发展的趋势,到时候手机上网将无处不在!之前我对android系统的了解之停留在应用的层次上,对于更深层次的了解是很少的,通过这次实习,让我对android系统有了一个更深层次的了解,同时它页使我意识到无论朝哪个方向发展,主要还是要扎实深刻地学习,同时也得不断努力探索! it业发展速度一直都是相当惊人的,不想被社会淘汰,我们就得必须不断地学习,现在的社会不再是一劳永逸,其他行业也是如此,我们必须不断地拿知识来武装自己,不然被淘汰那是肯定的!现在就业难原因其实在于竞争的家具,为了在竞争中得到成功,我们必须时时刻刻学习,还学到了很多做人做事的道理,不仅懂得了要想在计算机这一行立足必须具备扎实的技术理论知识,还必须学会与人沟通,合作的能力,同时更懂得了尝试的重要性,很多事情不是听说是困难的它就是困难的,只有亲自去做亲自去体会才知道,其实它并没有那么困难,这就是实践的重要性! 无论做什么事情都必须要坚持,只有坚持下去,才会成功!事在人为,就怕不做!我们不能怕失败,关键是要从失败中总结经验,带着勇气,带着自信,坚持不懈,踏踏实实。这一次的实习是短暂的,但我收获良多。回顾以前所走过的路,太多的无奈和迷茫,这次实习就像是我人生道路上的航标,为我指明了前景的方向,是我对自己的前途充满了信心,我不仅知道了在人生的岔道口更适合朝哪个方向前进!更知道了在今后的道路上怎么去武装自己!

实习结果:篇四:android实训报告

多媒体技术综合实训

课题名称 多媒体展示系统的设计与开发

计算机与软件学院

计算机多媒体(游戏软件设计与开发)

计媒1021 1002553224 学 号 1002553206 1002553218 院 系 专 业 班 级 1002553212 1002553201 1002553206 罗传龙 尹喜晨 王育 李乐乐 赵妹 范小玉 学生姓名

指导教师: 聂桂军、杨立力 2012 年 06 月 19 日

目 录

目 录 ........................................................3 前 言 ........................................................4 第一章 概要设计 ................................................5 1.1 项目研发背景 ............................................5 1.2 项目功能简介 ............................................5 1.3 实训的操作环境 ..........................................6 第二章 整体设计 ................................................7 2.1 框架设计 ................................................7 第三章 详细设计 .............................................8 3.1 模块的设计 ..............................................8 实训心得 ......................................................43 参考文献 ......................................................44 前言

随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备。因此,手机的应用服务将会有很大的发展空间,android手机学生系统管理服务就是其中的一项。目前的学生系统管理服务主要以使用单机或者网页方式实现,这些方式不适合在户外旅游等场合下进行,给用户造成了很多的不便。android平台提供给普通开发者非常灵活的学生资料展示与控制功能,这将使学生系统管理服务的设计与实现有了更好的平台。另外,android平台基本上是免费的,所以能够有效降低软件的成本,最终让每个用户能够自由地获取信息,也为手机服务的普及做出贡献。 本次实训对目前应用现状进行了分析与比较,进而研究分析了android平台的系统架构和组件模型,在此基础上,基于android平台设计和开发了一个手机学生系统管理服务,本系统界面友好、操作便捷,具有良好的可扩展性和可维护性;系统经过测试,可以稳定运行,能够满足手机用户基本的学生系统管理服务需求。

第一章 概要设计 1.1 项目研发背景

学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依赖人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。 1.2 项目功能简介

学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体目标是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。推行学校信息管篇五:android实训报告

南 京 师 范 大 学 泰 州 学 院

题 目:

信 息 工 程 学 院 android实 训 报 告 android gps系统 号: 09090103 名: 冯超洁 级: 信工091 2012 年 6月

摘 要

随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备。因此,手机的应用服务

将会有很大的发展空间,手机地图服务就是其中的一项。目前的地图服务主要以使用单机或者网页方式实现,这些方式不适合在户外旅游等场合下进行,给用户造成了很多的不便。android平台提供给普通开发者非常灵活的地图展示与控制功能,这将使地图 服务的设计与实现有了更好的平台。另外,android平台基本上是免费的,所以能够有效降低软件的成本,最终让每个用户能够自由地获取信息,也为手机地图服 务的普及做出贡献。 本文对目前应用现状进行了分析与比较,进而研究分析了android平台的系统架构和组件模型,在此

基础上,基于android平台设计和开发了一个手机web地图服务,该系统包括自我定位、地图模式、路线查询、地点查找四大模块。自我定位模块的功能就是把手机用户自己所在地方的地图和经纬度在界面中显示出来。行走踪迹模块的功能就是把用户经过的地方以路线图的形式给画出来。地点查找模块的功能就是查询一个地方,并把它在地图中标注出来。

本系统界面友好、操作便捷,具有良好的可扩展性和可维护性;系统经过测试,可以稳定运行,能够 满足手机用户基本的地图服务需求。

推荐第7篇:安卓实验报告

安卓实验报告

班级:学号:姓名:

xxxxx

11111111

xxxx

实验一:Activity生命周期的测试

一:实验目的

掌握使用Eclipse开发Android应用开发程序的方法; 掌握Android虚拟设备的创建方法; 了解Android的程序结构;

了解使用命令行创建Android程序方法;

了解Activity生命周期,理解Activity事件回调,onRestoreInstanceState()和 onSaveInstanceState两个函数的使用。

二:实验设备

Eclipse 开发Android 应用 Android虚拟设备( AVD)

三:实验内容

(1)正常启动ActivityLife,然后单击用户界面的“结束程序”按钮关闭程序。

(2)正常启动ACtivityLife,然后通过“拨号键”启动内置的拨号程序,再通过“回 退建” 退出拨号程序,使ActivityLife重新显示在屏幕中。

四:实验核心代码

package com.example.activitylife;

import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.os.Build;

public cla MainActivity extends Activity { private static String TAG=\"LIFECYCLE\"; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); Log.i(TAG,\"(1) onCreate()\"); Button button =(Button) findViewById(R.id.btn_finish); button.setOnClickListener(new OnClickListener() {

public void onClick(View view) {

// TODO Auto-generated method stub

finish();

} }); }

@Override

protected void onStart() { // TODO Auto-generated method stub

super.onStart(); Log.i(TAG,\"(2) onStart()\"); } @Override

protected void onRestoreInstanceState(Bundle savedInstanceState) { // TODO Auto-generated method stub

super.onRestoreInstanceState(savedInstanceState); Log.i(TAG,\"(3) onRestoreInstanceState()\"); } @Override

protected void onResume() { // TODO Auto-generated method stub

super.onResume(); Log.i(TAG,\"(4) onResume()\"); } @Override

protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub

super.onSaveInstanceState(outState); Log.i(TAG,\"(5) onSaveInstanceState()\"); } @Override

protected void onRestart() { // TODO Auto-generated method stub

super.onRestart(); Log.i(TAG,\"(6) onRestart()\"); } @Override

protected void onPause() { // TODO Auto-generated method stub

super.onPause(); Log.i(TAG,\"(7) onPause()\"); } @Override

protected void onStop() { // TODO Auto-generated method stub

super.onStop(); Log.i(TAG,\"(8) onStop()\"); } @Override

protected void onDestroy() { // TODO Auto-generated method stub

super.onDestroy(); Log.i(TAG,\"(9) onDestroy()\"); } } 五:运行结果截图:

实验二:用户界面——自我介绍

一:实验目的:

了解各种界面控件的使用方法;

掌握按键事件和触摸事件的处理方法;

掌握radioButton和radioGroup的使用方法。

二:实验设备

Eclipse 开发Android 应用 Android虚拟设备( AVD)

三:实验内容

要求写一个自我介绍的安卓应用,包括姓名,性别,爱好,其中性别用radioButton选项编写,点击提交时,姓名,性别,爱好会在下面显示出来。

四:实验核心代码:

public cla MainActivity extends Activity { private EditText editText1; private EditText editText2; private EditText editText3; private TextView textView1; private TextView textView2; private TextView textView3; private RadioGroup radioGroup; private RadioButton radioButton1; private RadioButton radioButton2; private Button button; protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

editText1 = (EditText) findViewById(R.id.e1);

editText2 = (EditText) findViewById(R.id.e2);

textView1 = (TextView) findViewById(R.id.t1);

textView2 = (TextView) findViewById(R.id.t2);

textView3 = (TextView) findViewById(R.id.t3);

radioGroup = (RadioGroup) findViewById(R.id.RadioGroup1);

radioButton1 = (RadioButton) findViewById(R.id.RadioButton1);

radioButton2 = (RadioButton) findViewById(R.id.RadioButton2);

button = (Button) findViewById(R.id.button1);

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

public void onCheckedChanged(RadioGroup arg0, final int arg1) {

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View arg0) {

String str = editText1.getText().toString().trim();

String str1 = editText2.getText().toString().trim();

textView1.setText(\"姓名:\"+str);

textView3.setText(\"爱好:\"+str1);

if (arg1 == R.id.RadioButton1)

textView2.setText(\"性别:\"+\"男\");

else if (arg1 == R.id.RadioButton2)

textView2.setText(\"性别:\"+\"女\");

}

});

}

}); } } 五:运行结果截图:

实验三:不同界面的切换

一:实验目的

掌握各种界面布局的特点和使用方法;

掌握选项菜单,子菜单和快捷菜单的使用方法。

二;实验设备

Eclipse 开发Android 应用 Android虚拟设备( AVD)

三;实验内容:

设计一个Tab标签页,实现LinearLayout,RelativeLayout,AbsoluteLayout三种分页面之间的切换,每个页面的内容包括用户名和确定,取消两个按钮

四:实验核心代码: AndroidMainfest.xml:

public cla MainActivity extends TabActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TabHost tabHost=getTabHost(); LayoutInflater.from(this).inflate(R.layout.tab1,

tabHost.getTabContentView(),true); LayoutInflater.from(this).inflate(R.layout.tab2,

tabHost.getTabContentView(),true); LayoutInflater.from(this).inflate(R.layout.tab3,

tabHost.getTabContentView(),true); tabHost.addTab(tabHost.newTabSpec(\"TAB1\").

setIndicator(\"线性布局\").setContent(R.id.layout01)); tabHost.addTab(tabHost.newTabSpec(\"TAB1\").

setIndicator(\"绝对布局\").setContent(R.id.layout02)); tabHost.addTab(tabHost.newTabSpec(\"TAB1\").

setIndicator(\"相对布局\").setContent(R.id.layout03)); } } Tab1,java public cla Tab1 extends Activity { public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.tab1); } }

Tab2.java public cla Tab2 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.tab2); } }

Tab3.java public cla Tab3 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.tab3); } }

五:运行结果截图:

实验四:登陆界面和广播消息

一:实验目的

了解使用Intent进行组件通信的原理; 了解Intent过滤器的原理与匹配机制;

掌握发送和接受广播消息的方法。

二:实验设备

Eclipse 开发Android 应用 Android虚拟设备( AVD)

三:实验内容

先写一个登陆界面,包括用户名,密码,点击登陆时实现页面的跳转功能,在第二个页面使用Intent发送消息,并调用sendBroadcast()函数把Intent携带的消息传送出去,用BroadcastReceiver接受广播消息,在页面下方显示广播内容。

四;实验核心代码:

public cla MainActivity extends Activity { private Button button; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button) findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() {

public void onClick(View arg0) {

Intent intent=new Intent(MainActivity.this,Second.cla);

startActivity(intent);

} }); } } public cla Second extends Activity { private Button button2; private EditText editText; protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.second);

Intent intent=getIntent();

editText=(EditText) findViewById(R.id.e1);

button2=(Button) findViewById(R.id.button2);

button2.setOnClickListener(new View.OnClickListener() {

public void onClick(View arg0) {

Intent intent=new

Intent(\"com.example.broadcasttest.MY_BROADCAST\");

intent.putExtra(\"meage\", editText.getText().toString());

sendBroadcast(intent);

}

});

}

public cla MyBroadcastReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) {

String msg=intent.getStringExtra(\"meage\");

Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } }

android:name=\".Second\">

五:运行结果截图

实验五:Service绑定实现数据运算

一:实验目的

了解Service的原理和用途;

掌握本地服务的管理和方法; 掌握服务的隐式启动和显示启动方法;

掌握远程服务的绑定和调用方法。

二:实验设备

Eclipse 开发Android 应用 Android虚拟设备( AVD)

三:实验内容

以绑定方式使用Service,获取Service实例,当点击绑定服务时可以实现两个数的求差和比较大小功能,并输出结果,当点击取消绑定服务时,则无法运算。

四:实验核心代码

public cla MathService extends Service{ private final IBinder mBinder=new LocalBinder(); public cla LocalBinder extends Binder{ MathService getService(){

return MathService.this; } } public IBinder onBind(Intent intent) { Toast.makeText(this, \"本地绑定:MathService\",Toast.LENGTH_SHORT).show(); return mBinder; }

public boolean onUnbind(Intent intent){ Toast.makeText(this, \"取消本地绑定:MathService\", Toast.LENGTH_SHORT).show(); return false; }

public long sub(long a,long b){ return a-b; }

public int compare(long a,long b){ if(a>b) return 1; else if(a==b) return 0; else return -1;

} }

public cla MainActivity extends Activity { private MathService mathService; private Button button1; private Button button2; private Button button3; private Button button4; private EditText editText1; private EditText editText2; private EditText editText3; private boolean isBound=false; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText1=(EditText) findViewById(R.id.e1); editText2=(EditText) findViewById(R.id.e2); editText3=(EditText) findViewById(R.id.e3); button1=(Button) findViewById(R.id.but1); button2=(Button) findViewById(R.id.but2); button3=(Button) findViewById(R.id.but3); button4=(Button) findViewById(R.id.but4); button1.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

if(!isBound){

final Intent serviceIntent=new Intent (

MainActivity.this,MathService.cla);

bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE);

isBound=true;

}

}

}); button4.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) { if(isBound){

isBound=false; unbindService(mConnection);

mathService=null; }

} });

button2.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

if(mathService==null){

editText3.setText(\"未绑定服务\");

return ;

}

String a = editText1.getText().toString();

long a1 = Long.parseLong(a);

String b = editText2.getText().toString();

long b1 = Long.parseLong(b);

long result=mathService.sub(a1, b1);

String msg=String.valueOf(a1)+\"-\"+String.valueOf(b)+

\"=\"+String.valueOf(result);

editText3.setText(msg);

} });

button3.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

if(mathService==null){

editText3.setText(\"未绑定服务\");

return ;

}

String a = editText1.getText().toString();

long a1 = Long.parseLong(a);

String b = editText2.getText().toString();

long b1 = Long.parseLong(b);

long result=mathService.compare(a1, b1);

if(result==1){

editText3.setText(a+\">\"+b);

}

else if(result==0){

editText3.setText(a+\"=\"+b);

}

else {

editText3.setText(a+\"

}

} }); } private ServiceConnection mConnection=new ServiceConnection() {

public void onServiceDisconnected(ComponentName arg0) {

mathService=null;

}

public void onServiceConnected(ComponentName name, IBinder service) {

mathService=((MathService.LocalBinder)service).getService();

} }; }

实验六:SQLite实现用户的增删改查

一:实验目的

了解SQLite数据库的特点和体系及结构;

掌握SQLite数据库的建立和操作方法;

理解ContentProvide的用途和原理;

掌握ContentProvider的创建和使用方法。

二:实验设备

Eclipse 开发Android 应用 Android虚拟设备( AVD)

三:实验内容

使用SQlite数据库实现用户(包括:姓名,年龄,身高)的添加数据,全部显示,清除显示,全部删除,ID删除,ID查询,ID更新的功能。

四:实验核心代码

public cla MainActivity extends ActionBarActivity { private EditText et_name; private EditText et_sex; private EditText et_department; private EditText et_id; private EditText et_salary; private MyOpenHelper oh; private SQLiteDatabase db; private TextView tv; private LinearLayout ll; @Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

oh = new MyOpenHelper(MainActivity.this, \"test.db\", null, 1);

db = oh.getWritableDatabase();

et_name = (EditText) findViewById(R.id.et_name);

et_sex = (EditText) findViewById(R.id.et_sex);

et_department = (EditText) findViewById(R.id.et_department);

et_salary = (EditText) findViewById(R.id.et_salary);

et_id = (EditText) findViewById(R.id.et_id);

ll = (LinearLayout) findViewById(R.id.ll); }

public void add(View v){

db = oh.getWritableDatabase();

String name=et_name.getText().toString();

String sex=et_sex.getText().toString();

String department=et_department.getText().toString();

String salary=et_salary.getText().toString();

ContentValues values=new ContentValues();

values.put(\"name\",name );

values.put(\"sex\", sex);

values.put(\"department\",department);

values.put(\"salary\", salary);

db.insert(\"staff\", null, values);

tv=new TextView(MainActivity.this);

tv.setText(\"添加成功\");

db.close(); } public void show(View v){

db = oh.getWritableDatabase();

Cursor cursor=db.query(\"staff\", null, null, null, null, null, null, null);

while(cursor.moveToNext()){

String id=cursor.getString(cursor.getColumnIndex(\"_id\"));

String name=cursor.getString(cursor.getColumnIndex(\"name\"));

String sex=cursor.getString(cursor.getColumnIndex(\"sex\"));

String department=cursor.getString(cursor.getColumnIndex(\"department\"));

String salary=cursor.getString(cursor.getColumnIndex(\"salary\"));

tv=new TextView(MainActivity.this);

tv.setText(\"ID:\"+id+\" ;\"+\"Name:\"+name+\" ;\"+\"Sex:\"+sex+\" ;\"+\"Department:\"+department+\" ;\"+\"Salary\"+salary);

ll.addView(tv);

}

db.close(); } public void clear(View v){

ll.removeAllViews(); } public void deleteAll(View v){

db = oh.getWritableDatabase();

db.delete(\"staff\", null, null);

tv=new TextView(MainActivity.this);

tv.setText(\"删除成功\");

db.close(); }

public void deleteById(View v){

db = oh.getWritableDatabase();

String id=et_id.getText().toString();

db.delete(\"staff\", \"_id=?\", new String[]{id});

db.close();

tv=new TextView(MainActivity.this);

tv.setText(\"ID删除成功\"); } public void findById(View v){

db = oh.getWritableDatabase();

String id=et_id.getText().toString();

Cursor cursor=db.query(\"staff\", null, \"_id=?\", new String[]{id}, null, null, null, null);

while(cursor.moveToNext()){

id=cursor.getString(cursor.getColumnIndex(\"_id\"));

String name=cursor.getString(cursor.getColumnIndex(\"name\"));

String sex=cursor.getString(cursor.getColumnIndex(\"sex\"));

String department=cursor.getString(cursor.getColumnIndex(\"department\"));

String salary=cursor.getString(cursor.getColumnIndex(\"salary\"));

tv=new TextView(MainActivity.this);

tv.setText(id+\";\"+name+\";\"+sex+\";\"+department+\";\"+salary);

ll.addView(tv);

tv=new TextView(MainActivity.this);

tv.setText(\"ID查询成功\");

}

db.close(); } public void updateById(View v){

db = oh.getWritableDatabase();

String id=et_id.getText().toString();

String name=et_name.getText().toString();

String sex=et_sex.getText().toString();

String department=et_department.getText().toString();

String salary=et_salary.getText().toString();

ContentValues values=new ContentValues();

values.put(\"name\",name);

values.put(\"sex\", sex);

values.put(\"department\",department);

values.put(\"salary\", salary);

db.update(\"staff\", values, \"_id=?\", new String[]{id});

tv=new TextView(MainActivity.this);

tv.setText(\"更新ID成功\");

db.close(); } }

public cla MyOpenHelper extends SQLiteOpenHelper {

public MyOpenHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version); }

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(\"create table staff(_id integer primary key autoincrement,name text,sex text,department text,salary float)\"); }

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} }

五:运行结果截图

实验七:天气预报 一:实验目的

了解位置服务的概念;

了解地图密钥的申请方法;

掌握获取地理信息的方法;

二:实验设备

Eclipse 开发Android 应用 Android虚拟设备( AVD)

三:实验内容

写一个项目,实现显示天气预报的用户界面,显示已发送SMS短信的用户界面,不同地区天气的转换

四:实验核心代码

package com.example.weather;

import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List;

import net.sf.json.JSONArray; import net.sf.json.JSONObject; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Meage; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast;

import com.zy.bean.Sms; import com.zy.bean.Weather;

public cla MainActivity extends Activity { private MyConn conn = new MyConn();; private EditText et_city; private TextView tv_result; private ImageView iv_weather; private Handler handler; private Intent intent; private MyOpenHelper oh; private ServiceFunctions sFunctions; private MyArrayAdapter myArrayAdapter = null; private ListView lv; private int a = 1; private Weather weather; private List smsList = null;

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

oh = new MyOpenHelper(MainActivity.this, \"weatherdemo.db\", null, 1);

// System.out.println(\"数据库创建完\");

et_city = (EditText) findViewById(R.id.et_city);

tv_result = (TextView) findViewById(R.id.tv_result);

iv_weather = (ImageView) findViewById(R.id.iv_weather);

lv = (ListView) findViewById(R.id.lv);

// System.out.println(\"lv找到了\");

intent = new Intent(this, MyService.cla);

startService(intent);

Toast.makeText(MainActivity.this, \"服务启动\", 0).show();

bindService(intent, conn, BIND_AUTO_CREATE);

Toast.makeText(MainActivity.this, \"服务绑定\", 0).show();

handler = new Handler(new Handler.Callback() {

@Override

public boolean handleMeage(Meage msg) {

final Weather weather = (Weather) msg.obj;

tv_result.setText(weather.toString());

}

new Thread(new Runnable() { @Override public void run() {

// TODO Auto-generated method stub

try {

URL url = new URL(weather.getDayPictureUrl());

HttpURLConnection con = (HttpURLConnection) url

.openConnection();

con.setRequestMethod(\"GET\");

if (con.getResponseCode() == 200) {

final Bitmap bitmap = BitmapFactory

.decodeStream(con.getInputStream());

runOnUiThread(new Runnable() {

}

@Override

public void run() {

// TODO Auto-generated method stub

iv_weather.setImageBitmap(bitmap);

}

}); }

} catch (Exception e) {

// TODO Auto-generated catch block e.printStackTrace(); }

}).start();

return false; } }); cla MyConn implements ServiceConnection {

@Override public void onServiceConnected(ComponentName name, IBinder service) { sFunctions = (ServiceFunctions) service; } @Override public void onServiceDisconnected(ComponentName name) {

} } cla MyArrayAdapter extends ArrayAdapter {

} public MyArrayAdapter(Context context, int resource,

int textViewResourceId, List objects) { super(context, resource, textViewResourceId, objects); } public void saveWeather(View view) { if (a == 1) {

sFunctions.insertInfo(weather, oh);

a++; } else {

sFunctions.updateInfoById(\"1\", weather, oh); } Toast.makeText(MainActivity.this, \"保存天气信息成功\", 0).show(); } public void show(View view) { smsList = sFunctions.findAll(oh); if (smsList.size() >0) {

List sList = new ArrayList();

for (Sms sms : smsList) {

String s = sms.toString();

sList.add(s);

}

if (sList.size() >0) {

myArrayAdapter = new MyArrayAdapter(MainActivity.this,

R.layout.second, R.id.tv_show, sList);

lv.setAdapter(myArrayAdapter);

} } }

public void getWeather(View view) {

new Thread(new Runnable() {

String city = et_city.getText().toString();

@Override

public void run() {

try {

URL url = new URL(

\"http://api.map.baidu.com/telematics/v3/weather?location=\"

+ URLEncoder.encode(city)

+ \"&output=json&ak=QLZmpAbwFlWreQ28kLVgvKEC\");

HttpURLConnection con = (HttpURLConnection) url

.openConnection();

con.setRequestMethod(\"GET\");

int code = con.getResponseCode();

if (code == 200) {

BufferedReader reader = new BufferedReader(

new InputStreamReader(con.getInputStream()));

JSONObject json = JSONObject.fromObject(reader

.readLine());

// System.out.println(obj.toString());

JSONArray array = json.getJSONArray(\"results\");

JSONObject obj = array.getJSONObject(0);

JSONObject weather_data = obj.getJSONArray(

\"weather_data\").getJSONObject(0);

weather = new Weather(obj.getString(\"currentCity\"), obj

.getString(\"pm25\"), weather_data

.getString(\"date\"), weather_data

.getString(\"weather\"), weather_data

.getString(\"wind\"), weather_data

.getString(\"temperature\"), weather_data

.getString(\"dayPictureUrl\"), weather_data

.getString(\"nightPictureUrl\"));

Meage msg = new Meage();

msg.obj = weather;

handler.sendMeage(msg);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}).start(); } }

package com.example.weather;

import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper;

public cla MyOpenHelper extends SQLiteOpenHelper {

public MyOpenHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version); }

@Override public void onCreate(SQLiteDatabase db) {

db.execSQL(\"create table sms(_id integer primary key autoincrement,sms_sender text,sms_body text,sms_receive_time text,return_result text)\");

db.execSQL(\"create table weatherinfo(_id integer primary key autoincrement,info text)\"); }

@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

} }

package com.example.weather;

import java.util.List;

import android.app.Service; import android.content.Intent; import android.content.ServiceConnection; import android.os.Binder; import android.os.IBinder;

import com.zy.bean.Sms; import com.zy.bean.Weather;

public cla MyService extends Service { private ISmsDaoImpl daoImpl; private MyBinder myBinder = new MyBinder();

@Override public IBinder onBind(Intent intent) {

return myBinder; }

@Override public void unbindService(ServiceConnection conn) {

super.unbindService(conn); }

cla MyBinder extends Binder implements ServiceFunctions{

public long insertSms(Sms sms,MyOpenHelper oh) {

return MyService.this.insertSms(sms,oh);

}

public List findAll(MyOpenHelper oh) {

return MyService.this.findAll(oh);

}

public long insertInfo(Weather w,MyOpenHelper oh) {

return MyService.this.insertInfo(w,oh);

}

public int updateInfoById(String id, Weather w,MyOpenHelper oh) {

return MyService.this.updateInfoById(id, w,oh);

} }

public long insertSms(Sms sms,MyOpenHelper oh) {

daoImpl=new ISmsDaoImpl(oh);

long id = daoImpl.insertSms(sms);

return id; }

public List findAll(MyOpenHelper oh) {

daoImpl=new ISmsDaoImpl(oh);

List smsList = daoImpl.findAll();

return smsList; }

public long insertInfo(Weather w,MyOpenHelper oh) {

daoImpl=new ISmsDaoImpl(oh);

long id = daoImpl.insertInfo(w);

return id; }

public int updateInfoById(String id, Weather w,MyOpenHelper oh) {

daoImpl=new ISmsDaoImpl(oh);

int num = daoImpl.updateInfoById(id, w);

return num; } } 五:运行结果截图

推荐第8篇:安卓学习心得

Android学习心得

-----093380117

计算机应用(1)

张峰

1.关于Activity

1.在一个Activity中使用多个View

如果把Activity看作MVC中的Control?它负责管理UI和接受事件(包括用户的输入),虽然说一个Activity通常对应一个屏幕,但事实上,我们是可以只用一个Activity管理多个不同的View来实现简单的逻辑。 首先,我们增加一个新的资源描述layout/second.xml。

除了一个“Hello中国”以外,增加一个按钮可以返回前一个界面。然后,在代码中我们要为helloTwo增加两个方法,setViewOneCommand和setViewTwoCommand,分别处理一下在不同界面时,从资源里加载组件并为组件绑定一个事件处理器最后,我们需要在onCreate的时候,也就是启动后的main界面上设置一下按钮事件处理器。 2.还是回到正道上,多个Activity之间的跳转

Android中提供一个叫Intent的类来实现屏幕之间的跳转,按文档的说法,似乎他们也建议采用这种方法,Intent的用法比较复杂,现在我先看看它最简单的用法。

这里的跳转功能用Intent来操作,它的最简单用法就是用函数setCla()设置跳转前后两个Activity类的实例,然后调用Activity自己的startActivity(intent)即可。最后一句finish()表示将当前Activity关掉(如果不关掉会如何?你可以自己试一下看效果,事实上有时我们是不需要关掉当前Activity的)。

然后,我们同样弄一个Activity类HelloThreeB,代码与前面的差不多,只是将setCla的两个参数反一下,这样就可以简单地实现在两个Activity界面中来回切换的功能了。

2.关于 Intent的使用

Intent分为两大类,显性的(Explicit )和隐性的(Implicit)。一般来说,intent要定位事件的目的地,无外乎需要以下几个信息: 1.种类(category),比如我们常见的 LAUNCHER_CATEGORY 就是表示这是一类应用程序。

2.类型(type),在前面的例子中没用过,表示数据的类型,这是隐性Intent定位目标的重要依据。

3.组件(component),前面的例子中用的是setCla,不过也可以用setComponent来设置intent跳转的前后两个类实例。4.附加数据(extras),在ContentURI之外还可以附加一些信息,它是Bundle类型的对象。

其实,如果是在一个应用内部,这种隐性的intent实在有点别扭,个人觉得,这种松藕合的实现方法,只适用于那些较大的系统或者多个不同的应用之间的调用,可手机上又有什么“较大”的系统呢?无非是可以与不同来源的多个应用之间方便地互操作而已,那么会是什么样的场景呢?比如,给QQ好友发送gmail邮件,用GoogleMap查找QQ好友所在的位置?看上去挺不错的。

关于这个ContentProvider,其实还有话说,它主要是的那些看似数据库操作的方法我们都没真正去实现呢。不过今天就到这里了,等下回再去研究吧。

3.关于ListActivity

准备一个List对象并借助Adapter就可以构造出一个列表。重载onListItemClick方法可以响应选择事件,利用第一个参数可以访问到这个ListView实例以得到选中的条目信息。这里有一点要说明的,就是如果更简单的话,其实连那个setContentView都可以不要了,Android也会自动帮我们构造出一个全屏的列表。但是本例中我们需要一个TextView来显示选中的条目,所以我们需要一个layout.mainb描述一下这个列表窗口。

这里需要注意的是那个ListView的ID,是系统自定义的android:list,不是我们随便取的,否则系统会说找不到它想要的listview了。然后,在这个listview之外,我们又增加了一个TextView,用来显示选中的条目。

再来说说这里用到的ArrayAdapter,它的构造函数中第二个参数是一个资源ID,ArrayAdapter的API文档中说是要求用一个包含TextView的layout文件,平台用它来显示每个选择条目的样式,这里的取值是R.layout.list_row,所以,我们还有一个list_row.xml文件来描述这个布局,相当简单。

从ArrayAdapter上溯到BaseAdapter,发现还有几个同源的Adapter也应该可以使用,象SimpleAdapter和CursorAdapter,还是做个例子来实验一下吧。

然后,在HelloTwoB中的onCreate函数中,修改代码,有几个不同:items的元素是HashMap实例,这是一点变化,然后构造函数除了要求items以外,还要求提供一个string[]来说明用hash表中的哪个字段显示在列表中,而后是一个资源ID的数组。

因为单纯的CursorAdapter是抽象类,所以我用的是它的子类SimpleCursorAdapter,很好理解,先用ContentResolver查询通讯簿得到一个游标,然后告诉SimpleCursorAdapter要用其中的People.NAME作为显示项来构造出一个adapter即可。 4.关于Dialog

注意到android.app包下除了Dialog(可用于制作复杂的对话框)以外,还包括了几个系统定义好的对话框类,如DatePickerDialog、TimePickerDialog及AlertDialog。

其中AlertDialog我上回用过一次,基本上就那样子了,今天看看另外两个对话框的使用吧。

很简单的,无非是需要一个OnDateSetListener接口的实现而已,在它里面的dateSet方法中就可以得到选择的日期了。而TimePickerDialog与DatePickerDialog使用如出一辙。

看看另一个ProgreDialog的用法吧,这个类与AlertDialog一样包含了多个static的方法,所以使用起来是非常方便的。比如说,如果我们需要用它来表示一个长时间的操作。

5.关于Service和Notification

大略地看了一下android.app下的Service类,觉得它与Activity非常相似,只是要注意几个地方:

1.生命周期,Service的从onCreate()->onStart(int,Bundle)->onDestroy()显得更为简单。但是它的onStart是带参数的,第一个ID可用来标识这个service,第二个参数显示是用来传递数据的了。比较Activity,传递数据的Bundle是在onCreate就带进入的。

2.Service的启动由Context.startService开始,其实Activity或者Service都是Context的派生类。结束于Context.stopService()或者它自己的stopSelf()。

3.Service还有一个与Activity不一样的是它可以由另一个Context去绑定一个已存在的Service。就是这个方法Context.bindService(),被绑定的Service要求是已经onCreate了但可以没有onStart。在Service类中有个抽象方法getBinder()可以得到这个IBinder对象。关于这方面的细节,以后再看,这里只做个记录罢。

4.与Service有关的还有一个安全的问题,可以在AndroidManifest.xml中用标签来声明一个Service的访问权限,关于Android的安全问题也留待以后再解决吧。

6.GridView与ImageView

简单一点吧,就瞧瞧那个Grid的效果,Android提供了一个GridView,不过从APIDemo中看来,它似乎与PC上的GRID差别还是挺大的,更像那个IconView的感觉。不知道Android中如何实现表格界面?虽然在移动终端上,表格一般不会有谁使用,大家似乎更倾向于使用ListView,而Android对于ListView则有更简单的实现ListActivity。

很简单,只要重载几个方法就可以了,关键是那个getView方法,它负责构建出每个单元格中的对象实例。这里我们构造的是一个ImageView实例。

然后就是同样的将这个Adapter赋给GridView即可,大家可以看看效果,注意在做这个例子前,先放几个小图片到res/drawable目录下,buildproject一下就可以得到那个R.drawable.a了(这里的a是图像文件名,如a.png)。

在getView方法中我们使用了ImageView类,这又是一个widget。除了上面用到的几个方法以外,还有以下几个方法值得注意: 与图像来源有关的方法,我们只用了资源文件的方式。

还是习惯性跑题了,其实,我是想通过我对这个类的无数次Debugger跟进,说说它的多线程异步处理的解决策略的。他的基本策略如下: 1.当你实例化一个AsyncQueryHandler类时(包括其子类...),它会单件构造一个线程(后面会详述...),这个线程里面会构建一个消息循环。

2.获得该消息循环的指针,用它做参数实例化另一个Handler类,该类为内部类。至此,就有了两个线程,各自有一个Handler来处理消息。 3.当调用onXXX的时候,在XXX函数内部会将请求封装成一个内部的参数类,将其作为消息的参数,将此消息发送至另一个线程。 4.在该线程的Handler中,接受该消息,并分析传入的参数,用初始化时传入的ContentResolver进行XXX操作,并返回Cursor或其他返回值。

5.构造一个消息,将上述返回值以及其他相关内容绑定在该消息上,发送回主线程。

6.主线程默认的AsyncQueryHandler类的handleMeage方法(可自定义,但由于都是内部类,基本没有意义...)会分析该消息,并转发给对应的onXXXComplete方法。

7.用户重写的onXXXComplete方法开始工作。

这就是它偷偷摸摸做过的事情,基本还是很好理解的。我唯一好奇的是它的线程管理方式,我猜测他是用的单件模式。第一个AsyncQueryHandler的实例化会导致创建一个线程,从此该线程成为不死老处男,所有的ContentResolver相关的工作,都由该线程统一完成。个人觉得这种解决方式很赞。本来这个线程的生命周期就很难估量,并且,当你有一个ContentProvider的请求的时候,判断你会做更多的类似操作并不过分。就算错了,花费的也只是一个不死的线程(与进程同生死共存亡...),换来的却是简单的生命周期管理和无数次线程生死开销的节约。同时另外一个很重要的问题,他并会涉及到单件中数据同步的问题,每个类都有各自的Handler类,彼此互不干扰,分发可以分别进行。当多个数据请求的时候,在同一个ContentResolver上进行的可能微乎其微,这就避免了堵塞。总而言之,这套解决办法和Android的整体设计算是天作之合了。

所以建议,如果你有什么非ContentProvider操作,却需要异步多线程执行的话,模拟一套,是个不错的策略,当然,具体情况具体分析,生搬硬套是学不好马列主义的。

7.显示控件使用

Android的界面显示同样也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的样式来做的。具体细节不想说了,可以参考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI这篇Doc。其他还有很多,感觉算是SDK讲述的最多的内容。

从控件的使用上,和网页的设计类似,尽量用parent_width之类的抽象长度,用Theme来做风格,抽取所有的字串等信息做本地化设计。相关内容参看Implementing a UI就好。

一类比较重要的是数据绑定控件。如果做过ASP.Net会从中看到很多类似的地方。一个支持数据绑定的控件,比如ListView。可以通过一个 ListAdapter绑定到一个数据源上。ListAdapter是一个抽象类,主要的实现类包括SimpleAdapter和 SimpleCursorAdapter。前者是绑定一个静态的Array,后者是绑定一个动态的Cursor。Cursor前面说过,是一个指向数据源的随机迭代器,将View绑定到Cursor通常要设置这样几个参数。一个是每一行的样式,称作Row Layout,其实就是一个普通的Layout的XML文件。还有就是一个列和现实控件的对应关系。那个控件显示哪个列的值,这是需要配置的。为了定制一个良好的数据显示控件,最简单你可以定制很PP的Row Layout,复杂一点就是可以重载绑定控件View,或者是适配器ListAdapter。如果是一个数据显示密集的应用,且你对UI有些追求,这个工作估计是必不可少的。

一个主要用于显示数据内容的Activity,可以选择派生自ListActivity。它提供了一个具有ListView 的Layout,还有simple_list_item_1, simple_list_item_2, two_line_list_item等默认的Row Layout,还有一些比较不错的API,和可供响应选择Item的事件。可以满足你比较基础的需求。如果你觉得只有一个ListView的界面太突兀,你可以为这个ListActivity指定一个Layout,需要注意的是,你需要提供一个id为@android:id/list的ListView控件,避免Activity在内部偷偷寻找该控件的时候失败。

除了这些要求,做好UI还有注意易用性和效率。快捷键是一个比较不错的选择,在 Activity中调用setDefaultkeyMode(SHORTCUT_DEFAULT_KEYS),可以开启快捷键模式,然后你可以将菜单绑定到指定快捷键上就OK了。个人觉得Tip也是一个比较重要的东西,但目前观察看来,这个东西只能够自己提供了。界面的动态性有时候是不可避免的,比如说菜单就是一个需要经常根据光标位置提供不同的选项。这个东西Android很人道的考虑到了,你可以参看NodeList这个Sample。它采取的应该是一个静态模拟动态的方式,这样有助于提高速度。你也可以利用ViewInflate,动态从一个XML创建一个控件。成本据Doc说很大,不到万不得已不要使用。

8.Intent消息传递

在前面写Android的ContentProvider时候,可以看到那是基于观察者模式的一个消息传递方法。每一个Cursor、ContentResolver做为一个小的注册中心,相关观察者可以在这个中心注册,更新消息由注册中心分发给各个观察者。而在MFC或Winform中,都会形成一个消息网,让消息在网中流动,被各节点使用、吃掉或者在出口死掉。

相比之下,我个人觉得基于Intent的Android核心消息传递机制是有所不同的。它应该会有一个全局性的注册中心,这个注册中心是隐性的,整个Android系统中就那么一个。所有的消息接收者,都被隐形的注册到这个中心。包括Activity,Service和IntentReceiver。其实说隐形注册是不确切的,所有注册都还是我们手动告诉注册中心的,只是与传统的方式不一样,我们通常不是通过代码,而是通过配置文件来做。在应用的Manifest中,我们会为一些Activity或Service添加上Intent-filter,或在配置文件中添加项。这其实就相当于向系统的注册中心,注册了相关的Intent-filter和receiver(这个事情完全可以通过代码来做,只是这样就失去了修改的灵活性)。

当程序有一个消息希望发出去的时候,它需要将消息封装成一个Intent,并发送。这时候,应该是有一个统一的中心(恩,有可能Android底层实现的时候不是,但简单这样看是没问题的...)接受到这个消息,并对它进行解析、判定消息类型(这个步骤降低了耦合...),然后检查注册了相匹配的filter或receiver,并创建或唤醒接收者,将消息分发给它。这样做有很多好处。虽然这种传递有的时候不如点对点的传递快(这有些需要速度的地方,我们看到Android会通过直接通信来做),但有时候又因为它只经过一跳(姑且这么叫吧...),比复杂的流动又要更快。更重要的是,它耦合性低,在手机平台这种程序组件多变的条件下使用十分适合。并且它可以很容易实现消息的精确或模糊匹配,弹性很大。(我个人曾想在开发一个C++二次平台的时候引入这样的机制,但在C++中,建立一套完整的数据marshal机制不容易,相比之下,用java来做会简单很多...)

恩,废话说了很多,具体讲讲Android中Intent的使用。当你有一个消息需要传递,如果你明确知道你需要哪个Activity或者其他Cla来响应的话,你可以指定这个类来接受该消息,这被称为显性发送。你需要将Intent的cla属性设置成目标。这种情况很常见,比如startActivity的时候,会清楚当前Activity完了应该是哪个Activity,那就明确的发送这个消息。

但是,有的时候你并不确定你的消息是需要具体哪个类来执行,而只是知道接收者该符合哪些条件。比如你只需要有一个接收者能显示用户所选的数据,而不想制定某个具体的方法,这时候你就需要用到隐形发送(传统上,我们可能会考虑用多态,但显然这种方式更为灵活...)。在Android中,你可以为Intent指定一个action,表示你这个指令需要处理的事情。系统为我们定义了很多Action类型,这些类型使系统与我们通信的语言(比如在Activity里面加一个Main的filter,该activity就会做成该应用的入口点),当然你也可以用于你自己的应用之间的通信(同样当然,也可以自定义...)。强烈建议,在自己程序接收或发出一个系统action的时候,要名副其实。比如你响应一个view动作,做的确实edit的勾当,你发送一个pick消息,其实你想让别人做edit的事,这样都会造成混乱。当然只有Action有时候是不够的,在Android中我们还可以指定catalog信息和type/data信息,比如所有的显示数据的Activity,可能都会响应View action。但很多与我们需要显示的数据类型不一样,可以加一个type信息,明确的指出我们需要显示的数据类型,甚至还可以加上一个catalog信息,指明只有你只有按的是“中键”并发出这样的消息才响应。 从上面可以看出,Android的Intent可以添加上cla, action, data/type, catalog等消息,注册中心会根据这些信息帮你找到符合的接收者。其中cla是点对点的指示,一旦指明,其他信息都被忽略。Intent中还可以添加key/value的数据,发送方和接收方需要保持统一的key信息和value类型信息,这种数据的marshal在java里做,是不费什么力气的。

Android的Intent发送,可以分成单播和广播两种。广播的接收者是所有注册了的符合条件的IntentReceiver。在单播的情况下,即使有很多符合条件的接收者,也只要有一个出来处理这个消息就好(恩,个人看法,没找到确切条款或抉择的算法,本来想实验一下,没来得及...),这样的情况很容易理解,当你需要修改某个数据的时候,你肯定不会希望有十个编辑器轮流让你来处理。当广播不是这样,一个receiver没有办法阻止其他receiver进行对广播事件的处理。这种情况也很容易理解,比如时钟改变了,闹钟、备忘录等很多程序都需要分别进行处理。在自己的程序的使用中,应该分清楚区别,合理的使用。

9.ContentProvider数据模型

数据库操作

从我目前掌握的知识来看,SQLite比较轻量(没有存储过程之类的繁杂手段),用起来也比较简单。实例化一个SQLiteDatabase类对象,通过它的APIs可以搞定大部分的操作。从sample中看,Android中对db的使用有一种比较简单的模式,即派生一个 ContentProviderDatabaseHelper类来进行SQLiteDatabase对象实例的获取工作。基本上, ContentProviderDatabaseHelper类扮演了一个singleton的角色,提供单一的实例化入口点,并屏蔽了数据库创建、打开升级等细节。在ContentProvider中只需要调用ContentProviderDatabaseHelper的openDatabase方法获取SQLiteDatabase的实例就好,而不需要进行数据库状态的判断。 URI 像进行数据库操作需要用SQL一样,对ContentProivder进行增删改查等操作都是通过一种特定模式的URI来进行的(ig:content: //provider/item/id),URI的能力与URL类似,具体细节可以查看SDK。建立自己的ContentProvider,只需要派生 ContentProivder类并实现insert, delete, update等抽象函数即可。在这些接口中比较特殊的是getType(uri)。根据传入的uri,该方法按照MIME格式返回一个字符串(==!没听过的诡异格式...)唯一标识该uri的类型。所谓uri的类型,就是描述这个uri所进行的操作的种类,比如content://xx/a与 content://xx/a/1不是一个类型(前者是多值操作,后者是单值),但content://xx/a/1和content://xx/a/2 就会是一个类型(只是id号不同而已)。

在ContentProvider通常都会实例化一个ContentURIPraser来辅助解析和操作传入的URI。你需要事先(在static域内)为该ContentURIPraser建立一个uri的语法树,之后就可以简单调用 ContentURIPraser类的相关方法进行uri类型判断(match方法),获取加载在uri中的参数等操作。但我看来,这只是在使用上简化了相关操作(不然就需要自己做人肉解析了...),但并没有改变类型判定的模式。你依然需要用switch...case...对uri的类型进行判断,并进行相关后续的操作。从模式来看,这样无疑是具有强烈的坏味道,类似的switch...case...代码要出现N此,每次一个 ContentProvider做uri类型的增减都会需要遍历修改每一个switch...case...,当然,如果你使用模式(策略模式...)进行改造对手机程序来说无疑是崩溃似的(类型膨胀,效率降低...),所以,只能是忍一忍了(恩,还好不会扩散到别的类中,维护性上不会有杀人性的麻烦...)。 增删改查

ContentProvider 和所有数据源一样,向外提供增删改查操作接口,这些都是基于uri的指令。进行insert操作的时候,你需要传入一个uri和 ContentValues。uri的作用基本就限于指明增减条目的类型(从数据库层面来看就是table名),ContentValues是一个 key/value表的封装,提供方便的API进行插入数据类型和数据值的设置和获取。在数据库层面上来看,这应该是column name与value的对应。但为了屏蔽ContentProvider用户涉及到具体数据库的细节,在Android的示例中,用了一个小小的模式。它为每一个表建一个基于BaseColumn类的派生类(其实完全可以不派生自BaseColumn,特别当你的表不基于默认的自动id做主键的时候),这个类通常包括一个描述该表的ContentURI对象和形如 public static final TITLE = \"title\"这样的column到类数据的对应。从改变上角度来看,你可以修改column的名字而不需要更改用户上层代码,增加了灵活性。 insert方法如果成功会返回一个uri,该uri会在原有的uri基础上增加有一个row id。对于为什么使用row id而不是key id我想破了脑袋。到最后,我发现我傻了,因为ContentProvider不一定需要使用数据库,使用数据库对应的表也可以没有主键,只有row id,才能在任何底层介质下做索引标识。

但,基于row id在删除和修改操作是会造成一定的混乱。删除和修改操作类似。删除操作需要传入一个uri,一个where字串,一组where的参数(做条件判定...),而修改操作会多一个ContentValues做更新值。着两个操作的uri都支持在末尾添加一个row id。于是混乱就出现了。当在where参数中指明了key id,而在uri中提供了row id,并且row id和key id所指函数不一致的时候,你听谁的?示例代码中的做法是完全无视row id(无语...),如此野蛮的方式我估计也只能在示例中出现,在实际中该如何用,恩,我也不知道。幸运的是,我看了下上层对 ContentProvider的删除操作,其实都不会直接进行,而是通过调用Cursor的delete方法进行,在这前提下,我想Cursor会处理好这些东西吧。

最后一个操作是查询操作,可以想见,查询的参数是最多的,包括uri和一组条件参数。条件参数类型和标准的sql类似,包括 sort, projection 之类的。从这些参数到sql语句的生成,可以寻求QueryBuilder类的帮助,它提供了一组操作接口,简化了参数到sql的生成工作,哪怕你不懂 sql都完全没有问题(这话说的我自己都觉得有点悬...)。查询返回一个Cursor。Cursor是一个支持随机读写的指针,不仅如此,它还提供了方便的删除和修改的API,是上层对ContentProvider进行操作一个重要对象,需要仔细掌握(Cursor还可以绑定到view上,直接送显,并与用户进行交互,真是程序越往上,封装越好,工作越机械没有复杂性了...)。 数据模型

在与界面打交道的Cursor、ContentResolver等数据操作层中,大量采用观察者模式建立数据层与显示层的联系。一个显示层的视图,可以做成某一种观察者注册到Cursor或ContentResolver等数据中间层中,在实现底层ContentProvider中,我们需要特别注意在对数据进行修改操作(包括增删改...)后,调用相应类型的notify函数,帮助表层对象进行刷新(还有一种刷新方式是从一个view发起的)。可以看到 Android的整体数据显示框架有点像MVC的方式。Cursor、ContentResolver相当于控制层,数据层和显示层的交互通过控制层来掌管,而且控制层很稳定不需要特别定制,通常工作只在定制数据层和显示层空间,还是比较方便和清晰的。

10.学习感想

通过这学期对安卓的学习,大概了解了以上一些知识,对安卓有了初步的了解,这几个月给我的东西我想用有形的和无形的两部分概叙,形的当然就是技术水平的长进,虽然其中肯定有很多的不足,相信慢慢会体会到。

推荐第9篇:安卓学习

安卓开发学习准备要点介绍

要说当下IT行业当中最具创造力、前瞻性、延续性和实现能力,想必有相当的人会把票投给Google的安卓,安卓开发学习也成为新潮流。安卓开发学习要做什么准备?下面就由福州卓跃教育具体介绍。

首先,最好先熟悉一门编程语言,现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程,只是很多同学在大学期间并没有好好学习,如果对它掌握的不太好或者很久没用了,建议先从将其好好复习一下,将其基本的语法再好好回顾一下,最好能搭建一个环境来运行、调试它。如果没有学过,不妨也提前学习一下,可以参考清华大学出版社出版的谭浩强老师的《C语言程序设计》,推荐这本书的原因一是它已经经过了多年的考验,应该说还是比较严谨的;其次就是大部分的高校所开设的C语言使用的教材都是用它作为教材,因此无论是购买还是借阅,都容易找到。

其次,如果后续有志于游戏方面的开发,最好具备一定的数据结构和算法基础知识。虽然现代的高级编程语言中,其类库中已经帮我们实现了大部分的数据结构,一般情况下,我们直接使用即可。但如果能对其原理有所了解,当需要在这些数据结构和算法中间的时候,可以更加的清楚到底应该选择那个数据结构或者算法。另外,在图形图像处理上面,线性代数的作用也非常重要,如果能掌握一点这方面的基础知识,无疑也会在后续的学习中如虎添翼。举个例子,在Android中,有一个用于图形变换的类Matrix,用起来稍有点难。

第三,因为Android的应用的开发语言用的是Java语言,并且在Android中也用到了Java核心类库的大量的类,因此,在学习Android开发之前,可以先把Java基本语法和Java SE的基础类库好好学习一下Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。

至少要掌握以下两个方面的内容:a) Java基础语法:具体的知识点列表可以在这里下载:《Java知识点列表》V1.0。这部分内容没有讨价还价的余地,必须烂熟于胸。至于具体的学习方法,可以看书或者是看视频,但是关键是要多加练习,无论是书上的练习还是视频里面的练习,都需要仔仔细细的完成;b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类非常之多,一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,就可以举一反三。这部分内容可以在《Effective Java》和《Agile.Software.Development:

Principles,Patterns.and.Practices》这两本书中找到。

推荐第10篇:卓毛实习报告

认识实习报告

中国矿业大学(北京)力建学院土木04(2)班谢卓0411530207认识实习是土木工程专业教学过程中的一个重要环节,是在我们基本学完本科要求的基础理论知识,全面进入专业基础理论和专业课学习之前进行的一次必不可少的实践教学活动。通过认识实习我们要达到如下目的:

1、通过实习,使自己了解所学专业的性质、主要工作任务、以及在国内基本建设中的重要作用;从而加深对本专业的了解和热爱,进一步认识到学好专业只是对我国四个现代化建设的重要意义。

2、通过实习,使自己能体会到已学基础理论的重要性和必要性,并为后续专业基础课和专业课的学习增加感性认识,提高学习的积极性和主动性,为学好专业知识打下良好基础。

3、通过实习,使自己了解我国土木建筑工程的现状,包括先进的建筑设计构思、建筑结构形式、建筑装修以及先进的建筑施工方法和安全施工措施等,使学生能认识到建筑工程技术发展方向,激发学生的创造性。

4、通过对典型高难度建筑物和建筑施工现场的参观,使自己认识到建筑设计的严谨性与创造性以及建筑施工的复杂性,从而要求自己树立起严谨求新的学习方法,提高学好专业知识的自觉性。

7月3号那天早上七点,我们踏上了认知实习的第一段旅程,经过了将近两个小时的汽车上的颠簸,我们终于到达了目的地——世界公园。等待我们的将是几千年来,人类建筑史上的瑰宝。在这里,我认识了吴哥窟,吴哥窟离暹丽约6公里,是柬埔寨人最大的骄傲。占地约208公顷的吴哥窟是世界上最大的宗教建筑物,与其他世界奇观如泰姬陵或金字塔等齐名;不同的是它并非陵墓,而是一个提供心灵慰藉的宗教中心,这是一座气势磅礴的壮观建筑;我认识了泰姬陵,泰姬陵座落在朱穆那河的岸边,四周是用红砂石砌成的高大围墙,雄伟壮观。陵墓建在一个很高的四方平台上,用白色大理石砌成,光滑洁白,庄严美观。陵墓的上部是个硕大的白色圆顶,平台四角各有一座白色高塔,尖尖地刺入天空。四个尖尖的高塔,衬托着中间泰姬陵的圆顶,两相映衬,给人一种奇特的美感,显得匀称而富有韵律。陵墓的内墙和门窗边缘均用五色宝石镶嵌成各种花纹图案,陵墓前有一条狭长的水池,环绕以绿树和鲜花;玉带般的水池两侧是宽阔的通道,通道上各国游人,来来往往,络绎不绝。池水清澈,碧波荡漾,中有陵墓、树木、鲜花等的倒影,使人心旷神怡。白天,陵墓主体的白色大理石在阳光下烟烟生光;夜晚,皓月当空,有徐徐凉风吹来,给人舒适之感,在盛夏的傍晚,乘凉者不乏其人。陵墓后面的朱穆那河,婉蜒流过,水流时急时缓,为陵墓增添了几分清幽的光彩;我看到了莫斯科红场,红场为莫斯科的主要广场,经常在此举行阅兵和重要的集会。它位于克里姆林宫宫墙外,克里姆林宫20个塔楼中有3个朝向红场,其中包括最著名的装有全国最大的自鸣钟的救世主钟楼。在红场的西南边,矗立着“沟边”圣母大教堂,也就是我们常说的升天瓦西里大教堂。教堂的前面有17世纪初把莫斯科从波兰入侵者手中解放出来的著名民兵领导人库兹明.米宁和德米特里.巴扎尔斯基的纪念雕像。这是莫斯科市的第一座纪念雕像,是在1818年由民间集资建造的。红场的中心为列宁墓,与之相对的为莫斯科著名的国家大百货商场;还有比利时的原子球博物馆,这个博物馆是由9个银色金属球体组成的奇特的塔式建筑。构思来源于原子结构图,九个巨大的金属圆球由粗大的钢管连接构成一正方体图案。正方体的大小相当于放大了1650亿倍的铁的正方体晶体结果。八个圆球位于正方体的八个角,另一个圆球位于正方体的中心。每个球之间以巨大的圆柱连接,以钢架撑托。圆球直径18米,连接各个球间的钢管每根长26米,直径3米。总重2200吨,高102米。可乘电梯到达离地100米高的顶端圆球观赏布鲁塞尔的风景。其他圆球中为各种主题的科技展览厅,分为科技馆、新技术展览厅和展览陈列室等几部分,分别陈列有太阳能、和平利用原子能、

航天技术、天文等方面的展品,以及有关比利时气象事业的发展史、卫星气象、气象雷达、气象通讯方面的图表,向人们展示比利时的最新科技成果及科技发展史等内容,给人以知识和启迪;还有艾菲尔铁塔,是世界驰名的钢铁建筑、巴黎最高建筑物和游览中心、亦是巴黎这座美丽具有悠久历史的城市的象征。她矗立在市中心塞纳河右岸的战神广场上,由著名建筑工程师艾菲尔倡建,为1889年庆祝法国大革命100周年在巴黎举行的国际博览会而建的。1887年动工,1889年举行竣工仪式。塔基占地面积约1万平方米。塔身全是钢架镂空结构,重达9000吨。其组成部分分3层,第一层高57米,第 二层高115米,第三层高276米。五十年代以来,铁塔成了法国广播电视的中心,是目前世界上最高的天线塔之一,铁塔之下是大片喷水池广场;又有缅甸的仰光大金塔和印度尼西亚的婆罗浮屠,仰光大金塔位于缅甸仰光市丁固达拉山岗。始建于公元前。据佛教传说,释迦牟尼成佛后,为报答缅人曾赠蜜糕为食而回赠了八根头发。佛发被迎回缅甸,忽显神力自空中降下金砖,于是众人拾起金砖砌塔。实际为砖塔,经两千余年间的修缮、扩建,方成今日规模。主塔高112米,四周环墙,开南北东西四处入口。南门为主要入口,现备有电梯供游人使用。登70余级大理石阶梯,抵达大塔台基平面。台基四角各有一座小型石塔,中间为大塔本身。主塔上端以纯金箔贴面,顶端镶有5448颗钻石和2000颗宝石。塔尖悬挂宝铃,风吹铃响,壮观悦耳。婆罗浮屠位于爪哇岛中部古鲁州马吉朗地区,始建于9世纪初年塞林多罗王朝的全盛时期。它是一座独具特色的“窣堵波”(塔)。自下而上的十层可分为塔底、塔身和顶部三大部分。塔底呈方形,周长达120米。塔墙高4米,下面的基石亦高达1.5米,宽3米;塔身共五层平台,愈往上愈小。第一层平台离地面边缘约7米,形成环绕佛塔四周的宽平台。其余每层平台依次收缩2米,四周装栏杆变平台为走廓;顶部由三个圆台组成,每个圆台都有一圈钟形舍利塔丁绕,共计72座。在这同一圆心的三圈舍利塔中央,是佛塔本身的半球形圆顶,离地面35米。这种宗教象征性建筑融合概括了大乘佛理。渐次升高的十层,象征菩萨成佛前的十地。塔底代表欲界,此界中人们摆脱不了各种欲望;五层方台代表色界,此界中人们已摒弃各种欲望,但仍有名有形;三个圆台和大圆顶代表无色界,此时人们不再有名有形,永远摆脱了世间一切桎梏。此塔的另一精神意蕴是祖先崇拜。按照当时人的观念,阶梯式住菜建筑,是祖先住所的象征;接下来是胡夫金字塔,卡夫拉金字塔和狮身人面像。胡夫金字塔是埃及规模最大的金字塔,通常被称为“大金字塔”,是法老胡夫(Khufu)(前2543年至前2520年在位)的继承人为他建造的王陵。大金字塔大约建造于前2570年,动用了十万劳工和奴隶,历时20年才完成。大金字塔原始高度为146.6米,几千年的风化后,现在高度为138米,在1889年巴黎320米的艾菲尔铁塔落成之前,它一直是世界上最高的建筑物。大金字塔四周整齐排列着许多贵族的平顶石墓,众星捧月般衬托出大金字塔的雄壮与威严。卡夫拉金字塔是继胡夫金字塔后第二座在吉萨建造金字塔,其规模完全可以和胡夫金字塔媲美,只是内部构造较为简单。著名的狮身人面守护在卡夫拉金字塔前。这是一尊具有狮身和卡夫拉王头像的巨型石像。古埃及有许多狮身人面像,象征法老既是神又是人的概念,以吉萨的这座最大,石像长73米,高21米。石像原本有鼻子,耳朵和胡须。可惜在土耳其人攻打埃及时被当作炮靶子,被打掉的狮身人面像的耳朵和胡须现被大英博物馆收藏;还有世界著名的近现代建筑悉尼歌剧院,它造型独特,外观不凡。八个薄壳分成两组,每组四个,分别覆盖这两个大厅。另外有两个小壳置于小餐厅上。壳下掉挂钢桁架,桁架下是天花板。两组薄壳彼此对称互靠,外面贴乳白色的贴面砖,闪烁夺目,吸引了成千上万的旅游者,并已成为悉尼港的标志;我还看到了比萨斜塔和亚历山大灯塔。比萨斜塔为罗马式建筑风格,经过600多年的风雨,该塔巍然屹立,“斜而下倾”,使该塔闻名于世。1590年意大利物理学家伽利略曾在塔上做了著名的“两个铁球同时落地”的实验,推翻了希腊学者亚里斯多德的不同重量的物体落地速度不同的理论,使比萨斜塔更加名扬四海。亚历山大灯塔是世界七大奇迹之一。但是与其余六个奇观不同得是,它不带有任何宗教色彩,纯粹为人民实际生活而建,亚历山大灯塔的烛光在晚上照耀着整个亚历山大

港,保护着海上的船只,另外,它亦是当时世上最高的建筑物。它以白色大理石建造而成,共分为三层:最低的一层为四角柱,高55.9米(183.4尺),第二层为八角柱,高18.30米(60.0尺),而最高一层为圆柱,高7.30米(24.0尺),屋顶上还有海神波赛顿(Poseidon)的雕像,整座灯塔高达117米(384尺),竟相当于一幢現代四十层高的建筑物!灯塔內部是螺旋状阶梯,燃油竟阶梯运往塔顶,塔顶的一座房间内,工人便依靠燃烧石油的灯光,再利用后方的镜收集光线,然后反射出去,晚上以便是这样以火光照耀大海,白天则依靠反射阳光,据说灯光能照射到56公里外的海道那么远,并具有防卫和侦察敌人的功用;我们还与平面布局采用严格的“整形对称式”的意大利台地圆和有着日本园林精华之称的日本桂离宫进行了亲密接触。几和小时之间,我们已经逛遍了全世界,周游了地球。大大地开阔了我们的眼界,增长了我们的见识。

7月4号我们去的是北京市城市设计规划展览馆。一开始,举办方给我们播放了几分钟的短片,让我们对这个已经居住了两年的美丽城市的形成和发展有了进一步的了解。接下来我们看到了奥运雕塑展览,这里展览了许多各国设计大师寄来的作品,都是艺术的颠峰之作。这也告诉了我们,我们作为一个将来建筑师,有义务使得自己所设计的作品具有更高的艺术价值和美感。然后,我们还观看了沙盘演示,从全方位介绍了北京城区,非常生动。接着我们又认识了一些建筑材料,象古代的斗拱之类的,集中地体现了中华民族五千年建筑历史的辉煌。最后,我们见识了旧北京的四种门,等级从高到低依次是广亮门,金柱门,蛮子门和如意门,各有各的特点和风采。也是我们伟大祖国的国粹。

7月5日,我们来到了期盼已久的地铁施工地点。为了安全起见,我们每个人都带上了一个安全帽,虽然看上去和普通民工没什么两样,但是,心里着实不由的升起了一股自豪感,就像自己已经是一个建筑工程师了一样。下到了几十米深的地下才发现原来地铁工程师和工人师傅的工作环境这么的艰苦,尽管温度比地面的低了好多,甚至给人以冷的感觉,可是里面是又黑又潮湿,让人感觉到非常的气闷,呼吸都比较困难。原因是地底不通风,全靠送风机给隧道深处的工作人员送氧。我们在洞口逗留了一会,看到洞口有一圈水泥制版,那就是盾构片(它的发明大大增加了地铁的质量和建造的效率)。一个地铁洞有六片构成,这些盾构片都是预制的,只要在现场安装上就行。参观地铁项目我们的主要的目的就是要看下那盾构机,一个硕大的机器。当我们走到隧道尽头的时候,一个大机器出现在我们的面前,那就是盾构机。它非常巨大,有好几个部分组成,简直就像一个地下实验室。机头把泥土挖出来通过输送管输送给后秒等待的运土车,泥土挖出来以后马上把盾构片装进去,再人工进行两个片之间的连接,这样可以减低地层结构破坏所带来的危害。从地铁施工基地里出来的时候,我发现自己身上的衣服全部湿透了,这证明了下面的环境是非常的苦。我想,干我们这行的,环境肯定是艰苦的,只有拿出吃得苦中苦的精神出来,才能成为人上之人。

7月6号,我们来到了北京科技馆。在这里我们看到了现代社会科技的发展,许多高新技术让我们大开眼界。科技馆的两座建筑非常有特色,A馆是螺型结构,就像蜗牛的外壳。B馆是一个网壳结构,球形外壳,它是一个电影馆,在里面整个建筑表面都是荧幕,观众不论从哪个角度看都可以看到影片。我们从科技馆里了解到琉璃瓦是用光亮不渗水的黄绿蓝等色的彩釉涂于陶瓦表面烧制而成。参观完了四楼我们来到了三楼,三楼有许多玩意特别有趣,让我领略到了高技术的魅力。在二层我们观看了高压放电的实验,使我们对电有一个深刻的了解。一楼我们观看了交通方面的科技。这一天下来非常累,但可以肯定的说是难忘的一天,让我们理解科技对建筑的重要性。

7月7号,我们再次戴上了安全头盔,来到了北京大学医学部的逸夫楼建筑项目的工地上。正在建北京大学医学部教学楼,主体是框架结构,让我们都框架有一个初步的概念。一进楼我们就直奔楼顶,顶的表面是架空板,具有保温功能,该楼采用内排水,它的一个优点是美观。在那里有一些装饰梁,在结构上不起作用。我们也知道那围着楼的边缘一圈叫儿女墙,

至于为什么叫女儿墙还有待考究。在楼里我们了解了什么是防火卷帘门,它的作用是非常大的,在火势蔓延时可以帮助人们逃生,也可以阻止火向另一个方向发展。为了施工的方便,该楼的柱子采用方柱。参观完了这个项目以后,我们对于建筑结构和现场施工有了一个初步的概念。

7月8日,我们来到了2008年北京奥运会的主体育场馆——鸟巢。这个建筑可以说是现代建筑中的一个奇葩,整体的钢结构给人一凌空绝世的宏伟气势。它结构独特,正如同它的名字一般就象是一个大大的鸟巢,这在世界上是独一无二的。我们问了带领我们参观的工程师许多关于这个运动场的问题,比如像这么高的建筑,它的基础应该有多深,还有,它的预期经费是多少等等,老师和工程师师傅对我们的问题都予以了详细的解答,让我们对这个钢铁大家伙增加了许多的亲切感。

7月9号,我们在自己学校的学10楼建筑工地上面实习。它的建筑面积是所有目前学生宿舍面积的总合。我们来这主要的目的就是参观基坑,作为一个大楼的基础,必须拥有很好的稳定性,所以在地基不稳定的情况下,我们必须对基础进行加固,可以采用打桩,也可以对地基进行人工灌入水泥使地基稳定,不同的地区应该采用不同的方法。这次参观我了解了一个建筑必须有一个长度限制,最长为45左右,如果超过这个长度,不能直接把房子作为一个整体,而应该把它分开,不至于热稳定性而使房子毁坏。而它们的分界处必须要有一个后浇带,使房子不至于两边不均匀沉降而裂开。看完了基坑我们又看了钢筋师傅如何把一跟直直的钢筋做成施工需要的钢筋。我们也参观了师傅们制模板是的情况,对建筑结构工程有了更进一步的了解。

7月10号我们实习的地点是北京建筑研究所,听了总工关于预应力结构的介绍,我们了解了什么叫预应力。预应力结构解决了大跨度问题,同时也节省了材料和造价,稳定性也提高了,100%桥梁都为预应力结构。采用预应力可以提高混泥土的强度,渗透性等等。听完报告后我们参观了一个预应力结构所需的材料生产过程。此次参观使我们感到预应力结构的重要性,它的功能可以发挥到更高的水平,等着我们去研究。

7月11日,我们来到了中央电视台拍摄中国古代四大名著之一的《红楼梦》的大观园中。这里的建筑都有着明显的清代的特征,非常的雅致,美观,是一个美丽的建筑园林。我们可以从每一个建筑的造型风格而看出其居住主人的性格特征。当我身在其中,恍惚可以听得见林妹妹葬花的低咛和宝哥哥爽朗的笑声。

7月12日是我们实习的最后一天,我们来到了中国古建筑博物馆。也就是以前的先农坛。在这里,我们见到了前几天所没见到中国历史上的另一些优秀建筑,它们中间有的清秀脱俗,有的气势如虹,有的如大家闺秀一般的端庄,有的又如小家碧玉一般的幽雅。非常的美妙,给人们带来的不仅仅是视觉上的冲击,更是一种心灵上的震撼!下午,我们进行了最后一个地点——自然博物馆的参观,让我们更爱大自然,懂得了建筑要与自然紧密地联系在一起,相互融洽,构建和谐家居。

在整个的实习过程中,我们实习了如下内容:

1,大型建筑物基础施工工地:包括深基坑支护、地基加固处理、降水技术及各类建筑物基础的施工方法。

2,高层建筑结构的施工工地:包括建筑结构施工图、建筑结构施工方法、大型施工机械、各类结构施工模板等。

3,一般民用及工业建筑的施工现场:包括地基处理方法、基础工程及结构工程、主要施工机械等。

4,建筑物装修工程:包括装修设计、装饰材料、装修工艺等。

5,钢筋混凝土预制构件厂:包括混凝土的性能检测、预制构件模具、预制工艺及预应力混凝土的预制技术等。

6,特殊结构的建筑物:包括大型体育场馆、大礼堂、剧院等。

在实习期间,我们很好的服从了现场技术人员和知道老师的安排,认真听讲并做好了记录,敢于质疑,敢于提出问题。我们虚心地向技术人员个工人师傅学习,比较好地遵守了现场的规章制度。应该来说,我们做得是比较积极的。

这次实习对于我们今后的学习,工作和生活都是有着极大的好处的。这次实习增长了我们的见识,拓展了我们的知识面,丰富了我们的课余生活,使得我们对于自己学的是什么,学了用来干什么和怎么样才能学好这三个问题有了反思的空间有自己的想法,相信也会给我们今后的设计带来很多的灵感。

实习期间,条件是比较艰苦的,起得早,坐车时间长,天气热,车子拥挤,这些都是困难,但是,也成为了我们已经克服的困难。在今后我们需要面对的困难还很多,我们还是要发扬在这次实习中所学到的吃苦耐劳的精神和坚持不懈的品质。

总的来说,我认为这次认识实习是非常成功的,我们受到了很好的教育。

第11篇:嵌入式系统设计实习报告 安卓音乐播放器设计报告

机械与电子工程学院

嵌入式系统设计实习报告

题目:简易音频播放器设计

目录

第一章 引言·····················································3 1.1课题研究目的·····················································3 1.2课题研究意义·····················································3 1.3课题可行性分析···················································3 1.3.1课题调研····················································3 1.3.2可行性分析··················································3 第二章 开发环境安装和配置··································4 2.1开发包及其工具介绍···············································4 2.2Android开发平台搭建步骤··········································4 第三章 程序逻辑架构··········································5 3.1程序工程结构图···················································5 3.2工程各文件简介···················································5 3.2.1程序源文件夹src简介·········································5 3.2.2程序外部资源文件夹res简介···································6 3.2.3其他文件简介················································7 第四章 程序设计················································8 4.1主界面musicActivity设计···········································8 4.1.1onCreat函数··················································8 4.1.2关键代码讲解················································8 4.2音乐播放服务LocalService设计·····································10 4.2.1onCreat函数·················································10 4.2.2关键代码讲解···············································10 4.3数据库Helper类MusicListdbHelper设计······························11 4.3.1构造函数MusicListdbHelper···································11 4.3.2关键代码讲解···············································11 第五章 程序测试···············································13 第六章 分工与总结············································14

2

第一章 引言

1.1 课题研究的目的

1.熟悉一下eclipse工具和安卓的环境配置及开发的过程;

2.熟练掌握java的组件如button,textview,listView,menu等组件的灵活应用;3.熟练掌握安卓的一个关于数据保存的方式SQLite3; 4.锻炼一下自己遇到问题,然后解决问题的能力。

1.2 课题研究的意义

随着3G技术的成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。在google和android手机联盟的共同推动下,android在众多移动应用开发平台中脱颖而出。

Android操作系统是google最具杀伤力的武器之一。苹果以其天才的创新,使得iphone在全球迅速拥有了数百万忠实的“粉丝”,而android作为第一个完整、开放、免费的手机平台,使开发者在为其开发程序时拥有更大的自由。与windows mobile,symbian等厂商不同的是,android操作系统是免费向开发人员提供,这样可节省近三层得成本。

我们知道,无论是产品还是技术,商业应用都是它最大的发展动力。android如此受到厂商与开发者的青睐,它的前景一片光明。国内对于安卓这方面的市场还没有完全开发出来。

只要我们努力学习android,对理想、对生活都会有很大的补益。

因此,开发这样一套很简单的音乐播放器软件对我们来讲是一件很有必要的事情,在下面的各章中我们将以开发安卓音乐播放器软件为例,谈谈其开发过程和所涉及到的问题及解决方法。

本文中所做的主要工作如下:

 开发环境及开发工具的安装及配置;

 阐述整个音乐播放器的系统结构及工作原理;  设计实现“主界面activity设计”,“播放器Service设计”,“数据库设计”这三个主要的功能模块;

 分析并解决实现中的若干技术问题,像组件的选择以及保存方式的选择;  进行测试并分析结果。

1.3 课题的可行性分析

1.3.1 课题调研

(1)与实践活动和相关的文件和资料由作者本人网络查找,以及老师帮助; (2)具有遇到问题,具有独立思考,耐心钻研,向老师虚心求教的良好态度; (3)关于技术方面的难题,跟指导老师面谈。 1.3.2 可行性分析

1) 技术可行性-----本项目仅需要一台装有eclipse及配置好android开发环境的计算机即可,对计算机本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系统;

2) 经济可行性-----由于本软件开发只需要一台电脑就行,基本不需要太大的成本。在经济上完全可行;

3) 操作可行性-----界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储,并没有太大的难度,所以,该项目完全有可操作性。

3 第二章 开发环境的安装和配置

2.1 开发包及其工具的介绍

Android以java作为开发语言,jdk是进行java开发时必需的开发包.eclipse是一款非常优秀的开源IDE,在大量插件的“配合”下,完全可以满足从企业级java应用到手机终端java游戏的开发.Google官方也提供了基于Eclipse的android开发插件ADT,所以本软件开发选择Eclipse作为开发IDE.

2.2 Android开发平台搭建步骤

首先到http://www.daodoc.com/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载Java EE 集成版本,可以为平台的搭建省下不少工作。接着再去http://java.sun.com/javase/downloads/index.jsp 站点下载SDK后安装,下载http://dl.google.com/android/android-sdk-windows-1.5_r1.zip,Android SDK1.5后解压。第一步下载工序就结束了。

②双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help->Install New Software->选项卡上的Available Software,点击右侧的“Add”输入http://dl-l.google.com/android/eclipse/后确定,然后在“Work with”下拉菜单中选择刚才输入的网址。过一会就会出现一个Developer Tools选项,勾上以后点击Next以后Eclipse会自动网上查找Android 开发工具插件,然后找到Android DDMS和Android Development Tools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。

③重启后选择Eclipse菜单中的Windows->Preferences 在左侧的Android项目中SDK Location中填入Android SDK解压后的目录,然后点击Apply。

④在Windows的系统变量中的path变量中添加一个值,该值指向解压后的Android SDK目录下的tools文件夹。

4

第三章 程序逻辑架构

3.1 程序工程结构图

下放两图即为程序的整个工程的结构图,左方为工程的整体结构图,右方为res文件中的各类用到的资源文件视图。

3.2 工程各文件简介

3.2.1 程序源文件夹src简介

源文件夹src下包含两个包com.terry与com.lyric,分别用于程序主要功能的实现和提供歌词同步显示的控件。

先分析歌词包com.lyric。其中com.lyric.LyricView.java设计了一个歌词显示的View控件LyricView,提供给主程序并作为一个控件显示出来;com.lyric.SongLyric.java设计了歌词类用以从sd卡中寻找到响应歌词文件并进行初始化操作。

主程序类包com.terry中,musicActivity和SdCardList均为Activity,前者为播放器的主界面进行各种播放控制操作,后者用来从SD卡中选择MP3文件添加到播放列表中;LocalService是音乐播放的Service,用于进行音乐播放并在通知栏中显示消息;MusicListdbHelper为自定义的数据库Helper类,将歌曲的名字和路径存入数据库,提供对歌

5 曲数据库的增加和删除的操作;另外两个均为辅助类,一个用于从文件夹中选择后缀名为mp3的文件(MusicFilter.java),另一个用于整合控件(viewHolder.java),代码如下:

MusicFilter.java

viewHolder.java

3.2.2 程序外部资源文件夹res简介

外部资源文件夹主要为程序提供各种外部资源,如图片等,这里主要介绍一下我们用到的布局文件夹Layout中的各种xml文件。

layout_gridview.xml、layout_listview.xml、layout_lyricview.xml 这三个xml文件被主界面调用viewGroup整合在主界面中,即程序中出现的左右滑动效果,其中gridview显示了歌曲的专辑图片,listview显示了歌曲播放列表,lyricview显示了同步歌词。

main.xml、main1.xml 主程序的主界面资源文件,同上述三个xml一样,整合在viewGroup中由musicActivity设定为当前界面。其中main决定了各view的布局,main1则是程序下方的进度条及简单控制按钮。

musicitme.xml、sdcard.xml 均被用于SdCardList这个Activity的布局,sdcard提供了SDCardList的主界面,musicitme提供了SDCardList中ListView的样式。

6 progrebar.xml 由LocalService调用,通知信息栏的布局文件。 3.2.3 其他文件简介

引入的外部JAR: android-support-v4.jar 为程序了viewGroup以实现左右滑动展示不同的View的效果。 AndroidManifest.xml 应用的配置文件,描述应用程序的名称、权限、能力和运行方式等。

gen文件夹

这是必需的,为应用程序自动生成的资源文件夹,它所包含的应用程序资源管理源文件R文件定义了该项目所有资源的索引,不能被编辑。

Android 2.1–update1 这是Android 2.1的系统类库,在编译该项目时用到的环境。我们可以通过相应的配置来选择所需的系统类库。

aets文件夹

主要用于放置多媒体等数据文件。

default.properties 这是自动创建的工程文件,定义了应用程序的target和其所需的选项。

7

第四章 程序设计

4.1 主界面musicActivity设计

4.1.1 养成良好习惯,先看看onCreat函数

如下图所示即为作为程序入口的musicActivity的onCreat函数。大致的流程是调用父类onCreat函数,隐藏标题栏,设置布局,寻找布局控件,初始化应用,刷新歌词文件,刷新播放列表,绑定监听器,开启标志位检测线程,设定空歌词,启动服务。

4.1.2 关键代码讲解

设置布局函数setView()中,先初始化ListView、GridView还有歌词布局lyricview的内容,完毕后再将其添加到viewPager中从而可以进行滑动切换显示。

8

初始化程序initApp() 如果程序是第一次启动(没有数据库文件),那么就自动初始化一次歌曲播放列表,默认路径为SD卡根目录,将歌曲文件信息添加到数据库并且添加到播放列表中。如果有数据库文件则不进行操作。

初始化程序完成之后就需要开启刷新歌词的线程了,refreshLyric()开启了刷新的线程使用已经定义好的handler hand发送刷新信息并进行相应的响应。

下一步就是列表的刷新显示,当前的播放列表中虽然存储有歌曲信息却没有将它显示

9 出来,所以我们需要刷新并显示一次播放列表,refreshlist()即可做到这一点,并且在每次对播放列表进行操作后都需要调用一次它。

4.2 音乐播放服务LocalService设计

4.2.1 仍然先看一下onCreat函数

播放服务的流程就比较简单,实例化MediaPlayer对象,从musicActivity中得到音乐列表,开启刷新通知栏和musicActivity中progrebar的线程,设置并显示通知栏信息。 4.2.2 关键代码讲解

启动流程中的函数几乎没有什么需要讲解的,音乐播放器的Service中的关键代码当然是播放音乐和对切换歌曲的处理。

进度条更新函数progrebar() 这个函数启动了一个更新进度条的线程,同时更新了musicActivity中和通知栏中的进度条。

10

播放音乐的函数playMusic(String path) 函数中的参数为歌曲的路径(包含歌曲的文件名和后缀),返回类型为空,它的作用就是播放该路径的歌曲并且有一个播放完毕的监听器。所有的歌曲控制指令都写在musicActivity中,Service本身并不负责对歌曲列表的操作,所以,如果播放完毕,则给musicActivity一个切换歌曲的指令。

切换歌曲后需要调用的函数changeSong() 切换歌曲以后需要重新设定一下progrebar还有正在播放的文件名,专辑图片,歌词信息等。这个函数在musicActivity中被大量调用从而实现对音乐播放的安全控制。

11

4.3 数据库Helper类MusicListdbHelper设计

4.3.1 构造函数MusicListdbHelper(Context _context) MusicListdbHelper是一个类,类对象的实例化都需要构造函数,数据库的Helper类的构造很简单,就是建立或者打开一个自己定义的数据库

4.3.2 关键代码讲解

需要被应用开始时调用的函数FirstStart()以判断应用是否需要初始化,返回类型为boolean FirstStart()中建立了一个游标查询数据库中的名为“colaconfig”的表,该表也仅作为初始化查询而特别建立,如果该表不存在,则说明数据库中不存在歌曲信息表,则创建该表和歌曲信息表“musicitem”,如果该表存在,则返回false并不进行任何操作。

12 其他函数及其作用:

CreateTable_musicitem() 创建歌曲信息表 CreateTable_colaconfig() 创建配置表

Musicitem_insitem(String name, String path) 添加歌曲到歌曲信息表,返回类型为boolean Musicitem_delitem(String name) 从歌曲信息表中删除名为name的条目

getMusicItem() 得到歌曲信息表的游标用以查询表中歌曲信息,返回值为Cursor

13

第五章 程序的测试

1.第一次运行程序的主界面

2.点击“choice”后的歌曲选择界面

14 3.选定的歌曲在主界面中显示播放进度,也可拖动进度条播放

5.使用返回键退出程序后Service仍在后台运行(歌曲仍在后台播放)

第六章 分工与总结

6.1 人员分工

张润浩:musicActivity、SdCardList的编写以及数据库的建立,同时负责软件后期的调试和修改;

刘博:主要负责Service的编写,包括通知栏和主Activity中控件的同步,同时负责报告的书写;

6.2 课程总结

通信软件设计设计是一门紧跟时代步伐的课程,顺应了当下移动互联网的发展浪潮,通过这门课程使我们大学生将课堂所学的知识逐步转化为社会所需要的才能,令我们获益匪浅。这次的作品在短短两周内,虽然并非一切顺利,但也算磕磕绊绊地完成了。途中遇到过难以解决的问题,虽然厌烦但还是逼着自己搞定了。说几个具体的吧,通过这次的课程设计,主要得到了这么几个经验。首先,在开发之前,如果是比较生疏的领域最好将资料准备完备,否则在做扩展的时候将会后悔莫及;其次,效率永远是第一位的,如果想睡了的话就不要勉强自己继续工作;最后,询问别人并自己进行思考永远是最快捷的成长途径。总而言之,通过这次的软件开发,通过这门课程,我们培养了自己独立思考和独立作业的能力,更加能够自信地面对即将踏入的社会。

15

第12篇:安卓APP安全漏洞分析报告

2015年安卓APP安全漏洞分析报告

2015年,CNNIC统计显示我国手机网民规模达6.20亿,手机上网人群的占比提升至90% 。随着移动端用户群体的快速扩张,除了一开始就注重移动市场的新互联网企业之外,传统企业也正不断提高对移动端的重视程度并加大投入,移动端市场的竞争呈现白热化趋势。

截止2015年12月31日,安卓APP总体数量已超过140万。据Yahoo Flurry 统计分析,2015年安卓APP整体同比增长超过14%,其中面向细分市场的个性化APP爆炸性增长达332%。新闻杂志、商务理财和旅行出游等APP,2015年的增长率也超过100%。

移动APP已经全面覆盖衣食住行,“指尖社会”的安全风险也随着急遽聚拢的财富而不断推高。

不安全的“指尖社会”

互联网的PC端安全经过十几年的实践,已经较为完善,但是移动端安全目前还是短板,传统的PC端安全防护措施无法有效保障移动端安全,作为移动端重要载体的APP因此安全事件频发。

大量安全事件中,APP的安全漏洞被黑客作为攻击入口,通过侵入APP获取用户隐私以及企业数据库存储的数据,损坏用户和企业的利益,影响恶劣。

2015年,APP安全事件泄露的信息以用户的姓名、地址、账号、密码、手机号等信息为主,尤其金融理财和生活服务类的APP是安全事件爆发的重灾区。仅以乌云漏洞平台曝光的安全漏洞为例,2015年,超过10家知名APP被曝存在安全漏洞可导致超1000万用户隐私泄露,这些安全漏洞的种类不一,漏洞的利用攻击手法也不同,但是攻击的最终指向目标都是用户隐私及企业数据。

触目惊心的安全现状,超9成APP含有安全漏洞

截止2015年12月31日,网蛙科技对当前市场上129万个多类别的APP做了全面的漏洞扫描检测,检测结果显示,App漏洞总量超过1700万个,仅程序代码中硬编码开发者密码(5744940个)、Sqllite SQLlnject漏洞(2196703个)与ContentProvider SQL lnjection漏洞(1243679)三类漏洞数量就超过918万个。

据检测结果,129万多个被检测APP中,超过95%以上APP含有不同类型的安全漏洞,平均每个APP含13.8个漏洞,高危漏洞比例达16%。

2015年高中低危漏洞分布图

1、APP 九大行业榜单产品,平均漏洞数达到9.3个

网蛙科技根据2015的APP年度分类排行榜,经综合考虑,选取视频、理财、音乐、电商、新闻、社交、自拍、工具以及游戏九类APP榜单(参考艾媒咨询、艾瑞网、互联网周刊、猎豹移动等APP排行榜榜单),共计90个APP产品进行了检测。

据检测结果,90个APP榜单产品(以发行的最新版本漏洞扫描检测结果数据为准),漏洞总数达到847个,平均每个APP含有9.3个漏洞。分行业计,游戏行业所含漏洞数最高,平均漏洞数目超过12个,安全隐患相对较大;金融理财、电商、社交这三个行业的平均漏洞数都接近或超过10个,同样需要高度重视。

这些被检测的APP中近70%面世时间达3-5年,具备成熟的市场口碑,当前用户规模和资产规模都高于同行业其他产品。它们高于普通APP的商业价值也更容易吸引黑产注意,如果遭遇安全事故,对APP有形的资产和无形的品牌都将造成严重损失。网蛙科技建议APP开发者们加强安全工作,切实提高产品的安全性,更好地维护APP用户利益和公司的品牌形象。

2、应用商店安全检测不到位,无法完全保障上架APP安全

网蛙科技对当前市场上两类应用商店的APP进行检测,分别为豌豆荚、应用宝、360手机助手等知名独立第三方应用商店,以及小米应用商店、华为应用市场等终端厂商自建的应用商店。

据不完全统计,截止2015年12月,手机应用商店漏洞总数超过1700万,单个应用商店最高漏洞数目超过493万个,其中第三方应用商店漏洞数目平均达到57万个,终端厂商自建的应用商店漏洞数目平均达到64万个,第三方应用商店的安全系数相对高于终端厂商自建的应用商店。

据艾媒咨询,从当前市场APP下载情况来看,APP下载渠道占比最高的为第三方应用商店(占比54%),其次为终端厂商自建的应用商店(占比34%),这两大类应用商店是当前用户下载APP的主要渠道。由于APP已经实质性地触及个人财产信息与隐私信息等,用户对APP安全性的要求不断提高,与此同步上涨的是用户对应用商店安全工作的不满情绪。截止2015年12月,超过60%用户认为应用商店应该对商店内恶意软件的出现负审核不严的责任。2016年,应用商店需要在安全能力提升方面做更多工作。

部分手机应用商店APP漏洞检测结果

3、19类行业漏洞检测,游戏和生活服务类APP危险系数最高

网蛙科技对当前市场上包括金融理财、网络购物、商务办公等19类APP进行了分类漏洞统计。需警惕的是,直接涉及数据资产、用户隐私等高商业价值信息的行业,APP检测结果显示漏洞分布数目远高于其他行业。

据检测结果,直接关联数据资产(如银行卡、移动支付等信息)的APP行业漏洞数目最高,游戏类APP漏洞数目高达457万,生活服务类APP以250万的漏洞数目排名第二,购物、金融理财类APP漏洞数目均超过80万;直接关联用户隐私(如姓名、联系方式信息)的APP漏洞数量也非常高,需要引起重视,社交、办公类APP漏洞数量分别达到139万和100万,而影音、教育类的APP漏洞数量也均超过50万。

近几年由漏洞引发的APP安全事故已经表明,无论是哪个行业,漏洞对APP安全都具有“一票否决权”。安全是一切发展的基础,APP开发者需要加强安全工作,不可掉以轻心。

2015年全行业APP漏洞分布图

给移动APP漏洞防护的四点建议

移动APP的安全问题涵盖开发、发布、维护等,贯穿APP产品的整个生命周期,因此网蛙科技针对当前移动APP的安全现状,提出以下几点建议,供行业从业者参考:

(1)安全工作,从开发抓起

当前APP市场呈现井喷式增长,跑马圈地的格局导致不少APP开发者因为急于占领市场,而相对忽视了APP开发时的安全工作。

网蛙科技检测中发现超过20%的漏洞是由于开发者的疏忽导致的,认真遵循APP开发的安全编程规范是完全可以避免的。

(2)应用商店,把好安全关

当前市场上,APP主流发行渠道为应用商店,其中第三方的应用商店占比最高。应用商店应负起责任,为上架的APP进行更全面可靠的安全测评。满足用户的安全需求,同时也为APP开发商进行最后一道安全把关。

具体可借鉴欧美地区应用商店,对于在其应用商店上架的APP,设置安全性的权重,将安全性高低与APP信誉相关联,既维护了用户对APP安全的知情权,更提升应用商店自身的品牌形象。

(3)即时监测及时修复

随着移动互联网渗透率的大幅提高,移动APP漏洞的曝光频率持续走高。漏洞曝光之后,厂商应高度重视并及时响应,在尽可能短的时间内推出相应的漏洞修复措施。

当前市面上仍有相当大比例的APP漏洞是属于早期已有尚未修复的漏洞,网蛙科技此次检测就有超过35%的漏洞是属于此类漏洞。建议APP开发者应持续关注最新安全信息,及时修复漏洞。

(4)防范0-day漏洞,使APP更安全

信息安全意义上的0-day漏洞是指软件厂商在知晓并发布相关补丁前就被掌握或者公开的漏洞信息。高危险级别的0-day漏洞如果被互联网不法分子利用,会对软件产品产生巨大的威胁,极大的影响用户体验甚至损害品牌价值。如2015年爆发的Hacking Team事件,该公司就是主要通过0-day漏洞进行不当盈利,此次事件中泄露的漏洞数据对全球众多公司造成了严重影响。

而与此相对的是,绝大部分的APP开发者并不具备0-day漏洞挖掘能力,同时因为漏洞挖掘耗时久,从商业效益上说,企业自行挖掘0-day漏洞的性价比不高,建议APP开发者与0-day漏洞研究团队合作,借助专业的力量,打造更加安全的APP产品。

APP安全,从防护漏洞开始

2015 年,云计算、物联网、大数据技术和相关产业迅速崛起,互联网移动端的发展将占据越来越重要的位置,作为载体之一的APP的安全更是互联网安全至关重要的一环。

国家对APP安全的规范工作正在不断建设与完善。2014年4月至9月工业和信息化部联合公安部、工商总局在全国范围开展打击移动互联网恶意程序专项行动,将互联网恶意程序设为重点打击治理项目之一,督促应用商店落实安全责任。国家网信办主任鲁炜也曾公开表示,网信办将出台APP应用程序发展管理办法。当前APP市场乱象的生存空间将不断缩小,APP开发者应提前部署应对措施。

APP安全,是国家、开发商、广大用户三方面共同的需求。而随着APP市场发展周期的推进,错综复杂的安全情况,越来越高频的安全威胁,都预示着APP安全攻防战场焦点将从漏洞防护开始。参考互联网移动端安全发展的轨迹,APP开发者与独立的第三方APP安全企业合作将成为互联网移动端安防的主流趋势。

第13篇:安卓初级程序员

1、数学、物理、计算机相关专业本科学历;

2、熟悉计算机体系结构及计算机网络体系结构,了解c,c++或Java\\J2ME其中一种语言;

3、对软件有较大兴趣,了解面向对象思维,有较强的逻辑思维能力及问题的解决能力;

4、熟悉linux系统编辑环境、测试流程;

5、熟悉TCP/IP、HTTP协议,有操作系统的基础知识;Oracle、MySQL、sqlserver等数据库中至少一种;

6、有较强的沟通能力,并能主动的向上级汇报工作中出现的问题;

职位描述:

-负责公司Android项目的软件开发

职位要求:

-扎实的JAVA语言基础

-计算机相关专业本科学历

-具有较好的英文读写能力

-有移动平台开发经验的优先

-一年以上Android手机开发经验

岗位描述返回公司简介 3000-3500元

1、数学、物理、计算机相关专业专科或以上学历;

2、熟悉计算机体系结构及计算机网络体系结构,了解c,c++或Java\\J2ME其中一种语言;

3、对软件有较大兴趣,了解面向对象思维,有较强的逻辑思维能力及问题的解决能力;

4、熟悉linux系统编辑环境、测试流程;

5、熟悉TCP/IP、HTTP协议,有操作系统的基础知识;Oracle、MySQL、sqlserver等数据库中至少一种;

6、有较强的沟通能力,并能主动的向上级汇报工作中出现的问题;

软件测试

岗位职责/待遇/环境:

1、根据开发进度和任务分配,完成相应模块软件的测试任务;

2、进行编制项目文档和质量记录的工作;

3、能准确提出和定位软件缺陷;

4、能胜任回归测试的工作;

5、能与开发人员及产品人员有效沟通协作;

6、按时向上级汇报测试进度状况和数据。

录用流程:投递简历--初试笔试--录用签订就业协议--内部实训--上岗

工作地点:本职位工作地点在天津和北京

岗位要求:

1、计算机、通信、电子、数学等相关专业或者热爱编程,大学专科或以上学历;

2、熟悉Web产品测试,熟悉B/S架构;

3、熟悉软件功能测试和兼容性测试;

4、熟悉软件开发的过程,有面向对象的软件开发思想;

5、对主流数据库如oracle/mysql/sqlserver有一定了解;

6、有较强的沟通能力和独立思考能力,工作细致;

7、具有高度的责任心和敬业精神,良好的团队合作精神。

录用流程:投递简历--初试笔试--录用签订就业协议--内部实训--上岗 工作地点:本职位工作地点在天津和北京

第14篇:安卓手机培训

安卓系统:

简介:Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。

系统介绍:

Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。

2010年末数据显示,仅正式推出两年的操作系统Android已经超越称霸十年的诺基亚(Nokia)Symbian OS系统,采用Android系统主要手机厂商包括宏达电子(HTC)、三星(SAMSUNG)、摩托罗拉(MOTOROLA)、LG、Sony Ericon、魅族M9等,使之跃居全球最受欢迎的智能手机平台,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。

发展方向:1.开放性 2.挣脱运营商的束缚 3.发展成有更丰富的硬件选择

主要特性:

升硬件速度

更多屏幕以及分辨率选择

大幅度的用户界面改良

支持 Exchange活动墙纸

大幅改进虚拟键盘

蓝牙 2.1

Google 地图 3.1.2

相对于上一版本的 改变:

1、整体性能大幅度的提升

2、3G网络共享功能。

3、Flash的支持。

4、App2sd功能。

5、全新的软件商店。

6、更多的Web应用API接口的开发

安卓系统的优势:

一、开放性

在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

二、挣脱运营商的束缚

在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么

功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。

三、丰富的硬件选择

这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。

四、不受任何限制的开发商

Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻挠,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。

安卓上网设置:

中国移动上网、彩信设置

GPRS设置

名称:GPRS连接互联网

APN: cmnet

代理:

端口:

用户名:

密码:

服务器:

MMSC:

彩信代理:

彩信端口:

彩信协议:WAP 2.0

MCC:460

MNC:00(保持默认值,不要更改,有的机器是02)*

身份验证类型: (提示身份验证错误的,可以试试选择pap or chat) 接入点名称类型:default

!编辑完以后,按『MENU』选择 “保存”。

彩信设置

名称:中国移动彩信设置

APN:cmwap

代理:10.0.0.172

端口:80

用户名:

密码:

服务器:

彩信代理:10.0.0.172

彩信端口:80

彩信协议:WAP 2.0

MCC:460

MNC:00(保持默认值,不要更改,有的机器是02)*

身份验证类型:

接入点名称类型:mms

!编辑完以后,按『MENU』选择 “保存”。

!1.Cmnet设置完成后,把APN列表界面中此项对应的圆点选点为绿色(这一步一定要做) !2.进入电话拨号状态,输入: *#*#4636#*#* ,输入完毕会自动呼出手机信息设置。点击左下角的切换DNS检查按钮,使按钮旁边显示:0.0.0.0 allowed

!3.勾选上无线和网络设置中的移动网络,状态栏会出现 E和上下箭头的标志。 ------------------------------

中国联通上网、彩信设置

联通的APN设置

名称:3gnet

APN:3gnet

代理:

端口:

用户名:

密码:

服务器:

MMSC:

彩信端口:80

彩信协议:WAP 2.0

MCC:460

MNC: 01(保持默认值,不要更改,有的机器是00)

APN类型:default

彩信设置

首页-MENU-设置-无线控制-移动网络设置-接入点名称-MENU-新APN

名称:3gwap

APN:3gwap

代理:10.0.0.172

端口:80

用户名:空

密码:空

彩信端口:80

彩信协议:WAP 2.0

MCC:460

MNC: 01(保持默认值,不要更改,有的机器是00)

APN类型:mms

安卓软件的安装:

Android手机软件的安装

通过电脑用91助手来安装程序

1、安装91手机助手:下载91手机助手,下载完成后双击图标并根据提示进行安装。

2、连接识别手机:用数据线将手机和计算机相连接,打开91手机助手,此时计算机屏幕会提示安装守护程序,点击下一步进行安装。安装完成之后手机助手就会识别到手机。

3、下载需要安装的程序

4、打开91助手之后进入找到程序管理—》安装软件—》选择第二步完成下载的那些软件

通过SD卡(内存卡)来安装软件

先看手机上面有没有一个文件管理的文件夹如果有进行一下操作

1.把sd卡放到读卡器上,插到电脑。

2.把下载好的文件拷贝到内存卡上的文件夹内,要记住文件名待会要通过手机去找到这个

文件夹

3.把内存卡放入手机开机,通过上面所说的文件管理在手机里找到刚才拷贝软件进去的文

件夹的文件

4.打开程序提示安装,根据提示一步步安装

通过数据线安装软件

先看手机上面有没有一个文件管理的文件夹如果有进行一下操作

5.把手机通过数据线与电脑连接。

6.把下载好的文件拷贝到内存卡上的文件夹内,要记住文件名待会要通过手机去找到这个

文件夹

7.把内存卡放入手机开机,通过上面所说的文件管理在手机里找到刚才拷贝软件进去的文

件夹的文件

8.打开程序提示安装,根据提示一步步安装

Android手机与其他手机通讯录互导

Vcard

把电话号码以Vcard的格式手机上导出来,然后再以Vcard的格式在导入到手机

号簿管家

在手机上下载号簿管家的软件,然后通过软件备份电话号码到号簿管家上面,备份好后,只要是可以安装号簿管家的手机,都可以从号簿管家上导出来到手机上了。

QQ同步助手

在手机上下载QQ同步助手的软件,然后通过软件备份电话号码到QQ同步助手上面,备份好后,只要是可以安装QQ同步助手的手机,都可以从QQ同步助手上导出来到手机上了。 HTC刷机包

第15篇:安卓编程入门教程

千锋Android编程入门教程为你指引一盏明灯 程序员转型不再艰难

现在很多哦面临转型的技术型人才都想学习Android开发,作为程序员在未来转型如何成功,这也是很多技术型人才思考的问题,千锋及哦啊与Android编程入门教程为程序员指引明灯,在未来的转型过程中将不是难题,系统的学习介绍让程序员能够掌握转型方法。

基础语言学习

基础语言学习掌握程序开发以及嵌入式框架的知识,通常Android开发都需要掌握java语言,而且必须要掌握java语言,并且了解这一语言的深入算法来提升自身的知识体系,在学习java语言后,逐步掌握编写程序的技巧,要深入掌握java语言编写的内涵,很多程序员转型都能够掌握java语言,因此能够顺利获得转型,如果是零基础学员先学习java,然后再逐步引入框架的学习。

在学习java语言后,学习嵌入式开发,让每一模块都能够顺利应用,从而提升这一框架式嵌入的方式,千锋教育是Android培训行业的领导者,为很多学员成功指引了学习的方向,让学员能够顺利学习,获得知识体系的提升,从而掌握学习的要领,让基础语言获得更好的提升,现在很多开发者都面临学习方式的掌握,基础语言学习后还要学会嵌入式的方法,只有嵌入式学习,来嵌入程序的框架,提升程序可用性。

嵌入式

嵌入式能够让程序真正实现功能,让程序的每一步骤都引入到框架中,真正起到程序应用的作用,在嵌入式的过程中,还要查看嵌入到该模块中是否合理,程序嵌入进去是否适合这一区块使用,这是最根本的,如果嵌入到程序区块中不适合使用,还要重新规划,作为程序员来说,这一点是最烦的,也是很多人都头疼的一点,因此产品经理在这里面起到了很重要的作用,嵌入式学习产品经理能够起到重要的作用。

嵌入式产品经理决定了很重要的位置,特别是每一个步骤,都要保证程序的合理性,保证不出现问题,确保程序每一个模块都合理,现在有些程序员在写程序的过程中总有一些功能不合理的模块,要学会改变这一模式,确保程序合理才是根本,要是区块中程序总是出现问题,要及时调整,把一些不合理的模块给调整好。很多程序员在开发过程中也都要思考这一点,把不合理的区块变为合理,把容易出问题的模块调整好。

在学习Android过程中入门教程很重要,先入门后再进行深入学习,因此要掌握好基础语言,然后再学习嵌入式,提升学习可用性。

第16篇:个人事迹材料安卓

个人事迹材料

我是经济管理系

11级酒店管理的方亮,自入团以来积极参加团组织的各类活动。努力完成团组织交给的任务,时时刻刻记住我应该做什么,如何做好的思想理念。

我深刻认识到:共青团作为共产党的后备主力军,有着不可替代的作用。作为共青团中的一员,我首先感到无比的自豪,更主要的是要严格要求自己,并且学习上争高分,政治上要先进,活动中要积极。进入大学以来,我时刻铭记自己是一名共青团员,处处严格地要求自己。作为一名学生,我把学习当作自己的第一任务,从来不肯放松一丝一毫,在期末考试中各科都取得了优异的成绩。但成绩不等于满足,而是作为一种动力促使着我进步,促使着我走向成熟,融入社会,肩负起历史赋予我们的使命。

作为共青团中的一员,我时刻不忘团员的职责,严格遵守团员的守则,牢记团员是党的后备军,应该继承党的先进性,应该拥有高尚的人品和情操。我能积极参加团委组织的各项活动,在活动中通过认真学习和思考,不断提高自己各方面的能力和素质,争做社会主义事业的合格接班人。

我加入团组织已有好几年的时间了,我深深感受到了这个大家庭的温暖。团组织使我健康成长,使我正确认识世界观、人生观、价值观。作为共青团员我们应该坚持与时俱进。下面是我在这一年来的基本情况汇报如下: 在思想上:

首先,端正思想,提高思想觉悟水平,树立起作为共青团员应该起到带头和模范作用;

其次,积极参与学校组织的各项团员活动,在活动中学习理论,在活动中实践理论,这样做到学以致用,也符合马克思的理论与实践相结合的原则;

再次,按时缴纳团费,不拖后腿,争取为团的事业贡献自己的微薄之力; 此外,努力提高自身思想素质,弘扬社会主义道德风尚,严于律己,求实创造、与时俱进,将优秀的中华民族传统美德发扬光大。认真遵守学院各项规章制度,不参加非法组织。认真学习《团的章程》,自觉履行团员的义务,执行团的决议,遵守团的纪律,完成团组织交给的任务,发挥团员的模范作用也是一个团员应尽的责任。本人有良好道德修养,并有坚定的政治方向,在入学之初的军训中获得“军训标兵”的荣誉称号,为我大学三年奠定了坚实的基础,我绝对不会辜负党对自己的期望,继续努力争取今年能被转为正式党员。 在学习上:

我始终坚持一句格言“不放弃努力本是我的任务,在现有的基础上争取再争取更是我的职责”。从进校以来学习一直未松懈,有科学的生涯规划,有明确的学习目标,认真钻研专业知识,刻苦学习,具备了较强的计算机应用能力。乐于帮助其他同学,取长补短,达到共同进步的目的。上课时认真听讲、做好笔记,积极思考并回答老师提出的问题,从而带动同学们上课时与老师之间的互动,不仅自己收获颇丰,整个班级的学习气氛也大大提高;课后及时完成作业,做到认真复习,预习一起抓,并经常去图书馆看各类报刊杂志,不仅陶冶了自己的情操,也开阔了自己的视野。此外,我积极配合老师的工作,帮老师作项目,使自己的实际动手能力得到了很大的提高。 在生活上:

首先,我积极与室友、同班同学及兄弟班级的同学搞好关系,由于平易近人待人友好,所以一直以来与人相处甚是融洽。我深刻意识到搞好同学、朋友之间的关系非常重要,这直接关系到我的大学生活能否过的充实。我觉得孤单的过完这大学生活,那我就是一个失败的大学生了。我需要做很多事情去充实我这短暂的大学时光。而这就需要朋友的帮助来完成整个过程。所以无论在系里,还是在整个学院,我都结交了许多朋友。

其次,我崇尚质朴的生活,并养成良好的生活习惯和正派的作风,合理利用自己的生活费,我深知金钱的来之不易,从不乱花一分钱。在不影响学习的前提下做兼职,寒暑假时我会做兼职,不但锻炼了自己,也减轻了家里的负担。

此外,我对时间的观念性十分重视,合理安排好工作、学习、锻炼身体及娱乐等的时间。

最重要的是,我相信:敢于拼搏刻苦耐劳将伴随我迎接未来新挑战!

知识无止境,学习更无止境。作为一名团员,我要做的就是不断的适应时代的发展,跟上时代的步伐,不断的去扩充自身的知识储备,以提高自身的修养。为了在不远的将来能得到党的认可,成为一名真正的中国共产党员,也为了在大学毕业之后能和所有的有志之士一起工作、学习,我将继续积极参加团支部组织的政治理论学习,团结同学,互帮互助,努力学习课堂知识。

在个人成长的路上,我们不但要敢于创新,而且要在马克思主义、毛泽东思想、邓小平理论、三个代表重要思想中反思自己的言行举止。作为团员必须具有积极的心态,乐观的精神,和敢于向困难挑战的精神,而且胜不骄,败不馁,能发扬团结友爱,关心他人,具有团队精神和集体荣誉感。“勿以恶小而为之,勿以善小而不为!”良好的道德习惯不是一朝一夕,而是长期的修养过程。从我做起,带动别人。只有这样才不会违背于作为新一代光荣的共青团员的精神。

虽然通过团组织的悉心培养和自己的努力取得了一点点成绩,但是我认为还是远远不够的,虽然能以一个优秀团员的标准来严格要求自己,但是距离一个优秀团员的标准还有差距,所以在今后的工作中我们要实事求是,戒骄戒躁,努力克服自己的缺点,始终保持团组织的先锋模范作用,脚踏实地、积极进取、不断创新、默默的奉献,力争使自己在各项工作中取得新的成绩,努力使自己成为共青团组织的优秀先锋。

今后我会坚持勤奋努力、踏实工作的优良作风,在工作上学骨干,在政治上求先进,在活动中求积极,认真而努力地做好组织交给的每一件事,带着激情和责任感对待自己的本职工作,不辜负团组织和广大师生对我的期望。

最后,我希望上级组织能考虑我的申请,同时我也会继续努力,争取更好的发展机会。

经济管理系11级酒店管理

方亮 2012年5月9日

第17篇:安卓系统简介

安卓系统简介

操作系统是计算机系统的基本组成部分,计算机技术的飞速发展和日益广泛的应用使得操作系统的类型,作用、计算环境等均发生了较大的变化。近十年来,新技术的出现,对传统操作系统产生了不小的冲击,如:中间件技术、网络技术、嵌入式技术等。新的设备和计算模式出现,必然与操作系统发生关联,只不过表现形式会根据技术的发展而各不相同。今天我将就基于Linux的自由及开放源代码的操作系统—安卓系统作简要介绍。

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。它主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。

Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将Android 各代版本 Logo其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于Android 1.5发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕(Android 1.5),甜甜圈(Android

1.6),松饼(Android 2.0/2.1),冻酸奶(Android 2.2),姜饼(Android 2.3),蜂巢(Android 3.0),冰激凌三明治(Android 4.0),果冻豆(Jelly Bean,Android4.1和Android 4.2)。Android

1.1:2008年9月发布的Android第一版。Android 1.5Cupcake(纸杯蛋糕):2009年4月30日发布。

Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,AndroiAndroid结构d分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X

11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。 Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Proce Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。

Android开发四大组件分别是:活动(Activity): 用于表现功能。服务(Service): 后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(Content Provider): 支持在多个应用中存储和读取数据,相当于数据库。Android 中,

Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 概念和网页的概念相当类似。一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间Android的应用(20张)可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样做在很多时候是相当方便的。当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。可以选择性的移除一些没有必要保留的屏幕,因为Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。

它具有许多平台优势,首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟;其次它就有不受束缚的特点,过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从2007年iPhone上市后,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈;再次他还具有丰富的硬件,这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移;最后安卓还具有方便开发的优点,Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。

就安卓系统的安全权限机制而言,Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比较可疑。

Android项目目前正在从手机运营商、手机厂商、开发者和消费者那里获得大力支持,我相信安卓会变得越来越好。

第18篇:安卓 课程学习心得

心得体会

学号: 姓名: 班级:

一开始接触 Android 是从自己的手机开始的,觉得它很酷,是我喜欢的风格,然后我就通过了一些网络渠道去了解Android。在选课的时候发现有这个课程,于是我就报名了。刚开始接触 Android开发时感觉到它很有意思,在界面开发上和 web 也可以形成了相通的架构,更加方便,视觉上也是非常的酷。Android作为新兴的手机操作系统,适应潮流的发展,在一定程度上迎合了现代人们最求效率和最求完美的心态,再加上的它的先进之处,所以 Android 的发展很快,Android 的应用资源也越来越广泛,现在的 Android 正在快速形成一个只能手机王国,给人们提供日常娱乐和办公的平台,无论在哪些方面,Android 的表现总是能够让人满意, 它正在快速地占领手机终端,未来的智能手机领域将是 Android 的天下,越来越多的人选用 Android平台的手机。如果说追求苹果是因为苹果的高端与美感,那么追求 Android 则是因为它的先进性开源性,也正是因为 Android 这些吸引人们瞩目的特点,才会有越来越多的人对 Android 充满激情,Android 的发展也才能这样的迅猛,所以在这里要先谢谢 Goolge,以及那些充满激情的开发者们。首先在界面上,我们同样可以通过不同布局进行设计非常酷的界面,这些界面可以通过 include 进行引入,我们可以通过一些公用的方法写个 BaseActivity 这个基类,通过继承方式比较不错的实现了 Activity 的界面, 因为这样你可以 Header(头部)和 Footer(尾部)进行处理一些触发事件或者特效等。布局模式以相对模式为主,线线布局模式可以在比较简单的 include 进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现 View 或者 Layout 等类进行扩充项目需要的布局(或者控件) ,在学习界面中,Android 为我们提供了很好的类似反射机制,通过 Layout 文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样可以通过java 代码直接创建View 进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转 Intent 管理,通过 Bundle 对数据在界面之间进行传输。其次在手机交互式通信服务中,学习了 Android 手机之间进行短信发送、广播、对广播的监听、服务等。

这次的课程我们主要学习了航班系统的设计,首先我们要建立航班查询:旅客就可通过网络访问该系统客户端网址,可根据旅客提供的出发时间、出发地点和目的地、舱位要求等,查询满足旅客要求的航班。通过检索可得到航班的相关信息,从而可以方便旅客订票并掌握所需信息,同时可减少工作人员的工作量。

第二,我们要建立旅客订票:旅客将订票的相关信息通过工作人员输入系统客户端。客户端将旅客的订票信息通过网络传送给服务端,服务端根据接收到的信息由航班安排系统为旅客安排座位并返回相应的确认信息给该客户端。订票信息生成后,存入相应的存储区域,并对数据库进行数据提交。客户端打印取票单及帐单给旅客,旅客在登机前,经信息核审后,即可领取机票登机。

第三,航班信息管理:航空公司可将所有航班的信息存入数据库,方便用户对航班基本信息查询,相 关工作人员可根据公司要求,经系统身份认证后登录并对航班信息进行修改等操作,从而使 航班信息便于管理。

第四:航班安排:从客户端接收到旅客的订票信息,该系统可在短时间内处理旅客航班问题。将 订票信息送往数据库并更新,客户端的航班查询信息也同步更新。节省时间的同时,也能让 旅客得到最新的航班信息。

第五,售票管理:旅客不仅可在各客户端进行机票预定,也可直接在机场的售票处购票,购票信息由系统提交到数据库进行管理更新。

第六,退票管理:机票有效期内,旅客若需退票,可在退票处进行退票。退票信息,由工作人员输入系统,系统对订票信息或售票信息进行删除更新。

第七,票销售情况核算:因为航空公司机票销售量大,而航空公司为了公司的经营,有需要在一定的时 间阶段了解公司机票的销售情况。而庞大的数据量通过人工来完成,似乎不太现实,而该系 统可帮助航空公司进行售票情况的核算。

这个课程紧跟住了现代科技的发展,让我们在第一时间和先进的科学技术做了一个亲密的接触,这样的课程能够点燃我们对某一个新兴领域的激情,这算是一个启蒙,让我们对 Android 先有了一个大概的了解,这个课程不一定能让我们很好的掌握 Android 的理念或者开发,但是能够让我们对 Android 产生浓厚的兴趣,让我们燃起探索Android 的欲望,我想这样就已经足够了。

第19篇:如何学习安卓

如何学习安卓

想学编程开发,那要先会一门编程语言,现在可以试着去学学C语言,虽然这个安卓沾不上边,但是,C语言的编程思想还是很重要的,学完了C语言之后,他的语法基本上和所有的编程语言都很相像, 能影响你的思维,帮助你理解其他的编程语言的。之后呢,在好好看看《数据结构》,这很重要。然后再去学学Java语言,因为Android的应用的开发语言用的是Java,所以一定要好好学习。

最后了解下数据库,我们在学习数据库之前都先学了《数据库原理》《离散数学》《关系代数》,有了这些基础之后再去学数据库,数据库也有很多可以选择的,推荐mysql。

加油!

第20篇:最佳安卓游戏

2010 年度最易上瘾游戏 年度最易上瘾游戏 愤怒的小鸟 Angry Birds 瞄准射击 shoot U! 涂鸦切割 Slice It! 碧湖垂钓 Fishin2 Go 涂鸦跳跃 Doodle Jump 重力滚球迷宫 Labyrinth 水果忍者 Fruit Ninja 扔纸团 Paper To 极限挑战 The Impoible Game 炸毁 Blow up 物理空间 Space Physics 2010 年度最具人气游戏 愤怒的小鸟 Angry Birds 会说话的汤姆猫 Talking Tom Cat 口袋传奇 Pocket Legends 地牢守护者 Dungeon Defenders First Wave 和雏子一起做运动 一起高尔夫 2 Lets Golf 2 HD 会说话的圣诞老人 Talking Santa 植物大战僵尸 3 细胞分裂 5 Splinter Cell Conviction HD 阿凡达 3D Avatar 天空的荣耀 Skies of Glory 2010 年度最具创意游戏 你画我猜 What The Doodle 食物大合作 Spaghetti Marshmallows 繁忙的办公室 Office Rush 小羊快跑 SheepRun 吉他 Guitar Solo 爆竹娃 Squibble 火箭兔子 Rocket Bunnies 扔纸团 Paper To 水果忍者 Fruit Ninja 涂鸦跳跃 Doodle Jump 2010 年度最佳竞速游戏 都市赛车 5 Asphalt5 极品飞车 13 变速 Need For Speed:Shift 速度与激情之地下狂飙 Fast&Furious Adrenaline 鲁莽赛车 Reckle Racing 3D 超音速飞行 TurboFly 3D 摩托大赛 Motorbike GP 疯狂卡丁车 Krazy Kart Racing 穿山甲大冒险 Armadillo Roll口袋赛车 PocketRacing 我的纸飞机 2 My Paper Plane2 2010 年度最佳塔防游戏 机器人塔防 Robo Defense 城堡勇士 Castle Warriors 枪之荣耀 Guns\'n Glory 丧尸围城 Grave defence 植物大战僵尸 Plants vs Zombies 失落的战役 Towser Defense 水晶塔防 Crystallight Defence 别惹恶魔 leave Devil alone 农夫大战外星人 Rednecks vs Aliens 钉子户大战拆迁队 2010 年度最佳对战游戏 地牢守护者 Dungeon Defenders First Wave 天空的荣耀 Skies of Glory 狂野飙车 5 Asphalt5 迷你空中军队 Mini Squadron 三国杀 FIFA10 足球盛宴 EA FIFA 10 疯狂卡丁车 Krazy Kart Racing 史瑞克 3D 赛车 Shrek Karting HD 2010 年度最佳益智游戏 涂鸦切割 Slice It 重力球迷宫 Labyrinth 超级跌落 Super tumble 炸毁 Blow up 轨道建设 X Construction 炼金术 Alchemy 飞机领航员 Flightfrenzy 功夫泡泡球 Bonsai Blast 俄罗斯方块 Terris 景丽时间 Tangram Time 2010 年度最佳重力感应游戏 重力球迷宫 Labyrinth 保龄球 iBowl 穿山甲大冒险 Armadillo Roll 专业模拟飞行 X Plane Flight Simulator 碧湖垂钓 Fishin Go 涂鸦跳跃 Doodle Jump 小铁球历险记 Little Metal Ball 极限摩托车 MX Moto 3D 重力球完整版 Prism 3D 天生杀人狂之食人鲨 3D Hungry Shark2010 年度最佳模拟经营游戏 模拟人生 3 The Sims 疯狂农场 Farm Frinzy 美女餐厅 2 Diner Dash 游戏发展国 Game Dev Story 海盗餐厅 Barrr 口袋上帝 Pocket God 饭店大亨 Hotel Mogul 疯狂寿司店 欢乐王国 Haypi kingdom 货物管理员 Cargo 2010 年度最佳角色游戏 泽诺尼亚传奇系列 ZENONIA 地牢守护者 Dungeon Defenders First Wave 蜘蛛侠 SpiderMan Tot

al Mayhem HD 地牢猎人 Dungeon Hunter 神秘传说阿卡纳 Legends Arcana 恶魔猎手 CaligoChaser 斯巴达英雄 Hero of Sparta 罪恶都市之西海岸的喧嚣 Gangstar West Coast Hustle 2010 年度最佳体育游戏 年度最佳体育游戏 实况足球 2011 Real Soccer 2011 劲爆棒球 Homerun Battle 3D 高山滑雪 Big Mountain Snowboarding 超级棒球明星 2011 Baseball Superstars 2011 一起高尔夫 2 Lets Golf 2 HD 魔幻保龄球 Magic Bowling 3D 台球大师 3d pool master 美式足球 Backbreaker Football 3D 投篮 Basketball Shots 3D 09 国际橄榄球赛 Rugby Nations09 手指任意球 Flick Kick Football 2010 年度最佳网游 口袋传奇 Pocket Legends 明珠三国 2011 年度最值得期待游戏 植物大战僵尸 Plants vs Zombies 割绳子 Cut the Rope

安卓实习报告
《安卓实习报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档