Android应用程序设计学习总结

2024-06-24

Android应用程序设计学习总结(共8篇)

篇1:Android应用程序设计学习总结

学习总结

Android具有开放性。有一下平台优势:

一、开放性

在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

二、挣脱运营商的束缚

在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。从去年iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈,当可以通过手机IM软件方便地进行即时聊天时,再回想不久前天价的彩信和图铃下载业务。

互联网巨头Google推动的Android终端天生就有网络特色,将让用户离互联网更近。

三、丰富的硬件选择

这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。

四、不受任何限制的开发商

Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。

五、无缝结合的Google应用

在互联网的Google已经走过10历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。

总结了以上优点,但Android本身也有缺陷,千万不要钻太深和它较劲,走不过去的地方就想其他路绕,只要简约朴实不俗套,程序功能健壮就可以;另外多加几个Android开发者论坛社区下源码发帖求助,正所谓熟能生巧!

篇2:Android应用程序设计学习总结

零零碎碎的总结:

1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍.2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来.3.要有自己的知识库,可以是一个工具类,把写过的,看过的好的代码放进去,也可以是一个笔记本软件.因为只有放在知识库里的东西,才是你最重要的财富.4.如果你想做自由职业者,你需要学英语,因为在国外的盈利比国内多很多.如果你想进大公司,好公司,你需要学英语.你想深入学习android,但中文的android文章太少了,你查查百度,到处都是copy来copy去的hellword,所以,你需要学英语.如果你想出国,你需要学英语.5.Http协议要研究透彻.http的信息头有什么信息,分别代表什么,信息体有什么信息,代表什么,都要搞的明明白白.scoket也是一样.6.在eclipse里的layout文件都有graphical Layout.通过这个好好的把UI调整好.7.Android里的junit每次运行都会打包新的apk到设备上跑.效率非常慢.如果是跟android无关的测试,最好自己建立一个单纯的java项目做测试.8.面试的时候不要觉得自己提的薪水太高,物以稀为贵明白吗?不管你的期望薪资多少,都有可能实现,这只是时间问题.9.如果一家小公司通过猎头找到你,即使公司在小,也比外面那些40,50人的公司还要好.不要觉得公司不行,担心会倒闭.放心吧,至少活1年是没问题的.10.不要把自己绑在android上,有空也研究下IOS(最近小弟就准备研究ios,刚买了6本书...).11.移动互联网最少还有10年的快速增长.android最少还有两年的快速增长.走android这条路是不会错的.12.有空多学点开放平台的SDK.比如新浪微博,腾讯微博,淘宝平台,支付宝移动支付平台,快钱移动支付平台等等..这些都是不愁没市场的.13.即使技术再差,也要发布一个应用到market上去.因为这样你才了解做一个应用的逻辑.14.每个月拿到薪水省500-1000元出来.这些钱投在买学习资料,去培训班上课...在培训班,花再多的钱也是值得的.15.你真正的价值在项目经验和对底层的认识上.不要忽略基础知识.16.如果有空把Android的源代码看一下.底层的东西很枯燥,但这些很值得学.17..程序员其实是艺术家.代码重构和设计模式,是非常非常重要的东西,必须要学

18.不要去维护一个项目,要去做一个项目.19.一开始不要轻易去大公司,虽然大公司是可以让你呆一辈子的.但你的起点低,以后成就也低.20:每天早上提前20分钟上班,5分钟把今天的工作计划写好.15分钟用来看各大It论坛的新闻.21:如果以前没做过java,那就把SSH看下,自己搭建一个小服务器.这是为了接私活用.22:PS一定要学,接私活用.23:多下载市面上好的应用,每天都用,只有这样你才能了解市场.现在所有的APK都可以反编译,看源代码麻烦,但看layout和图片很容易,所以....你懂的.24.要有羞耻心.25.老板仅仅要求你把东西做完,需求完成.但你必须对自己要更严格一点.写一段代码,从网上复制一份代码,并不是可以用就行了,你还必须明白他的原理,为什么这样就可以?这才是对你最有用的地方,这也是你今后薪资增长的保证.26.要懂得舍得.移动领域发展太快,必要时必须要用钱换时间.不然你会远远落后别人(我之前花了4000大洋去培训班学IOS三天).27.要明白自己想要什么,什么才能最大性价比提高你的能力.对我来说,能让我提高最大的,就是Android和IOS同时会,并且自己可以做架构设计.28.看android技术书籍最快的学习方法,先通读一次.然后把书本上的demo一个一个写出来.不要觉得太容易不去写.很多东西都是这样,看起来简单,但做起来难.最后再对照自己写出来的程序代码去理解书本的意思.29.应用和游戏是2个方向,没有一个公司会同时做游戏又做应用,即使是外包公司,大多也只做一块.专精一个就可以了.30.每次做完一个项目,要强迫自己做总结,通过这个项目,我学到了什么新技术?犯了哪些

