人人范文网 实习报告

android开发实习报告(精选多篇)

发布时间:2021-07-23 07:35:55 来源:实习报告 收藏本文 下载本文 手机版

推荐第1篇:android开发实习报告总结

Android开发实习总结

有一名话叫做:不经过风雨,怎么见彩虹?我想改一下:不真正进入社会,怎能了解社会呢?

在这次实习中,给我收获最大的是我觉得很多工作需要我去摸索和探讨,要不怕吃苦,勇于激流勇进,有的工作虽然单挑又重复,但这是磨练意志最有效的方法,我告诫自己要认真完成,对每项工作都要他看成是公司对自己的一次考核,做到每一件事的过程中遇到困难,一定要争取不抛弃,不放弃,坚持“战斗”,只要希望还在,胜利一定属于我们。

在此次专业实习的过程中,我进入了广州外语通科技有限公司当任Android开发实习生,并参加了两次大项目的研发,从实际到理论,加深了我们对软件技术专业的理解,和对于与社会接轨的深刻感受。

作为学生,我们更多的是课本的知识的理解,理论的优势是我们的特色,但是怎样将理论结合实际却是摆在我们面前的难题。而参观广州外语通科技有限公司正视给了我们直观的解读。广州外语通科技有限公司建立了一整套符合国际标准的质量、成本和交付体系,软件开发质量控制和过程改善能力已达到了国际先进水平,秉承“用开拓的意识、创造新的价值”的企业理念,不断跟踪国际先进技术与管理思想,研发和提供优质软件产品和技术服务,为客户不断创造和提升价值。正是因为秉持这样的理念其完整的价值链和细致的软件服务,给了我们以软件技术专业的具体实际的体验。与此同时,广州外语通科技有限公司企业的参观使我们对中国物流企业的现状有了大概的了解,参观过程中不同仓库的设施和地面的设置的挑选更是让我们多了超出理论的认识。通过指导人员的讲解我们对中国物流企业的信息化有了大致的了解:中国物流企业信息化整体水平不高是其信息化建设的核心问题。这包括:标准不统一,资源浪费严重;大型应用软件系统应用不普遍,应用层次低;现有各软件系统之间相互孤立,形成“信息孤岛”;信息化建设发展不平衡,造成“信息鸿沟”;硬件设备的利用率不高,资源浪费严重;综合信息系统是物流业信息化建设的必然趋势。

如果说前两次的参观实习是给的我们直观的视觉冲突和心理震撼,那么后来的信息化讲座就揭开了信息化和软件技术专业的神秘面纱。通过经验丰富的演讲者的ppt演示我们了解了多个行业的信息化实施过程和具体的商务转变成软件技术专业活动的流程。现实中简单的商务活动一旦设计成成功的xx专业流程将涉及多个业务流程,整体的实施过程是复杂而艰难的。鉴于中国Android专业已经很成熟,各方面的支持还不够很完备,这使得中国Android专业的发展有很大的扩展性。

作为应届毕业生,在毕业前的这次专业实习,无疑是给了我们对Android专业的清晰认识,这也是最为软件技术专业专业的学生的最大感悟。当然实习中还有着更多的感触,包括学习,生活,工作各个方面。

就学习而言,专业实习它更偏重于应用,更加细致,要求也更加严格。作为应届毕业生的我们要想适合自己的工作,在实际中实现自己的理想,必需不断的增加自己的能力,做事情更加专注。

就生活而言,专业学习展示给我们看各个不同的行业的人们的生活,不同行业的人们将自己的行业融入自己的生活,这样大的人群的生活展示给我们未来的生活远景,选择什么样的生活也是我们现在的最重要的抉择。一旦下定决心,也就要开始为自己的生活做准备,胜利是属于有准备的人的。现在的我就要为自己的生活做准备,不断的充实自己。

就工作而言,无疑的本次的xx专业专业实习,展示给我们了多种职业,而作为应届毕业生,择业的选择是大多数人所面对的问题。就我们xx专业而言,面试时常遇见的问题就是“Android专业是干什么的?”或许大多数的学生跟我一样对android专业并没有清晰的概念,所以也并不能很好的回答这样的问题。不管怎样,勤劳的人是让人钦敬的,但所接触的朋友说“多年的工作让我清楚这个社会的运转不是控制在辛勤劳动的人手上,而是那一班根深帝固的政治家、资本家手中...工作中的认真负责不是为了讨好表现,而是为了要冶练自己的品性,是在为自己,不是为老板”。

上面的认识都是正面的,也是自己受益的主要部分,但就个人而言,本次的xx专业实习更多的是让自己认识到自己的不足。作为一个即将毕业的应届生,通过此次的实习,更多的是对大学四年的回顾和反省。进入了社会,和学校的感觉是完全不一样的。只有在刚进入公司的一个月里,大家还把你当作新人,时间久了公司的领导就把你与其它同事相比较;当你开始跑客户时,客户把你与做了很多年的销售相比较,没人把再把你当新人看待,而你把你当作一个正式的有能力的人使用。

看着那些员工忙忙碌碌的来来去去,坚定的态度是那么一点一滴在铸就起来,一个被人认可的人首先一定是一个认真负责的人,一个认真负责的人无论到哪里都可以站得正。相对于经验和技术而言,这些都是可以积累的,可以日久能熟的,但是否能有正确的态度却是因人而异的,有的人永远让人感觉畏锁。我从来没有把现在的工作当作实习,我就是认定我是在工作,而不是来学习东西的。我是为工作而学习,学习是为了把工作做得更好。

总的来说,我们这一次实习是比较成功的,大家都能学习到了很多在校园、在课堂上、课本上学不到的东西,也了解很多和懂得了做人的道理,特别是体会到生活中的艰辛和找工作的不容易。

感谢这次实习,感谢这次实习的教师,感谢为我们争取了这实习机会的领导。这次实习,一定会令我的人生走向新一页!

XXX

2016-01-08

推荐第2篇: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业发展速度一直都是相当惊人的,不想被社会淘汰,我们就得必须不断地学习,现在的社会不再是一劳永逸,其他行业也是如此,我们必须不断地拿知识来武装自己,不然被淘汰那是肯定的!现在就业难原因其实在于竞争的家具,为了在竞争中得到成功,我们必须时时刻刻学习,还学到了很多做人做事的道理,不仅懂得了要想在计算机这一行立足必须具备扎实的技术理论知识,还必须学会与人沟通,合作的能力,同时更懂得了尝试的重要性,很多事情不是听说是困难的它就是困难的,只有亲自去做亲自去体会才知道,其实它并没有那么困难,这就是实践的重要性! 无论做什么事情都必须要坚持,只有坚持下去,才会成功!事在人为,就怕不做!我们不能怕失败,关键是要从失败中总结经验,带着勇气,带着自信,坚持不懈,踏踏实实。这一次的实习是短暂的,但我收获良多。回顾以前所走过的路,太多的无奈和迷茫,这次实习就像是我人生道路上的航标,为我指明了前景的方向,是我对自己的前途充满了信心,我不仅知道了在人生的岔道口更适合朝哪个方向前进!更知道了在今后的道路上怎么去武装自己!

实习结果:

推荐第3篇:Android操作系统应用开发报告

Android操作系统应用开发报告

项目名称: 作

者: 学

号: 完成时间:1.开发目的

本次应用开发的预期目的及相关功能介绍。

2.程序系统

对所开发程序系统的介绍,包括总体结构,程序系统中各个程序或函数的名称及其介绍,他们之间的层次关系。

3.主要功能

说明所开发程序系统具有的实际功能。

4.基本流程

用图给出所开发程序系统的实际处理流程。

5.出错原因分析

给出开发过程中出现错误的原因分析。

6.开发心得

列出本次课程开发工作中所得到的经验与教训,以及心得体会。

推荐第4篇:android 开发心得

即 使你的应用程序是快速且响应灵敏的,但一些设计仍然会给用户造成问题——与其它应用程序或对话框未事先计划的交互,意外的数据丢失,意料之外的阻塞等等。 避免这些问题,有助于理解应用程序运行的上下文和系统的交互过程,而这些又正影响着你的应用程序。简而言之,你应该竭尽全力去开发一个与系统和其它应用程 序流畅交互的应用程序。

一 个常见的流畅问题是,一个应用程序的后台处理——例如,一个 Service或者

BroadcastReceiver——弹出一个对话框来响应一些事件。这可能看起来没啥大碍,尤其是你在模拟器上单独地构建和测试你 的应用程序的时候。然而,当你的应用程序运行在真机上时,有可能你的应用程序在没有获得用户焦点时后台处理显示了一个对话框。因此,可能会出现在活跃的应 用程序后方显示了你的应用程序的对话框,或者从当前应用程序夺取焦点显示了一个对话框,而不管当前用户正在做什么(例如,正在打电话)。那种行为,对应用 程序或用户来说,就不应该出现。

为了避免这些问题,你的应用程序应该使用合适的系统资源来通知用户——Notification类。使用Notification,你的应用程序可以在状态栏显示一个 icon来通知用户已经发生的事情,而不是夺取焦点和打断用户。

另 一个流畅问题的例子是未能正确实现Activity的 onPause()和其它生命周期方法而造成意外丢失了状态或用户数据。又或者,如果你的应用程序想暴露数据给其它应用程序使用,你应该通过 ContentProvider来暴露,而不是(举例)通过一个可读的原始文件或数据库来实现。

这 些例子的共同点是它们都应该与系统和其它应用程序协作好。Android系统设计时,就把应用程序看作是一堆松散耦合的组件,而不是一堆黑盒代码。作为开 发者来说,允许我们把整个系统看作是更大的组件集合。这有益于我们可以与其它应用程序进行清晰无缝的集成,因此,作为回报,我们应该更好的设计我们的代 码。

下面将讨论常见的流畅问题以及如何避免它们:

一 定要记住Android是一个移动平台。可以显而易见地说,其它Activity(例如,“Incoming Phone Call”应用程序)可能会在任何时候弹出来遮盖你的Activity,记住这个事实很重要。因为这个过程将触发 onSaveInstanceState()和 onPause()方法,并可能导致你的应用程序

被杀死。

如 果用户在你的应用程序中正在编辑数据时,其它 Activity出现了,这时,你的应用程序被杀死时可能丢失那些数据。当然了,除非你事先保存了正在进行的工作。“Android方式”是这样做的:能 接收和编辑用户输入的 Android应用程序应该重写 onSaveInstanceState()方法,并以恰当的方式保存它们的状态。当用户重新访问应用程序时,她能得到她的数据。进行这种处理方式最经典的例子是 mail应用程序。如果用户正在输入 email,这时其它 Activity启动了,mail应用程序应该把正在编辑的email以草稿的方式保存起来。

如果你不想穿着内衣在大街上溜达的话,你的数据也不应该这样。尽管可能存在暴露应用程序的某种形式给其它应用程序,但这通常不是最好的主意。暴露原始数据,要求其它应用程序能够理解你的数据的格式;如果你变更了格式,那么,你将破坏那些没有进行同步更新的应用程序。

“Android 方式”是创建一个 ContentProvider,以一种清晰的、深思熟虑的和可维护的API方式暴露你的数据给其它应用程序。使用 ContentProvider,就好像是插入Java接口来分离和组装两片高耦合的代码。这意味着你可以修改数据的内部格式,而不用修改由 ContentProvider暴露的接口,这样,也不会影响其它应用程序。

如果用户正在运行一个应用程序(例如,Phone程序),断定对用户操作的目的才是安全的。这也就是为什么必须避免创建Activity,而是直接在当前的 Activity中响应用户的输入。那 就是说,不要在 BroadcastReceiver或在后台运行的 Service中调用 callActivity()。这么做会中断当前运行的应用程序,并导致用户恼怒。也许更糟糕的是,你的 Activity可能成为“按键强盗”,窃取了用户要提供给前一个 Activity的输入。视乎你的应用程序所做的事情,这可能是个坏消息。

不 选择在后台直接创建 Activity UI,取而代之的是,应该使用NotificationManager来设置 Notification。它们会出现在状态栏,并且用户可以在他空闲的时候点击它们,来查看你

的应用程序向他显示了什么。(注意,如果你的 Activity已经在前台了,以上将不适用:这时,对于用户的输入,用户期望的是看到下一个 Activity来响应)

如果你的应用程序需要执行一些昂贵或耗时的计算的话,你应该尽可能地将它挪到线程里。这将阻止向用户显示可怕的“Application Not Responding”对话框,如果不这样做,最终的结果会导致你的应用程序完全终止。

一 般情况下,Activity中的所有代码,包括它的 View,都运行在相同的线程里。在这个线程里,还需要处理UI事件。例如,当用户按下一个按键,一个 key-down事件就会添加到 Activity的主线程队列里。事件处理系统需要很快让这个事件出列并得到处理;如果没有,系统数秒后会认为应用程序已经挂起并为用户提供杀死应用程序 的机会。

