android课程学习心得

2024-09-17

android课程学习心得(共9篇)

android课程学习心得 篇1

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

(二)下载安装ADT。

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

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

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

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

四、应用程序基础

1.Android应用程序框架

android课程学习心得 篇2

随着移动互联[1]的飞速发展和智能手机市场占有率的不断提高,移动应用开发渐成热门,其中Android[2]已成为主流移动终端操作系统[3],Android相关人才供不应求,这也促使了An-droid手机开发相关类课程走进了大学课堂,但对这类课程的教学模式的探讨和研究目前仅处于起步阶段。本文根据笔者近几年的教学实践,从学生的认知和接受能力出发对这门课程的教学模式进行探讨。

2《Android手机开发》课程现状分析

目前高校Android手机开发相关课程开设时间不长,无经验可依,教学中或多或少存在一些问题。

首先,重难知识点模糊不清,对该类课程重要知识点的选取,不同层次的院校、IT企业和研发人员理解不一,降低了学生的学习热情。

其次,实践教学环节有待拓展和深化。《Android手机开发》实践性极强[4],但受传统教学模式影响和无先例可循,未能深层次地进行校企合作,与实际开发有一定差异。

课程体系也存在一定的问题。《Android手机开发》属新开设课程,课程体系不够科学,授课教师的教学方法和对这门课程的认知水平也有待提高。

上述存在的问题促使我们必须进行《Android手机开发》课程教学[5]的改革。

3《Android手机开发》教学的改进建议

为了提高学生的Android智能手机软件的开发能力,笔者从多方面对《Android手机开发》的课程教学进行探讨。

3.1 优化Android课程体系

在Android手机开发课程教学过程中,要充分考虑课程体系知识的连贯性和系统性;还要及时掌握Android知识的最新技术并有选择性地将其纳入课程体系,教学内容要强调实践性,提高学生的实践能力。

修订后的《Android手机开发》课程体系当以Android应用为基本架构,教学内容囊括Android编程基础、四大组件[6](Ac-tivity、Service、Broadcast Receiver和Content Provider)开发、动画、图像、多媒体应用、Web编程等要素,涵盖Android开发相关的所有知识点,同时引导学生利用SDK内的开发组件和API,快速开发Android应用程序。

3.2 补充网络学习资源

课时是有限的,有些知识的学习在课堂上难以铺展开,这时补充网络学习资源能填补课堂教学的不足,并且可拓宽学生的知识面。

行之有效的网络Android资源有如下几种。

1)技术论坛或博客。教师在网上搜索一些有关Android开发类的论坛或博客,或自己建立技术博客,将一些疑难问题的解决方案记录下来供学生浏览学习。

2)网络视频课。很多名校提供免费的视频公开课,师生可主动去搜寻与Android相关的视频课,并进行共享,以供学生有选择地自主学习。

3)教学资源平台。学院已为学生构建了一个网络教学资源的平台,这个平台整合了各类学习资源,学生从中能够获得专业课学习资料,并了解专业发展方向。

3.3 教学做有机融合

教学过程在配有多媒体的实验室中进行,教学做有机融合、同步进行,教师采取任务引入的方式开始教学,引导学生主动学习,提高学生的分析问题和动手能力。

为了更好地实现教学做一体化,应该打破传统教学方式,按重难点梳理知识点顺序,挑选一些与实践联系紧密的小案例,在案例开发中掌握相关知识,以便学生在学中做,做中学,更好地掌握Android开发技术。

具备一定的专业素养后,筛选出一些有实际应用的项目,依照企业开发流程将它们按功能分解成若干模块,模块与任务挂钩,鼓励学生完成开发任务。在开发过程中遇到问题时,师生可一起探究问题的解决方案。

项目分解化繁为简,能降低解决问题的难度,能激发学生的学习兴趣,任务驱动能适应现代化职业教育,能触发学生分析问题和解决疑难的能力。

3.4 实践教学层次化

Android教学强调实践性,应增加实践教学时间,遵循项目驱动教学法,将企业项目开发的流程融入教学中,并根据实践教学阶段的不同,设计了从模块、案例教学到完整项目开发这样的分层渐进的教学流程。

1)组建项目团队。在实训前,按照学生的动手能力组建若干个团队,每个团队4到5人,每个团队成员都必须参与实践环节,并在实践中互相帮助,同时依照企业开发流程,每个团队都有项目负责人,每个成员都有任务分工。

2)模块教学。教师要明晰每个实践教学阶段的任务和目标,结合学生的学习能力和核心知识点来安排实践教学内容,将Android知识框架分解为相关的、细化的模块。对于每个模块,学生完成了相关知识点的学习后,要完成相应的实践任务。比如,学生在完成Android用户界面的学习后,应能编写出含有界面控件,菜单及事件处理的简单的Android应用。

3)案例教学。当学生已有一定基础后,尝试让学生编写一些简单实用的Android案例,这些案例有一定的综合性,可让学生课后完成,也为以后的课程设计做好准备。

4)课程设计。安排专门的实训周,要求学生以团队为单位开发一个小项目。教师可挑选一些有一定实用性的项目让学生参考,如网上订餐系统、智能通讯录管理系统、五子棋游戏、网络相册等等。项目的需求分析、设计、编码和测试发布均由各小组独立完成,教师需及时了解各团队的开发进度并对他们遇到的技术问题提供必要的辅助。

3.5 考核方式多元化

Android课程特色决定了必须打破传统的考核模式,轻分数,重技能。考核应以实践考核为主,强调动手能力。据此,我们做出两点变化。第一,教师根据小案例开发结果给出平时成绩;其次,取消期末考试,以课程设计替代,以演讲答辩的形式进行,从软件质量、文档质量和答辩表现中给出期末成绩等级。

4 结束语

本文从课程体系、教学方法、网络资源的获取、考核方式等多方面对《Android手机开发》课程进行了探讨,强调学以致用,着重培养学生的实践能力,为学生今后从事Android开发打下良好的基础。

摘要:分析Android手机开发相关课程的背景,研究Android手机开发课程的教学模式,教学做有机融合,实践教学项目驱动、分层渐进,改变传统的考核方式,增强学生开发Android应用的热情,提高学生的实践能力。

关键词:Android,教学模式,项目驱动,考核方式

参考文献

[1]刘成明,李玮玮.Android手机开发课程的案例教学法[J].计算机教育,2014(14):37-40.

[2]王向辉,张国印,赖明珠.Android应用程序开发[M].北京:清华大学出版社,2013:181-225.

[3]杨功元,李桂珍,李欣.Android应用程序开发课程建设探索[J].计算机教育,2012(16):85-88.

[4]蔡少霖.基于实战模式的Android课程教学模式研究[J].无线互联科技,2013(2):234.

