人人范文网 工作计划

android工作计划(精选多篇)

发布时间:2020-04-06 14:39:20 来源:工作计划 收藏本文 下载本文 手机版

推荐第1篇:Android简历

个人简历

个人信息

姓名:XXX

年龄:XX

学历:本科

联系电话:186XXXXXXX

个人技能

1.熟练掌握JAVA面向对象编程语言,有良好的编码习惯;

2.熟悉jsp、javascript、servlet、javaBean进行web应用开发,了解jQuery,ajax等技术;

3.能使用Struts

2、Hibernate、Spring等开源框架技术;

4.熟练操作SQL sever、MySQL数据库,熟悉SQL语句;

5.熟练掌握Android adt编程环境和调试流程;

6.熟练掌握Android的4大组件和5种常用布局;

7.熟练Sqlite、File、SharePreference等存储方式;

8.熟练使用xml、json等解析技术;

9.熟悉编程软件环境配置,熟练运用Eclipse和MyEclipse等编程软件。

教育培训

2009年9月——2013年6月

2012年2月——2012年5月

项目经验

1.Android选课系统

描述:一款基于Android平台的选课软件,通过软件访问WEB短的服务器进行操作,web端采用servlet实现,能进行课程的查询、添加、删除。

2.基于SSH的论坛

描述:实现简单的注册登录功能,用户可创建自己的论坛并有管理权限,会员可发帖,帖子有回复功能,版主可管理自己的帖子。

自我评价

我有一颗积极向上的心,对于软件开发有较大兴趣。喜欢运动,热爱生活,热爱学习。诚实做人,踏实做事是我的做人原则。有较强的团队意识,比较善于团队合作。我坚信,努力不一定会成功,但肯定会有收获。我期待这个收获的过程。我将投入自己全部的激情,努力奋进。

XX大学软件工程 XXXXXAndroid软件开发 性别:X 籍贯: 山东XX 专业: 软件工程 E-mail:XXXXXXX@126.com

推荐第2篇:Android学习心得

Android入门心得

工具使用

1.打开已有工程:

方法1:Eclipse>file>new>Android Project>Next>Create Project existing source>选择你的项目.该方法适合不在工作目录workspace下的文件。

方法2:在屏幕上方的选单列上,选择「File->Import」选项,会跳出「Import」视窗。选择「General->Existing Projects into WorkSpace」项目,然后按下「Next」按钮带到新一个画面。在「Select Root Directory」栏位旁,按下右方的「Browse...」按钮,选择对应的工程。选择好后,按下「Finish」按钮完成从现存在工作环境(WorkSpace)资料夹下的工程汇入到Eclipse 环境的动作。

2.修复工程。如果发现开启后的资料夹图示上有个小小的黄色惊叹号,表示工程导入后还有些问题,我们可以使用ADT 内建的功能来试着修复。

在「Package Explorer」的「ApiDemos」工程档桉夹图示上点选右键,Android Tools->Fix Project Properties

3.新建模拟器

一种方法是在windows的运行>cmd中。

在windows的“运行”->cmd中启动Android emulator。

首先,设置环境变量。在Windows 2000, XP, 2003 这些操作系统里,点选「我的电脑右键>属性>高级>环境变数」。在「系统变数(S)」栏中,选取「PATH」变数名称后,再点选「编辑(I)」按钮。加入你的android-sdk-windows的安装路径(因个人电脑而异):在弹出的视窗中将「; D:\\software\\eclipse\\Andorid开发套件\\android-sdk-windows\\tools」(注意要以分号隔开)这字串添在原本的字串之后,按下确定后重新启动操作系统。 其次,开始>运行>cmd:输入如下命令

>android list targets 列出模拟器类型

>android create avd --target 1--name android2.2新建模拟器(「--target 1」参数的意思是这个模拟器使用id 为1的模拟器类型,「--name cupcake」参数的意思是将这个建立的模拟器命名为android2.2)

>android list avd 查看已有的模拟器。

另一种简单的方法是在eclipse集成开发平台上。

Eclipse>windows>android SDK and AVD manager>new >„„

4.换屏。在Windows 操作系统上按下「Ctrl」和「F12」可以切换模拟器屏幕,直屏&横屏。