如果有耗时的代码,内联在Activity上运行也就是运行在事件处理线程里,这在很大程度上阻塞了事件处理。这会延迟输入处理,并导致ANR对话框。为了避免这个,把你的计算移到线程里。

任 何值得使用的应用程序都可能有几个不同的屏幕。当设计UI屏幕时,请一定要使用多个Activity对象实例。 依赖于你的开发背景,你可能理解 Activity类似于 Java Applet,它是你应用程序的入口点。然而,那并不精确:Applet子类是一个 Java Applet的单一入口点,而一个Activity应该看作是你的应用程序多个潜在入口点之一。你的“main”Activity和其它之间的唯一不同点 是“main”Activity正巧是在AndroidManifest.xml文件中唯一对“android.intent.action.MAIN”动作感兴趣的Activity。 因此,当设计你的应用程序的时候,把你的应用程序看作是Activity对象的 集合。从长远来看,这会使得你的代码更加方便维护。

当 谈到 UI观感时,巧妙地交融非常重要。用户在使用与自己期望相反的 UI的应用程序时,会产生不愉快的感觉。当设计你的 UI时,你应该尽量避免太多自己的主题。相反的,使用同一个主题。你可以重写或扩展你需要的主题部分,但至少在与其它应用程序相同的 UI基础上开始。

不 同的 Android设备可能支持不同的屏幕分辨率。甚至一些可以自己变更分辨率,例如,切换到风景模式。确保你的布局和图片能足够灵活地在不同的设备屏幕上正 常显示。幸运的是,这很容易做到。简而言之,你需要做的是为主要分辨率提供不同版本的作品,然后为不同的尺寸设计你的布局。(例如,避免使用硬编码位置而 使用相对布局。)如果那样做的话,系统会处理剩下的部分,而且你的应用程序在任何设备上都看起来很棒。

Android设备会有多种网络连接选项。所有的都提供数据访问,但之间肯定有更快的。其中,速度最慢的是GPRS,GSM网络的非 3G数据服务。即使具备 3G能力的设备在非3G的网络上也会花费很多的时间,所以,网络很慢仍然是一个长期存在的事实。

这 就是为什么你应该按照最小化的网络访问和带宽来编写你的代码。你不能假设网络是快速的,所以,你应该总是计划它是慢的。如果你的用户碰巧在一个快速的网络 上,那很好——他们的用户体验会提升。你要避免相反的情形:在不同的地点和不同时间,应用程序有时可用,有时慢得令人抓狂,这样的程序可能不会受欢迎。

还 有一个潜在的地方是,如果你正在使用模拟器,那么你很容易受它迷糊,因为模拟器使用电脑的网络连接。这比手机网络快很多,所以,你需要修改模拟器设定来模 拟较低的网络速度。你可以在 Eclipse中做到这点,在启动选项的模拟器设置页里设置或者在启动模拟器时通过命令行选项设置。

Android 可以支持多种外观形状。也就是说,一些Android设备拥有全“QWERTY”键盘,而其它可能会有40键、12键或其它键盘设置。同样的,一些设备可 能有触摸屏,但一些也会没有。当创建你的应用程序的时候,记住这一点。不要假定特定的键盘布局——除非你真的想限定你的应用程序只运行在某些设备上。

如 果移动设备经常插在墙上,那么,它也就不是很“移动”。移动设备是电池供电的,如果我们能让每次充电的电池使用得更持久一些,那么每个人都会更加开心—— 尤其是用户。

其中两大耗电硬件是处理器和无线;这也就是我们为什么要写尽可能少做工作、尽可能少去使用网络的应用程序的重要原因。

如 何让你的应用程序最小化的占用处理器,归根结底还是要写高效代码。为了减少无线的电量消耗,确保对错误条件进行正确的处理,并只获取你要的东西。例如,如 果某一个网络操作失败了,不要不断地进行重试。如果失败了一次,有可能是用户不受欢迎,因此,如果你再以正确的方式操作,有可能还会失败;所有你做的都是 在浪费电池。

用户是相当聪明的:如果你的程序高耗电,他们是一定会发现的。到那个时点,你唯一可以确定的是,你的程序将很快被卸载掉。

推荐第5篇:计算机系Android实习报告

****毕业实习报告

学生姓名学

号专

业指导教师

****

毕业实习报告

**** **********

计算机科学与技术

***

达内时代科技集团有限公司毕业实习报告

系别:信息工程学院 年级:2012级 专业:计算机科学与技术

姓名:韩温玉 学号:201252383

前 言

为期三个月的认识实习即将结束,三个月的实习时间虽然不长,但是我从中学到了很多知识,关于做人、做事、做学问。这次实习丰富了我在这方面的知识,使我向更深的层次迈进,对我在今后的社会当中立足有一定的促进作用,但我也认识到,要想做好这方面的工作单靠这短短的实习是不行的,还需要我在平时的学习和工作中一点一点的积累,不断丰富自己的经验才行。我面前的路还是很漫长的,需要不断的努力和奋斗才能真正地走好。实习这三个月期间,我拓宽了视野,增长了见识,体验到社会竞争的残酷,在设计知识方面、技能、与人沟通和交流等方面都有了不少的收获。不但认识到自己在理论知识方面的欠缺,而且还意识到只有与实践结合起来,才能使自己的知识水平和自身素质有较大的提高。以便在以后能以更加积极的姿态面对今后的学习和工作中面临的挑战。为我今后在工作上能力的提高起到了促进的作用,增强了的竞争力,为以后立足增添了一块基石

I

一.达内时代科技集团有限公司介绍 1.实习目的

毕业实习是学生大学本科教学实践的主要环节,对学生的实践能力的培养具有十分重要的意义。学生通过本次实习,能够了解计算机专业的相关新技术,了解理论知识在实际应用中的作用,了解计算机技术的新发展,体验计算机专业的工作内容和工作特点,拓宽知识面,增强人际沟通能力,加强团队协作精神,为走向社会打下基础。

Android以Linux为核心的Android行动平台,使用Java作为编程语言。本实训是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训练,要求学生掌握java语言程序设计的基本技能和Android编程的应用,并较系统地掌握JAVA语言程序设计开发方法以及帮助文件的使用等,使学生通过本次实训,能够进行独立的Android应用程序开发,能够在实际操作中得到进一步的提高,为以后的学习和工作打下良好的基础。

2.公司简介

达内全称达内时代科技集团有限公司,是中国高端IT培训的领先品牌,致力于培养面向电信和金融领域的Java、C++、C#/.Net、软件测试、嵌入式、PHP、android等方面的中高端软件人才。

由于达内优秀的教学效果和行业领先的经营模式赢得了社会各界的广泛赞誉和好评,荣获了各界权威机构的颁奖:达内成为业界唯一的一家200

6、200

7、200

8、2009连续4年入选德勤评选的 “中国高科技高成长50强公司”、“亚太地区高科技高成长500强公司”,获得首届中国留学人才归国创业“腾飞”奖、中关村管理委员会指定的“软件人才培 养示范基地”、被《计算机世界》评选的“就业服务杰出贡献奖”、被《中国计算机报》评选的“最具影响力培训机构奖”、被搜狐评为“中国十大教育集团”、被腾讯评为“中国大学生心目中最具影响力的IT品牌”。

二.Android开发实习内容及过程

此次实习是对android的简单的应用与开发,也是对android各个控件的学习与实践。在java的环境中对界面,应用进行编程。本次实习重点完成了安卓开发计算器、安卓开发学生注册界面、安卓开发音乐播放器和安卓开发游戏连连 2

看这四个项目。

做学

学习

了linearlayout,tablelayout, AbsoluteLayout, RelativeLayout四种布局,分别为线型布局,表格布局,绝对布局和相对布局,并知道了如何通过这四种布局的相互嵌套来使程序的界面更加的友好,更加的让用户接受。并简单的了解了安卓目录下SRC,gen,res等文件夹中的文件在项目中的作用,学习了切换界面的类Intent。

然后学习了Button,TextView,Seekbar等android开发的控件,并且将这些控件都运用到了所作的学生注册界面中。

做音乐播放器时学习了关于音乐文件的调用,也学习了在主文件Main.java中先创建多媒体对象后,然后通过SD卡的文件路径来创建一个播放资源,然后在创建按钮对象,同时添加6个按钮对象创造各自的侦听方法,我们用ListActivity来布局播放界面,用ImageButton来实现播放器的开始,暂停的操作。

最后在开发连连看游戏时,将前面所学的知识进行综合与加深,也学习到了新的函数与控件,该游戏主要包括claGameView(游戏视类,处理游戏中出现的情况,包括界面生成,算法等)claGameActivity(处理游戏中的消息提示),claStartActivity(游戏菜单设计),claSetActivity(菜单中游戏难度设定)这些类。比如用random函数来对连连看进行重排列,还有用menu对游戏里的功能进行操作,还有用之前学到关于多媒体对象的调用将连连看游戏进行配乐。并且选用了网格对游戏界面进行了规划,以及对于相同图片的的消去,必须满足情况:1,图片相同;2,两个图片之间必须没有障碍物,可以用若干个垂直的直线连接起来;3,连接两个图片的直线线段的转折点不超过两个(连接线由X轴和Y轴

的平行线组成,即无拐点,一个拐点,两个拐点)

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

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

然后老师开始带领我们学习android界面的开发,并且告诉我们如何可以将 3

界面尽量做得美观与方便,告诉我们作为程序的开发人员要为用户考虑,在这一阶段,我们开始试着学习和操作android的简单控件,包括TextView,Button等。

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

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

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

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

对于连连看,我们很熟悉,也明白其中的游戏规则;然而把它们用计算机语言展示出来却比用文字语言展示出来要难上很多。因此这个项目也是用时最多的一个项目,期间融合了算法设计以及之前几个项目所学的知识。虽然在参考资料下,完成了项目;但是也存在很多不足。当然也有自己特点的地方,比如添加了成功几步就奖励时间,比如游戏的配备音乐,以及音乐的开关按钮。

Android主要有四大组件,分别为:Activity 活动、Service 服务、Broadcast receivers 广播接受者、Content Provider 内容提供者。还有上激活组件Intent。

Activity就是一个用户可以直接接触并看到的窗口,当新建一个Android Project后可以

看到在工程文件下的src中有一个已建好的java类FirstActivity,系统 4

也会自动为他配备一个布局文件main.xml ,并在AndroidManifest中对此Activity进行注册。

用户想要自己创建一个Activity,首先创建一个java类继承自Activity,可以为他配备一个布局文件用来显示Activity创建后的布局。最后在主配置文件manifest.xml中对创建的Activity进行注册,这一步是必不可少的,没有注册Activity无法运行。

在manifest.xml中会有许多的Activity,但系统一次只能运行一个Activity,因此必须修选定一个最先运行的Activity。在注册Activity是加入可指定当前的Activity为主Activity最先被执行。其他Activity可借助激活组件Intent

进行启动。通过Intent还可实现来了两个Activity之间传递数据

Activity具有生命周期,他有三种状态:运行状态、暂停信息和停止状态。运行态是在屏幕台前位于当前任务堆栈的顶部,即获取焦点的Activity。暂停信息是指失去了焦点但对于用户仍可见,此状态下当程序处于低内存是仍有可能被消除。停止状态是指完全被另一个Activity覆盖,但他仍然保留所有的信息与状态。

Android图形设计UI Android UI控件一般写在布局文件中,此次实习所学控件主要有:TextView,EditText Button 、AlertDialog、RadioButton、CheckBox、Spinner和TableRow等。将这些控件及相应的属性写在layout下的布局文件中就可在与其绑定的Activity中显示相应的对话框,文本框,按钮等。

Android的界面布局是为了使控件能够更友好的呈现在用户的眼中。主要有:绝对布局Absolutelayout、线形布局LinearLayout、框架布局FramLayout、相对布局RelativeLayout和

表格布局TableLayout。其中框架布局适合于单张图片的显示。 3.Service 服务

Service事实运行在后台的一段代码。他与Activity一样有相似的生命周期,但不同的是他不能自己运行,必须通过某一个Activity或者其他的Context对象来调用。

Service可通过调用Context.StartService()启动,还可以通过ServiceConnection来访问Service。可以将其他的组件绑定到Service上。 4.数据存储

Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在 5

J2SE环境中保存数据到文件中是一样的。

openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data//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 ,只有这样其他程序才能正确访问。

结语

为期四个月的Android实训已经结束,在这一个月中我学习了很多,也得到了很多。实训是把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。在此期间学生能够初次体会到实际生产中的种种技能与经验。完成一项项项目能体现出独立思考能力。Android生产实习对目前应用现状进行了分析与比较,进而研究分析Android平台的系统架构和组件模型。在此基础上,基于Android平台设计和开发,实现对android编程的理解与应用,特别是在对于控件的应用产生很深的理解。

通过这近一个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。

经过对Android的控件、布局、Activity、Service等一系列基础知识的学习,我对整个Android的开发有了大致的了解。因为我们都是第一次接触android,所以老师先给我们讲了一个基本上每个程序语言都要编的,经典的程

6