[5]周红波.案例教学在《Android应用开发》课程中的应用研究[J].计算机光盘软件与应用,2012(9).

android课程学习心得 篇3

关键词:移动学习;数字化学习;Android;学习类App;App Inventor

中图分类号TP399 文献标识码:A 文章编号:1009-3044(2016)20-0092-02

随着智能移动终端的迅速发展与普及,一种全新的学习模式逐渐得到人们的关注,这就是移动学习。移动学习是一种在移动设备帮助下能够在任何时间、任何地点发生的学习,移动学习所使用的移动计算设备必须能够有效地呈现学习内容并且提供教师与学习者之间的双向交流 [1]。它具有良好的交互性、学习设备可随身携带、学习者可随时随地学习等优点,成为教育技术领域研究的又一个新热点。

移动学习的研究起步于欧洲和北美部分经济发达国家,就研究进展来看它的发展非常迅猛,出现了很多新技术、新思想和新方法。较之欧美等发达国家,我国移动学习的研究起步相对较晚。但这几年发展迅速,越来越多的人开始关注移动学习,移动学习的理论与应用研究取得了一定的成绩。文章针对移动学习的特点,对移动学习类APP的设计与实现展开论述,并且设计开发了一款基于Android平台的智能移动终端学习类APP 软件。

1 移动学习的特点

移动学习是在数字化学习的基础上发展起来的,是数字化学习的扩展。它除具备了数字化学习的所有特征之外,还有独一无二的特性:

1)自由性。即学习者不再被限制在电脑桌前,可在任何时间任何地点学习任何内容。

2)片段性。学习者可以充分利用时间碎片(例如坐车时)进行学习。碎片化学习要求充分利用人们的时间空隙,所以移动端学习内容应该是学习时间相对较短的学习组块,学习内容单元之间松散连接。

3)情境性。学习者可以携带移动设备在真实或仿真环境中进行情境体验,这有助于促进学习者理解和运用所学的知识。

2 开发环境及开发工具

2.1 开发环境—Android

Android是一种基于Linux自由及开放源代码的移动设备操作系统。同Palm OS、Symbian、Windows mobile、 iPhone OS等移动端操作系统相比,Android 具有开放性、应用程序平等性、应用程序间无界限和方便快速的应用程序开发等 4 个无可比拟的优点。[2]目前,Android已经成为市场份额最高的移动操作系统。Android应用开发最大特点是将界面开发与业务开发完美地区分开,并且各种资源配置也有其相应的位置存放,用工厂模式便可方便快捷地使用资源。[3]所以,在Android平台下APP开发的大部分精力都放在用户体验方面,大大减轻了开发者的负担。

2.2开发工具—App Inventor

App Inventor是谷歌公司推出用来开发Android应用程序的平台。它是一个完全在线开发的环境,在此环境下所有的项目都储存在云端服务器。因此,开发者能在任何一台可以上网的机器上进行APP设计和开发。

App Inventor主要有三大作业模块:

(1)组件设计:提供图像、按钮等各种组件用以界面设计;

(2)逻辑设计:通过将封装好的程序代码进行连接完成“程序设计”;

(3)模拟器:设计开发时可用模拟器来进行测试,但模拟器在部分功能上无法提供测试(如重力传感器等)。

App Inventor通过搭建积木块的方式开发Android平台下的APP,开发者无需直接编写程序代码。这大大降低了开发的技术难度,可以让学习类APP开发者专注于学习资源的设计和开发。

3 学习类APP设计开发

下面将以一款学习类APP—《轻松学做网页》为例,展示其设计和开发过程。该款APP的使用对象是在校大学生,开发的内容是介绍使用Dreamweaver CS6制作网页。APP中提供了众多的资源和功能,具有良好的交互性,能帮助同学们轻松掌握网页制作技能。

3.1组件设计

《轻松学做网页》APP共分成基本理论、操作视频、实验实训、行业认证、精品赏析、信息反馈六个模块。“基本理论”介绍了网页设计的基本知识,如什么是网页、网页常见布局等。“操作视频”演示了Dreamweaver CS6软件的使用。“实验实训”放置了7个实训项目,对基本理论和操作进行实际验证。“行业认证”介绍了Adobe网页设计师认证情况。“精品赏析”中给出了国内外优秀网页的图片,用以提高学习者的美术功底。“信息反馈”则让用户通过文字、语音等方式反馈APP使用过程中的问题及建议。

在App Inventor中,界面是通过组件设计完成的。App Inventor 提供了“用户界面”、“界面布局”、“多媒体”等10类共计60个组件。如此丰富的组件资源能使开发者轻松地完成界面设计。该项目APP的主界面制作过程如下:1)将“界面布局”下的表格布局组件拖入屏幕,在右侧的属性面板中设置为6行3列;2)拖动“用户界面”中的按钮组件到表格中相应的位置,一共放置六个按钮;3)用加工好的六张图片作为按钮背景。APP的主界面效果图如图1所示。

每个模块的子界面制作过程大体相同:(1)点击“增加屏幕”按钮,添加一个新的屏幕用以设计子界面;(2)在新增的屏幕上拖入相应的组件并设置组件属性,如需显示图像就先拖入图像组件,然后设置其图片、高度、宽度等属性。

3.2 逻辑设计

逻辑设计用来检测用户的行为(如点击按钮、滑动屏幕)并做出相对的反应,如当用户点击“基本理论”按钮后打开介绍基本理论的屏幕。App Inventor中的逻辑设计是通过封装好的程序模块拼接完成,共有“逻辑”、“控制”、“数学”、“文本”、“列表”、“颜色”、“变量”、“过程”八类模块。每一类的模块都用不同颜色显示。点击“基本理论”按钮的逻辑设计步骤如下:1)点击“逻辑设计”按钮将工作面板切换到逻辑设计视图;2)选中“模块”面板下的“按钮1_基本理论”,拖动“控制”模块下的“按钮被点击”代码块到逻辑设计界面;3)拖动“打开屏幕”代码块到“当按钮1_基本理论.被點击”代码块下;4)将“文本”模块下的“空字符串”代码块拼接到“打开屏幕 屏幕名称”代码块后。完成后的效果如图2所示。主界面中其它按钮的逻辑设计和“基本理论”类似。在子界面下返回主界面的逻辑设计如图3所示。

4 结束语

本文分析了移动学习的特点,在移动学习理论的指导下,设计和开发了一款基于Android系统的学习类APP。此APP提供了丰富的学习资源,能满足在校大学生的使用需求。随着移动学习类应用的丰富,人们可以方便地获取自己所需的学习资源,进而推动移动学习的快速发展。

参考文献:

[1]百度百科.移动学习[EB/OL].[2016-05-20].http://baike.baiu.com/view/3003454.htm.

[2]曾健平,邵艳洁.Android 系统架构及应用程序开发研究[J].微计算机信息,2011(9):1-3.

Android 课程总结 篇4

1、Android SDK的安装;

2、ADT的安装和配置;

3、Android 模拟器的配置。

二、编写第一个Android程序───Hello World(1学时)

1、创建一个Android应用程序的步骤;

2、Android 应用程序目录结构;

3、AndroidManidest.xml文件的作用;

4、Android相关资源文件的作用。

三、Activity及Activity和Intent(2学时)

1、Activity的主要作用;

2、创建一个Activity的方法;

3、在AndroidManifest.xml文件中的注册应用Activity的方法;

4、在Activity中添加控件的方法;

5、多个Activity之间的切换;

6、Intent的基本作用;

7、在一个Activity中启动另一个Activity的方法;

8、使用Intent在Activity中传递数据的基本方法。

四、常见控件的使用方法(基础)

1、TextView的使用方法;

2、EditText的使用方法;

3、Button的使用方法;

4、Menu的使用方法。

五、Activity的生命周期(2学时)

1、Activity的七个周期:

① OnCreate();② OnDestroy();③ OnPause();④ OnRestart();⑤ OnResume();⑥ OnStart();⑦ OnStop();

2、Task的基本概念;

3、Activity和Task之间的关系;

4、对话框风格的Activity的使用方法。

六、Activity的布局(3学时)

1、LinearLayout的使用方法;

2、TableLayout的使用方法;

3、LinearLayout和TableLayout的嵌套使用;

4、RelativeLayout的使用方法(重点、难点)

七、常用控件是使用方法二(2学时)

1、RadioGroup和RadioButton的使用方法;

2、CheckBox的使用方法;

3、Toast的基本用法。

4、ProgressBar的使用方法;

5、ListView的用法。

八、Handler的使用方法(2学时)

1、Handler的基本概念;

2、Handler的基本用法;

3、使用Handler更新ProgressBar

4、Handler与线程;

5、Bundle的用法;

6、在新线程中处理消息的方法。

九、SQLite使用方法

1、SQLite介绍;

2、SQLiteOpenHeper使用方法;

3、使用adb访问SQLite

4、增、删、改、查。

十、Android文件下载

1、使用HTTP协议下载文件;

2、将下载的文件写入SDCARD。

十一、Content Provider初步(2学时)

1、Content Provider的基本概念;

2、Uri;

3、Content Provider的实现方法。

十二、XML文件的解析方法

1、什么是SAX;

2、SAX的基本原理;

3、SAX常用接口;

4、SAX解析。

十三、广播机制(2学时)

1、Android的广播机制(图鉴);

2、BroadCastReceive的作用;

3、BroadCastReceive的编写方法;

4、BroadCastReceive的生命周期。

5、注册BroadCastReceive的方法;

6、Android内置BroadCastReceive Actions。

十四、WIFI网络的使用

1、什么是WIFI;

2、获取WIFI网卡的状态;

3、操作WIFI所需要的权限;

4、改变WIFI网卡的状态。

十五、Socket编程

1、什么是Socket;

2、Socket基本通信模型(见图);

3、使用基于TCP协议的Socket;

4、使用基于UDP协议的Socket。

十六、Service

1、Service是什么;

2、Service不是什么;

3、Service的生命周期;

android课程学习心得 篇5

处理工具类及方法:

public class ImageTools {

/**

* 对图片进行处理

* @description:

* @date -8-12 下午8:45:05

*/

public static Bitmap getColorImage(Bitmap bitmap, float sx, float bhd, float ld) {// 参数分别是色相,饱和度和亮度

Bitmap bmp = bitmap.createBitmap(bitmap.getWidth, bitmap.getHeight(), Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bmp);

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

ColorMatrix sxMatrix = new ColorMatrix();// 设置色调

sxMatrix.setRotate(0, sx);

sxMatrix.setRotate(1, sx);

sxMatrix.setRotate(2, sx);

ColorMatrix bhdMatrix = new ColorMatrix();// 设置饱和度

bhdMatrix.setSaturation(bhd);

ColorMatrix ldMatrix = new ColorMatrix();// 设置亮度

ldMatrix.setScale(ld, ld, ld, 1);

ColorMatrix mixMatrix = new ColorMatrix();// 设置整体效果

mixMatrix.postConcat(sxMatrix);

mixMatrix.postConcat(bhdMatrix);

mixMatrix.postConcat(ldMatrix);

paint.setColorFilter(new ColorMatrixColorFilter(mixMatrix));// 用颜色过滤器过滤

canvas.drawBitmap(bmp, 0, 0, paint);// 重新画图

return bmp;

}

}

在Activity中选择要处理的ImageView及对应的Bitmap,调用工具类中方法即可:

private ImageView colorIv;

private SeekBar sxBar, bhdBar, ldBar;

private static int MIN_COLOR = 100;

private static int MAX_COLOR = 255;

private float sx, bhd, ld;

private Bitmap bmp;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.color_main);

initViews();

}

private void initViews() {

bmp=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

colorIv = (ImageView) findViewById(R.id.color_iv);

colorIv.setImageBitmap(bmp);

sxBar = (SeekBar) findViewById(R.id.sx_seekbar);

bhdBar = (SeekBar) findViewById(R.id.bhd_seekbar);

ldBar = (SeekBar) findViewById(R.id.ld_seekbar);

sxBar.setOnSeekBarChangeListener(this);

sxBar.setMax(MAX_COLOR);// 设置最大值

sxBar.setProgress(MIN_COLOR);// 设置初始值(当前值)

bhdBar.setOnSeekBarChangeListener(this);

bhdBar.setMax(MAX_COLOR);

bhdBar.setProgress(MIN_COLOR);

ldBar.setOnSeekBarChangeListener(this);

ldBar.setMax(MAX_COLOR);

ldBar.setProgress(MIN_COLOR);

}

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

switch (seekBar.getId()) {

case R.id.sx_seekbar:

sx = (progress - MIN_COLOR) * 1.0f / MIN_COLOR * 180;

break;

case R.id.bhd_seekbar:

bhd = progress * 1.0f / MIN_COLOR;

break;

case R.id.ld_seekbar:

ld = progress * 1.0f / MIN_COLOR;

break;

}

colorIv.setImageBitmap(ImageTools.getColorImage(bmp, sx, bhd, ld));

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

}

xml布局文件:

xmlns:tools=schemas.android.com/tools

android:layout_width=match_parent

android:layout_height=match_parent >

android:id=@+id/color_iv

android:layout_width=300dp

android:layout_height=300dp