5.换外观。还可以添加android手机的模拟器外观,如G1的。实现方法:先下载G1外观(http:///),解压后放到即可,执行android create avd --target 2 --name devphone –skin G1

6.添加SD Card。

首先创建镜像文件。用cmd中进入到android的SDK的Tools目录下,执行mksdcard创建。

>mksdcard 1024M sdcard.img

(其中第一个参数为要创建的sdcard容量大小(容量大小自己决定),

第二个参数为sdcard的名字)

然后,启动带sdcard的Android模拟器

>emulator -sdcard sdcard.img

我使用的时候,发现用上述命令总是提示错误。按照cmd的提示,

改为emulator –data sdcard.img。不过貌似启动很慢,而且手机内存和sd卡内存(磁盘虚拟)也会调整,开始以为可以了,结果发现死机了。~~~~(>_

最后根据提示,命令中加入模拟器名,emulator –avd [你的模拟器的名

字] -sdcard sdcard.img,就启动了模拟器。(估计是我电脑有多个模拟器,所以命令就不知道怎么执行了)

7.在模拟器上安装android 程序。

Windows>navigation>next perspective>DDMS>选中file explorer 可以看到Android手机模拟的系统文件。有个SDcard的文件夹即为SD卡内容。点选一个手机图标即可将android程序下载到“手机”(通过这种方法,还可以添加图片,MP3等。也可从手机上传到PC,用即可)然后像操作手机一样安装程序即可。你可以试试安装“愤怒的小鸟”“植物大战僵尸”等游戏。在PC上体验android。

说明:如果你的手机模拟器上没有装文件浏览器。是看不到文件的。解决的办法是:可以你先在在cmd中安装浏览器,adb install ***.apk。安装文件必须在cmd的当前目录下,不然cmd找不到的。

8.屏幕截图。在Windows>navigation>next perspective>DDMS>Device窗口中有个Screen capture 图标。点选即可将手机模拟器的屏幕内容截取下来。 9.JAVA语法

10.Package:

当一个大型程序交由数个不同的程序人员开发时,用到相同的类名是很有可能的,那么如果发生了这样的事件我们该怎么办那?,在我们java程序开发中为了避免上述事件,提供了一个包的概念(package),那么既然有了这样一种方法能避免上述事件.

11.Native。在JAVA中 native关键字表示一个方法只可以调用,但是不能编写!

12.将C写的动态库变成Java所用:

Native方法,native是一个本地接口。

1、在Java中声明native()方法,然后编译;

2、用javah产生一个.h文件;

3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);

4、将第三步的.cpp文件编译成动态链接库文件;

5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。

13.Java关键字final

final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非

抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法只是用来标识这个引用不能被修改。

14.R.java

R.java是ATD自行产生的,ID号都是唯一的,如果不熟悉,最好是不要动这个里面的东西,这个类里面通常定义的都是project的一些resource信息,attr、drawable、id、raw、layout、string以及xml等

15.在Java中,通过关键字extends继承一个已有的类。New创建对象。

16.创建对象是可直接用button,EditText, TextView,Handler等关键字,

17.修改程序图标:把res文件夹的drawable文件夹中的icon.Png替换成自己的icon即可。

最后

Android也可以不用JAVA语言,而采用经典的C&C++开发。基于的原理也就是第12点讲到的,将程序的实现代码用C(C++)写好后,封装成库,再使用native方法调用,即JNI,JAVA native interface。(开发环境为DNK Native Development Kit)。

麻烦!还不如新学JAVA,以后肯定用得到的。

Android应用程序开发入门

1.界面

目前的ADT 版本提供了预览界面的功能,但尚未提供方便地视觉化拖拉界面元件的开发工具。以后也许ADT 会加入完整的GUI 拖拉设计工具。所以当前设计都是在res下的layout下的main.xml修改界面描述语言。

2.

推荐第3篇: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日

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

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

推荐第4篇:Android总结

Android四大组件:

Activity—表现屏幕界面

Service—后台服务

BroadcastReceiver—实现广播机制

ContentProvider—实现数据存储

Intent类:用来启动程序并传递信息的类

用于Activity、Receiver、Service之间进行交互的类,通过无参构造方法创建对象,增加其action、category、data、extra等属性进行信息传递,并通过Activity中的startActivity(Intent intent)进行界面的跳转;通过Context中的StartService(Intent intent)进行服务跳转;通过Context中的registerReceive(Intent intent)对广播进行注册,并通过sendBroadcast()进行无序消息发送,或可以通过SendOrderedBroadcast()进行有序的消息发送。 Handler类:

用来发送和处理消息,并配合主线程完成UI的更新;消息Meage/Runnable传递通过MeageQueue(消息队列,先进先出)进行传递,并通过Lopper进行接收,传递的消息可以为Meage对象,也可以是Runnable对象;接收方法通过HandleMeage(Meage msg)进行获取。 SharedPreferences类:

一般用于第一次登录时的设置,或者是各个界面的一些小型格式设置,如字体等。是本地的小型共享数据库,可以通过Context的静态方法getSharedPreferences获得其对象,对象内的值均为键值对进行储存。通过SharedPreferences对象调用editor()获取SharedPreferences.Editor对象,向共享数据库中增加数据,putString(),并提交数据,commit();通过SharedPreferences对象获取共享数据库中的数据,getString()。

ViewPager:实现界面滑动的类;

通过设置OnPagerChangedListener设置ViewPager的监听事件;

实现流程:

①布局文件中设置ViewPager控件;

②代码中进行绑定控件;

③通过继承PagerAdapter抽象类进行设置适配器,并传递数据源;

④适配器中实现两个抽象方法,两个重写方法:getCount()—获取滑动界面的数量,isViewFromObject()—判断视图是否是来自于Object文件中;重写两个方法,分别为destoryItem—销毁指定位置的视图;InstantiateItem(),设置指定位置的视图;

Timer与TimerTask类:

Timer为计时器的类,通过无参构造方法可以获取对象,通过Timer.schedule(TimerTask task,long time)进行设置多久后执行某任务,当任务执行完后,取消计时的功能,Timer.cancle();TimerTask类为抽象类,实例化时,必须重写run方法;执行的内容,均在run方法中进行设置,并且执行时,已在子线程中进行执行。 自定义View:用到的类有Paint、Canvas、Spec、SpecF、Path、View.MeasureSpec、Timer、TimerTask;

抽象类,通过子类继承,获取对象;在布局文件中绑定后,通过代码,设置自定义View的属性;自定义View中,通过重写OnMeasure方法,对布局文件中的尺寸进行测量,并由View中的setMeasureDimenson()方法,进行数据的保存;通过重写Ondraw方法,进行绘图;当需要绘制动态图形时,使用计时器Timer的schedule(TimerTask,long time,delay time2)方法,在time时间后,每隔time2时间,重写执行run方法中的内容;将耗时的操作设置在run方法中,并通过View中的invalidate()方法刷新主线程中的绘的图形,通过postInvalidate()刷新子线程中的图形。 数据库:

常用的数据库有Oracle,需要安装和配置的大型收费数据库;MySQL是中型数据库,同样需要安装配置,但不需要收费;Sqlite是小型免费的嵌入式数据库,占用内存低,最新版本为3.0。Sqlite数据库需要通过SqliteDatabaseOpenHelper进行创建数据库,并通过SqliteDatabase进行数据库的操作。辅助类是抽象类,通过继承,重写两个方法,并在子类的构造方法中通过OpenHelper的构造方法(Context context,String SqlName,SqliteDatabase.CursorFactory factory,int version)进行数据库的创建,在onCreate方法中,进行数据库表的创建,在onUpdate中进行数据库的版本更新。在数据库的操作类中,执行exect方法,通过sql语句对数据库进行操作。Create table student (_id integer primary key auto increament ,name text);insert into student (_id,name) values (1,zx);delete from student where _id=1;update student set _id=2 where name=zx;select *from student ; ListView、GridView适配器的优化:

将布局文件中的控件进行封装,当视图加载时,判断可变视图是否存在,当不存在时,通过布局文件获取视图,并新建封装类,将地址通过setTag()进行发送;当视图存在时,重复利用地址—getTag()。 反射:

存储数据的方式:

共享数据库、数据库、文件、网络、内容提供者

广播:

广播传播时,需要接收者、发送者、广播频道;根据发送者的发送方式不同,分为有序广播、无序广播;有序广播为接收者有接收顺序,根据设置的优先级不同,确定先后顺序,接收者同时也是发送者,向后面的广播发送消息,发送过程中,可以添加信息,也可以停止广播的传输;无序广播,接收者之间无联系,均从发送者处接收信息;广播在传输过程中,不能被添加信息,也不可能被停止。广播在发送前,需要对接收者进行注册,注册方式有两种,动态注册、静态注册。动态注册,是在代码中进行,通过Context对象调用静态方法进行注册,所有的广播均可以用动态注册,其生命周期依赖于应用,相对于静态注册,比较节省内存;静态方法在清单文件中进行注册,部分系统广播不能通过静态注册进行,其生命周期依赖于系统,当系统启动,即运行接收广播,较耗内存。广播接收者需要继承BroadcastReceiver,并实现抽象方法onReceive(),通过回调接口,进行数据的传输。注意:广播发送前,必须进行接收者的注册,并且,当显示跳转时,不需要意图过滤器。 安卓布局:九种布局

线性布局,水平或垂直方向两种格式,主要特点为权重,即规定各控件在视图中的占有的比例;

相对布局,相对于父控件或兄弟控件的布局,各控件需指定相对位置; 绝对布局,指定各控件在视图中的绝对位置,几乎不再使用; 表格布局,子布局放在行中,列由控件表示(TableRow); 帧布局:覆盖前面布局的布局,一般用于暂停按钮等; 风格布局:可以跨行、跨列的布局,占满换行;

左右侧滑:可以实现左右侧滑,通过设置主菜单和二级菜单设置左右两个菜单; 下拉刷新:设置下拉刷新、上拉加载的功能; 抽屉布局;

安卓版本及对应的API:

1.6—4;2—7;3—11;4—15;4.3—18;5—20;5.1—21;6—23;7—25; 安卓四层架构:

应用层:Java语言开发,主要从事App开发;

运行库层:Java语言与C语言,View视图、管理类等的开发; 架构层:C语言与Linux语言,各种框架、浏览器等; 内核层:Linux、C语言,开发各种驱动; 安卓四大组件:

Activity:界面,实现程序与用户之间的交换,有自己的生命周期,七个生命周期;4种启动模式 Service:

BroadcastReceive:三要素,发送者、接收者、发送频道(Intent);类型:有序(接收有序,有数据传送,可以拦截数据)、无序广播(相对);注册方式:静态注册,持久监听,占用内存比较高生命周期跟随系统,动态注册(代码中),所有广播都可以动态注册,部分系统广播不能动态注册,临时监听,占用内存较少,生命周期随应用进行;

ContentProvide:不能存放数据,五种存放数据方式之一,特点为:①为数据的获取等操作添加一个统一的接口②可以实现跨应用访问数据;③可以实现Android中通讯录、消息、音频、视频等的访问或操作;通过ContentReceive进行数据的访问,可以对数据进行增删改查操作。

动画: IO流: 序列化: AlertDialog:

Set实现类: 手机电量检测:

自定义SurfaceView:

自定义View:三个构造方法的区别

Meage:Handler.obtain/new/Meage.obtain

HttpUriConnection访问网络

gride 异步任务 动画

抽象类和接口 反射 克隆 序列化 侧滑的实现 数据库 Socket:

Gson解析

异步任务和子线程区别 WebView 版本更新 照片的圆角化

Collection与Collections Sql语句

MVP框架与MVC: TCP与UDP的区别: 一键分享的流程: Http协议的理解: 不使用框架访问网络: List集合与set集合: 自定义View的流程: 线性布局的特点: ViewPager的原理: 服务的启动方式:

Activity的启动方式: Xml数据解析:

推荐第5篇:android 答疑

在Escips进行编译仿真时,如果有错误 logcat会出很多行红字,怎样从红字中获取有用信息

一般的话红字第一行,就能说明错误原因。还有个笨方法是 挨行双击。

一般的错误都会显示在第二行红字里面,你选中后点击右键

选择“Filter similar meages...”,就可以查看复制出log的信息,然后上网搜搜什么的都可以。

一般出错的类,以及什么异常都会显示出来。一个简单的办法就是你浏览出错信息,找到你自己认识(或者说你自己写的)的类和方法,后面有标识的错误的代码行号。

Fatal adj [/fetl]致命的的,重大的,毁灭性的

AlertDialog.Builder()的参数问题 (2011-10-11 10:54:39)转载▼ 标签: 杂谈

有关AlertDialog.Builder,在创建时一定要用this做为参数,

如:new AlertDialog.Builder(this); 有些时候用this 会出现错误,因为dialog不是在oncreate中定义的。 不妨在MainActivity建立类

public static MainActivity mainactivity; 然后在oncreate中mainactivity = this; 之后建立Dialog new AlertDialog.Builder(MainActivity.mainactivity); 个人试过可以,大家不妨尝试

new AlertDialog.Builder(this)跟new AlertDialog.Builder(A.this)(A是外部类名)的区别是什么呢?实现过程中的结果有什么区别呢??能详细说明吗?谢谢。。。。

分享到:

2011-11-04 19:54提问者采纳

首先AlertDialog.Builder(this)所传参数类型是contex,也就是上下文环境。this意思是当前对象,就是调用AlertDialog.Builder()的对象。 所以,前者的this是临近最外面的那个cla产生的对象

后者是cla A产生的对象。。明白了吗?

追问

this意思是当前对象,就是调用AlertDialog.Builder()的对象。 所以,前者的this是最外面的那个cla产生的对象 关于这句可以再详细一点说明吗。。。谢谢

回答

举个例子吧:

public cla A {

//一个有名内部类

cla B{ fun(this);//这里的this是类B产生的对象

fun(A.this);//这里的this是类A产生的对象

} } public void onClick(View v) 是什么意思? View类的对象v作为参数传入onClick函数,至于View具体是什么类需要根据实际情况来看。

手机音效

Android手机的来电铃声和短信铃声的设置虽然也有些繁琐,但是细心的用户仔细摸索一下就能会快知道了。但是android手机还有按键声音和照相声音,这些都是一成不变的,时间一长,大家也难免会觉得有些厌烦,很多机友都想知道如何来更换这些系统声音,让自己的手机更加个性化。下面就简单的教大家在手机上如何更换这些系统声音。一起往下看。

首先还是需要一些工具软件,前期需要准备的文件和工具有root explorer文件管理器和ogg格式简短音频文件。

1.Root explorer (文件管理器)下载:http://download.tech.qq.com/\"));

2.shortcutIntent.setClaName(\"com.android.browser\", \"com.android.browser.BrowserActivity\"); //此处指定系统自带浏览器包名和Activity名称.

Unable to start activity ComponentInfo: java.lang.NullPointerException

分类: Android2012-07-20 13:12 561人阅读 评论(0) 收藏 举报

Unable to start activity ComponentInfo{....}: java.lang.NullPointerException 原因:未对控件初始化

android开发中,空构造Intent和带参数的intent 2012-03-02 14:13wushu15092 | 分类:JAVA相关 | 浏览1884次

代码1:

Intent intent = new Intent();

代码2: intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse(\"TEL:110\")); startActivity(intent); Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse(\"tel:110\")); startActivity(intent); 两个代码有什么不一样??为什么代码1提示No Activity found to handle Intent,而代码2能正常运行???

分享到:

2012-03-02 15:35提问者采纳

呃。。。第二行和第三行换换位置。。。

Intent intent = new Intent(); intent.setData(Uri.parse(\"TEL:110\")); intent.setAction(Intent.ACTION_CALL); startActivity(intent); 提问者评价

其实代码2出错的地方是那个tel:110,把tel改成TEL就可以了。

注意字母大写

推荐第6篇:android面试题

选择题(包括多选)

1.下列哪些语句关于内存回收的说明是正确的?

A、程序员必须创建一个线程来释放内存

B、内存回收程序负责释放无用内存

C、内存回收程序允许程序员直接释放内存

D、内存回收程序可以在指定的时间释放内存对象

2.下面异常是属于Runtime Exception 的是

A、ArithmeticException

B、IllegalArgumentException

C、NullPointerException

D、BufferUnderflowException

3.Math.round(-11.5)等于多少

A、11 ,-11

B、11 ,-12

C、12 ,-11

D、12 ,-1

24.下列程序段的输出结果是:

void complicatedexpreion_r(){

int x=20, y=30;

boolean b;

b=x>50&&y>60||x>50&&y60||x

System.out.println(b);

}

A、true

B、false

C、1

D、011.activity

5.对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行

A、onPause()

B、onCreate()

C、onResume()

D、onStart()

6.Intent传递数据时,下列的数据类型哪些可以被传递

A、Serializable

B、charsequence

C、Parcelable

D、Bundle

7.android 中下列属于Intent的作用的是

A、实现应用程序间的数据共享

B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失

C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带

D、处理一个应用程序整体性的工作

8.下列属于SAX解析xml文件的优点的是

A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能

B、不用事先调入整个文档,占用资源少

C、整个文档调入内存,浪费时间和空间

D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会

消失

9.在android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是( )

A、getWriteableDatabase()

B、getReadableDatabase()

C、getDatabase()

D、getAbleDatabase()

10.android 关于service生命周期的onCreate()和onStart()说法正确的是

A、当第一次启动的时候先后调用onCreate()和onStart()方法

B、当第一次启动的时候只会调用onCreate()方法

C、如果service已经启动,将先后调用onCreate()和onStart()方法

D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法

11.下面是属于GLSurFaceView特性的是

A、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。

B、管理一个EGL display,它能让opengl把内容渲染到上述的surface上。

C、让渲染器在独立的线程里运作,和UI线程分离。

D、可以直接从内存或者DMA等硬件接口取得图像数据

12.下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的

A、

android:name="android.provider.action.NewBroad"/>

B、

android:name="android.provider.action.NewBroad"/>

C、

android:name="android.provider.action.NewBroad"/>

D、

android:name="android.provider.action.NewBroad"/>

13.关于ContenValues类说法正确的是

A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值都是基本类型

B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是任意类型,而值都是基本类型

C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名,可以为空,而值都是String类型

D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型

14.我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是

A、onDestroy()

B、onClear()

C、onFinish()

D、onStop()

15.下面退出Activity错误的方法是

A、finish()

B、抛异常强制退出

C、System.exit()

D、onStop()

16.下面属于android的动画分类的有

A、Tween

B、Frame

C、Draw

D、Animation

17.下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是

A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念.

B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念.C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念.

D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念.18.Android项目工程下面的aets目录的作用是什么

A、放置应用到的图片资源。

B、主要放置多媒体等数据文件

C、放置字符串,颜色,数组等常量数据

D、放置一些与UI相应的布局文件,都是xml文件

19.关于res/raw目录说法正确的是

A、这里的文件是原封不动的存储到设备上不会转换为二进制的格式

B、这里的文件是原封不动的存储到设备上会转换为二进制的格式

C、这里的文件最终以二进制的格式存储到指定的包中

D、这里的文件最终不会以二进制的格式存储到指定的包中

20.下列对android NDK的理解正确的是

A、NDK是一系列工具的集合

B、NDK 提供了一份稳定、功能有限的 API 头文件声明。

C、使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式

D、NDK 将是 Android平台支持 C 开发的开端

问答题:

1.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。

2.Activity和Task的启动模式有哪些? 每种含义是什么?

3.SQLite支持事务吗? 添加删除如何提高性能?

4.对Intent、Activity、广播、Service等的理解

5、handler机制的原理

推荐第7篇:Android教学大纲

移动互联-教学大纲

第1章 Android快速入门 1.1 什么是3G 1.1.1 三个无线接口标准 1.2 为什么从事Android开发 1.2.1 智能手机制式分析 1.2.2 智能手机软件平台 1.2.3 智能手机屏幕尺寸分析 1.2.4市场占有率 1.3什么是android 1.3.1历史背景 1.3.2Android进化史 1.3.3Android体系结构

1.3.4 Dalvik VM 和 JVM 的比较 1.4搭建Android开发环境 1.4.1 系统需求 1.4.2 JDK的下载 1.4.3 JDK的安装

1.4.3 Android SDK的下载与安装 1.5 第一个Android程序 1.5.1 创建Android应用程序 1.5.2 Android项目结构说明 1.5.3 运行Android应用程序 1.5.4 调试Android应用程序 1.5.5 Android应用开发流程 1.6说明和要求: 重点:android特性,android架构,搭建android开发环境,android项目结构说明,android应用开发流程

难点:android项目结构

教学目标:

1、理解android市场现状;

2、了解什么android;

3、搭建android开发环境;

4、通过第一个android程序了解android项目结构掌握运行android程序和调试android程序;

5、掌握android应用开发流程

第2章 Android模拟器与常见命令 2.1 使用Android模拟器 2.1.1 模拟器概述

2.1.2 Android虚拟设备和模拟器 2.1.3 Android模拟器启动与停止 2.1.4 控制模拟器

2.1.5 Android 4.0模拟器介绍 2.1.6 模拟器限制 2.2 SDK中常用命令 2.2.1 adb命令 2.2.2 android命令 2.3 说明和要求: 重点:创建android虚拟器,android虚拟器与真机区别,控制模拟器,adb命令 难点:控制模拟器,adb常用命令

教学目标:

1、掌握创建模拟器并使用;

2、了解模拟器与真机区别;

3、掌握adb常用命令

第3章 用户界面设计 3.1 用户界面VIEW 3.1.1 xml部分属性 3.1.2 多点触控 3.1.3 控制UI界面

3.1.4 使用xml控制UI界面 3.1.5 在代码中控制UI界面

3.2 使用XML和Java代码混合控制UI界面 3.2.1 Android样式与主题 3.2.2 布局管理器 3.2.3 线性布局 3.2.4 相对布局 3.3.1 基本组件 3.3.2 Toast 3.3.3 文本框与编辑框 3.3.4 按钮

3.3.5 单选按钮和复选框 3.3.6 ProgreBar进度条 3.3.7 图像视图 3.3.8 对话框 3.4 列表视图 3.5 说明和要求: 重点:使用xml控制UI界面,线性布局,相对布局,帧布局,文本框和编辑框,按钮,单选框和复选框,列表视图 难点:帧布局,列表视图

教学目标:

1、掌握两种控制UI布局;

2、掌握线性布局的水平布局和垂直布局;

3、掌握相对布局;

4、掌握帧布局的动态添加;

5、掌握android基本组件及点击事件处理

6、掌握列表视图

第4章 线程与消息处理 4.4 实现多线程 4.4.1 创建线程 4.4.2 开启线程 4.4.3 线程的休眠 4.4.4 中断线程 4.5 说明和要求: 重点:实现多线程下载,handler消息机制传递 难点:多线程下载

教学目标:

1、掌握多线程下载;

2、掌握handler消息传递机制

第5章 数据存储及访问 5.1 文件存储

5.1.1 文件存储三种模式 5.1.2 使用文件进行数据存储 5.1.3 使用sax解析xml文件 5.2 使用dom解析xml文件 5.2.1 使用pull解析xml文件 5.2.2 使用Pull解析器生成XML文件 5.2.3 把文件放在sd卡上 5.3 SD卡简介

5.3.1 将文件保存到SD卡,并从文件夹取文件 5.3.2 将文件或者文件夹从SD卡删除 5.3.3 SharedPreferences 5.3.4 使用SharedPreferences进行数据存储 5.3.5 访问SharedPreferences中的数据 5.3.6 使用SQLite数据库 5.3.7 数据库创建及版本管理 5.4 内容提供者 5.4.1 事务处理 5.4.2 网络 5.5说明和要求: 重点:使用sax解析xml文件,使用dom解析xml文件,使用pull解析xml文件,使用SharedPreferences进行数据存储,访问SharedPreferences中的数据,数据库创建,数据库版本管理,使用SQLiteDatabase操作SQLite数据库,使用SQLiteOpenHelper操作SQLite数据库,事务处理

难点:xml文件的三种解析方式,使用SharedPreferences存储数据及数据读取,数据库的创建和更新,对数据库进行增删改查,数据库的事务处理

教学目标:

1、掌握使用sax,dom,pull三种方式对xml文件进行解析;

2、掌握使用SharedPreferences存储数据及数据读取;

3、掌握对SQLite数据库的创建及更新;

4、掌握对SQLite数据库分别使用SQLiteDatabase和SQLiteOpenHelper两种方法查询数据

第6章 Android基本单元应用activity 6.1 Activity概述 6.1.1 Activity生命周期 6.1.2 Activity四种加载模式 6.2.activity显示形式 6.3 创建Activity 6.3.1 配置Activity 6.3.2 多个Activity的使用

6.4 使用Bundler在Activity之间交换数据 6.5 调用另一个Activity并返回结果 6.6 android测试类 6.7 log日志 6.8说明和要求: 重点:activity生命周期,activity四种加载模式,activity之间交换数据,activity返回结果,在Activity中添加Fragment,在Activity中实现Fragment切换

难点:activity生命周期,activity加载模式,多个activity间带值跳转

教学目标:

1、掌握activity生命周期;

2、掌握activity四种加载模式;

3、掌握activity的创建和关闭;

4、掌握使用Bundler在Activity之间交换数据;

5、掌握activity带值传递及传回返回值;

6、掌握在activity中添加fragment;

7、掌握fragment创建及切换

第7章 Android应用核心Intent 7.1 Intent对象

7.1.1 组件名称(Component Name) 7.1.2 动作(Action) 7.2 数据(Data) 7.2.1 种类(Category) 7.2.2 额外(Extras) 7.2.3 标记(Flags) 7.2.4 Intent和Activity交互 7.2.5 Intent附带数据的两种写法 7.2.6 Intent两种形式 7.3 Intent传值 7.3.1 请求码 7.3.2 结果码 7.4 说明和要求: 重点:intent附带数据传递,intent显示意图,intent隐式意图,接受activity数据,得到关闭后的activity数据,请求码,结果码 难点:intent值传递,intent值接收

教学目标:

1、掌握intent两种值传递;

2、掌握activity传递的数据

第8章 资源访问 8.1 字符串(string)资源 8.2 定义字符串资源文件 8.2.1 使用字符串资源 8.2.2 颜色(color)资源 8.2.3 颜色值的定义 8.3 定义颜色资源文件 8.3.1 Drawable资源

8.3.2 setImageResource和setImageBitmap 8.4 Android实现位图剪切 8.4.1 Android Paint

8.4.2 Android Bitmap和Canvas 8.5 Manifest

8.5.1 AndroidManifest.xml详解 8.5.2 Manifest.permiion权限

8.5.3 Manifest.permiion_group权限组 8.6 说明和要求: 重点:String资源文件,Drawable资源,样式和主题资源 难点:样式和主题资源,使用9-Patch图片实现不失真按钮背景

教学目标:

1、掌握字符串资源定义和使用;

2、掌握颜色资源定义和使用

3、掌握Drawable资源定义和使用;

4、掌握样式和主题资源定义和使用;

第9章 ContentProvider实现数据共享 9.1 Content Provider概述 9.2 URI介绍 9.2.1操作URI

9.2.2 配置Content Provider

9.2.3 通过Content Provider共享数据 9.3 查询数据 9.3.1 增加记录 9.3.2 删除记录

9.4 自定义Content Provider 9.4.1继承ContentProvider类 9.5 说明和要求: 重点:URI介绍及操作,配置Content Provider,通过Content Provider共享数据,通过ContentResolver操作共享数据,自定义Content Provider 难点:通过Content Provider共享数据,通过ContentResolver操作共享数据

教学目标:

1、掌握URI组成部分和定义;

2、掌握配置Content Provider共享数据;

3、掌握通过Content Provider共享数据;

4、掌握通过ContentResolver操作共享数据;5.掌握自定义Content Provider

第10章 BroadcastReceiver 10.1 BroadcastReceiver 概述 10.2 注册BroadcastReceiver 10.2.1动态注册 10.2.2 静态注册

10.2.3 receiver在manifest中注册和java注册有什么区别 10.3 Android 为什么动态广播接收器比静态广播接收器要接受的早 10.3.1 BroadcastReceiver类型及收发 10.4 广播类型 10.4.1普通广播 10.4.2异步广播 10.4.3广播收发 10.5 说明和要求: 重点:注册BroadcastReceiver,BroadcastReceiver三种类型,BroadcastReceiver接收和发送

难点:BroadcastReceiver接收和发送

教学目标:

1、掌握BroadcastReceiver的两种注册方式;

2、掌握BroadcastReceiver三种类型;

3、掌握BroadcastReceiver接收和发送

第11章 service服务 11.1 Service概述 11.2 Service的分类 11.2.1Service类中的重要方法 11.2.2 s的声明

11.2.3 service生命周期 11.3 注册service 11.3.1 创建Started Service 11.4 启动服务 11.4.1停止服务

11.4.2使用Meenger类 11.4.3绑定到服务 11.5 说明和要求: 重点:注册service,service生命周期,创建Started Service,创建Bound Service 难点:service生命周期,Started Service,Bound Service 教学目标:

1、掌握Service的注册方式;

2、掌握创建Started Service;

3、掌握创建Bound Service

第12章 Animation动画 12.1 frame by frame动画 12.2 tweened animation动画 12.2.1 alpha渐变透明度动画效果 12.2.2 scale渐变尺寸伸缩动画效果 12.2.3 translate画面转换位置移动动画效果 12.2.4 rotate画面转移旋转动画效果 12.3 说明和要求: 重点:frame by frame动画,在xml资源文件中定义透明,尺寸伸缩,移动,旋转四种动画,用javacode定义透明,尺寸伸缩,移动,旋转四种动画

难点:frame by frame动画跳转activity,在xml资源文件中定义透明,尺寸伸缩,移动,旋转四种动画,用javacode定义透明,尺寸伸缩,移动,旋转四种动画 教学目标:

1、掌握frame by frame动画;

2、掌握tweened动画;

第13章 网络编程及开源框架引用 13.1 通过HTTP访问网络

13.2 使用HttpURLConnection访问网络 13.3使用HttpClient访问网络 13.4 引用开源框架 13.5 Github介绍

13.5.1 Github开源项目下载 13.6 说明和要求: 重点:使用HttpURLConnection访问网络,使用HttpClient访问网络,Android多线程下载,Handler消息队列,github开源框架使用

难点:Android多线程下载,开源框架AsyncHttpClient使用

教学目标:

1、掌握http访问网络的两种方式;

2、对github上的开源框架下载及应用

推荐第8篇:Android学习心得

Android学习心得

这学期,我们新开了一门课程——android的研发。在老师们的介绍下,我们了解android的开发环境以及控件的功能。刚开始接触Android觉 得 既 陌生 又 亲 切,陌 生 在 于 没 有 学 过 具 体 的 开 发 软 件,亲 切 在于它在界面开发上和web也可以形成了相通的架构,更加方便。

一、Android简介

Android一词的本义指“机器人“,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。Android 早期由原名为\"Android\"的公司开发,谷歌在2005年收购\"Android.Inc\"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC,(

装工具在线安装。单击“android-sdk-windows.zip”链接进行SDK下载,下载该文件后解压该文件到操作系统的任意目录下。打开目录找到SDK Setup.exe可执行文件,双击执行该文件。选择\"Available Packages\",选择想安装的版本(我是全选了,省事),然后单击“InstallSelected”->选择“Accept All”,再单击“Install Accepted”就可以在线安装了。提示:如果你的“Available Packages”右侧的地址不能打开,请选择左侧列表的“Setting”选项,在右侧的设置中勾选“Fore https://......” 第二步:安装JDK A、下载JDK。Android SDK需要JDK5 以上的版本。JDK6的下载地址http://java.sun.com/javase/downloads/widget/jdk6.jsp。 B、安装JDK。下载完成后进行正常双击、安装,这里就不说了。。。 C、配置Java环境变量

1、配置Java Home。复制Java的安装路径,右键单击“我的电脑”->“属性”->“高级”—>“环境变量”中新建环境变量java_home,变量值为java安装路径。

2、配置Path。右键单击“我的电脑”->“属性”->“高级”—>“环境变量”,在“系统环境变量”中编辑Path便来了个,添加Java的bin目录到其中。变量与变量中间使用分号“;”分隔。

3、配置clapath。右键单击“我的电脑”->“属性”->“高级”—>“环境变量”,在“系统环境变量”中新建一个系统变量名称为“clapath”,变量值为半角句号“.”第三步:下载Eclipse ADT插件要求Eclipse的版本是3.3以上,Eclipse的下载网址是http://www.daodoc.com/downloads/。下载后解压可以直接使用。

(二)下载安装ADT。

这里介绍通过Eclipse在线更新的方式安装。

1、启动Eclipse,选择“Help”->“Install New Software.....”

2、单击“Add.....”添加一个更新站点(注意:站点http后面不要加s)否则可能连接失败(Name:ADT0.9.5;Location:http://dl-l.google.com/android/eclipse/)

3、添加好后,勾选“Developer Tools”单击“Next”进行更新安装。

四、应用程序基础

1.Android应用程序框架

推荐第9篇:android培训

中国移动互联网研发培训领导品牌

android培训

随着智能手机用户的不断增加,智能手机市场竞争也日趋激烈,总体市场呈现以下特点:首先,移动互联网业务应用成为智能手机市场发展的重点。移动互联网时代,消费者更看重的是移动业务应用带来的用户体验,而智能手机市场的未来发展也是围绕客户体验展开的。另一方面,数据增值业务是运营商的重要业务,运营商普及智能手机主要是为带动增值业务的发展,因此,运营商会对智能手机市场产生巨大的推动作用。android平台的产品的不断增加,必然会产生巨大的android技术人员的需求,也因此引起我android培训市场才会人气高涨。

千锋3G学院是中国最权威的Android培训基地,近几年培养了大批Android开发人才,千锋Android的讲师团队由Mars老师带领,他有近十年IT培训从业经验,2010年起无偿发布Android教学视频,六个月浏览量就突破数百万次,被称为中国Android视频教程第一人。其教学态度严谨,并随时针对企业需求,最新技术对课程进行升级。 课程链接:

千锋网站上公布的学员作品,武士战争、新浪微博、幼儿早教、股票查询、音乐随身听等,充分展现了学员的技术水平和千锋的教学效果。

千锋3G学院中国移动互联网研发培训专家

http://

推荐第10篇:Android WebView总结

Android WebView总结

1、添加权限:AndroidManifest.xml中必须使用许可\"Android.permiion.INTERNET\",否则会出web page not available错误。

2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);

3、设置WebView基本信息:

如果访问的页面中有Javascript,则webview必须设置支持Javascript。

webview.getSettings().setJavaScriptEnabled(true);

触摸焦点起作用

requestFocus();

取消滚动条

this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

4、设置WevView要显示的网页:

互联网用:webView.loadUrl(\"\"); 本地文件存放在:aets文件中

5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)

并重写其中的一些方法

shouldOverrideUrlLoading:对网页中超链接按钮的响应。

当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url

onLoadResource

onPageStart

onPageFinish

onReceiveError

onReceivedHttpAuthRequest

6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。

覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

public boolean onKeyDown(int keyCoder,KeyEvent event){

if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){

webview.goBack(); //goBack()表示返回webView的上一页面

return true;

}

return false;

}

第11篇:android应用技术简介

Android技术应用简介

摘要:近几年来,Android逐渐成为便携设备上的主要操作系统。2011年Android在全球的市场份额首次超过塞班系统,跃居全球第一。本文主要通过阐述Android的主要思想、发展状况以及核心技术来使读者对Android有一个初步的认识。

关键词:Android、linux、NDK、google

这学期我们开设了《Android应用程序开发》这门课程。这么课程开始的时候同学们都很兴奋。因为Android在现在是最为流行的操作系统。同学们大部分用的手机都是Android操作系统。所以对它的名字非常熟悉,但是对它的真正意义和具体是如何实现Android应用程序却十分陌生。同学们都希望了解到自己的手机上的应用程序到底是如何实现其功能的。所以对这门课程产生了极大的兴趣。

这门课程主要给我们介绍了Android开发环境、应用程序、生命周期、用户界面、组件通信与广播信息、后台服务、数据存储与访问、位置服务与地图应用、Android NDK开发这9个方面的内容。让我们对Android有一个初步的认知。这本书上的内容仅仅是Android程序开发的一小部分,是引导我们正确看待Android。在今后的学习中还需要我们多看关于Android的书籍,关注Android各方面的消息,多做关于Android的实验和课题。这样才能进一步了解这个当今全球最为流行的操作系统。

1、Android简介

Android是一种以linux为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。

Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。

在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:QT(qt for android)、Mono(mono for android)等一些著名编程框架也开始

支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android Simple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。

2、应用程序

早期的Android应用程序开发,通常通过Android SDK(Android软件开发包)下使用Java作为编程语言来开发应用程序,但通过不同的软件开发包,则使用的编程语言也不同。

例如开发者可以通过Android NDK(Android Native开发包)使用C语言或者C++语言来作为编程语言开发应用程序。同时谷歌还推出了适合初学者编程使用的Simple语言,该语言类似微软公司的Visual Basic语言。此外,谷歌公司还推出了Google App Inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。

3、Java开发方面

Android支持使用Java作为编程语言来开发应用程序,而Android的Java开发方面从接口到功能,都有层出不穷的变化。考虑到Java虚拟机的效率和资源占用,谷歌重新设计了Android的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。

4、C/C++开发方面

早期的Android开发只支持Java作为编程语言开发应用程序,因而使得其他语言开发者只能望而却步。2010年4月,谷歌正式对开发者发布了Android NDK,NDK允许开发者使用C/C++作为编程语言来为Android开发应用程序,初版的NDK使得开发者看到了C/C++在Android开发中的希望。

但是,当前版本的NDK在功能上还有很多局限性:NDK并没有提供对应用程序生命周期的维护;NDK也不提供对Android系统中大量系统事件的支持;对于作为应用程序交互接口的UI API,当前版本的NDK中也没有提供。但是相对于初版的NDK,现在的NDK已经进行了许多重大的功能改进。

由此可见,NDK仍然需要完善和发展,相信未来随着NDK的发展,NDK可以做得更多更好。

4.1硬件抽像层

Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。

HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 module ID,就可以取得操作函数。

4.2系统内核

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 所产生的,这样做是为了保留常数、数据结构与宏。

4.3安全权限机制

Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。

系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。

Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。

安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:

拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。

一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比较可疑。 编辑本段系统组件

Android开发四大组件分别是:活动(Activity): 用于表现功能。服务(Service): 后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(Content Provider): 支持在多个应用中存储和读取数据,相当于数据库。

4.3.1、Activity

Android 中,Activity 是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 概念和网页的概念相当类似。

一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间可以进行相互跳转,例如,按下一个Button 按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的

时候,有可能会给Activity A 一个返回值。这样做在很多时候是相当方便的。

4.3.2 、Service

Service 是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Service 是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,我们打开Android 浏览器,这个时候虽然我们已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的Service进行控制。当然这个播放音乐的Service也可以停止。

4.3.3 、注册BroadcastReceiver有两种方式:

(1)在AndroidManifest.xml进行注册。这种方法有一个特点即使你的应用程序已经关闭了,但这个BroadcastReceiver依然会接受广播出来的对象,也就是说无论你这个应用程序时开还是关都属于活动状态都可以接受到广播的事件;

(2)在代码中注册广播。

第一种俗称静态注册,第二种俗称动态注册,这两种注册BroadcastReceiver的区别:

动态注册较静态注册灵活。实验证明:当静态注册一个BroadcastReceiver时,不论应用程序是启动与否。都可以接受对应的广播。

动态注册的时候,如果不执行unregisterReceiver();方法取消注册,跟静态是一样的。但是如果执行该方法,当执行过以后,就不能接受广播了。

4.4.4、Content Provider

Content Provider 是Android提供的第三方应用数据的访问方案。

在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的。

5、心得体会

经过这一学期对Android的学习加上平时查阅的一些Android资料对Android有了一个大致的了解。开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,这十分符合现在人们的需求,特别是年轻人。Android的发展前景是毋庸置疑的,早一点的迈入这个领域,就可以更早的体验Android的乐趣。

通过Android的学习,在我们毕业之前又掌握了一项新的前沿开发技能,也有了更多的发展方向,这在以后的找工作的过程中无疑为我们增加了筹码,也可以成为我们的兴趣爱好,可以根据我们自己的需求设计一些小的程序。学习Android让我获得了很多东西,提高了自己的编程技巧和方法。这对即将毕业的我们是一次十分珍贵的充电。

6、参考文献

《Android应用程序开发》

清华大学出版社 《Android技术内幕:系统卷》

机械工业出版社

《Android系统原理及其开发要点详解》

电子工业出版社 《Android基础教程(第3版)》

人民邮电出版社

7、参考网站

www.daodoc.com

第12篇:Android实验报告—网络通信

实验三

Android网络通信

实验目的:

本实验的目的是使学生深入了解利用Intent实现进程间的通信过程。学会利用Intent进行Activity的跳转,以及链接网页信息;学会利用Intent将其他Activity的信息返回到Activity中的方法。体会Activity间通信的过程。

实验要求:

编程实现下述功能:主界面上有一个“登录”按钮和“链接网页”按钮,点击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件(如下图所示)点击“链接网页”按钮,新的Activity上面有输入Uri信息的控件,可以链接到相应的网站,在用户关闭这个Activity后,返回到主界面中

程序界面如下图所示:

[实现提示]

1、建立Android工程,其中 工程名称:WebCommunication579

包名称:cn.edu.bistu.dj1001.WebCommunication579 Activity名称:WebCommunication579

2、工程建立完毕后,首先进行界面设计,建立相应的子Layout界面

3、在工程中添加相应的.java文件,处理各个Activity的事件响应

4、在Manifest中添加新建的Activity信息,进行注册。

程序源码:

主界面java文件代码: package cn.deu.bistu.dj1001.WebCommunication579;

import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;

public cla WebCommunication579 extends Activity { private Button btnLogin,btnGoToWeb; private TextView show; private static final int SUBACTIVITY1 = 1; @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnLogin=(Button) findViewById(R.id.btnLogin); btnGoToWeb=(Button) findViewById(R.id.btnGoToWeb); show=(TextView) findViewById(R.id.A1show);

btnLogin.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent = new Intent(WebCommunication592.this, activity1.cla);

startActivityForResult(intent, SUBACTIVITY1);

}}); btnGoToWeb.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent = new Intent(WebCommunication592.this, activity2.cla); startActivity(intent); }}); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode){ case SUBACTIVITY1: if (resultCode == RESULT_OK){Uri uriData = data.getData(); show.setText(uriData.toString()); } break; }};} 界面一java文件代码:

package cn.deu.bistu.dj1001.WebCommunication579;

import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText;

public cla activity1 extends Activity { private Button btnOK,btnCancel; private EditText edtInput; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity1); edtInput=(EditText) findViewById(R.id.edtA1Input); btnOK=(Button) findViewById(R.id.btnA1OK); btnCancel=(Button) findViewById(R.id.btnA1Cancel); btnOK.setOnClickListener(new OnClickListener(){

public void onClick(View v) { String uriString = edtInput.getText().toString(); Uri data = Uri.parse(uriString); Intent result = new Intent(null, data); setResult(RESULT_OK, result); finish(); }}); btnCancel.setOnClickListener(new OnClickListener(){ public void onClick(View view){ finish(); }});}} 界面二java文件代码:

package cn.deu.bistu.dj1001.WebCommunication579;

import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle;

import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText;

public cla activity2 extends Activity { private EditText edtInput; private Button btnOK,btnCancel; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity2); edtInput=(EditText) findViewById(R.id.edtA2Input); btnOK=(Button) findViewById(R.id.btnA2OK); btnCancel=(Button) findViewById(R.id.btnA2Cancel); btnOK.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(edtInput.getText().toString())); startActivity(intent); }}); btnCancel.setOnClickListener(new OnClickListener(){

public void onClick(View v) {

finish();

}});}} 主界面的xml文件代码:

xmlns:android=\"http://schemas.android.com/apk/res/android\" android:orientation=\"Horizontal\" android:layout_width=\"fill_parent\" android:layout_height=\"fill_parent\">

android:text=\"登录\"

android:id=\"@+id/btnLogin\"

android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

android:text=\"链接网页\"

android:id=\"@+id/btnGoToWeb\"

android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

android:text=\"\"

android:id=\"@+id/A1show\" android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

界面一的xml文件代码:

android:orientation=\"Horizontal\" android:layout_width=\"fill_parent\" android:layout_height=\"fill_parent\"

xmlns:android=\"http://schemas.android.com/apk/res/android\">

android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\">

android:text=\"用户名和密码:\"

android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

android:text=\"\"

android:id=\"@+id/edtA1Input\"

android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\">

android:text=\"确定\"

android:id=\"@+id/btnA1OK\"

android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

android:text=\"取消 \"

android:id=\"@+id/btnA1Cancel\"

android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

界面二的xml文件代码:

xmlns:android=\"http://schemas.android.com/apk/res/android\">

android:text=\"\"

android:id=\"@+id/edtA2Input\"

android:layout_width=\"match_parent\"

android:layout_height=\"wrap_content\">

android:text=\"确定\"

android:id=\"@+id/btnA2OK\"