序,helloworld。通过这个小程序,我们知道了如何去创建一个android的项目,了解了android项目里的每个文件夹和文件的作用。教了一些常用的控件的使用,如:TextView,Button等等。然后老师又教我们如何布局,认识了linearlayout,tablelayout, AbsoluteLayout, RelativeLayout四种布局分别为线型布局,表格布局,绝对布局和相对布局,并知道了如何通过这四种布局的相互嵌套来使程序的界面更加的友好,更加的让用户接受。例如: 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样也可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理.在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。由于我们刚刚结束了java课程,马上展开了android实训,而android和java之间又有很大的联系,所以,我们学习android也比较容易入门。最终得到的成效也很好。

这次的实训再让我们认识到Android的同时,更加让我们认识到团队合作的重要性,在团队开发过程中,我们都有自己的分工,在老师的指导下,我们很好地完成了项目,团队的重要毋庸置疑,认识到团队的重要性,对我们在未来的工作中能够更加的适应,我们也会在未来的日子里更加深刻的认识到这次实训带给我们的,让我们能受益的体会与思考。

2015年12月 20日

指导教师评语:

评分: 指导教师签字: 年 月 日

推荐第6篇:Android程序员实习报告

本科生毕业实习报告

标 题:关于在“******公司”从事Andorid开发程序员实习的报告

实习单 位:********有限公司 实习时 间: 2015.3.2 实习岗 位: Android开发程序员 学 生 姓 名: 学 号: 院 系: 专 业:

年月日

题目:关于在“*****有限公司”从事Andorid开发程序员实习的报告

一、实习单位及岗位简介

(一)实习单位的简介*******有限公司是一家刚刚成立的私营公司,在职员工大部分为80后软件精英,主营软件开发(Java方向),电子产品批发零售,信息系统集成服务,公司行业主要是互联网、电子商务、计算机软件、计算机硬件等。公司地址在*********,现共有员工大概50人。主要有Web开发部、Jsp开发部、Android开发部等。经过不断地学习和实战,每个部门都有其实力强硬的带头人,整体上是一个积极向上,团结奋进的创业型企业。

企业文化:人才是企业最大的财富,优秀的产品,良好的服务是企业价值的体现;爱祖国、爱人民、爱事业和爱生活是企业凝聚力的源泉;尊重知识、集体奋斗、艰苦创业是企业发展的要求;责任意识、创新精神、敬业态度和精诚合作是企业文化的精髓;实事求是是企业的行为准则。

(二)实习岗位的简介

我所在的实习岗位是一个所属Android部的程序开发岗位,主要工作是配合组长,做一些力所能及的东西。同时组长会针对性的给我一些网站或者资料,让我学习,这些资料主要是和他现在做的项目相关的技术实现。我自己看一边做个基本的了解,同时对这些技术和框架有个大体的认识。然后他会再结合他的项目,有针对性的给我讲解这些技术的应用,是怎样在他的项目里实现的。然后会给我分配一个小任务,让我拿来练手的同时,又一遍温习和巩固先前学到的技术。

我的实习工作从一个APP的界面开始,慢慢熟悉这个APP的框架结构,然后把组长写好的核心算法放进框架中,实现其功能。总的来说,我在这个团队中主要担任辅助的工作,将其他人写好的模块放进项目框架中,从中不断学习Amdroid开发的技巧和别人的代码风格。

二、实习内容及过程

时间一晃而过,转眼间到公司已经两个多月了。这是我人生中弥足珍贵的一段经历。在这段时间里各级领导在工作上给予了我极大的帮助,在生活上给予了我极大的关心,让我充分感受到了领导们“海纳百川”的胸襟,感受到了大发人“不经历风雨,怎能见彩虹”的豪气。在对公司各级领导肃然起敬的同时,也为我有机会成为公司的一份子而自豪。 在段时间里,在领导和同事们的悉心关怀和指导下,通过自身的努力,各方面均取得了一定的进步。

来这个公司虽然才短短两个月,收获挺多的,由对项目的一窍不通到现在对它的流程以及相关的技术都有所了解,也让我深深体会到了沟通自学的重要性。所以我们每一步都有要集中注意力,争取把每一步都做好。

刚开始我们做这个程序的时候,大家都比较盲目,只是负责人说了一下,我们就开始进行编了在这个过程之种我们吃了许多的苦,有时候凌晨三四点我们还在加班,可最后做出的作品是输入速度太慢,我们的主管于是带领我们到他们一

楼的微机室是去看他们以前编写的程序;不看不知道,一看吓了我们一大跳,以前我们那有这样想过呀,只要能做出来,没有错误就行了,可是速度呢?人家一个小时输入的东西,我们的程序可能需要一个早晨,看完之后主管对我们说:这样的程序送你,你会用吗?

那个打击呀,辛苦了几天几夜,最终却是这样的一个结果。可打击归打击,我们又得重新来做!相对而言,我们这次要比以前有经验了,一次比一次成熟起来了,在经历了又一个一天一夜的奋战,我们终于又有新希望了,可是心情刚好,那么又传来了消息,说他们的数据又发生的变动,有了新的调整,这在以前我们也想过这个问题,也想好好的做,可是我们又一想工厂不是要实用吗?这方面变化的可能性很小,于是为了方期间我将有变量写进了代码之中,这一变,无疑宣布我要失败了。和我在一起的几个同事也是这种情况,所以我们这些没有开发过软件的充当软件高手的新手们又得重新面对新的问题了.失败,又一次被打败!

几天之后我们又做出了程序,很辛苦,此时我们才明白程序员的不易了,编程是一个见效特别慢的东西,而且对方又看不见,如果一不小心你的程序可能会无法打开,或者是说出现别的什么,那就完了,你几天的成果就什么也看不见了,不像别的东西,做了,可以让大家看得见。我的程序在最后的调试时出现了一点小故障,一时间我一点思路也没有了,所以我失败了。

当然比表面来看我是失败了,败的很惨;可是从某种意义上说我又达到了我的目的,因为只有失败的人永远都不会停下思考的脚步,激起了我沉睡的思想,使我一颗盲目的心有了方向,我不能这样输了,从那儿倒下去的,我会从那儿站起来的,顶着那么大的压力,我的体会绝不低于他们中的任何一个人,说实话,在一段实习期间,我真的有点撑不住了,我也想到过放弃,可我不能就这样轻言放弃,我失败了,我输掉的是技能,不是人格;可我退缩了,就会失掉了人格,我将失去了所有,失掉技能我还会追回来的!

人生的每一步旅途中,总有着一道无形的栏杆,每一次跨越需要很多的勇气,也不是每一次跨越都能够成功,失败是不可避免的,主要的是要敢于承认失败,面对失败,努力去做,解决它,有这个决心,我想人生会成功的,至少可以无憾!这次我想我会很用心的去学习,尽量把他做到完美,至少我自己要九十分的满意我才会交出我的作品。

虽然加入公司这个大家庭已经有不短的时间了,对开发技术掌握的还不是很深,对发现问题的处理还不是很全面,对分工的工作还没有形成系统的计划。随着对公司和工作的进一步熟悉,我也希望能够在今后的工作中更加迅速的提升自己的业务能力以及技术能力,我觉得多做一些工作更能体现自己的人生价值。“业精于勤而荒于嬉”,在以后的工作中我要不断学习业务知识,通过多看、多问、多学、多练来不断的提高自己的各项业务技能。学无止境,时代的发展瞬息万变,各种学科知识日新月异。我将坚持不懈地努力学习各种知识,并用于指导实践。在今后工作中,要努力做好开发人员的本职工作,把自己的工作创造性做好做扎实,为项目的开发以及公司的发展贡献自己的力量。

通过和大家一段时间的相处,我深切地感受到,我们公司部是一个团结、上进、充满活力的集体。每天大家都是笑脸相迎,即使面临很大的工作压力,办公室里仍然会听到笑声;面对客户,大家总是热情真诚;面对技术上的困难,大家总是互相帮助,直至解决难题。整个部门和睦相处,就像一个温馨的大家庭。而部门领导就是这个家庭中的家长,给每个人很大的空间自由发挥。从他们身上,

我真正体会到了敬人、敬业、高效、高水平服务的真实意义,体会到了服务部服务、奉献的意义,体会到了创造完美、服务社会的服务理念,知道了什么是创新就是生活。特别令我感动的是,每当我遇到困难向大家求助时,谁都会无私的告诉我。

我很庆幸自己能在这样有限的时间里,在这么和谐的气氛中工作、学习,和同事们一起分享快乐,分担工作。所以我努力向同事学习,不懂就问,认真完成领导和同事交给我的每一项工作。

实习,是开端也是结束。展现在自己面前的是一片任自己驰骋的沃土,也分明感受到了沉甸甸的责任。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值

人生就是经历着风风雨雨,在风雨中倒下去,然后站起来的时候,那时的彩虹最美丽!

三、实习收获与体会

学习Android有一段时间了,了解到在智能手机软件不断发展的今天,很多传统PC机上的应用正在向智能手机客户端转移。但是在学习的过程中有出错的操作以及随之而来的全英文报错内容,让人感觉到非常的郁闷和烦躁!可是随着时间的推移,随着掌握的知识的增加,不知道从哪天开始忽然发现从最初的面对Android时的烦躁到现在居然对Android有了一探究竟的兴趣!总结了一下自己学习Android以来的一些心得,和大家分享一下!

1、首先在学习Android的时候要有一份永不放弃的决心,从某些方面来说,学习Android是一件非常枯燥的事情,尤其是刚开始的时候,面对全英文的黑白操作界面,所以,持之以恒是最重要的!

2、自己创造一个Android学习的环境!由于Android有大量的操作需要记忆,很显然,靠死记硬背是不科学的!最好的方法就是实践,多操作,联系的多了,自然而然的就记住了,而且还是记得最牢靠的!

3、细微处着眼。Android是很严肃的,也许一个命令大小写的错误就可能导致出错,甚至多一个少一个空格,或者小符号,它也会给你个“小脸色”看看,这就要求我们在操作Android虚拟机的时候非常的细心,有足够的耐心!

4、留意Android代码的报错。出现操作错误的时候,它会报错,告诉你哪里出问题了,可能有的同学英语能力比较差,碰到报错的时候看不懂,也就不去管它,这就导致了排错非常的困难。所以,碰到报错的时候即使我们看不懂,我们也努力的去读,然后根据一字半字的去“猜”,然后等找到错误了它就会潜意识的让我们明白那句全英文的报错的大体意思,时间长了,碰到的次数多了,就算我们英语能力差,我们也可以“读懂”它报错的意思!

写在最后我想告诉大家的就是学习Android要多实践,即使刚开始失败了也要继续,再失败再继续,再失败再------学习Android失败是很正常的事情,希望大家能坚持,不要害怕失败。遇到问题的时候先尝试着自己解决,等解决不了的时候再请教别人!

不仅学Android要如此,学习其他方面的东西也应该如此。学习靠积累,持之以恒方能见效。

四、致谢

在此,感谢我的实习单位给了我这次实习的机会,能让我学到这么多在学校学不到的东西。同时也要感谢我的组长,能在那么繁忙的工作中还对我提出的问题耐心解答。也感谢我周围的同事,不因为我是一个实习生而对我有偏见,他们待人都很诚恳,也因为他们,我才能这么快的融入到这个团队中,带着轻松愉快,积极奋进的心态结束了这些天的实习。再次感谢帮助过我的这些人!

指导教师签名:

成绩评定:

年 月 教学系:(签章)年 月 日

推荐第7篇:android生产实习报告

生产实习报告

一实习目地

生产实习是把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际,巩固所学的知识,提高对实际生活的认识,积累经验。同时生产实习也是大学生以学生身份到工作者身份的一个重要过度阶段。在此期间,学生能够初次体会到实际生产中的种种技能与经验。完成一项项项目,能体现出独立思考能力。

Android生产实习对目前应用现状进行了分析与比较,进而研究分析了Android平台的系统架构和组件模型,在此基础上,基于Android平台设计和开发,实现对android编程的理解与应用,特别是在对于控件的应用产生很深的理解。

Android平台是目前最普遍的手机应用平台,android实习可以让我们与时代最新最广泛的软件开发联系起来,锻炼我们的学习能力,并且让我们可以更加人性化,清晰的为用户考虑。

二实习内容

此次实习是对android的简单的应用与开发,也是对android各个控件的学习与实践。在java的环境中对界面,应用进行编程。本次实习重点完成了安卓开发计算器、安卓开发学生注册界面、安卓开发音乐播放器和安卓开发游戏连连看这四个项目。

做学生注册界面的时候学习了linearlayout,tablelayout, AbsoluteLayout, RelativeLayout四种布局,分别为线型布局,表格布局,绝对布局和相对布局,并知道了如何通过这四种布局的相互嵌套来使程序的界面更加的友好,更加的让用户接受。并简单的了解了安卓目录下SRC,gen,res等文件夹中的文件在项目中的作用,学习了切换界面的类Intent。

然后学习了Button,TextView,Seekbar等android开发的控件,并且将这些控件都运用到了所作的学生注册界面中。