SB错误?

篇3:Android应用程序设计学习总结

随着通讯技术和互联网技术的发展,各类便携的、易用的、高性能的移动终端不断出现,移动网络所提供的服务和容量不断扩展。而“移动”也正成为未来技术发展和社会变化的主题,如何利用移动设备开展教学活动已经成为国内外教育界专家研究的热点问题。移动学习,作为一种新型教育方式,必将成为传统教育的补充,给传统教育注入活力,同时引起学习的变革。

1 移动学习概述

1.1 移动学习的内涵

作为一个新兴的、发展中的研究领域,移动学习的概念目前还没有形成较为统一的共识。Paul Harris认为移动学习能够为学习者带来一种随时随地的学习体验,能够使学习者通过移动电话或PDA随时随地享受教育片段。Alexzander Dye等人认为移动学习能够随时随地有效地呈现教学内容,并且提供教师和学习者之间的双向交流。黄荣怀认为移动学习是指学习者在非固定和非预先设定的位置下发生的学习,或有效利用移动技术所发生的学习。

1.2 移动学习的特征

基于对上述移动学习概念内涵的理解,移动学习的特征主要有:

(1)移动性,提供随时随地的学习环境。移动学习,摆脱了以教室为主的面对面教学环境。利用移动设备,学习者可随意支配时间、把握空间,获取相关数据信息进行学习和交流。

(2)情境性,提供真实或仿真学习情境。移动技术为情境学习提供了支持,使得教与学突破时空的限制,可以在真实的自然、社会环境中互动交流或者模拟真实情境开展教学。

(3)实时性,提供Just-in-Time的学习内容。“Just-in-Time”学习,即非正式学习,在学习者需要的时候为其提供学习信息,通过移动设备、互联网技术获取需要的信息。

2 Android系统的特点

Android系统是谷歌公司在2007年发布的一款开源码操作系统,主要应用于便携设备。该系统采用Softwarestack架构,由操作系统、中间件、用户界面和应用软件组成。随着Google及Open Handse Alliance(开放联盟)其他成员的大力推进,Android平台的市场占有率逐渐增加,已成为移动设备的主流操作系统,因此基于Android的移动学习平台开发具有广阔的应用前景。Android系统具有以下特点:

(1)开放性。Android拒绝专有权,提倡开放性,提供了开源的操作系统。而开放的平台允许任何移动终端厂商加入到Android联盟中,共同研究开发Android系统,使其越来越成熟。同时还有利于Android积累人气,降低生产成本。

(2)并行性。Android采用完整的多任务环境,应用程序可以并行运行。最近运行过的程序都常驻后台,而在内存管理上则由系统选择性地自动杀掉占用内存的近期非活跃进程。

(3)网络化。Android侧重于网络应用方面的功能,保证了信息的实时更新。借助Android的widget可以方便地整合现有的互联网资源,开展交流学习和评价。

(4)个性化。Android创造性地引入了“软件商店”营销模式,运营商和用户可根据需求自主预定出厂软件,制定自己特色化和个性化的产品,这是软件业发展的里程碑,对推动3G应用将会产生深远影响。

3 基于Android的移动学习平台设计研究

3.1 设计原则

(1)理念先进性。理念决定思路,决定人们思考问题的角度和方式。设计理念的先进性,有助于使移动学习平台在功能和性能上达到较高的水准。移动学习作为一种新型的学习方式,在设计过程中一定要引进先进的教育理念和技术理念作为支撑。

(2)资源丰富性。没有课程资源的广泛支持,再好的理念和目标也很难变成实际的教育成果,课程资源的丰富性和适切性程度决定着课程目标的实现范围和实现水平。因此要重视学习资源的丰富性,及时为客户端更新学习资源。

(3)操作简易性。根据学习者特点,从学习者需求出发,设计简洁、易操作的交互界面,减少学习成本,提高系统的可用性和用户体验。

3.2 体系框架

3G时代的移动网络,逐渐被C/S技术取代。因此本系统采用了基于Android平台的C/S体系框架,主要通过客户端从服务器下载学习资源,如图1所示。

(1)客户端Android平台通过Web服务利用用户操作界面Activity调用Client Request和my Handler对象向服务器发送请求,获取学习资源和相关信息。

(2)服务器端数据库系统采用SQL Server2005数据库,主要用于保存用户信息、学习资源、课程信息等相关数据。

(3)服务器端管理系统负责完成用户信息、学习资源、课程信息等数据的管理操作。

3.3 功能模块