android:layout_centerHorizontal=true

android:layout_marginBottom=15dp

android:layout_marginTop=15dp />

android:id=@+id/sx_seekbar

android:layout_width=match_parent

android:layout_height=wrap_content

android:layout_below=@id/color_iv

/>

android:id=@+id/bhd_seekbar

android:layout_width=match_parent

android:layout_height=wrap_content

android:layout_below=@id/sx_seekbar

android:layout_marginTop=10dp />

android:id=@+id/ld_seekbar

android:layout_width=match_parent

android:layout_height=wrap_content

android:layout_below=@id/bhd_seekbar

android:layout_marginTop=10dp />

android学习方法总结 篇6

1.搭建环境:包括对Java和Eclipse及模拟器(有真机再好不过)的熟悉,对于android的tools和adb命令可以放到后面熟悉了解。

2.从helloworld开始:了解一个基本的android应用代码包含哪些,各部分做什么用。(这里只要先了解个大概就好)

3.activity、intent:了解activity是什么及其生命周期,intent是什么东西及它是基于消息机制。

4.掌握基础:这阶段你可以反复的修改及单步调试一个简单的程序,并学会logcat、单步调试、最基本的View、最简单的布局、进而对service、intentFilter等的熟悉 (以上4步骤推荐看深入浅出Google_Android.pdf这个电子书就够了)

android课程学习心得 篇7

Android是一种以Linux为基础的开放源码操作系统, 主要使用于便携设备。Android操作系统最初由Andy Rubin开发, 最初主要支持手机。后来由Google收购注资, 然后汇集了其他的设备商组成了开发团队进行升级开发, 经过改良后的Android系统逐渐扩展到了其他设备上。到目前, 经过几年的发展Android已经超过了之前的诺基亚Symbian系统, 跃居全球最受欢迎的智能手机平台。

1 中国Android应用类型情况的分析

中国智能手机用户对移动应用的下载日渐多元化, 已经渗透到娱乐、学习、社交、消费等各个领域。根据艾媒咨询发布的《2012Q2中国移动应用市场季度监测报告》显示, 二季度中国Android应用下载类型方面, 游戏应用依然是最热门的下载类型, 以32.6%排名第一;系统工具、社交和影音图像类等应用下载也表现不俗, 分别占16.4%、14.5%和11.9%[3]。另外, 在不同类型移动应用广告点击率方面, 根据艾媒咨询数据显示, 游戏类应用的广告点击率最高, 达到7.4%;其次是购物类应用, 广告点击率达到6.3%;娱乐、生活、旅游、阅读类应用的广告点击率分别为4.8%、3.9%、3.5%和3.4%[3]。

在市场爆发式增长模式下, 作为从事IT工作的我们, 该如何做呢?下面具体分析如何系统全面的学习Android开发技术及在市场上应用Android开发技术的问题。

2 如何系统掌握Android系统开发技术

Android开发技术应该如何学习呢?Android应用程序是以Java为语言基础, 一切的Android开发技术的学习都应该以学习Java基础来开始, 而不是参考其他开发人员的代码, 这样是不能掌握Android开发技术的。那么Java应该怎样学习呢?笔者认为应该首先掌握以下知识。

2.1 Java基础

1) 基础学习-Java SE。Java SE语法知识必须全面掌握。Java SE基础内容包括:Java的基本语法、面对对象编程的特征、Package、对象和类、访问控制、继承、接口和内部类、多态、结构体与联合体、异常与调试处理、集合框架、文件和目录、文件流、缓冲流和缓冲流读写、DB、Eclipse、多线程、网络编程、Java IO流、文件读写、随机访问和GUI-AWT、GUI-EVent等。

2) 基础学习扩展-设计模式。由于在Android系统的框架层当中, 使用了大量的设计模式, 如果没有这方面的知识, 对于Android的理解就会大打折扣。首先必须掌握面向对象的基础设计原则, 有了这些基础原则的支持, 就可以举一反三地学习其他的设计模式。

2.2 Linux基础

Android是一种以Linux为基础的开放源码操作系统, 在学习和工作当中会与linux命令打交道。Liunx学习的内容包括:Linux的安装、Linux系统命令初步、Linux文件相关命令、用户和组管理、文件属性及umask、Linux编辑器及VIM初步、Linux查找及压缩、文本处理及正则表达式、输入输出重定向及管道、进程控制、进程优先级前台后台、bash变量快捷键、bash运算符及启动脚本、shell脚本及交互、shell脚本流程控制、shell脚本sed&awk等。

2.3 其他准备知识

1) 数据库基础知识;2) 网络协议:HTTP协议与Socket协议知识;3) 服务器端的开发知识, Java EE就是支持服务器端的开发的, Java EE学习的内容大致有:JDBC、web工程结构、Servlet、JSP、Struts、hibernate和Spring等。

2.4 Android开发学习基础理论:系统架构分析[4]

Android系统从底向上一共分了4层, 每一层都把底层实现封装, 并暴露调用接口给上一层, 这4层结构分别是:Linux内核 (Linux Kernel) 、中间件、应用程序框架 (Application Framework) 、应用程序 (Application) 。这4层所包含的内容都要详细学习和掌握。在掌握Android的系统架构后还需学习的内容包括:Android应用程序的基本原理、布局简介、Android选项菜单、XML菜单建立、Android对话框、用户界面Toast、用户界面布局、Android事件处理、Android常用组件、列表视图、时间选择对话框、Android数据存储、多媒体设计开发、互联网应用开发、GPS定位应用开发、Android多线程等。如果开发游戏, 还需要图形图像技术、View Surface View、Android平台的传感器、游戏中的物理和数学、Open GL ES和游戏引擎以及音效等。

要成为一个专业的Android开发者, 以上的这些知识都必不可少, 内容很多, 涉及面也很广, 需要开发者耐心学习, 掌握好这些基础知识内容。

3 如何在互联网世界里市场化应用Android开发技术

在掌握了Android技术后, 如何在市场上应用Android开发技术呢?作为个人程序开发爱好者, 如何让开发技术有市场价值, Android开发市场又是怎么运营的?下文详细说明。

3.1 首先介绍Android下的一些商业模式[5]

1) 免费应用+广告:通过嵌入国内和国外的几十家移动广告平台的SDK、并在各渠道发布你的应用来获取展示广告, 从而利用用户对广告的点击而获取收入。2) 收费应用:国内移动MM、机锋网的金币、支付宝等各种渠道支付使用费, 目前来看这种模式很难获取可观的收入。3) 应用内容的商业合作:这种模式需要你的应用有影响力, 能让商家为你买单。

3.2 第三方广告平台