做音乐播放器时学习了关于音乐文件的调用,也学习了在主文件Main.java中先创建多媒体对象后,然后通过SD卡的文件路径来创建一个播放资源,然后在创建按钮对象,同时添加6个按钮对象创造各自的侦听方法,我们用ListActivity来布局播放界面,用ImageButton来实现播放器的开始,暂停的操作。。

最后在开发连连看游戏时,将前面所学的知识进行综合与加深,也学习到了新的函数与控件,该游戏主要包括claGameView(游戏视类,处理游戏中出现的情况,包括界面生成,算法等)claGameActivity(处理游戏中的消息提示),claStartActivity(游戏菜单设计),claSetActivity(菜单中游戏难度设定)这些类。比如用random函数来对连连看进行重排列,还有用menu对游戏里的功能进行操作,还有用之前学到关于多媒体对象的调用将连连看游戏进行配乐。并且选用了网格对游戏界面进行了规划,以及对于相同图片的的消去,必须满足情况:1,图片相同;2,两个图片之间必须没有障碍物,可以用若干个垂直的直线连接起来;3,连接两个图片的直线线段的转折点不超过两个(连接线由X轴和Y轴的平行线组成,即无拐点,一个拐点,两个拐点)。

三实习流程

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

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

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

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

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

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

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

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

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

四实习心得

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

生成实习是为将来打基础的重要阶段,珍惜自己每一个工作的机会,不论什么人,什么学历,从事什么工作,好好的表现、展示自己的能力,不要错过好的机遇。没有一件事情是轻轻松松的,但每一件事都是让人成长的,经历一段过程,喜悦或是艰辛,尽管经历的方式不尽相同,但它的结果是相同的,我们都会因涉事而成长。

通过这次实习,开阔了我的视野。这次的实习初步为我解开了安卓的神秘面纱,对于脑海中的那个可望而不可即,可玩儿不可解的安卓平台初步走入了它的神秘世界;既感到兴奋又感到惊奇,更感到压力,方知知识海洋的广大,学员任重道远。这次实习让我看清自己需要什么,同时也让我吸取了许多学习以及和人相处的经验,这将对我以后踏足社会,谋生立业有很好的借鉴和帮助作用。今后,我会珍惜这些宝贵的经验,在人生的旅途中勇往直前,迎接时代的挑战。

推荐第8篇:android实习

21日

今天是实习的第一天,上午听了专家的讲座,并分组和项目立项。下午的时候,开始了对于Android的学习,我知道了Android系统的概述和特性,并且了解到了Android的体系结构和常用系统库,使我对Android有了简单的了解。

22日

今天开始正式接触Android软件的开发,先是要把开发的环境配好,工具(Eclipse)安装好。了解了Android应用程序的组成和目录结构。在下午的时候,开始学习Activity的系统原理和生命周期,并创建了Activity,对了Activity之间的跳转这,我遇到了问题,没有办法跳转,经过仔细盘查,原来是在跳转到的Activity中没有创建Intentintent = getIntent().在开发中要注意每一点,出现一点错误就可能使整个项目出现错误。

通过今天的学习,根据自己的项目,创建了项目所需要的Activity,并在需要的地方加入了跳转。

23日

今天上午,学习了文本框和编辑框:TextView ,EditText;还有按钮Button和ImageButton, 发现TextView是显示文本的,而EditText是输入文本的,通过EditText,我自己编写了一个计算器,使用了Intent传值,实现了简单的计算。在ImageButton中发现设置背景图标Background和src的不同,一个是设置按钮背景,一个是在按钮上加入了图片。我在自己项目的主页使用了ImageButton,使我的主页更加炫了。

下午的时候学习到了怎么样去布局,感觉使用RelativeLayout比LinearLayout方便,因为可以随便的设置布局,更加的随意,LinearLayout就会有很多的限制。不过LinearLayout布局相对简单,不繁琐,RelativeLayout布局相对麻烦,容易出现错误。

通过今天的学习,在自己的项目中的Activity中根据需要修改了布局,在我的主页中我使用了RelativeLayout,这样可以使我对主页的布局控制更加简单,更加随意,使我可以把主页布置的更吸引人。而其他的一些次要界面,我使用的是LinearLayout,这样更加方便。24日

今天学习到了Toast提示类,这个可以在点击按钮的时候显示提示内容,例如 Toast.makeText(first.this,”后退”,Toast.LENGTH_LONG).show();(first是我自己的文件名)。

对于menu类的用法和怎么取创建menu的监控方法有了了解,就是在public boolean onOptionsItemSelected(MenuItem item)中加入监控方法。在表单中我还用到了RadioButton和CheckBox。在下午的时候我知道了如何在内存卡中存数据。RadioButton 和 CheckBox和java web表单中的这些功能几乎一样。

在项目中的主界面中的,我加入了menu菜单,在里面加入了两个按键,一个是“关于 ”界面,是介绍项目的开发者和项目的版本的,还有一个是“退出”按键,并对其加入了Alert对话框,防止使用者不小心退出。而且也对返回键加入了对话框,在主界面中的按钮加入了Toast提示,提示的时间是SHORT,不是LONG,这样可以提醒使用者按下的是什么按键。

25日

今天老师讲解了图形框架,让我知道了如何去使用Canvas类,Paint类。并且学会了如何绘制自定义UI、控件。

在下午的时候,学习了绘制文字,图形和图像,并且自己动手制作了软件中的一些界面 26日

今天听了企业专家讲座,然后,老师为我们讲解了如何去创建证书和签名,并且指导我们在即动手去签名打包,最后告诉我们软件做的好的会发布到移动MM上去

27日

今天学习到了类似于Java中的Alert对话框,那就是AlertDialog,感觉Android和Java更加相似了,名字都差不多。当然,还知道了用Dialog显示的View是什么样的。虽然之前我就在自己的项目中用到了对话框,但是这次的学习使我对对话框的了解更加深入了,使用更加灵活了。

下午学习到的东西非常重要,那就是Spinner,Gallery,TabHost还有ListView类,知道了Gallery可以使多张图片通过滑动显示在手机上。项目的主页上有一个图集,就是使用的Gallery,才使大量的图片有了更好的操作。TabHost类似于网页的标签,项目的“英雄”显

示界面中的“技能介绍”和“出装”介绍就是使用了TabHost,才可以在一个页面上显示出来。

28日

今天是Android数据库的学习,今天学会了如何去创建数据表,如何在表中实现增删改查。下午的时候,通过创建ContentProvider来学习和了解ContentProvider。

29日

今天主要学习广播,知道了如何发送广播,监听广播,注册和取消广播,并且通过广播监听了手机接收短信。还学习了服务,了解了创建服务,启动服务,怎么样绑定服务和进程间通信,明白了服务的生命周期。

30日

今天是最后一天,有项目答辩,所以项目需要完成,我讲我小组的所有的内容集合起来,形成一个完整的项目,并签名打包

虽然这次培训时间很短,但是我从中学到了很多内容。我知道了安卓的一些基本知识,并对其有了一定的了解,可以对其进行简单的使用,可以

推荐第9篇:Android 嵌入式开发心得体会

Android 嵌入式开发心得体会

刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想,因为Android在现在也是全新的技术和框架,在其中我也学到了如何用单例模式、工厂模式等常用的设计模式进行学习,通过API进行开发客户端,对Request发送,Response处理中通过比较方便的JSON对象传输,以及对XML、JSON、图片、业务等下载处理,对API接口调用等问题处理,学习Android心得体会。首先在界面上,我们同样可以通过不同布局进行设计非常酷的界面,这些界面可以通过include进行引入,和jsp、html也有相通的地方,同样在android上可以用到自定义的样式这和c也有比较相通的地方,我们可以通过一些公用的方法写个BaseActivity这个基类,通过继承方式比较不错的实现了Activity的界面,因为这样你可以Header(头部)和Footer(尾部)进行处理一些触发事件或者特效等,布局模式以相对模式为主,线线布局模式可以在比较简单的include进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现View或者Layout等类进行扩充项目需要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。其次在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。

总而言之,Android设计还是比较自由开阔的,只要有想法,自己动手便能实现。

推荐第10篇:Android项目开发总结

项目开发总结报告

1引言

1.1编写目的

总结开发经验与学习中的不足

1.2背景

以方便用户记录日常学习心得,生活体会为目的,进行主题为“随心笔记”的应用开发

2实际开发结果

2.1产品

2.2主要功能和性能

能够查看笔记的目录,记录笔记完成时间。能够改变主题颜色,目录排版方式,拥有简洁的主题。对于涂鸦功能,插入图片,密码锁等功能未能实现。

3开发工作评价

3.1对产品质量的评价

本应用拥有简单实用的功能,能够满足一般用户的需要

3.3对技术方法的评价

开发中使用了软件工程中的增量开发模型,黑盒测试等技术,使开发逐步向前发展

3.4出错原因的分析

对于部分Android版本支持性不好,不能正常使用安装等

2 4经验与教训

通过这次开发,我们体验了开发不易,需要很多人员的合作。开发过程中,必须明确整体目标,不能东一榔头,西一棒槌。另外由于学习时间短,对很多东西都不太了解,还好通过CSDN等一些网站能够找到有益的帮助,感谢那些博客,论坛。

第11篇:Android开发知识点总结

由麦可网整理,转载请注明出处

Android开发知识点总结

1.如何让你的应用优先安装到SD卡上?

从Android 2.2 SDK开始多出了一个属性在AndroidManifest.xml中,在manifest节点加入android:installLocation=\"preferExternal\"即可,当然要想让你的应用真正的安装到SD卡上,用户最终的固件为2.2,同时用户选择安装时在SD卡上。一般只有大型游戏或非重要的系统级应用选择安装在SD卡上,SD卡的读写要慢于ROM且更费电,所以重要的应用,比如闹铃提醒是不能设置安装到SD卡的。

2.如何防止Service被系统回收?

对于Service被系统回收,一般做法是通过提高优先级可以解决,在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = \"1000\"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时实用于广播,而Android123推荐大家如果你的应用很重要,可以考虑通过系统常用intent action来触发。

3.Android NDK本地应用效率提升方法

对于C/C++的应用,这里Android开发网提示按照C++的习惯,简单反复调用的函数可以声明为inline,尽量少用虚函数,C++ STL的Stream效率不是很高,vector的内存管理要考虑仅分配不释放问题,如果需要涉及和Java通讯,则JNI的执行开销比较大,同时IPC通讯方法在本地端使用IBinder比较高效,当然如果你的技术不是很过关,Socket也是可以的,也更规范些吧。

第12篇:Android开发—四大组件

Android四大组件

Activity、Service、Broadcast Receiver、Content Provider

Activity

做一个完整的Android程序,不想用到Activity,真的是比较困难的一件事情,除非是想做绿叶想疯了。因为Activity是Android程序与用户交互的窗口,在我看来,从这个层面的视角来看,Android的Activity特像网站的页面。

Activity,在四大组件中,无疑是最复杂的,这年头,一样东西和界面挂上了勾,都简化不了,想一想,独立做一个应用有多少时间沦落在了界面上,就能琢磨清楚了。从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一些转跳逻辑。对于开发者而言,就需要派生一个Activity的子类,然后埋头苦干上述事情。对于Activity的更多细节,先可以参见:reference/android/app/Activity.html。后续,会献上更为详尽的剖析。

Service

服务,从最直白的视角来看,就是剥离了界面的Activity,它们在很多Android的概念方面比较接近,都是封装有一个完整的功能逻辑实现,只不过Service不抛头露脸,只是默默无声的做坚实的后盾。但其实,换个角度来看,Android中的服务,和我们通常说的Windows服务,Web的后台服务又有一些相近,它们通常都是后台长时间运行,接受上层指令,完成相关事务的模块。用运行模式来看,Activity是跳,从一个跳到一个,呃...,这有点像模态对话框(或者还像web页面好了...),给一个输入(抑或没有...),然后不管不顾的让它运行,离开时返回输出(同抑或没有...)。而Service不是,它是等,等着上层连接上它,然后产生一段持久而缠绵的通信,这就像一个用了Ajax页面,看着没啥变化,偷偷摸摸的和Service不知眉来眼去多少回了。但和一般的Service还是有所不同,Android的Service和所有四大组件一样,其进程模型都是可以配置的,调用方和发布方都可以有权利来选择是把这个组件运行在同一个进程下,还是不同的进程下。这句话,可以拿把指甲刀刻进脑海中去,它凸显了Android的运行特征。如果一个 Service,是有期望运行在于调用方不同进程的时候,就需要利用Android提供的RPC机制,为其部署一套进程间通信的策略。

Android的RPC实现,如上图所示(好吧,也是从SDK中拿来主义的...),无甚稀奇,基于代理模式的一个实现,在调用端和服务端都去生成一个代理类,做一些序列化和反序列化的事情,使得调用端和服务器端都可以像调用一个本地接口一样使用RPC接口。