android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

android:text=\"取消\"

android:id=\"@+id/btnA2Cancel\"

android:layout_width=\"wrap_content\"

android:layout_height=\"wrap_content\">

程序运行结果:

程序包:

主界面:

点击登录按钮后:

点击确定按钮后:

点击链接网页按钮后:

点击确定按钮后:

实验心得体会:

通过本次实验深入了解了Intent实现进程间的通信过程。熟悉了利用Intent将其他Activity的信息返回到Activity中的方法,可以更熟练的使用安卓编程软件。

第13篇:Android 个人总结

Android 个人总结

通过本学期的的学习,我知道了android是由google开发的一款手机平台,android的基本架构是基于linux内核,由内核向外的反别为库和应用架构,然后就是我们手机上的可视化应用了,android是一个系统,但是并非是操作系统。

在开发之前,我们首先要搭建一个开发环境,用的是java编程的eclipse,我们从网上下载sdk包,里面包含了android开发常用的工具,android既是手机操作系统,也是跨平台(windows,mac,linux)的开发工具,虽然是使用linux为核心的平台,但是你可以在很多地方感觉到类似做网页开发的感觉。具有本身独特的进程管理方式,完整的上网功能,搭配了google地图,Gmail等服务,即使像我们这些尚未入门的开发者也能开发出自己理想的应用程序来。

刚开始的时候,得知android开发需要使用java语言心里了小小的畏惧,但随着学习的渐渐深入就会发现android平台只是使用了java的语法而已,所以,即使我们不具备java语言开发的基础,也可以放心地加入到android开发当中来。

第一节课,老师向我们详细介绍了开发界面右边窗口的内容,首先是src目录,里面包含了我们开发界面的java文件以及各种我们创建的类组成的开发包。然后是gen目录,里面涵盖的是系统的类文件(如R.java,Buidconfig.java)与android系统的依赖文件(Android Dependencies)。再下来是aets(用户资源文件),里面文件的访问是通过文件路径的形式调用。Bin文件里面包括了res资源文件,android项目配置文件androidmanifest以及我们开发之后产生的后缀为.apk的应用程序文件。Res是系统资源目录,我们要用到得图片资源,颜色资源,字符串资源都在里面。一般的开发都要用到界面文件也包含在里面。

Eclipse具有史上超豪华的手机控件,包括常用的文本文件,文本框,按钮,进度条等,还有特殊形式的email,gmail文本框,在开发过程当中,很多控件都是以拖拉的形式拖拽到开发界面上,大大地减少了我们开发时候的工作量,在配置文件中,我们可以添加各种各样的系统动作,以及系统服务,还可以建立用户自己的文件库。

当我们开发完成的时候,就可以运行手机模拟器,在上面,我们可以像操作当今市场上最流行的android手机一样操作我们的模拟器,可视化的界面可以我们随心所欲地下载我们开发的应用程序到模拟器上,就可以实现步步跟进,想要修改哪里就一目了然了,模拟器上人性化的设计界面大大方便了用户与机器之间的交流。如果我们拥有一部android系统的手机的话,就可以把自己开发的应用程序下到手机上,看到自己的成果,顿生成就感,真的很有乐趣。也加大了我对学习android的信心。

总体来说,学习android就要不怕困难,迎难而上。Android不久可以满足自己的成就感,还可以在未来的生活中找到自己理想的工作。用别人准备好的各种类,包来开发出自己独特风格的应用程序,既省时又省力,何乐而不为呢。在这里,要感谢曾老师对我的栽培和关怀,他教给了我知识,使我在学习的时候少走了很多的弯路,也增加了我对未来工作的信心。

第14篇:android简历一

Xxxx

邮箱:手机:籍贯:年龄:

职位申请: Android软件工程师

教育背景:

2011/12-2012/05oracle学习中心Android软件开发培训

2009/09-2012/06大连职业技术学院网络技术专业大专 专业技能:

 熟悉JAVA编程语言,掌握面向对象编程思想

 熟悉Android平台开发环境,熟悉Android SDK开发工具

 熟悉Android平台的应用开发

 熟悉Linux环境,以及相关的Android开发环境.

项目经历:

 基于Android平台的拼图游戏时间:两周

指定任意一张图片进行游戏,该程序把图片切割成十六个乱序的小图块,然后让用户通过移动小图块来完成拼图。在此项目中,本人负责了游戏界面的设计,在Eclipse和Android SDK的开发环境下。完成了该游戏图片的切割、打乱、图片移动算法的编码,该游戏能成功并流畅地在Android设备上运行。  智能课程表应用程序(团队合作)时间:四周

该应用程序基于在客户端的数据库存放学校、院系、专业、课程等数据从而进行大学课表的设置;通过专业定位到自己所修课程在上课时间的设置,手机自动静音或震动;有显示课表功能供;智能课表让大学生可以不用再去记繁琐的上课时间,设置完成后在上课之前自动提醒,课上自动调成静音或者震动。本人参与了需求分析,整体功能,以及客户端应用程序UI模块的设计。在项目中负责了一些界面的处理和功能的实现,还有项目中数据库的建立和数据库与项目的连接。

 Android平台的俄罗斯方块时间:二周

该项目是本人独立在Android中实现的俄罗斯方块程序,是一款相当经典的小游戏,游戏中没有特别难的开发发面的东西,主要是在surfaceview中实现的,游戏主要是靠在画布中进行一些判断。最大的难点就是不同方块的模型的建立,把模型建立好了以后,就可以利用这些模型在游戏中进行运算,从而实现俄罗斯方块的功能。

实训经历:

 北京市北邮3G培训机构2011.09-2012.03实习培训

主要学习Android软件应用与开发理论,JAVA编程语言,以及其他软件开发理论。在老师的指导下,通过不断实践训练,提高了软件开发水平,为以后工作打下了扎实的基础。

兴趣爱好

看书、围棋、篮球、旅游

培训课程

 Android布局的概念,Android菜单介绍,常用UI组件的使用和总结

 了解Android3D动画实现

 对Android项目的开发与实践

自我评价

本人热爱学习,对于软件开发很感兴趣,快速学习能力强。爱思考并喜欢创新。对工作认真负责,善于团队合作、有较强的团队沟通能力、能吃苦耐劳。Android的巨大魅力吸引我愿意用巨大热情投入到与之相关的开发工作中。而且我也相信,在我扎实的专业知识基础上能给贵公司献上我的一份薄力。

第15篇:Android程序员个人简历

Android程序员个人简历范文

Android工程师是指从事Android移动应用操作系统、游戏和各种Android平台功能的应用、开发和测试的技术人员。下面小编就为大家带来关于Android程序员个人简历范文,供大家参考。

范文一

基本信息

姓名:

性别:男

民族:汉

婚姻状况:未婚

年龄:25

户 籍:广东珠海

现所在地:珠海

身高:

联系电话:×××××××××××

电子邮箱:×××

求职意向

求职目标:Android 程序员

期望月薪:面议

求职类型:全职

到岗时间:随时

项目经历

时间:

项目名称:TingAndroid 音乐播放器

项目简介:该款 App 界面设计使用的是 Material Design,遵循 Google 设计规范 , 界面开起来清新简洁,目前 App 只能获取 Ting 音乐社交站上用户分享的前 20 首歌曲 , 以及歌曲评论信息,App 可以在线播放从 Ting 站上取回来的歌曲,也能播放本地歌曲,播放本地歌曲可以进行随机播放、循环播放、单曲循环播放,使用到的开源库有:Picao、Volley、Gson等.

时间:

项目名称:门窗 DIY 软件Android

该款软件运行环境是安卓手机以及平板电脑,面向的用户是门厂销售人员,主要用来为客户介绍展示门与门框款式,以及让客户进行门与门框的搭配并收藏起来,同时也能将收藏的搭配删除 ,该款软件有些图片是绑定在安装包当中的,当安装完软件第一次启动时会把图片写入到 SDcard 当中,图片取出来使用 Picao 库对图片进行缓存处理.

时间:

项目名称:个人博客站

该站前台使用到BootStarp响应式框架,后台服务端主要使用Jsp+Servlet ,实现基本博客站功能:发文章,阅读文章,对文章评论,博主管理所有文章,修改密码,更换头像.

教育背景

毕业院校:xx职业技术学院

最高学历:大专

毕业日期:XX07

专 业:软件技术

主修课程:Java程序与设计、软件测试、大学英语听说、Jsp Web开发、站前台开发技术(含XML技术)、SQLServer管理和查询数据、Android应用程序开发等

语言能力

外语:英语 良好

国语水平:优秀

粤语水平:一般

个人技能

编程语言:熟悉 Android 和 Java,了解 JavaWeb、HTML和 JavaScript

编程环境:Android Studio、Sublime Text

3、MyEclipseXX

喜欢 Android 开发,具备一定的软件分析、设计、开发和应用能力,拥有较强的学习能力与团队精神,能够很快的适应工作环境。

范文二

基本信息

姓名:

性别:男

民族:汉

婚姻状况:未婚

出生年月:1989125

目前所在地:北京

联系电话:×××××××××××

电子邮箱:×××

求职意向

寻求职位: 安卓工程师

求职地区: 北京

工资待遇: 6000

到岗时间: 随时到岗

工作经历

就职公司: ××××××科技有限公司

公司行业: 计算机软件

工作描述: 参与安卓项目的设计和编写

技能专长: 1.熟练使用JSP、Servlet、Jdbc等进行Java Web的编程开发。

2.熟练使用Eclipse、MyEclipse、VS等IDE开发工具。

3.熟练应用Apache、Tomcat、WebLogic等服务器进行Java Web的开发配置和部署。

4.熟悉Oracle、Sql Server ,了解MySQL等数据库应用开发。

5.熟练运用SVN、CVS版本控制工具进行项目的配置管理。

6.了解UML统一建模语言,能够使PowerDesigner等建模工具。

7.熟悉Linux的基本操作。

为人诚恳、自信,工作中踏实、沉稳、积极进取且有耐心,具有良好的心理素质和抗压能力,能适应加班。

第16篇:Android 课程设计报告

课 程 设 计

课程名称: 嵌入式技术课程设计 设计题目: 基于Android系统的小查询工具 学 院: 信息工程与自动化学院 专 业: 计算机科学与技术 年 级: 2010级 学生姓名: 指导教师: 日 期: 2013/7/8

教 务 处 制

课 程 设 计 任 务 书

信息工程与自动化 学院 计算机科学与技术 专业 2010 年级 学生姓名:

课程设计题目: 基于Android系统的小查询工具 课程设计主要内容:

通过本课程设计,使学生巩固软件工程的基本概念、原理,熟悉安卓应用开发环境和技术,学会完成一个移动终端应用软件的分析、设计、编码测试和安装,将理论与实际相结合,强化学生的项目开发和团队意识,提高学生分析能力和创新能力

基本理论

1、Android系统的开发方法及基本原理

2、JavaEE应用程序设计开发技术 实验方法与基本要求

要求学生掌握Windows环境下Android系统开发的一般方法,AndroidSdk 集成开发环境的构建及JavaEE应用程序的开发。整个设计过程必须由学生自己独立完成,课程设计按二人一组,分组进行全过程的设计。