基于以上体系框架,设计了如下移动学习系统平台,共有管理员模块、教师模块、学生模块三部分,如图2所示。在功能模块设计中,既要注重交互性,又要注意简洁、易用性。

(1)学生模块。包括注册、课程公告、课程学习、资源上传、在线提问、在线测试等功能。

(2)教师模块。包括注册、发布公告、课程设计、资源上传、答疑、作业等功能。

(3)管理员模块。包括用户管理、资源管理及各类日常维护等功能。

3.4 关键技术

(1)内容呈现技术。基于C/S体系架构的移动学习系统中,主要内容格式有文本+流媒体和动画。对于文本+流媒体这种方式,可采用XML的内容编辑方式,其在服务器进行内容编辑时难度较小,但同时客户端内容解析时效率降低。动画主要包括Flash动画和SVG动画。Flash动画以其独特的时间片段分割和重组技术,同时结合Action Script的对象和流程控制,可使得界面设计和动画设计更加灵活。SVG是基于XML语言,用于描述二维向量图形的一种图形格式。SVG动画直接声明或通过脚本来进行定义或触发。SVG通过脚本语言调用对象模型来访问或控制所有的元素、属性和属性值。

(2)内容自适应技术。移动学习的终端设备复杂多样,决定了对内容的格式、大小和呈现需求不同。如何使内容根据移动设备的性能自适应转换,从而适合屏幕大小、移动设备计算能力,甚至学习者的学习风格等个性化学习需求,是移动学习系统开发的关键技术。移动学习内容的自适应技术框架主要包括设备识别、XSL样本单生成、XSLT转换模块。同时要建立起自适应技术应用环境或情形的模型,即上下文建模。

3.5 移动学习资源形式

(1)文本形式的移动学习资源。这种形式的资源主要是以有限的文字传递学习的内容或者有关学习的讨论等,形式单一、内容简洁。常见的应用领域包括:诗词欣赏、成语解释、词汇学习、课程学习提醒等相关资源。

(2)流媒体形式的移动学习资源。这种形式的资源主要包括图片、音频、视频等,现在大多数移动设备都可以支持这类资源。而流媒体的方式更加快了移动学习资源的快速生成。

(3)Flash格式的移动学习资源。Flash是一种交互式矢量多媒体技术,被称为“最为灵活的前台”,设计方式灵活,存储空间小,同时具有跨平台特性,而且具有很强的可移植性。

4 结语

随着移动设备和3G网络的高速发展,从数字化学习到移动学习的趋势越来越明显。移动学习以其学习时间灵活,学习内容短小、精炼且片段化等特点,也奠定了在未来教育领域的重要地位。本文将移动学习系统和Android平台相结合,发挥双向优势,设计了基于Android的移动学习平台,明确了设计原则,构建了体系框架,设计了功能模块,同时还说明了设计的关键技术以及学习资源的形式。该系统可广泛应用于手机、平板电脑、PDA或其他便携式移动设备,对移动学习系统研究具有一定的参考和实用价值。

参考文献

[1]黄荣怀,SalomaaJ.移动学习-理论.现状.趋势[M].北京:科学出版社,2008.

[2]刘建设,李青,刘金梅.移动学习研究现状综述[J].电化教育研究,2007(7):23-27,38.

[3]王建华,李晶,张珑.移动学习理论与实践[M].北京:科学出版社,2009.

篇4:Android应用程序设计学习总结

关键词:Android智能终端;移动学习;应用程序;设计

中图分类号:G434 文献标识码:A文章编号:1671-864X(2015)12-0184-01

移动学习是指在不固定时间和不固定地点,通过各种多媒体技术来满足学习者主动学习需求的一种新型学习方式。因移动学习具有移动性、个性化、情境性、协作性等特点,它已经成为高校信息化教学的一个重要方向。随着智能手机,平板电脑等智能终端与无线网络快速普及,智能终端已经成为移动学习的重要载体[1-2]。根据中国互联网信息中心2012年中国智能终端市场主流的操作系统调查结果显示,Android 操作系统凭借开源、开放的特性,占比55.4%,已经在智能操作系统中取得优势的领先地位[3]。基于此特点,本文设计了一种面向Android智能终端的移动学习应用程序(APP: applicaion),以现实移动学习过程、教学资源的整合、个性化学习过程。

一、应用程序开发工具的选择

目前,专业的Android 应用程序开发者常使用的开发工具为Eclipse+ADT+SDK,但是对于没有接触过面向对象程序编写的开发者而言,使用这种开发模式将是非常困难的。因此,本文选取了一种快速可靠的开发工具-App Inventor。

App Inventor是由谷歌公司所提供的一种在线可视化编写的Android 应用程序工具。App Inventor采用的是积木式图形拼接开发方式,通过自身强大的控件库和电子积木的拼接从而能够实现手机应用的开发,并且提供了在线模拟器,能够在线调试应用程序。通过这种简便且灵活的开发方式,避免了由不懂面向对象程序编写、调试带来的诸多不便[4-6]。