Android中用来做数据序列化的类是Parcel,参见:/reference/android/os/Parcel.html,封装了序列化的细节,向外提供了足够对象化的访问接口,Android号称实现非常高效。还有就是AIDL (Android Interface Definition Language) ,一种接口定义的语言,服务的RPC接口,可以用AIDL来描述,这样,ADT就可以帮助你自动生成一整套的代理模式需要用到的类,都是想起来很乏力写起来很苦力的那种。更多内容,可以再看看:guide/developing/tools/aidl.html,如果有兴致,可以找些其他PRC实现的资料lou几眼。关于Service的实现,还强推参看API Demos这个Sample里面的RemoteService实现。它完整的展示了实现一个Service需要做的事情:那就是定义好需要接受的Intent,提供同步或异步的接口,在上层绑定了它后,通过这些接口(很多时候都是RPC的...)进行通信。在RPC接口中使用的数据、回调接口对象,如果不是标准的系统实现(系统可序列化的),则需要自定义aidl,所有一切,在这个Sample里都有表达,强荐。Service从实现角度看,最特别的就是这些RPC的实现了,其他内容,都会接近于Activity的一些实现,也许不再会详述了。

Broadcast Receiver

在实际应用中,我们常需要等,等待系统抑或其他应用发出一道指令,为自己的应用擦亮明灯指明方向。而这种等待,在很多的平台上,都会需要付出不小的代价。比如,在Symbian中,你要等待一个来电消息,显示归属地之类的,必须让自己的应用忍辱负重偷偷摸摸的开机启动,消隐图标隐藏仸务项,潜伏在后台,监控着相关事件,等待转瞬即逝的出手机会。这是一件很发指的事情,不但白白耗费了系统资源,还留了个流氓软件的骂名,这真是卖力不讨好的正面典型。

在Android中,充分考虑了广泛的这类需求,于是就有了Broadcast Receiver这样的一个组件。每个Broadcast Receiver都可以接收一种或若干种Intent作为触发事件(有不知道Intent的么,后面会知道了...),当发生这样事件的时候,系统会负责唤醒或传递消息到该Broadcast Receiver,仸其处置。在此之前和这以后,Broadcast Receiver是否在运行都变得不重要了,及其绿色环保。这个实现机制,显然是基于一种注册方式的,Broadcast Receiver将其特征描述并注册在系统中,根据注册时机,可以分为两类,被我冠名为冷热插拔。所谓冷插拔,就是Broadcast Receiver的相关信息写在配置文件中(求配置文件详情?稍安,后续奉上...),系统会负责在相关事件发生的时候及时通知到该Broadcast Receiver,这种模式适吅于这样的场景。某事件方式 ->通知Broadcast ->启动相关处理应用。比如,监听来电、邮件、短信之类的,都隶属于这种模式。而热插拔,顾名思义,插拔这样的事情,都是由应用自己来处理的,通常是在 OnResume事件中通过registerReceiver进行注册,在OnPause等事件中反注册,通过这种方式使其能够在运行期间保持对相关事件的关注。比如,一款优秀的词典软件(比如,有道词典...),可能会有在运行期间关注网络状况变化的需求,使其可以在有廉价网络的时候优先使用网络查询词汇,在其他情况下,首先通过本地词库来查词,从而兹顾腰包和体验,一举两得一石二鸟一箭双雕(注,真实在有道词典中有这样的

能力,但不是通过 Broadcast Receiver实现的,仅以为例...)。而这样的监听,只需要在其工作状态下保持就好,不运行的时候,管你是天大的网路变化,与我何干。其模式可以归结为:启动应用 ->监听事件 ->发生时进行处理。除了接受消息的一方有多种模式,发送者也有很重要的选择权。通常,发送这有两类,一个就是系统本身,我们称之为系统Broadcast消息,在reference/android/content/Intent.html 的Standard Broadcast Actions,可以求到相关消息的详情。除了系统,自定义的应用可以放出Broadcast消息,通过的接口可以是 Context.sendBroadcast,抑或是Context.sendOrderedBroadcast。前者发出的称为Normal broadcast,所有关注该消息的Receiver,都有机会获得并进行处理;后者放出的称作Ordered broadcasts,顾名思义,接受者需要按资排辈,排在后面的只能吃前面吃剩下的,前面的心情不好私吞了,后面的只能喝西北风了。当Broadcast Receiver接收到相关的消息,它们通常做一些简单的处理,然后转化称为一条Notification,一次振铃,一次震动,抑或是启动一个 Activity进行进一步的交互和处理。所以,虽然Broadcast整个逻辑不复杂,却是足够有用和好用,它统一了Android的事件广播模型,让很多平台都相形见绌了。更多Broadcast Receiver相关内容,参见:/reference/android/content/BroadcastReceiver.html。

Content Provider

Content Provider,听着就和数据相关,没错,这就是Android提供的第三方应用数据的访问方案。在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的,但有时候,沟通是必要的,不仅对第三方很重要,对应用自己也很重要。比如,一个联系人管理的应用。如果不允许第三方的应用对其联系人数据库进行增删该查,整个应用就失去了可扩展力,必将被其他应用抛弃,然后另立门户,自个玩自个的去了。Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是Content Provider。应用想对外提供的数据,可以通过派生ContentProvider类, 封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识,形如:content://com.xxxxx。所有东西看着像REST的样子,但实际上,它比REST 更为灵活。和REST类似,uri也可以有两种类型,一种是带id的,另一种是列表的,但实现者不需要按照这个模式来做,给你id的uri你也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST。另外,Content Provider不和REST一样只有uri可用,还可以接受Projection,Selection,OrderBy等参数,这样,就可以像数据库那样进行投影,选择和排序。查询到的结果,以Cursor(参见:reference/android/database/Cursor.html )的形式进行返回,调用者可以移动Cursor来访问各列的数据。

Content Provider屏蔽了内部数据的存储细节,向外提供了上述统一的接口模型,这样的抽象层次,大大简化了上层应用的书写,也对数据的整吅提供了更方便的途径。Content Provider内部,常用数据库来实现,Android提供了强大的Sqlite支持,但很多时候,你也可以封装文件或其他混吅的数据。在Android中,ContentResolver是用来发起Content

Provider的定位和访问的。不过它仅提供了同步访问的Content Provider的接口。但通常,Content Provider需要访问的可能是数据库等大数据源,效率上不足够快,会导致调用线程的拥塞。因此

Provider。

在各大组件中,Service和Content Provider都是那种需要持续访问的。Service如果是一个耗时的场景,往往会提供异步访问的接口,而Content Provider不论效率如何,都提供的是约定的同步访问接口。我想这遵循的就是场景导向设计的原则,因为Content Provider仅是提供数据访问的,它不能确信具体的使用场景如何,会怎样使用它的数据;而相比之下,Service包含的逻辑更复杂更完整,可以抉择大部分时候使用某接口的场景,从而确定最贴切的接口是同步还是异步,简化了上层调用的逻辑。 Android提供了一个AsyncQueryHandler(参见:reference/android/content/AsyncQueryHandler.html),帮助进行异步访问Content

第13篇:Android蓝牙开发小结

学习之前先了解两个基本概念:

一、RFCOMM协议:

一个基于欧洲电信标准协会ETSI07.10规程的串行线性仿真协议。此协议提供RS232控制和状态信号,如基带上的损坏,CTS以及数据信号等,为上层业务(如传统的串行线缆应用)提供了传送能力。

RFCOMM是一个简单传输协议,其目的是针对如何在两个不同设备上的应用之间保证一条完整的通信路径,并在它们之间保持一通信段。

RFCOMM是为了兼容传统的串口应用,同时取代有线的通信方式,蓝牙协议栈需要提供与有线串口一致的通信接口而开发出的协议。RFCOMM协议提供对基于L2CAP协议的串口仿真,基于ETSI07.10。可支持在两个BT设备之间同时保持高达60路的通信连接。

RFCOMM只针对直接互连设备之间的连接,或者是设备与网络接入设备之间的互连。通信两端设备必须兼容于RFCOMM协议,有两类设备:DTE (Data Terminal Endpoint,通信终端,如PC,PRINTER)和DCE (Data Circuit Endpoint,通信段的一部分,如Modem)。此两类设备不作区分。

二、MAC硬件地址