设计内容

1、Windows环境下构建Android系统的开发环境

2、基于Android模拟手机,设计手机应用程序

3、将程序下载的Android手机上应用

设 计 指 导 教 师 (签字): 教学基层组织负责人(签字):

年 月 日

目录

一、课程设计的目的及要求...................................3 1.1 课程设计的目的.......................................3 1.2 课程设计要求………………………………………………………………………3

二、Android应用程序开发背景....................................................................3 2.1开发背景...............................................3 2.2开发环境...............................................4

三、Android应用程序开发环境搭建............................5 3.1所需软件的下载…………………………………………………………………… 5 3.2相应软件的安装.........................................5

四、“小查询工具”的设计与实现„„„„„„„„„„„„„„„10 1.总体设计„„„„„„„„„„„„„„„„„„„„„„„ 10 1)界面设计„„„„„„„„„„„„„„„„„„„„„10 2)功能设计„„„„„„„„„„„„„„„„„„„„„12 2.详细设计„„„„„„„„„„„„„„„„„„„„„„„ 12 1)模块设计„„„„„„„„„„„„„„„„„„„„„12 2)编码实现„„„„„„„„„„„„„„„„„„„„„12 3.手机上运行截图„„„„„„„„„„„„„„„„„„„„ 14

五、总结与体会„„„„„„„„„„„„„„„„„„„„„„„16

基于Android系统的小查询工具设计

一、课程设计的目的及要求 1.1 课程设计的目的

1) 复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;搭建一个完整的安卓开发环境。

2) 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力;

3) 培养学生在项目开发中团队合作精神,创新意识及能力。

1.2 课程设计要求

1)通过Eclipse搭建一个完整的安卓开发环境。

2)在安卓开发环境上编写一个简单的安卓软件,并且能够在手机上运行。

二、Android应用程序开发背景 2.1开发背景

1.智能手机的市场

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

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

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

- 345

在path变量(已存在不用新建)添加变量值:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin(注意变量值之间用“;”隔开)

检验环境变量是否配置成功:“开始”-->“运行”-->输入“javac”-->\"Enter\",如果能正常打印用法说明配置成功!

- 7选择目标工具所在的文件夹跳出安装工具的目录

勾选目录点击Next,即可开始安装; 安装的详细目录:

安装完成后,可以在Preference处查找到:

4.安装SDK(SDK解压即可使用)

安装好以后,通过SDK下载开发所需的源文件包:

这个操作只有在联网的时候才能进行下载。

四、“小查询工具”的设计与实现

1. 总体设计

1)界面设计

主界面:

- 102)功能设计

对于这次课程设计编写的小查询工具,我们需要它能够帮助我们完成的功能为:手机归属地查询、身份证信息查询、区号邮编城市查询。对于小查询工具的每个查询功能,当用户点击相应的功能时,它能够帮助用户查询用户所需要的信息。

2.详细设计

1)模块设计

I、主界面模块(选题模块)

该模块是查询软件的主界面,在该模块界面有三个功能:手机归属地查询、身份证信息查询、区号邮编城市查询。用户根据自己所要查询的信息,选择相应的功能就可以查询用户想知道的信息。 II、手机归属地查询模块

在该模块中,当用户在输入框中输入一个正确的号码时,点击“开始查询”按钮,就可以查询到该手机号码的归属地。 III、身份证信息查询模块

在该模块中,当用户在输入框中输入一个正确的身份证号码时,再点击“开始查询”按钮,就可以查询到该身份证号码所代表的人的生日、性别以及出生地址。 IV、区号邮编城市查询模块

在该模块中,当用户在输入框中输入一个正确的区号或者邮编或者城市名称时,点击“开始查询”按钮,就可以查询到其对应的省份、城市、区号、邮编以及归属地。

2)编码实现:

各包内的JAVA源文件:

- 12

界面切换等活动的基本代码:

3.手机上运行截图

手机截图:

- 1516 -

第17篇: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的认识。

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

第18篇: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键或其它键盘设置。同样的,一些设备可 能有触摸屏,但一些也会没有。当创建你的应用程序的时候,记住这一点。不要假定特定的键盘布局——除非你真的想限定你的应用程序只运行在某些设备上。

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

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

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

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

第19篇:Android面试总结

1.activity的生命周期。

activity主要生命周期的方法说明:

onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!

onStart():activity变为在屏幕上对用户可见时调用。

onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。

onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!

onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。

onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。

onDestroy():activity被完全从系统内存中移除时调用,该方法被

2.横竖屏切换时候activity的生命周期

3.android中的动画有哪几类,它们的特点和区别是什么

两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

{Android的animation由四种类型组成 XML中

alpha 渐变透明度动画效果 scale渐变尺寸伸缩动画效果

translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果

JavaCode中

AlphaAnimation ScaleAnimation 渐变透明度动画效果 渐变尺寸伸缩动画效果

TranslateAnimation画面转换位置移动动画效果 RotateAnimation 画面转移旋转动画效果

Android动画模式

Animation主要有两种动画模式: 一种是tweened animation(渐变动画) XML中 JavaCode alpha AlphaAnimation scaleScaleAnimation

一种是frame by frame(画面转换动画) XML中 JavaCode translate TranslateAnimation rotate RotateAnimation

}

4.handler机制的原理:

andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Meage Exchange)。

1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Meage Queue(消息队列)。

2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Meage Queue里;或者接收Looper从Meage Queue取出)所送来的消息。

3) Meage Queue(消息队列):用来存放线程放入的消息。

4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Meage Queue

5.说说activity,intent,service是什么关系

[教程] 新手入门之应用解析(Activity、Intent、Service等)

Activity, Intent, Service, IntentReceiver, ContentProvider 一般刚开始学Android时对这些基本的东西还是要明确一下的,下面的东西摘自新版android开发教程里面的,介绍比较简单,希望能够有帮助。

一、Activity

Activity是android中最今本的应用程序组件,应用程序中,一个Activity通常是一个单独的屏幕,每一个Activity都被实现为一个单独的类,这些类都是从Activity基类中继承来的,Activity类会显示由视图控件组成的用户接口,并对视图控件的事件做出响应。一个复杂的应用是由多个屏幕显示组成。这里每一个屏幕的显示就是一个Activity,从一个屏幕的显示到另一个新屏幕的显示并完成相关的事件是很容易实现的,这些屏幕Activity是相互交互的,他们直接通信从而完成相应的功能。当一个新的屏幕打开时,前一个屏幕将会暂停,并保存在历史堆栈中,用户可以从历史堆栈中返回前一个屏幕。当屏幕不再使用时,我们可以从历史堆栈中删除它,默认情况下,Android会保留从主屏幕到每一个应用的运行屏幕。 Activity代表一个用户所能看到的屏幕,Activity主要是处理一个应用的整体性工作,如监听系统事件(按键、触摸屏幕等)、为用户显示指定的View、启动其他Activity等,其他的Activity继承Activity基类后,通过重写父类的方法来实现各种功能。

二、Intent

Android专有类Intent的调用是用来进行架构屏幕之间的切换的。Intent是描述应用想要做什么。Intent数据结构中两个最重要的部分是动作和动作对应的数据,典型的动作类型有:Main(活动的门户)、View、Pick、Edit等,而动作对应的数据是应URI的形式进行表示的,这里的URI就相当于这些动作的ID,一个动作对应一个动作数据。Android使用了Intent这个特殊类,实现在屏幕与屏幕之间的移动。Intent类用用来描述一个应用将会做什么事情。与之有关系的一个类叫IntentFilter类,相对于intent是一个有效的做事情的请求,一个IntentFilter则用于描述一个Activity(或者IntentReceiver)能够操作那些intent。一个Activity如果要显示一个人的联系方式时,需要事先声明一个IntentFilter,这个IntentFilter要知道怎么去处理View动作和表示一个人的URI,IntentFilter需要AndroidManifest.xml中 定义,如AndroidManifest.xml中的:

通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,activity 将会调用startActivity(IntentmyIntent)方法。然后,系统会在所有安装的应用程序中定义的IntentFilter 中查找,找到最匹配myIntent 的Intent 对应的activity。新的activity 接收到myIntent 的通知后,开始运行。当startActivity 方法被调用将触发解析myIntent 的动作,这个机制提供了两个关键好处:

A、Activities 能够重复利用从其它组件中以Intent 的形式产生的一个请求;

B、Activities 可以在任何时候被一个具有相同IntentFilter 的新的Activity 取代。

三、IntentReceiver

当你希望你的应用能够对一个外部的事件(如当电话呼入时,或者数据网络可用时,或者到了晚上时)做出响应,你可以使用一个IntentReceiver。虽然IntentReceiver 在感兴趣的事件发生时,会使用NotificationManage通知用户,但它并不能生成一个UI。IntentReceiver 在AndroidManifest.xml 中注册,但也可以在代码中使用Context.registerReceiver()进行注册。当一个intentreceiver 被触发时,你的应用不必对请求调用intentreceiver,系统会在需要的时候启动你的应用。各种应用还可以通过使用Context.broadcastIntent()将它们自己的intentreceiver 广播给其它应用程序。

四、Service

一个Service 是一段长生命周期的,没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity 会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service 一直执行,直到这个service 运行结束。另外,我们还可以通过使用Context.bindService()方法,连接到一个service 上(如果这个service 还没有运行将启动它)。当连接到一个service 之后,我们还可以service 提供的接口与它进行通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。

五、Content Provider

Android 应用程序能够将它们的数据保存到文件、SQLite 数据库中,甚至是任何有效的设备中。当你想将你的应用数据与其它的应用共享时,内容提供器就可以发挥作用了。因为内容提供器类实现了一组标准的方法,从而能够让其它的应用保存或读取此内容提供器处理的各种数据类型。数据是应用的核心。在Android 中,默认使用鼎鼎大名的SQLite 作为系统DB。但是在Android 中,使用方法有点小小的不一样。在Android 中每一个应用都运行在各自的进程中,当你的应用需要访问其他应用的数据时,也就需要数据在不同的虚拟机之间传递,这样的情况操作起来可能有些困难(正常情况下,你不能读取其他的应用的db 文件),ContentProvider 正是用来解决在不同的应用包之间共享数据的工具。

1、所有被一个Android 应用程序创建的偏好设置,文件和数据库都是私有的。

6.android中线程与线程,进程与进程之间如何通信

1、一个 Android 程序开始运行时,会单独启动一个Proce。

默认情况下,所有这个程序中的Activity或者Service都会跑在这个Proce。

默认情况下,一个Android程序也只有一个Proce,但一个Proce下却可以有许多个

Thread。

2、一个 Android 程序开始运行时,就有一个主线程Main Thread被创建。该线程主要负责UI界面的显示、更新和控件交互,所以又叫UI Thread。

一个Android程序创建之初,一个Proce呈现的是单线程模型--即Main Thread,所有的任务都在一个线程中运行。所以,Main Thread所调用的每一个函数,其耗时应该越短越好。而对于比较费时的工作,应该设法交给子线程去做,以避免阻塞主线程(主线程被阻塞,会导致程序假死现象)。

3、Android单线程模型:Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。如果在子线程中直接修改UI,会导致异常。

Android中Handler、Thread(HanlderThread)、Runnable之间的关系