二、应用程序的设计

(一)设计原则。

本文设计的应用程序是针对移动智能终端的,所以设计程序时应考虑终端的特点以及程序的实用性(例如:屏幕大小、分辨率、输入方式、处理能力等)。因此,设计该程序时主要遵循了以下原则:良好的兼容性,系统易于扩展与升级、系统结构稳定性、实用性与安全性原则[7]。

(二)功能模块。

本应用的的主要功能是辅助学生自主学习,提供给学生一个学习的平台,应用的主要用户是教师与学生,教师是学习内容和信息的发布者,学生通过无线网络随时随地的学习。

1、登录模块。

进入应用以后,有注册和登录两个选项。如果用户选择登录,则需要输入用户名、密码和身份,如果用户名、密码、身份不匹配,则将弹出错误提示且清除已输入的信息,返回起始登录界面。如果用户选择注册,则需要输入用户名、密码、选择身份,然后点“注册”,如果用户名与数据库已有用户名重复,则提示注册失败,重新填写注册信息。

2、学生功能模块。

学生在注册、登录成功以后,就有权限对应用各项功能进行操作,学生功能模块主要有四个模块组成:课程学习、课程考核、过程统计、有问有答、公告栏。

课程学习:学生可以选择按章节和知识点进行操作。

课程考核:学生可以选择章节课后习题、模拟考试、错题集。选择“章节课后习题”,学生将按要求完成与章节内容相关的习题;选择“模拟考试”,学生将要完成在习题库随机抽选的若干道试题。“错题集”是收藏学生答错的习题。

过程统计:用于统计学生学习时间与答错试题的分布。

有问有答:用于学生与教师之间沟通交流。

公告栏:用于查看教师发布的通知。

3、教师功能模块。

教师在登录成功后,能够操作的功能模块有:有问有答、公告栏。

有问有答:用于教师查看、解决学生提出的问题,辅助学生完成学习。

公告栏:用于教师发布通知以及课程相关内容。

三、结束语

本文基于App inventor环境下,设计了一种面向Android智能终端的应用程序,用于学生的移动学习过程。应用还有诸多不足之处,比如:供学生和教师操作模块还较少,资源少,模块设计缺乏娱乐性,达不到寓教于乐;教师的数据管理功能有待强化等。

参考文献:

[1]黄有福. 移动学习在高职教育学习平台中的应用研究[J].广州职业教育论坛.2013.12(3):26-30.

[2]刘志.移动学习的现状以及评述[D].上海师范大学, 2012.

[3]李宏升,王宝红,吕臻. 基于智能终端的网络辅助学习系统的设计开发[J].河南科学.2013.31(7):978-988.

[4]卓树峰. 基于App Inventor的 Android 手机蓝牙通讯开发[J]. 福建信息技术教育2012.3(1).25-30.

[5]孙宇,管伟明.基于Appinventor 的混合气体测爆仪研究[J]. 中州煤炭.2014.22(6):33-42.

[6]郭守超,周睿,邓常梅等.基于App Inventor和计算思维的信息技术课堂教学研究中国电化教育2014.326(30):91-96.

[7]刘宾.基于Android的《计算机文化基础》移动学习系统的设计与开发[D].山东师范大学,2013.

篇5:Android应用程序设计学习总结

BroadCast(广播),概念:一种在系统内进行通信的机制.通过这种机制,它能够将系统中的某个进程的信息或者意图传递到其他的对这些信息或者意图感兴趣的进程.广播发送者:想要主动传递自己的信息或者意图给系统或者特定的接收者,以便其作出响应.广播接收者:想要接收系统或者特定进程的某些信息或意图,以便作出相应的响应.Android广播机制包含三个基本要素: 广播(Broadcast)-----用于发送广播。

广播接收器(BroadcastReceiver)-----用于接收广播。

意图内容(Intent)-----用于保存广播相关信息的媒介。

广播的过程:首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用Context.sendBroadcast()、Context.sendOrderBroadcast()方法,把Intent对象以广播的方式发出去。当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的Intentfilter是否与发送的Intent相匹配,若匹配就会调用BroadcastReceiver的void onReceive(Context curContext, Intent broadcastMsg)方法,onReceiver()方法执行完成后,BroadcastReceiver的实例就会销毁。

sendBroadCast():发送普通广播可以在同一时刻被所有接收者收到

优点:消息传递效率高

缺点:各个接收者之间无法通信,无法终止消息传播

sendOrderedBroadCast:发送有序广播