第三方广告平台是为移动开发者及广告主提供基于智能移动应用的效果计费型广告服务。这样的第三方平台对于广告主来说, 广告覆盖面广, 针对性强, 按效果付费。对于开发者来说, 第三方平台有充足的广告资源, 多样的广告模式, 稳定的服务器支持保证了开发者的高额收入。实时的数据统计, 快速的周结算周期, 保障了开发者的合作动力。目前国内广告模式有:广告条、积分墙、推送[6]。下面介绍一些国内知名的第三方广告平台:

1) 万普平台。该平台是目前为止一个比较专业的平台, 该平台上支持广告条、积分墙、推送三种模式, 其中广告以CPA为主, 该平台运行不太稳定, 但是能提供实时的统计数据, 每周结算, 提现税率6%。地址:www.waps.cn。2) 有米广告。该平台是国内最早的广告平台, 有广告条和积分墙两种模式, 但是CPC价格偏低, 积分墙的跟万普差不多。也有实时数据, 但统计内容没其他平台详尽, 半月结算, 提现税率6%。地址:www.youmi.net。3) 多盟。广告条模式, CPC各方面都还算不错, CPC单价0.24元左右, 能提供实时的统计数据, 每月结算, 提现税率也是6%, 地址:www.domob.cn。4) 安沃。广告条模式, CPC单价0.25元左右, 提供实时的数据, 结算周期未定, 每月结算, 提现税率6%。地址:www.adwo.com。5) 力美广告。地址:www.lmmob.com。6) 百度联盟。地址:munion.baidu.com。7) admob。地址:zhcn.admob.com。8) 微云。游戏开发平台, 也提供广告条和积分墙2种模式。地址:www.wiyun.com。

目前国内的平台一般就这些了, 可是这么多广告平台, 哪家广告平台比较好呢?这里就笔者工作经验来推荐一些:广告条建议还是选择多盟, 该平台服务器稳定, 广告的数量很多。当然也可以选择用聚合平台加上一些其他的平台。积分墙和推送模式都建议选择万普, 其他的平台也可以选择, 不过最好选择一些较大的、经营时间较长的公司的平台, 这样数据比较稳定, 用户也比较多。如果应用有国外的客户可以选择airpush平台。

3.3 应用发布渠道

发布渠道就是将开发者开发好的应用软件发布到一些网站上去, 提供给用户下载使用。用户在使用软件的同时其实就发布了广告。在用户使用过的下载应用平台方面, 根据艾媒咨询数据显示, 第三方应用商店依然最受欢迎, 占比高达40.7%;电信运营商应用商店、互联网企业应用商店紧随其后, 占比分别为28.3%和24.9%;终端厂商应用商店本季度占比达到11.9%[3]。国内知名的发布渠道有如下一些:

1) 安智市场。安智市场是目前国内最大的移动应用市场, 该渠道是国内最重要的一条发布渠道, 建议开发者将应用发到该平台上, 注册和发布都比较简单, 平台的审核一般1~2个工作日, 地址:www.goapk.com。2) 安卓市场。安卓市场的使用量是国内仅次于安智市场的, 所以也是开发者必不可少的一条渠道, 审核一般1~2个工作日。地址:sc.hiapk.com。3) Google市场。Android的官方市场, 应该说还是比较重要的一条渠道, 但是其注册和提款都比较麻烦。Android市场的好处就是不要审核直接上线。

4 结语

目前, Android无疑进入空前繁荣的时代, 如何在市场上检验开发能力或赚取一部分费用, 通过以上方法无疑是一种很好的方式。根据笔者的工作经验, 在开发过程中idea很重要, 而实现idea则更是重中之重, 当然, 无论是应用还是游戏, UI的设计也是非常重要的, 除了程序结构的设计以外, 简洁而美观的UI设计让程序更加专业, 吸引更多的用户下载和使用, 并能拥有长期的用户。笔者自2008年接触Android开发, 在Android开发方面有几点心得体会:

1) 不要羡慕其他开发者的技术, 自己动手去做, 从最简单开始, 持之以恒;2) 先开发好应用, 才思考如何来提高广告点击率上;3) 做广告点击, 不要把时间花在自动点击广告和作弊方面;4) 尽量将应用页面设计为简洁易用, 简洁而美观的UI会带来大量的用户;5) 在更多的发布渠道上发布应用, 当然不要做那些无内容的更新发布;6) 为自己的应用找到合理的广告投放模式;7) 从市场上同类应用上学习更多技巧, 取其所长。

参考文献

[1]杨学瑜, 王志军, 刘同利.JSP入门与提高[M].北京:清华大学出版社, 2004.

[2]鲁晓东, 李育龙, 杨健.JSP软件工程案例精解[M].北京:电子工业出版社, 2005.

[3]艾媒咨询.2012Q2中国移动应用市场季度监测报告[EB/OL].2012.

[4]公磊, 周聪.基于Android的移动终端应用程序开发与研究[J].计算机与现代化, 2008 (8) :85-89.

[5]李兴华.名师讲坛-Android开发实战经典[M].北京:清华大学出版社, 2012.

android课程学习心得 篇8

[摘 要]针对“Android程序设计”课程建设问题,审视了目前国内高校Android应用程序开发人才培养要求,提出了课程范式性的教学内容与教学模式,以期实现学生能力与社会和企业有效接轨,使学生在知识储备、技术技能和学习能力等方面得到显著提升,使教师教学质量不断提高,确保课程的教学工作符合国家培养卓越人才的要求,适应日益增长的社会需求。

[关键词]卓越工程师;Android程序设计;课程教学改革

[中图分类号] G423.07 [文献标识码] A [文章编号] 2095-3437(2016)02-0125-03

随着移动互联网的发展,人们对移动互联网设备越来越依赖,其中最流行的小型设备即是智能通讯手机和平板电脑。[1]而Android作为新兴便捷的移动设备的操作系统正迅速在移动互联网领域传播,并占据了移动互联市场一半以上份额,跃居全球第一,这对Android应用程序开发人才提出了更大的需求。[2]因此,此类人才的供应也就成为各高校新的人才培养计划。结合“卓越工程师教育培养计划”,国内各高校纷纷开设了移动互联专业或Android应用开发系列课程,“Android程序设计”课程是其人才培养的重要支撑内容。我们通过对高校Android应用开发系列课程开设情况的调研,特别对企业的人才需求做了大量的调查走访和相关实践研究工作,站在卓越工程师培养视角下,探索构建了适合社会需求的“Android程序设计”教学内容与教学模式,这对其他高校开展工程实践要求高、创新意识强的“Android程序设计”课程教学模式具有重要的借鉴意义。

一、教学内容与模式改革的迫切性