MAC(Medium/MediaAcce Control, 介质访问控制)MAC地址是烧录在NetworkInterfaceCard(网卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特长(6字节),16进制的数字组成.0-23位叫做组织唯一标志符(organizationally unique,是识别LAN(局域网)节点的标识.24-47位是由厂家自己分配。其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。

Android平台提供的蓝牙API去实现蓝牙设备之间的通信,蓝牙设备之间的通信主要包括了四个步骤:设置蓝牙设备、寻找局域网内可能或者匹配的设备、连接设备和设备之间的数据传输。以下是建立蓝牙连接的所需要的一些基本类:

BluetoothAdapter类:代表了一个本地的蓝牙适配器。它是所有蓝牙交互的的入口点。利用它你可以发现其他蓝牙设备,查询绑定了的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个BluetoothServerSocket(作为服务器端)来监听来自其他设备的连接。

BluetoothDevice类:代表了一个远端的蓝牙设备,使用它请求远端蓝牙设备连接或者获取远端蓝牙设备的名称、地址、种类和绑定状态。(其信息是封装在bluetoothsocket中)。

Bluetoothsocket类:代表了一个蓝牙套接字的接口(类似于tcp中的套接字),它是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。

Blueboothserversocket类:代表打开服务连接来监听可能到来的连接请求(属于server端),为了连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。当远端设备发起连接连接请求的时候,并且已经连接到了的时候,Blueboothserversocket类将会返回一个bluetoothsocket。

Bluetoothcla类:描述了一个蓝牙设备的一般特点和能力。它的只读属性集定义了设备的主、次设备类和一些相关服务。然而,它并没有准确地描述所有该设备所支持的蓝牙文件和服务,而是作为对设备种类来说的一个小小暗示。 下面说说具体的编程实现 1.启动蓝牙功能:

首先通过调用静态方法getDefaultAdapter()获取蓝牙适配器BluetoothAdapter,以后你就可以使用该对象了。如果返回为空,the story is over。例如:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter == null) { // Device does not support Bluetooth } 其次,调用isEnabled()来查询当前蓝牙设备的状态,如果返回为false,则表示蓝牙设备没有开启,接下来你需要封装一个ACTION_REQUEST_ENABLE请求到intent里面,调用startActivityForResult()方法使能蓝牙设备,例如:

if (!mBluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }

2.查找设备:

使用BluetoothAdapter类里的方法,你可以查找远端设备(大概十米以内)或者查询在你手机上已经匹配(或者说绑定)的其他手机了。当然需要确定对方蓝牙设备已经开启或者已经开启了“被发现使能”功能(对方设备是可以被发现的是你能够发起连接的前提条件)。如果该设备是可以被发现的,会反馈回来一些对方的设备信息,比如名字、MAC地址等,利用这些信息,你的设备就可以选择去向对方初始化一个连接。

如果你是第一次与该设备连接,那么一个配对的请求就会自动的显示给用户。当设备配对好之后,他的一些基本信息(主要是名字和MAC)被保存下来并可以使用蓝牙的API来读取。使用已知的MAC地址就可以对远端的蓝牙设备发起连接请求。

匹配好的设备和连接上的设备的不同点:匹配好只是说明对方设备发现了你的存在,并拥有一个共同的识别码,并且可以连接。连接上:表示当前设备共享一个RFCOMM信道并且两者之间可以交换数据。也就是是说蓝牙设备在建立RFCOMM信道之前,必须是已经配对好了的。

3.查询匹配好的设备:

在建立连接之前你必须先查询配对好了的蓝牙设备集(你周围的蓝牙设备可能不止一个),以便你选取哪一个设备进行通信,例如你可以你可以查询所有配对的蓝牙设备,并使用一个数组适配器将其打印显示出来:

Set pairedDevices = mBluetoothAdapter.getBondedDevices(); // If there are paired devices if (pairedDevices.size() >0) { //Loop through paired devices for (BluetoothDevice device : pairedDevices) { // Add the name and addre to an array adapter to show in a ListView mArrayAdapter.add(device.getName() + \"\\n\" + device.getAddre()); } 建立一个蓝牙连接只需要MAC地址就已经足够了。

4.扫描设备:

扫描设备,只需要简单的调用startDiscovery()方法,这个扫描的过程大概持续是12秒,应用程序为了ACTION_FOUND动作需要注册一个BroadcastReceiver来接受设备扫描到的信息。对于每一个设备,系统都会广播ACTION_FOUND动作。例如: // Create a BroadcastReceiver for ACTION_FOUND private final BroadcastReceiver mReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); // When discovery finds a device if (BluetoothDevice.ACTION_FOUND.equals(action)) { // Get the BluetoothDevice object from the Intent BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); // Add the name and addre to an array adapter to show in a ListView mArrayAdapter.add(device.getName() + \"\\n\" + device.getAddre()); } } }; // Register the BroadcastReceiver IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerReceiver(mReceiver, filter); // Don\'t forget to unregister during onDestroy 注意:扫描的过程是一个很耗费资源的过程,一旦你找到你需要的设备之后,在发起连接请求之前,确保你的程序调用cancelDiscovery()方法停止扫描。显然,如果你已经连接上一个设备,启动扫描会减少你的通信带宽。

5.使能被发现:Enabling discoverability 如果你想使你的设备能够被其他设备发现,将ACTION_REQUEST_DISCOVERABLE动作封装在intent中并调用startActivityForResult(Intent, int)方法就可以了。他将在不使你应用程序退出的情况下使你的设备能够被发现。缺省情况下的使能时间是120秒,当然你可以可以通过添加EXTRA_DISCOVERABLE_DURATION字段来改变使能时间(最大不超过300秒,这是出于对你设备上的信息安全考虑)。例如: Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); startActivity(discoverableIntent); 运行该段代码之后,系统会弹出一个对话框来提示你启动设备使能被发现(此过程中如果你的蓝牙功能没有开启,系统会帮你开启),并且如果你准备对该远端设备发现一个连接,你不需要开启使能设备被发现功能,因为该功能只是在你的应用程序作为服务器端的时候才需要。

6.连接设备:

在应用程序中,想建立两个蓝牙设备之间的连接,必须实现客户端和服务器端的代码(因为任何一个设备都必须可以作为服务端或者客户端)。一个开启服务来监听,一个发起连接请求(使用服务器端设备的MAC地址)。当他们都拥有一个蓝牙套接字在同一RFECOMM信道上的时候,可以认为他们之间已经连接上了。服务端和客户端通过不同的方式或其他们的蓝牙套接字。当一个连接监听到的时候,服务端获取到蓝牙套接字。当客户可打开一个FRCOMM信道给服务器端的时候,客户端获取到蓝牙套接字。

注意:在此过程中,如果两个蓝牙设备还没有配对好的,android系统会通过一个通知或者对话框的形式来通知用户。RFCOMM连接请求会在用户选择之前阻塞。如下图:

7.服务端的连接:

当你想要连接两台设备时,一个必须作为服务端(通过持有一个打开的BluetoothServerSocket),目的是监听外来连接请求,当监听到以后提供一个连接上的BluetoothSocket给客户端,当客户端从BluetoothServerSocket得到BluetoothSocket以后就可以销毁BluetoothServerSocket,除非你还想监听更多的连接请求。

建立服务套接字和监听连接的基本步骤:

首先通过调用listenUsingRfcommWithServiceRecord(String, UUID)方法来获取BluetoothServerSocket对象,参数String代表了该服务的名称,UUID代表了和客户端连接的一个标识(128位格式的字符串ID,相当于PIN码),UUID必须双方匹配才可以建立连接。其次调用accept()方法来监听可能到来的连接请求,当监听到以后,返回一个连接上的蓝牙套接字BluetoothSocket。最后,在监听到一个连接以后,需要调用close()方法来关闭监听程序。(一般蓝牙设备之间是点对点的传输)

注意:accept()方法不应该放在主Acitvity里面,因为它是一种阻塞调用(在没有监听到连接请求之前程序就一直停在那里)。解决方法是新建一个线程来管理。例如: private cla AcceptThread extends Thread { private final BluetoothServerSocket mmServerSocket; public AcceptThread() { // Use a temporary object that is later aigned to mmServerSocket, // because mmServerSocket is final BluetoothServerSocket tmp = null; try { // MY_UUID is the app\'s UUID string, also used by theclient code tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID); } catch (IOException e) { } mmServerSocket = tmp; } public void run() { BluetoothSocket socket = null; // Keep listening until exception occurs or a socket is returned while (true) { try { socket = mmServerSocket.accept(); } catch (IOException e) { break; } // If a connection was accepted if (socket != null) { // Do work to manage the connection (in a separate thread) manageConnectedSocket(socket); mmServerSocket.close(); break; } } } /** Will cancel the listening socket, and cause the thread to finish */ public void cancel() { try { mmServerSocket.close(); } catch (IOException e) { } } }

8.客户端的连接:

为了初始化一个与远端设备的连接,需要先获取代表该设备的一个BluetoothDevice对象。通过BluetoothDevice对象来获取BluetoothSocket并初始化连接,具体步骤:

使用BluetoothDevice对象里的方法createRfcommSocketToServiceRecord(UUID)来获取BluetoothSocket。UUID就是匹配码。然后,调用connect()方法来。如果远端设备接收了该连接,他们将在通信过程中共享RFFCOMM信道,并且connect()方法返回。例如: private cla ConnectThread extends Thread { private final BluetoothSocket mmSocket; private final BluetoothDevice mmDevice; public ConnectThread(BluetoothDevice device) { // Use a temporary object that is later aigned to mmSocket, // because mmSocket is final BluetoothSocket tmp = null; mmDevice = device; // Get a BluetoothSocket to connect with the given BluetoothDevice try { // MY_UUID is the app\'s UUID string, also used by the server code tmp = device.createRfcommSocketToServiceRecord(MY_UUID); } catch (IOException e) { } mmSocket = tmp; }

public void run() { // Cancel discovery because it will slow down the connection mAdapter.cancelDiscovery(); try { // Connect the device through the socket.This will block // until it succeeds or throws an exception mmSocket.connect(); } catch (IOException connectException) { // Unable to connect; close the socket and get out try { mmSocket.close(); } catch (IOException closeException) { } return; } // Do work to manage the connection (in a separate thread) manageConnectedSocket(mmSocket); }

注意:conncet()方法也是阻塞调用,一般建立一个独立的线程中来调用该方法。在设备discover过程中不应该发起连接connect(),这样会明显减慢速度以至于连接失败。且数据传输完成只有调用close()方法来关闭连接,这样可以节省系统内部资源。

9.管理连接(主要涉及数据的传输):

当设备连接上以后,每个设备都拥有各自的BluetoothSocket。现在你就可以实现设备之间数据的共享了。

1>首先通过调用getInputStream()和getOutputStream()方法来获取输入输出流。然后通过调用read(byte[]) 和write(byte[]).方法来读取或者写数据。

2>实现细节:以为读取和写操作都是阻塞调用,需要建立一个专用现成来管理。 3>

private cla ConnectedThread extends Thread { private final BluetoothSocket mmSocket; private final InputStream mmInStream; private final OutputStream mmOutStream; public ConnectedThread(BluetoothSocket socket) { mmSocket = socket; InputStream tmpIn = null; OutputStream tmpOut = null; // Get the input and output streams, using temp objects because // member streams are final try { tmpIn = socket.getInputStream(); tmpOut = socket.getOutputStream(); } catch (IOException e) { } mmInStream = tmpIn; mmOutStream = tmpOut; } public void run() { byte[] buffer = new byte[1024]; // buffer store for the stream int bytes; // bytes returned from read() // Keep listening to the InputStream until an exception occurs while (true) { try { // Read from the InputStream bytes = mmInStream.read(buffer); // Send the obtained bytes to the UI Activity mHandler.obtainMeage(MESSAGE_READ, bytes, -1, buffer).sendToTarget(); } catch (IOException e) { break; } } } /* Call this from the main Activity to send data to the remote device */ public void write(byte[] bytes) { try { mmOutStream.write(bytes); } catch (IOException e) { } } /* Call this from the main Activity to shutdown the connection */ public void cancel() { try { mmSocket.close(); } catch (IOException e) { } } }

第14篇:Android实习心得

Android实习心得

刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想。

我在为期半个月的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。

1通过半个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。

2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的

跳转Intent管理,通过Bundle对数据在界面之间进行传输。

4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。

在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。

由于这次实习时间较短,对于Android应用程序的高级编程讲的很少,是这次实习中的不足。要想开发一些好的应用程序,还需要更多的知识支持。在做实习最后的项目时,遇到了很多平时没有遇到或者没有特别关注的问题,如常见的Activity忘记注册,对SD卡存取需要权限,在写SQL语句时细微的错误就可能导致程序运行错误。这些问题只有自己在实际开发中才能体会到并且解决,并且在解决后可以长时间的记住。

通过Android的实习,我们在大四毕业前,我们又掌握了一项新的前沿的开发技能,也有了更多的发展方向,这在以后的找工作的过程中无疑为我们增加了砝码,也可以成为我们的一项兴趣爱好,可以根据我们自己的需要设计一些小的程序。总之,在这次实习中,我获得了很多东西,提高了自己的编程技巧和编程方法,并且认识了Android应用程序的开发,以及加深了对Java的认识。

最后,通过实习,我收获了很多东西,特别是编程方面的,这对即将毕业的我们来说,这次实习是一次较为珍贵的充电,

第15篇:Android实习总结报告

实习时间:学院:专业名称:学号:姓名:指导老师:实习地点:

Xxxxxx大学

专业实习报告

——201X.XX.XX

XXXXXXXXXXX学院 计算机通信

信息技术有限公司 201X.XX.X XXXXXXXXXX XXXX XXXX XXXXXXXX

一、实训地点

XXXXXXXX信息技术有限公司是一家隶属于XXXXXXXX集团主要从事软件开发、技术咨询与服务、IT教育投资、大学生实习实训等业务的民营科技型企业。

二、实训目的

到实际生产中的种种Android

Android现对androidAndroid

Android

android实习可以让我们与时代最目的:

1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。

培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。 培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。 通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容 包括:

1、确定开发的程序,收集和调查有关技术资料。

2、按软件工程步骤进行程序设计。

3、对完成的程序进行测试和完善。

4、完成课程设计报告。

三、实训内容

学习实训的内容主要包括如下:

 开发环境:了解了android的起源与发展,学习安装 Eclipse 插件 (ADT)学习AndroidSDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具

 Android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。res/ 资源(Resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。aets资源目录Android除了提供/res目录存放资源文件外,在/aets目录也可以存放资源文件。AndroidManifest.xml 项目清单文件 。

 基础开发

一、1.Activity:是Android系统中的四大组件之一。2.Activity生命周期:void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy() 这七个方法定义了Activity的完整生命周期

二、Intent: Intent对他要完成操作的一种抽象描述,我们可以用intent来启动一个activity,发起一个broadcast和启动或绑定一个service。Intent使应用程序代码在运行时动态绑定成为可能,这也降低了不同代码之间的耦合性。Intent最常使用的方法是用来启动一个activity。Intent封装了他要执行动作的属性,这些属性最常见的是action和data Intent主要有以下四个重要属性:dAction:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。

Data:Data通常是URI格式定义的操作数据。例如:tel:// 。通过setData()方法设置。

Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。

Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。

三、Service四大主键职业,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。要完成比较耗时的任务;不需要用户界面;

四、BroadcastRecever 生命周期

1.在广播到达接收者时调用onRecever();方法

2.注册广播的几种方式包括:代码注册;项目清单注册;

五、Handler 1.Handler、Meage、MeageQueue和Looper之间的关系的关系,Handler的作用: Handler(一个线程可以有多个Handler但是只能有一个Looper), 关系:向消息对列(MeageQueue封装在Looper中)发送消息,Handler在创建时就会关联以个Looper默认关联当前Looper.作用:发送消息(Handler在主线程启动一个子线程,在子线程调用SendMaager(),发送到主线程的HandlerMeage()方法);处理消息(调用HandlerMeage()方法处理)。

 数据存储

一、Sharepreference:保存应用系统的配置信息等的键值存储机制。(使用键值机制:Bundle ContentValues Map JSONObjecdt)

二、存储方式 1)是一种键值存储方式,可以持久化存储变量的值(Sharepreference存储的值都是基本类型的数据) 存储的数据是以xml文件的形式存在,存储在/data/data/packagename/shared_prefs目录中文件存储

I/O存储,主要是用于大文件的数据的存取,比如视频、图片等,该中存储方式在使用的过程当中更新比较困难。

文件存储的使用:Activity提供了openFileOutput(name,mode)方法和openFileInput()方法,用于读写文件数据.第一个参数name中不能包含路径分隔符“/”

三、Sqlite

自定义一个数据库的操作类,该类要extends SQLiteOpenHelper类

public cla MyHelper extends SQLiteOpenHelper { //类没有实例化,是不能用作父类构造器的参数,必须声明为静态

private static final String name = "china"; //数据库名称 private static final int version = 1; //数据库版本 public MyHelper (Context context) { //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类

super(context, name, null, version); } public void onCreate(SQLiteDatabase db) {

//该方法是在第一次实例化数据库操作对象的时候被调用

//可以在其中做一些初始化的工作,比如创建数据库表等

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

//在数据库的版本发生改变的时候会被调用

} }

四、ContentProvider 实现不同应用之间数据的访问和共享: 1)通过实现一个ContentProvider的抽象借口,将本应用的数据完全暴露出去,其中数据是以表的形式暴露的,暴露数据的时候要提供公共的URI。

2)其它应用通过android提供的ContentResolver接口访问ContentProvider暴露的数据。

五、网络存储

一、通过网络提供的存储空间来上传或者是下载那些存储在网络空间的数据信息。

网络编程:分为两种 1) 基于Socket的网络编程:该网络编程使用的协议主要是TCP和UDP协议

面试题:TCP和UDP区别:TCP:面向连接 可靠 延时长 效率低UDP:面向无连接 不可靠 延时短 效率高Socket+ServerSocket+TCP(套接字)UDP+DatagrarmSocket+DatagramPackage(数据报) 2) 基于Http的网络编程:

 该网络编程使用的协议是面向Http协议;  该网络编程是以xml/json格式的数据为载体,来进行相互通信数据;  Android基于http协议的网络编程,使用的标准接口有两个:HttpURLConnection以及apatch的接口HttpClient Http协议通信分为两种方式:get请求方式和post请求方式

六、Xml格式数据解析Json格式数据解析:

Dom解析:dom解析一般是把xml文档转换成一棵文档节点树,存储在内存中

优点:xml文档树在内存中完整存储,可以直接对该文档树的数据和结构进行修改;可以通过解析器去访问节点树上的任何一个节点;Dom解析的API使用简单方便。

缺点:当xml文档比较大的时候,该解析方式消耗内存资源 Sax解析:

优点:对内存的要求较低,方便解析xml的部分;

缺点:当xml文档结构复杂的采用SAX解析,编码过程比较复杂 Pull解析:sdk提供的内置解析方式,解析过程类似于sax解析,节省内存资源,而且比sax解析更加简单方便。

JSON格式数据:(1)key-value键值对象(无序的)(2)数组(有序的)

用到的内容包含:4个类一个异常

JSON格式数据的解析可以使用Google提供的gson解析工具 问题:xml格式数据解析和JSON格式数据解析的比较

四、实训心得:

1通过几个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。

2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的

跳转Intent管理,通过Bundle对数据在界面之间进行传输。

4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。

在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。

第16篇:Android应用程序开发个人总结

《Android应用开发》个人总结报告

一、项目简介:

送祝福App是一款逢年过节为方便发送祝福信息的软件,并且介绍各种节日的相关情况。包含节日祝福短信,支持直接发送短信给好友,也可定时发送给好友,编写模版。为生活提供了便利。

二、个人在项目中承担的任务:

我是任务是整合成员负责的模块,把各个模块整合到一起,然后把主界面的效果做出来,主界面参考的是微信的界面

三、学习本门课程收获、体会及建议:

在本门课程中,我初步认识了安卓应用开发所需基本知识,比如安装体系结构,常用的控件以及API的使用方法,知道了安卓体系存储数据的方式。这一学期,安卓相关的知识自己掌握的不多,不过也透过安卓课程看到移动端应用的火热。这一个学期里,老师讲得比较细,自己单独下来练一个知识点了,也可以,不过当几个知识点的内容整合到一起,自己就凌乱了,自己的思路就不清晰。在期末项目中,我是任务是整合成员负责的模块,把各个模块整合到一起,然后把主界面的效果做出来,主界面参考的是微信的界面,由于时间和能力的限制,只完成了部分功能,功能没有完全实现。

第17篇:android开发高薪就业培训

android开发高薪就业培训

每年从大学里走出来的应届毕业生足有600万之多,加上往届毕业学生的求职竞争,他们的求职压力非同一般。而且国内经济增速放缓,不少公司正在处于休眠期,工作岗位屈指可数,而且单位选拔人才亦是千挑万选。android开发培训机构成为企业选择人才的重点基地之一。

千锋android开发培训作为移动互联网培训行业的品牌机构之一,提倡学员多思考,多讨论,多练习。培养了一批又一批学员从这里走进来,高薪走出去。千锋android开发培训的课堂,是严谨而轻松的学习体验。

学习的最终目的是为了就业,而收获到知识的同时,面对现当代就业压力巨大背景下的大学生们来说,选择一个优秀的平台显得格外的重要。老师讲授的东西只能加速理解,却不能替代思考,成就仍需靠自己来开创。不仅能学到高端的技术,又要重视提升与人际交往的能力,这也是教育机构体系建立的核心之一。

有人说,表现自己能力的方式是自学。但自学就能学出气氛么?与android开发培训行业的大神们切磋技术,机不可失。

作为千锋android开发培训对象,学员不仅是幸运的更是幸福的,短短四个月学习android开发的时间里,有幸聆听到了各位教师深入浅出、通俗易懂、旁征博引的android培训课程,让学员受益匪浅。

在千锋学习android开发培训的日子里,学员们彼此就像一个大家庭一样,经常和班上的同学一起讨论,一起说笑,一起玩耍。尽管每天学习的时间都很长,但在轻松的环境下,一点也不觉得辛苦,反而乐趣很多。

“千锋的android开发培训老师开发经验丰富,每天授课的同时,也会给我们讲一些开发时应该注意的细节和更深层次的一些内容。让我们受益匪浅,特别是最后一个月项目阶段,这个项目相对来说难度较大,经常会碰到难题,老师很耐心的跟我讲解问题该怎么去解决,最终顺利完成。”黄同学讲述着以往的学习经验高兴满怀。

作为刚毕业的学生来说,对于在千锋android开发培训四个月的学习中受到的严格的管理和要求,偶尔也会觉得抵触,但在经过四个月的磨砺后,那一刻,都会为此而荣耀。为自己曾经流过的汗水,曾辛苦拼搏的日日夜夜,而倍感值得。

2014年的就业压力会异常繁重,对于没有一技之长的大学毕业生,他们的薪酬水平,仅仅能维系自己的生存,“大学生”曾经的天之骄子,现在的弱势群体,这是教育模式与社会需求脱节造成的现状,而“千锋android开发培训”将构建一座“学院教育”与“社会需求”的宽广桥梁,将真正的天之骄子输送给更多优秀的企业以及机构,实现大学生们的自我人生价值。

“千锋教育”如今已是移动互联网研发人才一体化服务的领导品牌。每年有数十万名学员受益于千锋教育组织的技术研讨会、技术培训课、网络公开课及免费教学视频。“千锋学员”遍及全国各地,作为千锋的学员,都可以参与千锋所组织的所有活动,其中包括:“千锋校友联盟会”、“千锋校企双选会”,而此次活动就是由千锋校友联盟会发起的。千锋android开发培训不仅帮助学员解决就业问题,还帮助学员解决婚恋问题,让学员得到了高薪就业的学习体验。

第18篇:Android开发工程师学习路线

Android开发工程师学习路线:手机产品开发要从基础开发知识做起

Android开发工程师学习路线图:想要做好手机产品开发要先从基础开发知识做起,要学好基础语言开发,即java语言开发,然后逐步提升自身的产品路线,将制作产品的每一步都进行完整的规划,并且将每一步要实现的功能做好设计。掌握基础开发知识,能够很好地掌握java语言的内涵,然后通过这一语言来实现程序框架中每一步的功能,并且将程序框架中的每一步都进行完善的规划,避免出现这样或那样的问题,在设计程序过程中也要掌握各种各样的算法。

千锋教育是Android培训行业领导者,千锋教育的Android开发基础班是从java开始指导学员学起,掌握了java语言,然后进行整体的产品规划。通过程序来实现产品设计中的每一步作用。很多Android开发人才都在后续工作上引入UI设计思想,把UI理念融入到产品设计中去,并且提升自身的学习模式,通过程序整体实现产品的性能。决定一个好的产品,程序员的学习质量非常重要,只有提升学习质量,把在开发过程中遇到的问题进行解决才是最根本的。千锋教育Android培训课程模块化,指导学员学习完阶段性课程,指导学员完成自己的产品,让学员在开发过程中遇到的问题进行解决。

Android开发学习过程中要掌握好基础知识,特别是java语言的应用,然后逐步提升学员在学习过程中遇到的一些细致化的问题,把一些难点进行解决,在开发过程中把容易出现的一些难点进行合理化控制,避免在程序生成产品后出现问题,从而导致崩溃,这是非常重要的一点。

第19篇:Android开发基本知识总结Android课件

Android开发基础教程

2015-4-13周一2CJ02 目录

1.什么是Android? 2.Android应用开发环境 3.Gradle 4.模拟器Emulator 5.开发一个安卓应用程序的步骤 6.关于多个模拟器的问题 7.安卓工程文件的结构 8.android界面文件---xml文件 9.android程序文件---java文件 10.界面布局方式 11.几个常用组件 12.Roast组件 13.对话框AlertDialog 14.几条重要的语句 15.监听器Listener 16.识别响应事件的组件 17.界面切换

18.界面之间的数据传递 19.Activity生命周期 20.多媒体播放

21.日志文件在程序调试中的使用 22.使用XML文件保存数据

23.使用TXT文件保存数据 24.使用数据库保存数据 25.时间组件 26.线程Thread 27.视频播放VideoView 28.MediaPlayer,SurfaceView和SurfaceHolder播放视频 29.录制音频MediaRecorder 30.菜单组件

1.什么是Android? 移动设备(常常指手机mobile)的操作系统,由google公司出品,是免费的, 最早是基于Linux平台的;目前已经推出的Android3.0是平板电脑上的操作系统。

其它的手机操作系统有:iPhone系统等。

手机厂商:三星(Samsung,宏达电(HTC),摩托罗拉(Motorola),华硕,索尼,Garmin等都支持iPhone系统。

Android系统功能:自定义用户界面,支持蓝牙,多点触摸,具有导航功能和语音识别功能,结合了google地图。

Android软件开发工具SDK

4.0。

Android系统特点:虚拟键盘,以WebKit为核心的WebView组件,可以使用HTML, javascript等。

2.Android应用开发环境 Eclipse+ADT+Android SDK。 ADT---Android开发工具插件(Android Plugs for Eclipse).开发环境安装注意事项:关闭防毒软件,按顺序安装,保持网络畅通,比较耗时。特别说明,安装和运行需要高配置机器和高速网络,比较费时。

(1)安装Java

JDK。甲骨文

网站: http://www.daodoc.com ”); Intent in = new Intent(Intent.ACTIN_VIEW, uri); startActivity(in); (2)调用系统拨号界面

Uri uri = Uri.parse(“tel:13087561830 ”); Intent in = new Intent(Intent.ACTIN_DIAL, uri); startActivity(in); (3)调用系统拨号功能

Uri uri = Uri.parse(“tel:13087561830 ”); Intent in = new Intent(Intent.ACTIN_CALL, uri); startActivity(in); 注意:需要在AndroidManifest.xml文件中进行设置,才可以自动拨号: 18.界面之间的数据传递 1.方法1:调用无返回参数 在第一个界面中: Bundle bundle

= new Bundle(); bndle.pushString(“name”, “David”); bndle.pushInt(“age”, 22); //pushChar, putShort,put Boolean, pushChar等等

Uri uri = Uri.parse(“http://www.daodoc.com ”); Intent in = new Intent(Intent.ACTIN_VIEW, uri); in.putExtras(bundle); startActivity(in); 在第二个界面中: Intent in = this.get Intent(); Bundle bundle

= in.getExtras(); String studentName = bundle.getInt(); //getDouble, 2.方法2:调用有返回参数 例1,在第一个界面中: private static final int ACTIVITY_EDIT = 1; Bundle bundle = new Bundle(); bundle.pushString(“name”, “David”); Intent in = new Intent();

getShort, getIntArray等 in.putExtras(bundle); in.setCla(FullscreenActivity.this, SecondActivity.cla); startActivityForResult (in, ACTIVITY_EDIT); 注意:startActivityForResult后所有语句无效,不执行;在第一个界面中,第二个界面可以在不同位置被多次调用;在第一个界面中,在其它位置可以调用其它界面。

在第一个界面中,重写onActivityResult,接收所有被调用界面返回的参数(如果有):@Override protected void onActivityResult(int

requestCode,int resultCode,Intent

data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode== ACTIVITY_EDIT)

//此参数可以区分不同的调用

{

Bundle bundle = data.getExtras(); if (resultCode == RESULT_OK)

//此参数可以判断有无返回参数

{

Bundle bundle = data.getExtras(); ……

} if

(resultCode == RESULT_CANCELED)

{ } }

…… } ……

问题

:如何判断被调用界面是否传递返回参数?如何区分返回参数是由不同的被调用界面传递的?android的这种解决方法并不是完美的。 例2,在第二个界面中:

读取第一个界面传递的参数,省略;下面是向调用程序传递返回参数: Bundle bundle

= new Bundle(); bndle.pushString(“name”, “贺昌峰373780592”); Intent

setResult(RESULT_CANCELED); //传递参数返回

// 或setResult(RESULT_OK, in); //不传递参数返回 finish(); 注意:这时,第二个界面返回到第一个界面,可以不传递参数直接返回(RESULT_CANCELED),

in = new Intent();

in.putExtras(bundle); 也可以传递参数返回(RESULT_OK)。 19.Activity生命周期

onCreate

--- onStart

--- onResume

--- onPause --- onStop

--- onDestroy 也就是说,有: protected void oncreate(…){ ….} protected void onStart (…){ ….} protected void onResume (…){ ….

} protected void onPause (…){

….} protected void onStop (…){ ….

} protected

void onDestroy (…){ ….

} 20.多媒体播放MediaPlayer public MediaPlayer player = new MediaPlayer (); //生成语句可省略 try{ player.reset();

//重新播放音乐

player.setDataSource(“/sdcard/music/music_file_name.mp3”);

// player = MediaPlayer.create(getApplicationContext(), R.raw.music);

// 打开音乐文件

//music为音乐资源文件

player.prepare(); player.start();

// player.isPlaying()

//准备播放 //播放音乐

//判断是否正在播放

//音乐播放完成触发事件

player.setOnCompletionListener(new OnCompletionListener){ public void onCompletion(){ //音乐播放完成后,处理代码 } }

player.pause(); player.start(); player.stop();

} catch(IllegalStateException e){ ……} catch(IOException e){ ……}

//播放暂停 //继续播放音乐 //停止播放音乐 player.release();

//释放存储空间

//注意:可以播放存储卡上任意一个音乐文件;也可以播放资源列表中的音乐文件 21.日志文件在程序调试中的使用

import android.util.Log; 对应的方法有:debug,verbose,info,warn,error。注意,使用简写。 问题:如何查看系统日志文件?

Log.d(“这里是分类标签”, “这里是输出信息”); 22.使用XML文件保存数据

对XML文件进行操作,形式为(key,value)。 SharedPreferences

sp = get SharedPreferences(文件名,权限);

权限:MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE 例:

//1打开XML文件 SharedPreferences

//2更改数据

Editor editor = sp.eidt();

//更改数据

sp = get SharedPreferences(“myconfig”, MODE_PRIVATE);

editor.putString(“name”, “贺昌峰373780592”); editor.putInt(“age”, 48); editor.putFloat(“salary”, 2048.5); //putLong,putBoolean等;

editor.commit();

//保存数据

//3读取数据

String myname = sp.getString(“name”, “”);

//4删除数据

editor.remove(“name”); //删除数据 editor.commit();

editor.clear(); //删除全部数据 editor.commit();

//5简写形式如下: Editor editor = sp.eidt()

//更改数据

//读取数据

.putString(“name”, .commit();

“贺昌峰”) 23.使用TXT文件保存数据 FileOutPutStream

fout = openFileOutput(文件名, 文件权限); 文件权限: MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE

1.在文件中写入数据

try { //打开TXT文件 FileOutPutStream

BufferedOutputStream

String

//向文件中写入数据

bufferoutput.write(s.getBytes()); s = “大家跟我学习android”;

bufferoutput = new BufferedOutputStream(fout); fout = openFileOutput(“myconfig.txt”, MODE_PRIVATE);

//关闭文件 bufferoutput.close(); fout.close(); } Catch(Exception e) {

2.从文件中读取数据

try { FileInputStream

BufferedInputStream

byte[] bufferbytes = new byte[20]; int flag = bufferoutput.read(bufferbytes); if (flag==-1) { //文件读取到文件末尾,否则可以继续读出

}

//仅读取长度为20个字节的数据

bufferoutput = new BufferedInputStream(fout);

fout = openFileInput(“myconfig.txt”);

//打开文件

e.printStackTrace(); } bufferoutput.close(); fout.close(); } Catch(Exception e) {

24.使用数据库保存数据 1.数据库相关类

//关闭缓冲区 //关闭文件

e.printStackTrace(); } import android.content.ContentValues; import android.content.Context; import android.database.Coursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase;

2.SQLiteDataBase类

注意:数据库操作时,要求捕获异常,此处省略。

SQLiteDataBase db = openOrCreateDatabase(“databasename.db”, MODE_PRIVATE); //说明:数据库权限同文件权限

// Context就是this指针 db.execSQL( sql_exp ): 执行SQL语句

Cursor cs = db.rawQuery(select_exp, null): 返回数据集。 Cursor cs1 = db.query(arg0, ……): 使用较繁琐,可用rawQuery替换。

db.insert(arg0, ……): 使用较繁琐,可用rawQuery替换。 db.delete(arg0, ……): 使用较繁琐,可用rawQuery替换。 db.update(arg0, ……):

使用较繁琐,可用rawQuery替换

db.close(): 一般写在onDestroy事件中。 3.Cursor类 方法有:

move, moveToPosition, moveToFirst, moveToLast,

moveToNext, getCount(), getInt(),

getString(),

isNull(), isFirst()等等。

4.ContentValues类

一般用在SQLiteDataBase.insert中, 此处省略。

ContentValues content

= new ContentValues();

content.put(“name”, “贺昌峰”);

moveToPrevious, content.put(“age”, 48); 5.SimpleCursorAdapter类

SimpleCursorAdapter是界面组件如ListView和Cursor的桥梁。 例, 在ListView组件listview1中,显示数据集(有绑定功能吗?):

Cursor cs = db.rawQuery(“select SimpleCursorAdapter

adapter

* from table”, null);

= new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2, new String[]{“id”, “name”}, new int[]{ android.R.id.text1, android.R.id.text2}); // 注意:第2个参数的作用

listview1.setAdapter(cs);

//在ListView组件显示数据集

25.时间组件

1.常用组件AnalogClock,

DigitClock 用法比较简单,无需过多设置,仅仅显示当前时间:机械式,数字式

2.计时组件:Chronometer 常用方法:start开始计时, stop停止计时, setBase设置时间 setFormat(“秒表:%s”):设置组件时间显示格式。

附:与时间格式有关的函数 SimpleDateFormat String

sformat = new SimpleDateFormats(“hh:mm:”);

//得得当前时间 s = sformat.format(new Date() );

例,Chronometer对象是chroTime: chroTime.setOnChronometerTickListeter(chrolisteten);

private Chronometer.onChronometerTickListeter Chronometer.onChronometerTickListeter(){ @Override public

void OnChronometerTickListeter(Chronometer chronomoter){ //每秒执行一次该方法 } }

3.计时组件Timer和TimerTask

chrolisteten = new 常用函数:schedule(TimerTask对象, Timer对象延迟时间, TimerTask对象间隔时间);

TimerTask对象用法: private TimerTask { public void run(){ //按设定间隔调用执行 handle.sendMeage(msg); //特别注意:此处不能对界面进行更新,因为影响计时精度,所有需要使用Handle配合。见下。 } }

4.Handle和Meage的配合使用 Handle handle { public void handleMeage (){ super.handleMeage (); //进行其它处理 }

= new Handle ()

timetask = new TimerTask() } Meage

msg.what = “******”; handle.sendMeage(msg);

26.线程Thread

1.Thread的定义

public cla ClockThread extends Thread{ @Override public void run(){ //进行其它处理

//注意:不会自动重复执行多次的 } } 2.Thread的启动、延时启动、停止 使用Handle对线程进行控制: msg = new Meage(); Handle handle = new Handle();

ClockThread clock = new ClockThread();

handle.post(clock);

//启动线程 5000);

//延时5000ms启动线程 //停止线程 handle.postDelayed(clock, handle.removeCallbacks(clock);

问题:使用Handle有什么优点? 27.视频播放VideoView 支持的文件格式:H.264的mp4, wmv, 3gp等。 1.视频播放

private VideoView

videoview.setVideoPath(“/sdcard/robot.mp4”); //增加控制面板

videoview.setMediaController(new MediaController(getApplicationContext()));

videoview

= new VideoView(); videoview.start(); //开始播放

2.视频准备播放事件

videoview.setOnPreparedListener(videoPreparedListener); videoview.setOnCompletionListener(videoCompletionListener);

private MediaPlayer.onPreparedListener videoPreparedListener = new MediaPlayer.onPreparedListener (){ @Override public

void onPrepared (MediaPlayer

mp){ //视频准备播放 } }

3.视频播放完成事件

private MediaPlayer.onCompletionListener videoCompletionListener = MediaPlayer.onCompletionListener (){ @Override public

void onCompletion (MediaPlayer

mp){

new //视频播放完成 } }

28.MediaPlayer,SurfaceView和SurfaceHolder播放视频

MediaPlayer也可以播放视频,需要SurfaceView和SurfaceHolder配合,其中SurfaceView为可视化组件可以播放视频,SurfaceHolder为桥梁。

private SurfaceView surfview = new SurfaceView(); //此组件可视化设计,无需这里声明 private MediaPlayer

surfholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaplayer.setDisplay(surfholder);

mediaplayer.setDataSource(“/sdcard/vedio.mp4”); mediaplayer.reset();

//打开视频文件

mediaplayer = new MediaPlayer();

= surfview.getHolder(); private SurfaceHolder surfholder

//重新播放视频 mediaplayer.prepare(); mediaplayer.start(); mediaplayer.stop(); mediaplayer.release();

//准备播放视频 //播放视频

29.录制音频MediaRecorder MediaRecorder

mediaRecorder.SetAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.SetAudioEncode(MediaRecorder.AudioEncode.DEFAULT ); mediaRecorder.SetOutputFormat(MediaRecorder.OutputFormat.DEFAULT ); mediaRecorder.SetOutputFile(“/sdcard/recorder.amr”); mediaRecorder.prepare(); mediaRecorder.start();

注意:要有写入SD卡的权限,在AndroidManifest.xml文件中:

//准备录音 //开始录音

mediaRecorder = new MediaRecorder(); :

1.附1:ImageView.setAlpha(50)的含义?设置透明色 2.附2:遍历目录下所有文件: private File pathfile; pathfile = Environment.getExternalStorageDirectory();

//疑问:pathfile + ”/myfilename.txt” 这个用法正确吗? for (File file: pathfile.listFiles()){ if { (file.getName().toLowerCase().endsWith(“.amr”)) ……

// File.getAbsolutePath(), File.getName ()的区别 } } 30.菜单组件 //添加系统菜单 protected protected static final int MENU_ABOUT

= Menu.FIRST; static final int MENU_QUIT = Menu.FIRST + 1;

//得到SD卡路经 protected

@Override static final int MENU_EDIT = Menu.FIRST + 2; public boolean onCreateOptionsMenu(Menu menu){ menu.add(0,MENU_ABOUT,0,\"关于本软件...\") .setShortcut(\'0\',\'A\');

menu.add(0,MENU_QUIT,1,\"结束\") .setShortcut(\'1\',\'E\');

menu.add(0,MENU_EDIT,2,\"编辑\") .setShortcut(\'2\',\'D\');

menu.add(0,MENU_FILE,3,\"文件\") .setShortcut(\'3\',\'F\');

return super.onCreateOptionsMenu(menu); } //添加菜单响应事件 @Override public boolean onOptionsItemSelected(MenuItem switch (item.getItemId()){ case MENU_ABOUT: // 响应处理 break; case MENU_QUIT: // 响应处理 break; }

return super.onOptionsItemSelected(item); }

//添加快捷菜单 protected static final int MENU_BACKCOLOR protected static final int MENU_SMALLSIZE =

item){

= Menu.FIRST;

Menu.FIRST + 1; //定义快捷菜单组件 private LinearLayout private TextView

layout;

txtview1,txtview2; 在onCreate中, 增加以下语句: layout = (LinearLayout)findViewById(R.id.layout); txtview1 = (TextView)findViewById(R.id.txtview1); txtview2 = (TextView)findViewById(R.id.txtview2); registerForContextMenu(txtview1); registerForContextMenu(txtview2);

在java文件类中, 增加以下语句: @Override public boolean onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){ //注意:父类函数先调用,或最后调用? super.onCreateOptionsMenu(menu, v, menuInfo);

if (v == txtview1) menu.add(0, MENU_BACKCOLOR,0,\"设置背景颜色\"); if (v == txtview2) menu.add(0, MENU_SMALLSIZE,1,\"较小字体\");

}

//添加菜单响应事件 @Override public boolean onContextItemSelected(MenuItem switch (item.getItemId()){ case MENU_BACKCOLOR: // 响应处理

layout.setBackgroundColor(Color.BLUE); break; case MENU_SMALLSIZE: // 响应处理

txtview2.setTextSize(12); break; }

return super.onContextItemSelected(item); }

item){

第20篇:《Android应用开发》个人总结报告

《Android应用开发》个人总结报告

刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想,因为Android在现在也是全新的技术和框架,在其中我也学到了如何用单例模式、工厂模式等常用的设计模式进行学习,通过API进行开发客户端,对Request发送,Response处理中通过比较方便的JSON对象传输,以及对XML、JSON、图片、业务等下载处理,对API接口调用等问题处理。

首先在界面上,我们同样可以通过不同布局进行设计非常酷的界面,这些界面可以通过include进行引入,和jsp、html也有相通的地方,同样在android上可以用到自定义的样式这和c也有比较相通的地方,我们可以通过一些公用的方法写个BaseActivity这个基类,通过继承方式比较不错的实现了Activity的界面,因为这样你可以Header(头部)和Footer(尾部)进行处理一些触发事件或者特效等。布局模式以相对模式为主,线线布局模式可以在比较简单的include进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现View或者Layout等类进行扩充项目需

要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。

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说很大,不到万不得已不要使

android开发实习报告
《android开发实习报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档