接收者将按预先声明的优先级依次接收广播消息 优先级设置: android:priority(-1000∽1000)数越大级别越高 也可调用IntentFilter对象的setPriority()设置

上一个接收者可往广播中压入数据传递给下一个接收者

任意一个接收者都可终止广播的传播,下一个就不能接收 注意:

如果找不到合适的BroadcastReceiver组件,应用不会有任何问题。onReceiver()方法不能在10秒执行完成,会认为该进程无响应。弹出ANR(application no response)的对话框。

源代码实例如下: 发送普通广播: Aactivity:

protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button =(Button)findViewById(R.id.button1);button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0){ Intent intent = new Intent();

intent.setAction(“com.coslay.action.CUSTOM_BROADCAST”);intent.putExtra(“msg”,“简单的消息”);sendBroadcast(intent);} });} 程序启动BroadcastReceiver只需要两步: 创建需要启动的BroadcastReceiver的Intent 调用Context的sendBroadcast()或sendOrderedBroadcast()方法来启动指定的BroadcastReceiver BroadcastReceiver:

public class CustomReceiver extends BroadcastReceiver{ @Override public void onReceive(Context arg0, Intent arg1){

Toast.makeText(arg0, “接收到的Intent的Action为:”+arg1.getAction()+“n消息内容是:”+arg1.getStringExtra(“msg”), Toast.LENGTH_LONG).show();} 只要重写BroadcastReceiver的onReceive(Context context,Intent intent)方法即可。然后在如下注册监听器即可。

AndroidManifest.xml:

指定该BroadcastReceiver能匹配的Intent有两种方式: 1.使用代码进行指定: IntentFilter filter = new IntentFilter(“android.provider.Telephony.SMS_RECEIVED”);SomeReceiver receiver = new SomeReceiver();registerReceiver(receiver,filter);2.在AndroidManifest.xml文件中配置。如上所示。发送有序广播: Aactivity:

button2 =(Button)findViewById(R.id.button2);button2.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ Intent intent = new Intent();

intent.setAction(“com.coslay.action.SORTED_BROADCAST”);intent.putExtra(“msg”, “简单的消息”);sendOrderedBroadcast(intent, null);} });BroadcastReceiver:

public class SortedBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent){

Toast.makeText(context, “接收到的Intent的Action为:”+intent.getAction()+“n消息内容是:”+intent.getStringExtra(“msg”), Toast.LENGTH_LONG).show();//创建一个Bundle对象,并存入数据 Bundle bundle = new Bundle();//将bundle存入结果中

bundle.putString(“first”, “第一个BroadcastReceiver存入的消息”);setResultExtras(bundle);//取消Broadcast的继续传播 //abortBroadcast();} } 优先接收到Broadcast的接收者可以通过 setResultExtras(bundle);方法将处理结果存入Broadcast中,然后传给下一个接收者,下一个接收者通过代码:Bundle bundle = getResultExtras(true)可以获取上一个接收者存入的数据。

AndroidManifest.xml:

接收系统广播(接收开机广播启动服务): BroadcastReceiver如下:

public class LaunchReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent){ Intent tIntent = new Intent(context , LaunchService.class);// 启动指定Service context.startService(tIntent);} } Service如下:

public class LaunchService extends Service { @Override public IBinderonBind(Intent intent){ return null;} @Override public void onCreate(){ // 定义1秒执行一行输出

new Timer().schedule(new TimerTask(){ @Override public void run(){ System.out.println(“-----” + new Date()+ “-----”);} }, 0, 1000);} } AndroidManifest.xml:

BroadcastReceiver可以实现Service与Activity之间的通信: Activity如下:

public class MusicBox extends Activity implements OnClickListener { // 获取界面中显示歌曲标题、作者文本框 TextView title, author;// 播放/暂停、停止按钮 ImageButton play, stop;ActivityReceiveractivityReceiver;public static final String CTL_ACTION = “org.crazyit.action.CTL_ACTION”;public static final String UPDATE_ACTION = “org.crazyit.action.UPDATE_ACTION”;// 定义音乐的播放状态,0x11代表没有播放;0x12代表正在播放;0x13代表暂停 int status = 0x11;String[] titleStrs = new String[] { “心愿”, “约定”, “美丽新世界” };String[] authorStrs = new String[] { “未知艺术家”, “周蕙”, “伍佰” };

@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);// 获取程序界面界面中的两个按钮

play =(ImageButton)this.findViewById(R.id.play);stop =(ImageButton)this.findViewById(R.id.stop);title =(TextView)findViewById(R.id.title);author =(TextView)findViewById(R.id.author);// 为两个按钮的单击事件添加监听器 play.setOnClickListener(this);stop.setOnClickListener(this);activityReceiver = new ActivityReceiver();// 创建IntentFilter IntentFilter filter = new IntentFilter();// 指定BroadcastReceiver监听的Action filter.addAction(UPDATE_ACTION);// 注册BroadcastReceiver registerReceiver(activityReceiver, filter);Intent intent = new Intent(this, MusicService.class);// 启动后台Service startService(intent);}

// 自定义的BroadcastReceiver,负责监听从Service传回来的广播 public class ActivityReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent){ // 获取Intent中的update消息,update代表播放状态 int update = intent.getIntExtra(“update”,-1);// 获取Intent中的current消息,current代表当前正在播放的歌曲 int current = intent.getIntExtra(“current”,-1);if(current >= 0){ title.setText(titleStrs[current]);author.setText(authorStrs[current]);} switch(update){ case 0x11: play.setImageResource(R.drawable.play);status = 0x11;break;// 控制系统进入播放状态 case 0x12: // 播放状态下设置使用暂停图标

play.setImageResource(R.drawable.pause);// 设置当前状态 status = 0x12;break;// 控制系统进入暂停状态 case 0x13: // 暂停状态下设置使用播放图标

play.setImageResource(R.drawable.play);// 设置当前状态 status = 0x13;break;} } }

@Override public void onClick(View source){ // 创建Intent Intentintent = new Intent(“org.crazyit.action.CTL_ACTION”);switch(source.getId()){ // 按下播放/暂停按钮 case R.id.play: intent.putExtra(“control”, 1);break;// 按下停止按钮 case R.id.stop: intent.putExtra(“control”, 2);break;} // 发送广播,将被Service组件中的BroadcastReceiver接收到 sendBroadcast(intent);} } Service的实例代码如下:

public class MusicService extends Service { MyReceiverserviceReceiver;AssetManager am;String[] musics = new String[] { “wish.mp3”, “promise.mp3”, “beautiful.mp3” };MediaPlayermPlayer;// 当前的状态,0x11 代表没有播放 ;0x12代表 正在播放;0x13代表暂停 int status = 0x11;// 记录当前正在播放的音乐 int current = 0;

@Override public IBinderonBind(Intent intent){ return null;}

@Override public void onCreate(){ am = getAssets();// 创建BroadcastReceiver serviceReceiver = new MyReceiver();// 创建IntentFilter IntentFilter filter = new IntentFilter();filter.addAction(MusicBox.CTL_ACTION);registerReceiver(serviceReceiver, filter);// 创建MediaPlayer mPlayer = new MediaPlayer();// 为MediaPlayer播放完成事件绑定监听器

mPlayer.setOnCompletionListener(new OnCompletionListener()//① { @Override public void onCompletion(MediaPlayermp){ current++;if(current >= 3){ current = 0;} // 发送广播通知Activity更改文本框

Intent sendIntent = new Intent(MusicBox.UPDATE_ACTION);sendIntent.putExtra(“current”, current);// 发送广播,将被Activity组件中的BroadcastReceiver接收到 sendBroadcast(sendIntent);// 准备、并播放音乐

prepareAndPlay(musics[current]);} });super.onCreate();}

public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, Intent intent){ int control = intent.getIntExtra(“control”,-1);switch(control){ // 播放或暂停 case 1: // 原来处于没有播放状态 if(status == 0x11){ // 准备、并播放音乐

prepareAndPlay(musics[current]);status = 0x12;} // 原来处于播放状态 else if(status == 0x12){ // 暂停

mPlayer.pause();// 改变为暂停状态 status = 0x13;} // 原来处于暂停状态 else if(status == 0x13){ // 播放

mPlayer.start();// 改变状态 status = 0x12;} break;// 停止声音 case 2: // 如果原来正在播放或暂停

if(status == 0x12 || status == 0x13){ // 停止播放 mPlayer.stop();status = 0x11;} } // 发送广播通知Activity更改图标、文本框

Intent sendIntent = new Intent(MusicBox.UPDATE_ACTION);sendIntent.putExtra(“update”, status);sendIntent.putExtra(“current”, current);// 发送广播,将被Activity组件中的BroadcastReceiver接收到 sendBroadcast(sendIntent);} }

private void prepareAndPlay(String music){ try { // 打开指定音乐文件

AssetFileDescriptorafd = am.openFd(music);mPlayer.reset();// 使用MediaPlayer加载指定的声音文件。mPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());// 准备声音 mPlayer.prepare();// 播放

篇6:android学习方法总结

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

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

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

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

篇7:Android应用程序设计学习总结

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);

篇8:Android应用程序设计学习总结

1 移动学习的理论支持

移动学习是利用移动无线通信技术设备获取教育信息、教育资源和教育服务的一种学习模式,既是课堂教学的补充,也是网络学习和分布式学习的延伸,同时还能作为诸如非正式学习、混合式学习等学习模式的载体。Knowledge Planet公司的Clark Quinn在谈到移动学习时说:“移动学习是移动计算与数字化学习的结合,它包括随时、随地的学习资源,强大的搜索能力,丰富的交互性,对有效学习的强力支持和基于绩效的评价。”支持移动学习的学习理论十分广泛,包括非正式学习、情境认知与学习,混合学习等。一方面,这些新型的学习理论为移动学习实践提供了理论基础,另一方面,移动学习又为这些学习理论在实践中的应用提供了技术手段与方法。

2 教育技术需要创新

教育技术是为了促进学习过程和改善教学效率,而对各种恰当的技术过程和技术资源进行设计、开发、利用和管理的研究和实践。当前,我们在课堂上使用的教育技术,主要是通过使用音频、视频、图片、文字等多媒体资源来丰富我们的教学内容,创设生动的教学情境,提高学生学习的兴趣,实现各类资源的共享,弥补传统教学条件的不足。随着移动互联网技术的快速发展,现代教育技术要进一步创新,把移动互联网技术与教育、教学进行深度融合,有效地提高教学质量。

3 系统设计

Android智能手机在学生群体中已广泛普及,本研究立足于某高职院校的人才培养目标,结合现代学习理论和软件工程思想,进行了基于Android平台的移动学习系统的设计。系统设计遵循按需开发、模块化、易操作及最小化原则,以实现程序的高效和复用。系统用户分为:①学生;②教学设计者(教师);③教学管理者(管理员)。

4.1 需求分析

1)功能需求,

主要是:①学生和教师可以在课堂之外、没有桌面电脑的地方,利用手机或平板电脑进行课程学习和课程管理;②学生和教师通过智能手机进行的学习活动产生的信息资料,要能同步保存在数据库服务器上,实现数据持久化。确保用户更换上网方式和操作终端后,依然能继续访问前期学习资源;③在服务器端存储用户身份信息,在客户端进行用户身份验证。一是保障系统数据安全,二是根据用户身份角色提供不同的功能权限和学习环境;④手机端的资源上传、下载和共享功能。数据先行下载后,可在没有无线接入的场所进行离线阅览和学习;⑤在线阅读、在线讨论和在线测验的功能是移动学习的重要组成部分,能实现非正式学习、微课、自主学习等学习实践。

2)性能需求

主要是:①响应时间需求,要求小于1s的应答时间,以获得良好体验;②可靠性需求,要求服务器端数据冗余,可追溯;③并发性需求,要求满足2000人同时在线的并发连接。

4.2 开发环境介绍

①Android:Android是基于Linux内核的开源手机操作系统,由三部分组成:底层的Linux内核、中间件以及核心应用程序。Android的应用程序一般使用Java语言编写,同时也支持其他主流开发语言,如C、Perl等。

②My SQL:My SQL是一个关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,对于中小规模的应用需求,My SQL提供的功能已经足够。My SQL社区版可以方便的获取,性能能够满足大多数开发的需求。

③操作系统使用Linux,Web服务器使用Apache,数据库使用My SQL社区版,脚本解释器使用PHP。以上四个软件组合被称为LAMP stack,它们是免费或开放源码的。

④SQLite:SQLite是一个开源的轻量级关系数据库,是一个完整的数据库系统。SQLite的实现基于SQL-92标准,支持事务、触发器和复杂查询,但不进行数据类型检查。

⑤Eclipse:Eclipse是一个免费的、可扩展的开发平台,核心非常小,只包括一个框架以及一组服务,通过附加的插件来构建完善而强大的开发环境。

4.3系统设计

4.3.1系统的总体架构

在架构设计中,采用多层体系结构有利于系统的开发、部署、维护及扩展。本设计釆用三层架构,服务器使用LAMP组合,SQLite作为智能手机端的嵌入式数据库,改善用户体验;采用My SQL作为服务器端的数据库,实现数据持久化,存储海量的学习资源、用户数据和日志信息等。

4.3.2 系统的拓扑结构

系统拓扑如图1所示。使用基于Android智能手机和平板电脑的用户可通过无线校园网,或者运营商提供的3G/4G数据服务等方式,连接校内服务器,实现跨地区、跨平台的应用。对于不断增加的数据流量和并发访问,可以通过前置的网络流量均衡设备结合服务器群集、SAN提高响应速度,改善操作体验。

4.3.3 系统的逻辑结构

逻辑结构见图2。第一层是用户界面层,分为台式电脑客户端与基于Android的移动客户端,用户视图在此层呈现,An⁃droid通过KSOAP组件访问应用服务器;第二层是业务逻辑层,包括Web服务器、业务逻辑服务器,构建了主要的在线学习处理功能,并为远程数据访问提供了Web Service服务;第三层是持久层,包括关系数据库My SQL、文件系统,用于系统的数据存储与访问。

4.3.4 系统功能设计

根据需求分析,设计功能结构图3所示。

4.3.5 系统类设计

本系统是MVC框架,类设计分为界面类、实体类、控制类。此处不例举。

4.3.6 数据库设计

系统需要存储用户信息、课程信息、试卷信息、作业信息、各类数字化资源,以及学习记录等大量的数据。概念结构设计的ER模型见图4。本系统涉及到的实体有:用户、学生、教师、管理员、课程、课程资源、作业、试题、试卷、资源、日志等。逻辑结构设计定义了相关的二维表,其中作业描述表实例见表1。

4.3.7 Android的界面布局

Android系统中可视化控件都从android.view.View类继承而来。在系统设计中使用2种方式创建View对象:一种是使用XML布局文件来配置View的各项属性,而后使用相应的方法来装载这些View;另一种方式是直接采用Java代码来建立View和修改View的属性。使用XML布局文件可以方便对控件进行布局,但在程序运行中的控制仍需Java代码来实现。本设计以第一种方法为主,第二种方法为辅,实现相对简单。

4.3.8 应用程序中的通信

用户界面层处于系统逻辑架构中的最高层,用于实现系统的View与用户交互。界面层的实现主要通过Android的基础类Activity进行,Activity是可视类,主要功能是加载View、响应用户操作、进行数据校验及调用数据接口。大部分系统功能需要两个以上的Activity相互配合才能完成,界面导航也要求在不同功能模块之间跳转。Activity类之间不能直接交互,An⁃droid提供了Intent机制来实现Activity之间的通信。

Android的java.sql包提供了通过JDBC直接连接远程数据库的方法。但是在面向对象的设计中,提倡“松耦合、紧内聚”的解决方案,直接连接远程数据库不是好办法。

本系统后台使用My SQL数据库,在移动终端按需使用SQLite进行本地暂存,以实现离线操作。Android移动终端通过调用Web Service实现网络数据交互,实现数据的远程存储和增、删、改、查功能,最后将所需数据返回给Android移动终端。 Web Service基于SOAP协议,本身可以实现跨平台的应用。

SQLite是非常轻量的数据库,android.database.sqlite SQLite Database是Android SDK中数据库操作的核心类,一般还会使用更便捷的抽象类SQLite Open Helper进行数据库操作。

数据库操作的例程如下:

以上例程实现了SQLite Open Helper的2 个抽象方法,并提供了exec SQL和query方法实现了数据库的增、删、改、查操作。

对于远程数据处理,使用第三方的类库KSOAP进行远程Web Service调用,在Android系统的客户端安装KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar,可以实现对业务逻辑和数据库的远程访问。

5 结束语

移动学习是未来学习活动重要组成部分。在技术层面,Android作为开放系统,提供了丰富的可视和非可视控件、良好的用户接口、强大的多任务管理功能和丰富的数据处理方法;在市场层面,Android具备完整的产业链,有免费的开发平台和发布环境,基于Android的手机普及并且相对低价。

本研究通过安装Android开发插件的Eclipse IDE进行系统开发,应用敏捷开发方法论提倡的小版本交付进行快速迭代,为教学工作提供有效易用的工具,实现了学生跨地点、跨时间、自定步调的自主选课、自主学习及在线考试。“术者,道之用也”,想要真正发挥移动学习的效用,要求教师在充分了解学生的能力起点和理解水平基础上,关注现代教育技术应用的有效性,以学习平台为依托,以活动为中心,鼓励学生自己发现并解决问题,自己摸索学习方法,形成自主学习的能力,真正使学生成为学习主体,达到促进学习的目的。

摘要:随着移动互联网的迅速发展,人们生活和学习的方式逐渐改变。为了探索提高教学成效的新路径,对教育技术进行创新,设计了基于Android的移动学习平台,分析教学功能需求、系统性能需求和系统关系人的使用需求,确定系统的物理框架和逻辑架构,弥补当前移动学习在教育技术支持方面的不足。

关键词:移动学习,教育技术,软件设计,Android

参考文献

[1]Shawn Van Every,Android多媒体开发高级编程:为智能手机和平板电脑开发图形、音乐、视频和富媒体应用[M].巢文涵,译.北京:清华大学出版社,2012.

[2]辛自强.知识建构研究:从主义到实证[M].北京:教育科学出版社,2006.

[3]梁振辉.高职院校学生在线学习特点及其影响因素研究[J].中国职业技术教育,2015(26):5-14.

[4]凌越.高职院校应用混合式教学的实践探索[J].中国教育信息化,2014(3):41-43.

上一篇:中石化环保管理制度下一篇:小学三年级语文教案32、好汉查理