目前,“Android程序设计”教学内容和教学方法是国内各个高校关注的一个热点问题。Android系统是Google公司发布的一个开放源代码的手机平台,以Linux为核心,以开源、免费为主要特点,它易学、易用、并且功能强大,降低了开发嵌入式应用程序的难度。[3]但由于“Android程序设计”课程近几年才引入高校教学的课程体系中,其教学内容和模式的研究与实践还处于初级阶段,没有形成统一的教学体系和规范[4],而我国的大学教育是着眼于国际市场供需状况的,适应市场发展趋势的,因此课程教学内容与模式改革迫在眉睫。

国内外针对Android应用开发课程教学,大多停留在授课培训和填鸭式教学的模式,而对Android应用开发课程教学研究的论文虽然很多,却仅仅停留在理论研究方面,对于Android本身这门课程学习的教学内容和模式的研究几乎没有,可行性、可操作性教学模式的研究甚少。[5]研究论文多,说明Android操作系统是移动终端开发的热门,且具有极大的开发潜力。因此,探索卓越工程师培养视角下“Android程序设计”教学内容和教学模式,对于国内其他高校Android应用开发系列课程体系也具有重要的意义和价值。结合国家“卓越工程师教育培养计划”对于深化我国高等工程教育改革的要求,我们根据本门课程实际,丰富完善了课程教学内容和模式,进而不断适应满足Android应用程序开发人才的市场需求,为培养高层次工程创新人才的相关课程教学内容和模式改革提供参考。

二、教学内容与教学模式改革的理念与架构

图1 课程内容与教学模式的逻辑结构图

根据“Android程序设计”课程对高等教育质量适应性的特征,遵循“卓越工程师教育培养计划”要求,借鉴国内外现代大学“Android程序设计”课程教学的成功经验,在开设“Android程序设计”教学实践研究工作的基础上,探索课程内容更新重点和规律、前置课程与所学课程有序有效统筹、理论教学与实验教学合理衔接,建设有专业特色的课程案例库和深入推进教学与科研紧密结合的教育模式等,构建了“Android程序设计”课程教学内容与教学模式的逻辑结构图,具体内容见图1。

从图中的逻辑结构可以看出,前置课程与所学课程有序有效衔接是重点,是扫除学生学习“Android程序设计”课程基础知识障碍的关键一环,能让学生学习此门课程时感到水到渠成,为创新人才的培养起到入门作用。适时更新“Android程序设计”课程内容是前提,是满足不断变化的市场需求的基础,能够使学生不仅具有扎实的基础知识,更能了解本学科前沿知识和发展态势。理论教学与实验教学合理衔接是关键,有利于学生将理论与实践融会贯通,使学生打牢理论基础知识,同时也有助于提高教学效果,激发学生兴趣。建设富有专业特色的课程案例库,是夯实基础,增加教学立体化效果的重要手段,能有效地调动学生的学习热情,提升动手能力和探索精神。推进教学与科研训练有机结合,培养学生实践动手能力和创新意识,提升学生的团队协作能力、项目管理能力、沟通协调能力,从而有利于创新人才的培养。

三、教学内容与教学模式改革的对策

1.把握课程内容更新重点和规律,前置课程与所学课程有序有效衔接

“Android程序设计”核心内容知识点的选择上国内各大高校基本一致,但都忽略了Android发展的前沿领域新知识,以及Android本身的知识点与学生所学前置课程知识点的结合程度,应将其两方面都纳入课程内容中。实际上Android更新非常快,每年都有版本的更新,目前已经从Android1.0到Android4.4.2,应用领域也从单纯的智能手机到了目前的智能家居,对于学生了解Android的版本更新以及应用领域发展,激发学生的学习热情起到了一个积极的推动作用。Atkins曾经在物理化学学习上指出:“相关领域的新发现为物理化学家提供了新的兴趣。”在实际改革中,各门课程的教学也应该很好地理解和接受Atkins关于物理化学课程改革的观点。在讲授课程各章节时,可从基本知识点出发,适当介绍学科前沿领域的新知识,使其融会基础知识与前沿知识,从而使学生不仅具有扎实的基础知识,而且能了解学科前沿的基本点,为创新人才的培养起到入门作用。例如:在讲授Android的用户界面时,不仅介绍界面布局,还介绍经过这几年的发展,Google公司怎样重新界定了用户界面,以及Java在用户界面定义上与Android的区别。同时,教师通过了解学生所学习的先行课程,整合和更新课程的基本内容,使课程教授内容与学生所学先行课程的前置知识有一个接口,使学生学习此门课程时水到渠成,激发和保障他们对“Android程序设计”课程的学习兴趣。

2.理论教学与实验教学合理规划,注重培养学生实践动手能力

“Android程序设计”课程理论教学与实验教学应合理衔接,理论教学与实验教学内容合理搭配、学时科学统筹,对课程的授课效果至关重要。通过多年实践经验积累,发现“Android程序设计”课程具有强调原理、重视实践的显著特征,更加注重学生的实际动手能力和创新能力的培养。因此,一般而言,“Android程序设计”课程相比其他课程的实验教学要求更高,其实验教学学时比例应接近或达到总学时的50%。在教学时间安排上,两者应统筹规划,理论课与实验课交叉进行,所有授课过程应在实验机房内完成。这样一是更容易控制课程进度;二是讲解后直接实践,有助于提高教学效果,加强学生对所学知识的理解、运用、内化,达到融会贯通的效果,培养学生对课程的兴趣。授课的每一个知识点均包括理论和实验两部分,通过知识点累积与实践,达到学生独立完成设计制作如“自定义键盘的身份证登录应用”或者“图片浏览应用”等产品。

3.建设有专业特色的课程案例库,增加教学立体化效果

在理论和实验教学的过程中,针对每一个重要知识点建立有针对性的专业特色案例库,对增强立体化的教学效果是至关重要的。第一,案例库中的素材应在考虑“Android程序设计”本身知识点的同时结合整个专业与其相关的知识体系,案例由简入深,注重Android程序设计开发的实战技术与应用技巧;第二,案例所提供的信息和资料,必须尽可能多地蕴含教材中的重要开发要素和设计思想,从而使得学生在探究案例的过程中加深和巩固理论知识的学习;第三,案例应包含有复杂、模糊或需要解决的问题,让学生产生认知上的冲突,从而激发学生主动学习的动机;第四,根据Android的实时发展速度,案例数据能够保持动态的更新,打破许多教材实例一成不变的模式,并在综合案例分析中体现整个“Android程序设计”的整体知识点,体现知识技能的培养,有效地调动学生的学习热情、动手兴趣和探索精神。

4.推进教学与科研项目驱动教育模式,提高学生核心竞争力