首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。 HandlerThread顾名思义就是可以处理消息循环的线程,他是一个拥有Looper的线程,可以处理消息循环。与其说Handler和一个线程绑定,不如说Handler是和Looper一一对应的。最后需要说明的是,在UI线程(主线程)中: mHandler=new Handler(); mHandler.post(new Runnable(){ void run(){ //执行代码... } }); 这个线程其实是在UI线程之内运行的,并没有新建线程。

常见的新建线程的方法是: Thread thread = new Thread(); thread.start(); HandlerThread thread = new HandlerThread(\"string\"); thread.start();

7.widget相对位置的完成在antivity的哪个生命周期阶段实现

onStart

8.说说mvc模式的原理,它在android中的运用 : MVC(Model_view_contraller)”模型_视图_控制器”。 MVC 应用程序总是由这三个部分组成。 Event(事件)导致 Controller改变 Model 或View,或者同时改变两者。只要 Controller改变了 Models 的数据或者属性,所有依赖的 View 都会自动更新。类似的,只要 Controller改变了 View,View会从潜在的 Model 中获取数据来刷新自己。

9.说说在android中有哪几种数据存储方式

在Android中,可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库方式、内容提供器(Content provider)和网络

10.android中有哪几种解析xml的类,官方推荐哪种?以及它们的原理和区别

DOM、SAX(Simple API for XML)、XmlPullParser

11.listview你是怎么优化的。

Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会占用极大的系统资源?

先看看下面的代码:

public View getView(int position, View convertView, ViewGroup parent) {

View item = mInflater.inflate(R.layout.list_item_icon_text, null);

((TextView) item.findViewById(R.id.text)).setText(DATA[position]);

((ImageView) item.findViewById(R.id.icon)).setImageBitmap(

(position & 1) == 1 ? mIcon1 : mIcon2);

return item;

}

怎么样?如果超过1000000项时,后果不堪设想!您可千万别这么写!

我们再来看看下面的代码:

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

convertView = mInflater.inflate(R.layout.item, null);

}

((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]);

((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap(

(position & 1) == 1 ? mIcon1 : mIcon2);

return convertView;

}

怎么样,上面的代码是不是好了很多?系统将会减少创建很多View。性能得到了很大的提升。

还有没有优化的方法呢? 答案是肯定的:

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder;

if (convertView == null) {

convertView = mInflater.inflate(R.layout.list_item_icon_text, null);

holder = new ViewHolder();

holder.text = (TextView) convertView.findViewById(R.id.text);

holder.icon = (ImageView) convertView.findViewById(R.id.icon);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.text.setText(DATA[position]);

holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);

return convertView;

}

static cla ViewHolder {

TextView text;

ImageView icon;

}

怎么样?会不会又给您的系统带来很大的提升呢?看看下面三种方式的性能对比图您就知道了!

12.view的刷新

Android中对View的更新有很多种方式,使用时要区分不同的应用场合。我感觉最要紧的是分清:多线程和双缓冲的使用情况。

1.不使用多线程和双缓冲

这种情况最简单了,一般只是希望在View发生改变时对UI进行重绘。你只需在Activity中显式地调用View对象中的invalidate()方法即可。系统会自动调用 View的onDraw()方法。

2.使用多线程和不使用双缓冲

这种情况需要开启新的线程,新开的线程就不好访问View对象了。强行访问的话会报:android.view.ViewRoot$CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views.

这时候你需要创建一个继承了android.os.Handler的子类,并重写handleMeage(Meage msg)方法。android.os.Handler是能发送和处理消息的,你需要在Activity中发出更新UI的消息,然后再你的Handler(可以使用匿名内部类)中处理消息(因为匿名内部类可以访问父类变量, 你可以直接调用View对象中的invalidate()方法 )。也就是说:在新线程创建并

发送一个Meage,然后再主线程中捕获、处理该消息。

3.使用多线程和双缓冲

Android中SurfaceView是View的子类,她同时也实现了双缓冲。你可以定义一个她的子类并实现SurfaceHolder.Callback接口。由于实现SurfaceHolder.Callback接口,新线程就不需要android.os.Handler帮忙了。SurfaceHolder中lockCanvas()方法可以锁定画布,绘制玩新的图像后调用unlockCanvasAndPost(canvas)解锁(显示),还是比较方便得。

13.IPC及原理

什么是Android操作系统,所谓的Android:是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟Open Handset Alliance)开发。

Linux系统中进程间通信的方式有:socket, named pipe,meage queque, signal,share memory。Java系统中的进程间通信方式有socket, named pipe等。android应用程序理所当然可以应用JAVA的IPC

机制实现进程间的通信,

取而代之的是Binder通信。Google为什么要采用这种方式呢,这取决于Binder通信方式的高效率。 Binder通信是通过linux的binder driver来实现的。Binder通信操作类似线程迁移(thread migration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回。 Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。Android中的Binder通信是基于Service与Client的,所有需要IBinder通信的进程都必须创建一个IBinder接口。

系统中有一个进程管理所有的system service,Android虚拟机不允许用户添加非授权的System service,当然现在源码开发了,我们可以修改一些代码来实现添加底层system Service的目的。

对用户程序来说,我们也要创建server,或者Service用于进程间通信,这里有一ActivityManagerService管理JAVA应用层所有的service创建与连接(connect)。disconnect,所有的 Activity也是通过这个service来启动,加载的。ActivityManagerService也是加载在Systems Servcie中的。

Android虚拟机启动之前系统会先启动service Manager进程,service Manager打开binder驱动,并通知binder kernel驱动程序这个进程将作为System Service Manager。然后该进程将进入一个循环,等待处理来自其他进程的数据。用户创建一个System service后,通过defaultServiceManager得到一个

远程ServiceManager的接口。

通过这个接口我们可以调用 addService函数将System service添加到Service Manager进程中,然后client可以通过getService获取到需要连接的目的Service的IBinder对象。这个IBinder是 Service的BBinder在binder kernel的一个参考,所以service IBinder 在binder kernel中不会存在相同的两个

IBinder对象。

每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binder kernel访问service对象中的方法。Client与Service在不同的进程中,通过这种方式实现了类似线程间的迁移的通信方式,对用户程序而言当调用Service返回的IBinder接口后,访问Service中的方法就

如同调用自己的函数。 实现接口时有几个原则:

抛出的异常不要返回给调用者.跨进程抛异常处理是不可取的。IPC调用是同步的。如果你知道一个IPC服务需要超过几毫秒的时间才能完成地话,你应该避免在Activity的主线程中调用。

也就是IPC调用会挂起应用程序导致界面失去响应.这种情况应该考虑单起一个线程来处理,能在

AIDL接口中声明静态属性。IPC的调用步骤:

1.声明一个接口类型的变量,该接口类型在.aidl文件中定义。

2.实现ServiceConnection。

3.调用ApplicationContext.bindService(),并在ServiceConnection实现中进行传递.4.在ServiceConnection.onServiceConnected()实现中,你会接收一个IBinder实例(被调用的Service).调用 YourInterfaceName.Stub.asInterface((IBinder)service)将参数转换YourInterface类型。

5.调用接口中定义的方法。你总要检测到DeadObjectException异常,该异常在连接断开时被抛

出。它只会被远程方法抛出。

6.断开连接,调用接口实例中的ApplicationContext.unbindService()

14.Android多线程

在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数,一般都是一个带有循环的函数,来处理某些数据,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结束,线程就销毁。对于那些需要控制的线程,一般我们都是和互斥锁相互关联,从而来控制线程的进度,一般我们创建子线程,一种线程是很常见的,那就是带有消息循环的线程。

消息循环是一个很有用的线程方式,曾经自己用C在Linux下面实现一个消息循环的机制,往消息队列里添加数据,然后异步的等待消息的返回。当消息队列为空的时候就会挂起线程,等待新的消息的加入。这是一个很通用的机制。 在Android,这里的线程分为有消息循环的线程和没有消息循环的线程,有消息循环的线程一般都会有一个Looper,这个事android的新概念。我们的主线程(UI线程)就是一个消息循环的线程。针对这种消息循环的机制,我们引入一个新的机制Handle,我们有消息循环,就要往消息循环里面发送相应的消息,自定义消息一般都会有自己对应的处理,消息的发送和清除,消息的的处理,把这些都封装在Handle里面,注意Handle只是针对那些有Looper的线程,不管是UI线程还是子线程,只要你有Looper,我就可以往你的消息队列里面添加东西,并做相应的处理。

但是这里还有一点,就是只要是关于UI相关的东西,就不能放在子线程中,因为子线程是不能操作UI的,只能进行数据、系统等其他非UI的操作。

15.Android为什么要设计4大组件,他们之间的联系,不设计行不行(主要是为了实现MVC模式,然而java中最难的模式也是这个,很少有产品能将这个模式做得很好【Technicolor

的面试官问的这个】

16,service的周期,activity的周期,谈下你对Android内部应用的了解,比如他做电话,以及联系人等等应用。框架层有很多东西还是多看看,熟悉Android怎么做的,不管你做应用程开发还是应用框架层开发很有好处的。 在就是你项目经验,突出你遇到什么难点,然后是怎么解决的!尽量将每个技术点凸显出来,当然面试官有时候会为了体现你是否真正做过,他会问你,你在这个应用中做那个模块,用了多少个类之类的问题。 偶尔有的面试官会问你,你用过Android自带的单元测试了没,怎么用的?当然我面试过很多家单位,有 的是做平板,手机,数字电视,有的是做出个erp之类的客户端等等,出于前面的三个,基本上都是将Android的全部改掉,如果真正要做Android的话,大家要学的还很多。 总之,一句话,什么样的面试官都有,去面试的时候要做好一切心理准备,不管是技术还是基础都得扎实。一个人的交谈能力也很重要,总之不是非常标准的普通话,最起码你说的得让别人听得懂,而且得把面试官讲得非常彻底,这样你获得offer的机会更大,谈工资也有优势~~当然曾经一家公司的面试官跟我说过,技术是不惜钱的,只要你有能力,多少钱他都请。_ 确实,来北京求职期间,牛人真的很多,而且有的面试官也非常好,给了很多忠肯的意见。并不是每个面试官都特想为难你的~最主要的还是想知道你的技术,因为他们也是吃公司饭,得为这个负责。

Basic:

1.基本的UI控件和布局文件

2.UI配套的Adapter的使用

3.Activity, Intent,Service,broadCast Receiver他们的生命周期管理熟悉一下

4.操作手机上的数据库SQLite应用

17.为什么看好 Android

对于开发人员来讲:上手容易,入门简单,api齐全,适应性强 对于用户来讲:软件丰富,系统稳定,功能齐全 对于开发商来讲:可定制性高,开发成本低,免费。

18.现在在公司做哪些工作(关于 Android) 错

手机软件开发一般是分平台的,目前比较火的是iPhone和Android手机平台上的软件开发。

一般大学计算机毕业,都会学过相应的编程语言,比如C或C++,有这两种语言做为基础,相信你可以快速去掌握其他的编程语言。

如果你想从事iPhone平台上的开发就要去学习Obj-C语言,想从事Android平台上的就学习Java语言,除了掌握语言以后,还有的就是不同平台上的开发工具。

如果你想从事手机软件开发方面的工作的话,我建议你可以选择一家专业的移动互联网开发培训学校,参加专业的培训能帮助你更系统更扎实的掌握目前最先进的技术

19.Android 的框架以及一些基础知识

20.Android 一些方面的领悟(如Android框架的 IoC特性,View System 的状态机机制等)

21.对多线程的运用和理解,及多线程之间handle的传值。

22.对android 虚拟机的理解,包括内存管理机制垃圾回收机制。

23.framework工作方式及原理,Activity是如何生成一个view的,机制是什么。

24.android本身的一些限制,不如apk包大小限制,读取大文件时的时间限制。

25.Linux中跨进程通信的集中方式

1.socket;

2.name pipe命名管道; 3.meage queue消息队列; 4.singal信号量;

5.share memory共享内存;

26.dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念

DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。

27.sim卡的EF 文件有何作用

sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本 身可以有自己的操作系统,EF就是作存储并和手机通讯用的

28.AT命令的User case的概念

1、Use Case的作用:

我个人认为Use Case仅仅用来反映用户需求,并且在对象分析过程中,能够起到一个查漏补缺的作用。但是使用“先确定Use Case,再指认对象”实在是一种愚蠢的方法(恕我直言)。我个人认为,指认对象使用Yourdon在《Objuect Oriented Analysis》中提到的使用CheckList的方法在实践中是比较实用的。我近来读到的几本书,也印证了我的想法。就我我个人在实践中的经验,使用“首先确定Use Case”策略,非常容易导致分析员滑入“功能分解”的泥沼。而且从Use Case来导出对象将导致拙劣的分析模型。

2、Use Case之间的关系:

UML 1.3中,Use Case之间的关系只有3种,Generalization,Include和Extend,国内出版的关于UML的中文书有两本,一本是《UML从入门到精通》(其实应该叫做Rose入门),一本是北航的《面向对象的可视化建模技术》,后一本书在这个方面起到了很坏的作用(前一本书我没有怎么看,大概也好不到哪里去),一是使用了比较老的UML标准,比如使用了Use关系,而且对于Extend和Generalization关系的描述也很混乱,很多人受到了误导(尤其是Extend关系)。我建议有条件的网友尽量去看英文原版的著作,比如“UML三剑客”的《Unified Modeling Language User Guide》或者直接去读UML1.3的规范。(而且Use Case之间的关系是用虚线+箭头表示的,直到Rose 2000对此都没有支持)

3、Actor和Use Case之间的关系:

在UML 1.3之中,Actor和Use Case之间的关系应该是没有箭头的。虽然规范中并没有明确禁止使用箭头,但是从字句中隐含的意义来看,应该是没有箭头的,而且规范中给出的示例是没有箭头的。我认识的很多人,想当然的认为Actor和Use Case之间的关系上的箭头标示信息流向或者主/被动关系,其实这个关系仅仅表示某个Actor参与了某个Use Case。

29﹑Android 手机操作系统的四层架构?

架构框架以此从上到下:

1.Applications

(应用程序(应用层));

Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用 JAVA 语 言编写的。

2.Application FrameWork

(应用程序扩展层(框架));

由于 Android 的手机操作系统是,基于 Liunx 2.6 系统之上封装而成。所以开发人员可也以直接访问核心程序所使用的API框架,该核心应用程序的API框架设计简化了组件的重用,任何一个核心应用程序(模块)都暴露出它的功能作用,并且其他应用程序也都可以使用该核心应用程序(模块)的功能(不过的遵守该核心应用程序框架的安全性限制)。同样,该应用程序的重用机制也使用户方便使用应程序的相关组件。API 框架隐藏的核心应用程序是一系列的应用程序的服务和系统应用,其中包括如下:

(Android 手机中的 View 是最基本的一个 UI 类) 丰富而又可扩展的视图(手机界面所显示的组件(Activity上所显示的))组件,可以用来构建应用程序

如:(视图)Views, 网格(grids), 文本框(text boxes), 按钮(button), 放置图片区(imageview),文本编辑区

(edittext), 文本显示区(textview),

3.Android RunTime Libraries

(Android 系统运行库);

4.Liunx Kernel

(Android 系统最底层核心系统 Liunx)

Android 的核心系统服务依赖于 Liunx 2.6 内核,如系统安全,内存管理,进程管理,

网络协议栈和驱动模型。Liunx 内核也同时作为硬件和软件栈之间的抽象层。

30、Android dvm的进程和 Linux 的进程, 应用程序的进程是否为同一个概念

DVM 指 dalivk 的虚拟机。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。而每一个 DVM 都是在 Linux 中的一个进程,所以说可以认为是同一个概念。

31、sim卡的 EF 文件有何作用

sim 卡的文件系统有自己规范,主要是为了和手机通讯,sim 本身可以有自己的操作 系统,EF就是作存储并和手机通讯用的

32、嵌入式操作系统内存管理有哪几种,

各有何特性

页式,段式,段页,用到了 MMU,虚拟空间等技术

33.什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以 处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并 控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、

军事设备、

航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而 android 是基于 linux 内核的,因此属于软实时。

34、一条最长的短信息约占多少 byte?

中文 70(包括标点),英文 160,160 个字节

1.2.3.4.5.6.7.8.9.10.11.12.13.14.什么是Activity?

请描述一下Activity生命周期。

两个Activity之间跳转时必然会执行的是哪几个方法。

横竖屏切换时候Activity的生命周期。

如何将一个Activity设置成窗口的样式。

你后台的Activity被系统 回收怎么办?

如何退出Activity?如何安全退出已调用多个Activity的Application?

如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?

两个Activity之间怎么传递数据?

怎么让在启动一个Activity是就启动一个service?

同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?

Activity怎么和service绑定,怎么在activity中启动自己对应的service? 什么是Service以及描述下它的生命周期。

Service有哪些启动方法,有什么区别,怎样停用Service?

15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?

什么是IntentService?有何优点? 什么时候使用Service?

请描述一下Intent 和 Intent Filter。 Intent传递数据时,可以传递哪些类型数据? 说说Activity,Intent,Service是什么关系 。 请描述一下Broadcast Receiver。

在manifest和代码中如何注册和使 用 broadcast receiver 。 请介绍下ContentProvider是如何实现数据共享的。 请介绍下Android的数据存储方式。

为什么要用ContentProvider?它和sql的实现上有什么差别? 请介绍下Android中常用的五种布局。

谈谈UI中, Padding和Margin有什么区别?

widget相对位置的完成在antivity的哪个生命周期阶段实现。

请解释下在单线程模型中Meage、Handler、Meage Queue、Looper之间的关系。 AIDL的全称是什么?如何工作?能处理哪些类型的数据?

请解释下Android程序运行时权限与文件系统权限的区别。

系统上安装了多种浏览器,能否指定某浏览器访问指定页面?

对多线程的运用和理解,及多线程之间handle的传值。 对android虚拟机的理解,包括内存管理机制垃圾回收机制。

Framework工作方式及原理,Activity是如何生成一个view的,机制是什么。 android本身的一些限制,比如apk包大小限制,读取大文件时的时间限。 如何加载的音乐信息,如何改善其效率。

ListView如何提高其效率?

启动应用后,改变系统语言,应用的语言会改变么?

启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?

Android程序与Java程序的区别?

Android中Task任务栈的分配。

在Android中,怎么节省内存的使用,怎么主动回收内存?

不同工程中的方法是否可以相互调用?

在Android中是如何实现判断区分通话记录中的电话状态,去电,来电、未接来电?

dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念

sim卡的EF 文件有何作用

如何判断是否有SD卡?

嵌入式操作系统内存管理有哪几种, 各有何特性。

什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗? 一条最长的短信息约占多少byte? Linux中跨进程通信的几种方式 。 谈谈对Android NDK的理解。

谈谈Android的优点和不足之处。

Android系统中GC什么情况下会出现内存泄露呢? Android UI中的View如何刷新。 简单描述下Android 数字签名。 什么是ANR 如何避免它?

59.60.61.62.63.64.65.66.android中的动画有哪几类,它们的特点和区别是什么?

handler机制的原理。

android中线程与线程,进程与进程之间如何通信。

说说mvc模式的原理,它在android中的运用。

android中有哪几种解析xml的类,官方推荐哪种?以及它们的原理和区别。

DDMS与TraceView的区别? res目录有默认几项resource。 android的哪个版本是一次重大的升级?

第20篇:android实验报告[材料]

移动应用开发实验报告

实验名称

音乐播放器

指导教师

实验成绩

2016 年04月

一、实验目的

本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。

二、实验内容及要求

在其中写清楚这个实验具体要你做什么,怎么做,要达到什么样的效果等。 本设计实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,,下一首,上一首播放列等基本播放控制功能,界面简明,操作简单。

三、实验方案设计

在其中写清楚你的程序的详细设计,用流程图配文字的形式描述。 如果其中涉及到算法,一定要把算法阐述清楚。

3.1.1假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下

图2.1 播放器基本用例图

3.1.2用例分析

2 用例名称:启动软件 参与者:用户

目标:使得用户启动软件并加载手机和sd卡上的音频文件到播放列表 前置条件:无

基本事件流:1.用户启动软件

2.播放器将播放列表中的当前的歌曲

用例名称:播放 参与者:用户

目标:使得用户可以播放在播放列表中选中的歌曲 前置条件:播放器正在运行

基本事件流:1.用户单击“播放”按钮

2.播放器将播放列表中的当前的歌曲

用例名称:暂停 参与者:用户

目标:使得用户可以暂停正在播放的歌曲 前置条件:歌曲正在播放且未停止和暂停 基本事件流:1.用户单击“暂停”按钮

2.播放器将暂停当前的歌曲

④用例名称:停止 参与者:用户

目标:使得用户可以停止正在播放的歌曲 前置条件:歌曲正在播放或暂停 基本事件流:1.用户单击“停止”按钮

2.播放器将停止当前播放的歌曲

⑤用例名称:推出 参与者:用户

目标:使得用户退出或者后台播放音乐 前置条件:程序在运行

基本事件流:1.用户按返回键

2.播放器退出或者进入后台播放

四、实验测试

Step1.启动软件后,软件自动检索手机和sd卡的音频文件,并组织显示成列表. Step2.点击列表的歌曲名字。

Step3.播放音乐。

Step4.点击暂停,音乐暂停

Step5.点击播放 转到step3 Step6.点击停止 停止播放音乐

Step7.点击退出,若音乐处于播放状态,则音乐转向后台播放,界面退出。

Step8.点击退户,若音乐处于暂停或者停止状态,直接退出。

音乐播放器流程图

4.1MusicInfoController类

这个类继承于service,是播放音乐的服务类。播放音乐,暂停音乐,停止播放等操作都封装在这个类中。

主要的执行动作有:

4.1.1.类启动 onCreate(){

mMediaPlayer = new MediaPlayer();//分配一个播放对象

mMediaPlayer.setOnPreparedListener(mPrepareListener);//绑定之前

mMediaPlayer.setOnCompletionListener(mCompleteListener);//绑定之 后

}

4.1.2.服务绑定activity

MediaPlayer.OnCompletionListener mCompleteListener = new

MediaPlayer.OnCompletionListener() //实例化一个绑定监听器的匿名类

{

public void onCompletion(MediaPlayer mp) //完成绑定后

{

broadcastEvent(PLAY_COMPLETED);//广播消息

}

};

4.2MusicInfoController类

这个类主要用于获取android系统中的音频文件,并提供访问接口,它是一个单例类。

4.2.1获得播放文件列表

private Cursor query(Uri uri, String[] prjs, String selections, String[] selectArgs, String order){ ContentResolver resolver = pApp.getContentResolver();//取得一个连接对象

4 if (resolver == null){

return null;

}

return resolver.query(uri, prjs, selections, selectArgs, order); } public Cursor getAllSongs(){

return query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);//查询ContentResolver 的所有音频文件

} 4.3MusicList类

改类继承于ListActivity,主要用于显示歌曲列表,并且封装部分操作,以及与父级目标通信。

4.3.1播放

protected void onListItemClick(ListView l, View v, int position, long id) { //歌曲列表的某项被点击

super.onListItemClick(l, v, position, id);

if (mCursor == null ||mCursor.getCount() == 0) {

return;

}

mCursor.moveToPosition(position);//游标移动到当前路径

String url = mCursor.getString(mCursor

.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//取得绝对路径

mMusicPlayerService.setDataSource(url);//传递绝对路径

mMusicPlayerService.start();//播放音乐

}

4.3.2暂停/播放

mPlayPauseButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

if (mMusicPlayerService != null &&

mMusicPlayerService.isPlaying()) {

mMusicPlayerService.pause();//音乐播放的服务暂停

mPlayPauseButton.setText(R.string.play);//改变按钮文字

} else if (mMusicPlayerService != null){

mMusicPlayerService.start();//如果已经是暂停,则播放音乐

mPlayPauseButton.setText(R.string.pause);//改变文字

}

}

});

4.3.3停止

mStopButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

// Perform action on click

if (mMusicPlayerService != null ) {

mTextView.setVisibility(View.VISIBLE);//改变文字状态

mPlayPauseButton.setVisibility(View.INVISIBLE);//隐藏按钮

mStopButton.setVisibility(View.INVISIBLE);//隐藏停止按钮

mMusicPlayerService.stop();//后台音乐停止播放

}

}

}); 4.4MusicPlayerApp类

该类继承与Application,是程序的生存类。可以标识音乐播放器的生命周期,包括音乐在后台播放等。

4.4.1单例模式

public void onCreate() {

super.onCreate();

mMusicInfoController = MusicInfoController.getInstance(this); //返回该类的一个唯一实例

}

public MusicInfoController

5 getMusicInfoController() {

return mMusicInfoController; }

五、程序的使用手册

系统编译生成apk文件,将apk文件拷到手机或者sd卡中,直接打开即可安装,或者安装360手机助手通过usb调试的方式进行安装。

启动软件后,加载歌曲列表现在这个界面上,如01表示歌曲名,unknown表示歌曲的演唱者

软件启动界面

从加载的歌曲列表中点击要播放的歌曲,开始播放

音乐播放界面

六、心得体会

通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。

android工作计划
《android工作计划.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档