本科教学处于基础和优先地位,但在实际教学过程中是主张教研结合的,因为科研也是育人特别是培育创新型人才不可或缺的途径。教师要将教学和科研相互融合,应当能够将知识传承者的教师角色与知识创新者的学者角色很好结合起来,既能向学生传授知识,又能通过对前沿问题的追寻和对真理的探索,引导学生有所发现、有所创新。如果将教师本来就应具有的教师和学者的双重角色割裂开来,既不利于教学,也不利于科研。教师在教学中遇到的问题,可以促使其进行深层次的学术思考,而教师的研究成果又可以服务教学实践。正是教学与科研的相互促进,才能真正实现教师角色的价值,也才能将优秀人才培养落到实处。应当确立一种共识,教学和科研是育人这同一问题的两个方面,优秀的教师应当践行研究性教学,在创新人才培养方面做出更大努力。创新人才是在参加创新实践中成长起来的,应组织学生参加省部级以上各种软件设计比赛,或者参与校企联合的科研项目研究课题,并指导学生独立申报一些国家级或者校级的大学生科研立项研究课题。要让学生在科研的创新实践中,激发求知欲望和创造冲动,独立自主地运用已有知识去发现问题,提出解决问题的新观点、新途径,最终超越前人,取得创新的成果。

四、结语

“Android程序设计”课程是开设时间比较短、内容比较新的一门课程。社会需求要求课程的讲授要更加贴近实际应用,更加强调学生的实践动手能力和创新意识。虽然,国内对“Android程序设计”课程教学归纳总结了很多经验,但仍有许多亟待解决和探讨的问题,特别是“启发式、探究式、讨论式、参与式”课堂教学模式的研究,有利于培养学生获得和保持核心竞争力。

[ 参 考 文 献 ]

[1] 张琳,容晓峰,沈虹.移动应用开发课程建设与教学模式探索[J].计算机教育,2012(14):95-99.

[2] 宋小倩,周东升. 基于Android平台的应用开发研究[J].软件导刊,2011(2):104-106.

[3] 沈成,张凯,等. 基于Android平台的课程学习系统的设计与实现[J]. 重庆工商大学学报(自然科学版),2014(1):56-59.

[4] 钟元生,高成珍. 高校Android编程教材设计研究[J].计算机教育,2014(10):105-110.

[5] 李芒,徐晓东,朱京曦. 学与教的理论[M]. 北京:高等教育出版社,2007:75-77.

android课程学习心得 篇9

public Object getSystemService(String name)

Parameters

nameThe name of the desired service.ReturnsThe service or null if the name does not exist.Open Declaration Object android.app.Activity.getSystemService(String name)

Return the handle to a system-level service by name.The class of the returned object varies by the requested name.Currently available names are:

Note: System services obtained via this API may be closely associated with the Context in which they are obtained from.In general, do not share the service objects between various different contexts(Activities, Applications, Services, Providers, etc.)

译文:通过这个接口获取到的System services(系统服务)会和他们相应的Context(上下文)有紧密联系。通常,不要在不同的上下文中(Activities, Applications, Services, Providers,etc.)共享同一个System services对象。

---------》WINDOW_SERVICE(“window”)

The top-level window manager in which you can place custom windows.The returned object is a WindowManager.使用方法,例如:

DisplayMetrics metrics = new DisplayMetrics();

WindowManager wm =(WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE);

Display d = wm.getDefaultDisplay();

d.getMetrics(metrics);

addResult(SCREEN_WIDTH, metrics.widthPixels);

addResult(SCREEN_HEIGHT, metrics.heightPixels);

addResult(SCREEN_DENSITY, metrics.density);

addResult(SCREEN_X_DENSITY, metrics.xdpi);

addResult(SCREEN_Y_DENSITY, metrics.ydpi);

注意addResult是自定义函数。

其中DisplayMetrics还可以这样使用,DisplayMetrics metrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);

重点需要关注WindowManager的getDefaultDisplay用法。

---------》LAYOUT_INFLATER_SERVICE(“layout_inflater”)

A LayoutInflater for inflating layout resources in this context.例如:

final LayoutInflater mInflater;

mInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

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

View view;

if(convertView == null){

view = mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);

} else {

view = convertView;

}

bindView(view, mList.get(position));

return view;

}

注意其中的inflate方法。

---------》ACTIVITY_SERVICE(“activity”)

A ActivityManager for interacting with the global activity state of the system.使用方法,例如:

public AppListAdapter(Context context){

mContext = context;

ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

List appList = am.getRunningAppProcesses();

for(ActivityManager.RunningAppProcessInfo app : appList){

if(mList == null){

mList = new ArrayList();

}

mList.add(new ListItem(app));

}

if(mList!= null){

Collections.sort(mList, sDisplayNameComparator);

}

}

注意getRunningAppProcesses()方法。

---------》POWER_SERVICE(“power”)

A PowerManager for controlling power management.例如:

PowerManager pm =(PowerManager)context.getSystemService(Context.POWER_SERVICE);

pm.goToSleep(SystemClock.uptimeMillis());

注意goToSleep()方法。

再如:

private WakeLock mWakeLock = null;

mWakeLock = mPm.newWakeLock(PowerManager.FULL_WAKE_LOCK, “ConnectivityTest”);

mWakeLock.acquire();

(mWakeLock.release();)

---------》ALARM_SERVICE(“alarm”)

A AlarmManager for receiving intents at the time of your choosing.例如:

设置闹钟

private void scheduleAlarm(long delayMs, String eventType){

AlarmManager am =(AlarmManager)getSystemService(Context.ALARM_SERVICE);

i.putExtra(TEST_ALARM_EXTRA, eventType);

i.putExtra(TEST_ALARM_ON_EXTRA, Long.toString(mSCOnDuration));

i.putExtra(TEST_ALARM_OFF_EXTRA, Long.toString(mSCOffDuration));

i.putExtra(TEST_ALARM_CYCLE_EXTRA, Integer.toString(mSCCycleCount));

PendingIntent p = PendingIntent.getBroadcast(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);

am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+ delayMs, p);}

---------》NOTIFICATION_SERVICE(“notification”)

A NotificationManager for informing the user of background events.用于显示通知栏,例如如下经典函数:

protected void showNotification(){

// look up the notification manager service

//创建NotificationManager

NotificationManager nm =(NotificationManager)getSystemService(NOTIFICATION_SERVICE);

// The details of our fake message

//显示的信息,title和content

CharSequence from = “Joe”;

CharSequence message = “kthx.meet u for dinner.cul8r”;

// The PendingIntent to launch our activity if the user selects this notification

//点击事件的相应窗口

PendingIntent contentIntent = PendingIntent.getActivity(this, 0,new Intent(this, IncomingMessageView.class), 0);

// The ticker text, this uses a formatted string so our message could be localized

String tickerText = getString(R.string.imcoming_message_ticker_text, message);

// construct the Notification object.Notification notif = new Notification(R.drawable.stat_sample, tickerText,System.currentTimeMillis());

// Set the info for the views that show in the notification panel.notif.setLatestEventInfo(this, from, message, contentIntent);

// after a 100ms delay, vibrate for 250ms, pause for 100 ms and

// then vibrate for 500ms.notif.vibrate = new long[] { 100, 250, 100, 500};

// Note that we use R.layout.incoming_message_panel as the ID for

// the notification.It could be any integer you want, but we use

// the convention of using a resource id for a string related to

// application.nm.notify(R.string.imcoming_message_ticker_text, notif);

}

---------》KEYGUARD_SERVICE(“keyguard”)

A KeyguardManager for controlling keyguard.键盘锁,例如:

KeyguardManager keyguardManager =

(KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);

if(keyguardManager.inKeyguardRestrictedInputMode()){

return false;

}

---------》LOCATION_SERVICE(“location”)

A LocationManager for controlling location(e.g., GPS)updates.得到位置信息,例如:

LocationManager locationManager =(LocationManager)mContext.getSystemService(Context.LOCATION_SERVICE);Location location = null;

List providers = locationManager.getAllProviders();

for(int i = 0;i < providers.size();++i){

String provider = providers.get(i);

location =(provider!= null)? locationManager.getLastKnownLocation(provider): null;

if(location!= null)

break;

}

---------》SEARCH_SERVICE(“search”)

A SearchManager for handling search.创建搜索服务,例如:

SearchManager searchManager =

(SearchManager)context.getSystemService(Context.SEARCH_SERVICE);

ComponentName name = searchManager.getWebSearchActivity();

if(name == null)return null;

SearchableInfo searchable = searchManager.getSearchableInfo(name);

if(searchable == null)return null;

---------》VIBRATOR_SERVICE(“vibrator”)

A Vibrator for interacting with the vibrator hardware.提供震动服务,例如:

private static final SparseArray sVibrationPatterns = new SparseArray();

static {

sVibrationPatterns.put(AccessibilityEvent.TYPE_VIEW_CLICKED, new long[] {

0L, 100L

sVibrationPatterns.put(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED, new long[] {

0L, 100L

});

sVibrationPatterns.put(AccessibilityEvent.TYPE_VIEW_SELECTED, new long[] {

0L, 15L, 10L, 15L

});

sVibrationPatterns.put(AccessibilityEvent.TYPE_VIEW_FOCUSED, new long[] {

0L, 15L, 10L, 15L

});

sVibrationPatterns.put(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED, new long[] {0L, 25L, 50L, 25L, 50L, 25L

});

sVibrationPatterns.put(INDEX_SCREEN_ON, new long[] {

0L, 10L, 10L, 20L, 20L, 30L

});

sVibrationPatterns.put(INDEX_SCREEN_OFF, new long[] {

0L, 30L, 20L, 20L, 10L, 10L

});

}

private Vibrator mVibrator;

mVibrator =(Vibrator)getSystemService(Service.VIBRATOR_SERVICE);

Handler mHandler = new Handler(){

@Override

public void handleMessage(Message message){

switch(message.what){

case MESSAGE_VIBRATE:

int key = message.arg1;

long[] pattern = sVibrationPatterns.get(key);

mVibrator.vibrate(pattern,-1);

return;

case MESSAGE_STOP_VIBRATE:

mVibrator.cancel();

return;

}

}

};

---------》CONNECTIVITY_SERVICE(“connection”)

A ConnectivityManager for handling management of network connections.得到网络连接的信息,例如:

private boolean isNetworkConnected(){

NetworkInfo networkInfo = getActiveNetworkInfo();

return networkInfo!= null && networkInfo.isConnected();

}

private NetworkInfo getActiveNetworkInfo(){

ConnectivityManager connectivity =

(ConnectivityManager)getContext().getSystemService(Context.CONNECTIVITY_SERVICE);if(connectivity == null){

return null;

}

return connectivity.getActiveNetworkInfo();

}

---------》WIFI_SERVICE(“wifi”)

A WifiManager for management of Wi-Fi connectivity.例如:

进行wifi的打开,关闭,状态判断等。

private WifiManager mWm;

mWm =(WifiManager)getSystemService(Context.WIFI_SERVICE);

创建两个View单击事件的监听器,监听器实现onClick()方法:

private View.OnClickListener mEnableWifiClicked = new View.OnClickListener(){

public void onClick(View v){

mWm.setWifiEnabled(true);

}

};

private View.OnClickListener mDisableWifiClicked = new View.OnClickListener(){

public void onClick(View v){

mWm.setWifiEnabled(false);

}

};

---------》INPUT_METHOD_SERVICE(“input_method”)

An InputMethodManager for management of input methods.得到键盘或设置键盘相关信息,例如:

private void hideSoftKeyboard(){

// Hide soft keyboard, if visible

InputMethodManager inputMethodManager =(InputMethodManager)

getSystemService(Context.INPUT_METHOD_SERVICE);

inputMethodManager.hideSoftInputFromWindow(mList.getWindowToken(), 0);

}

---------》UI_MODE_SERVICE(“uimode”)

An UiModeManager for controlling UI modes.UI信息相关,例如:

int mUiMode = Configuration.UI_MODE_TYPE_NORMAL;

try {

IUiModeManager uiModeService = IUiModeManager.Stub.asInterface(ServiceManager.getService(Context.UI_MODE_SERVICE));

mUiMode = uiModeService.getCurrentModeType();

} catch(RemoteException e){

---------》DOWNLOAD_SERVICE(“download”)

A DownloadManager for requesting HTTP downloads

下载相关的接口,例如:

private void downloadUpdate(Context context, String downloadUrl, String fileName){

LogUtil.i(TAG, “downloadUpdate downloadUrl = ” + downloadUrl);

Uri downloadUri = Uri.parse(downloadUrl);

DownloadManager dm =(DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);Request downloadRequest = new Request(downloadUri);

//downloadRequest.setDescription(context.getText(R.string.upd_auto_check_prompt));

downloadRequest.setVisibleInDownloadsUi(true);//TODO:change to false when release!

//downloadRequest.setAllowedNetworkTypes(Request.NETWORK_WIFI);

downloadRequest.setDestinationInExternalPublicDir(“DoctorAn”, fileName);

downloadRequest.setTitle(context.getString(R.string.upd_downloading));

long downloadId = dm.enqueue(downloadRequest);

Map temp = new HashMap();

temp.put(“fileName”, fileName);

上一篇:被信任的幸福作文下一篇:在邮政实习的报告