安卓计算器的开发

关键词: 开发 计算器

安卓计算器的开发(精选十篇)

安卓计算器的开发 篇1

1 安卓系统架构

安卓系统架构采用了软件堆栈的架构, 共分为4层, 分别是Linux内核、中间件层、应用程序框架层、以及应用程序层[2]。第一层是Linux内核, 提供由操作系统内核管理的底层基础功能;第二层是中间件层, 由函数库和安卓运行时构成, 安卓函数库和运行时环境包含了一组核心库, 提供了java语言核心库内的大部分功能和Dalvik虚拟机;第三层是安卓应用程序框架层, 提供了安卓平台基本的管理好组件重用机制, 包括Activity管理、窗体管理、包管理、电话管理、资源管理、位置管理、通知消息管理、VIew系统和内容提供者等。第四层是应用程序层, 提供了一系列核心应用程序。

2 开发环境的搭建

安卓的应用开发通常要用到Google提供的Android SDK中的工具集。它包括编译器、资源管理器、调试器和模拟器, 并使用Eclipse加上安卓Developer Tools插件作为集成开发环境。搭建安卓开发环境过程如下:

1) 准备好安装文件, 下载Java JDK、Eclipse、安卓SDK。

2) 安装Java JDK, 安装完成后配置Java环境, 在我的电脑→属性→高级→环境变量→系统变量中添加以下环境变量即可, 需要说明的是设置环境变量对搭建安卓开发环境不是必须的, 可以跳过。安装完成之后, 可以在检查JDK是否安装成功。打开cmd窗口, 输入java-version查看JDK的版本信息;

3) 解压Android SDK, 运行解压包里的SDK Setup.exe, 点击Available Packages。如果没有出现可安装的包, 请点击Settings, 选择希望安装的SDK及其文档或者其它包, 点击Installation Selected、Accept All、Install Accepted, 开始下载安装所选包。在用户变量中新建PATH值为Android SDK中的tools绝对路径。点击“确定”后, 重新启动计算机。重启后, 进入cmd命令窗口, 运行android-h检查SDK是不是安装成功。

4) 解压Eclipse, Eclipse无需安装, 解压后, 直接打开就可运行;然后为Eclipse安装ADT插件, 打开Eclipse, 在菜单栏上选择help→Install New Software, 点击Add按钮, 在Location输入https://dl-ssl.google.com/android/eclipse, 进入下一步, 同意安装条款即可在线安装ADT。

5) 配置安卓SDK, 点击菜单诵window→preference, 点击Browse选择刚才安卓SDK的解压目录, 点击Apply、OK。配置完成。

通过以上5步, 开发环境就配置完成了。也就可以在此基础上开发安卓应用程序了。

需要说明的是, 容易出现ADT和SDK不匹配的情况, 因为我们打开SDK时, 默认是要更新的, 而SDK和ADT并不会同时更新, 所以, 要尤其注意。我们可以把升级后的SDK包压缩好, 打包发给学生, 只需要在电脑里解压到任意位置, 再在Eclipse中配置SDK的路径就可以了。

3 设计与实现

输入模块主要的任务是描述计算器键盘以及实现键盘的监听, 即当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法。

显示模块主要要完成的任务是描述计算器的显示区, 该区域用于显示用户的计算结果可以通过edit Text.set Text () 方法来实现。

计算模块是本次系统设计中的重点, 主要是在src文件夹下的源代码中添加运算过程, 这其中要通过find View By Id方法找到界面中的各个控件。比如找按钮的代码如下:Button button= (Button) find View By Id (R.id.button1) ;为button控件增加一个事件侦听器, button.set On Click Listener (new View.On Click Listener () {@Override...}) ;要注意数据类型的一致性, 比如用Integer.parse Int (edit Text1.get Text () .to String () ) 将字符串类型转化为整型, 用Double.parse Double (s) 将字符串转化为小数等。

系统要能在屏幕上显示出计算器的样子, 就要有整体的布局, 使用户能够看到整个计算器的画面。同时系统想完成计算功能必须要处理用户的输入, 当输入模块的监听传到计算模块中时, 计算模块就要根据相应的方法进行进一步的处理。这部分主要是对输入进行的逻辑判断, 基本会通if else或者switch case来实现逻辑判断。

4 安卓开发的优点和缺点

安卓系统能快速的发展, 当然有其自身的一些优点。

1) 编程语言, 安卓应用是用java语言编写的, 而java程序员的数量很多, 学习曲线也就比较小, 网络上有很多安卓的开源项目供我们学习使用。

2) 安卓系统是开源的, 衍生版本很多, 比如MIUI、OPHONE等, 我国手机厂商的系统大都是基于安卓的衍生版, 这样开发出来的安卓应用程序开源不加修改的在这些众多的衍生版系统中运行。

3) 开发环境和测试工具安卓开发过程利用了极好的JDT工具。每一个Eclipse软件都使用了JDT工具, 这些工具非常好。有关Java的一切都提供了索引, 集成开发环境有丰富的源代码模型, 而且源码处理非常匹配。

任何新生事物都不是完美无瑕的, 安卓也有一些缺点。

1) 安卓的版本太杂, 对旧版本维护不够。

2) 安全问题, 由于安卓的开源和快速发展以及审核机制的不完善导致一些安卓恶意软件的出现, 用户的隐私不能得到充分的保障, 在不经意间就可能泄露自己的隐私。

3) 硬件配置要求比较高, 为了提高程序下次启动时的速度, 安卓不会将用户退出的程序完全关闭, 而是将这些程序存入内存中压缩并缓存, 这就占用了大量的内存空间。

5 总结

安卓手机应用程序开发是一项复杂的工程。该文探讨了安卓的系统架构, Eclipse IDE开发环境的搭建, 以及安卓应用开发的优缺点。并使用Java语言, 设计和开发了基于Eclipse平台的计算器。验证了该平台良好的实用性, 也为广大的安卓爱好者提供一个参考。

参考文献

[1]http://tech.hexun.com/2013-02-18/151208384.html.[2013-2-18].

[2]王向辉, 张国印, 等.安卓应用程序开发 (第二版) [M].北京.清华大学出版社, 2012.

[3]李芙蓉.当前智能手机操作系统及其比较分析[J].信息技术, 2008.

[4]安卓.应用开发揭秘[M].北京:机械工业出版社, 2010.

安卓计算器的开发 篇2

虽然安卓智能手机以及平板电脑的运行速度1天比1天快。然而开发者必需记住:APP仍在1种偏资源紧张的环境下运行的,这类环境主要依赖机能与最新的台式机或者笔记本电脑没法比拟的电池以及处理器。下面介绍的1些法子可以匡助开发者实现的利用程序开发的提高,以便现在以及将来的安卓装备上最顺畅地运行。

一、在程序开发的角度上,要确保APP利用程序能够快速响应

通过使用最新的安卓利用开发工具包(SDK)版本、利用编程接口(API)以及最好实践,确保开发者的利用程序是最新的,因此要使用安卓平台提供的最新工具。跟着安卓平台不断发展,它也在不断改良。1些功能可能已经被弃用,或者者换成为了更好的功能。核心API患上到了修正版(bug fix)以及机能改良。已经经引入了装入器等新的API,匡助开发者编写出运行更不乱、响应更迅即的利用程序。明智的开发者都在亲密关注安卓平台的新功能。

二、在发布利用程序以前,禁用或者尽可能少用调试以及诊断

如果开发者在安卓利用开发进程中,花费了大量时间将1些日志以及调试代码嵌入到了利用程序中,要确保在发布利用程序以前,尽可能少用或者完整禁用这些功能。

三、确保设计布局简单、简炼以及浅层

简单的屏幕有助于浏览起来最轻松,而简单的布局装入起来最快速。不应当过于深层地嵌套布局,或者者用没必要要的过量视图(View)控件塞满屏幕。花些时间来开发用户可以高效使用的简炼用户界面,而不是试图把太多功能塞入到单单1个屏幕上。这不仅有助于晋升利用程序的机能,还有助于让APP对于用户来讲更高效。

四、让利用程序的资源合适目标装备

添加合适特定装备配置的资源,那样它们就能尽量高效地装入。咱们在谈论图形资源时,这点尤为首要。如果开发者添加了可应用的庞大图象资源,需要装入以及调剂大小,就没法有效地使用其他的.利用程序资源。此外,如果开发者筹备让APP可以在许多装备上运行,为了让APP软件包文件维持公道的大小,应当最初只添加运行利用程序所需要的核心资源,然后让利用程序下载合适该装备的内容。

五、总结

有许多法子可以匡助安卓利用开发者检测APP的机能。有些需要使用特定的算法,有些依赖切实可行的调试以及机能监测技能。幸亏,安卓平台随带众多免费的实用工具,可以匡助查明以及解除利用程序里面的机能问题。

安卓计算器的开发 篇3

关键词:安卓系统;应用;发展

【分类号】TP311.52

一、安卓系统的基本组成

安卓系统是一种开放式的操作系统,最初只是作为以Linux为核心的手机操作平台。但随着信息科技的进步,安卓系统获得了较好的发展机遇,单靠Java来开发安卓应用程序的局面逐渐被多种编程语言所取代,所以受到了广大开发者的热捧,成为了具有实际应用价值的开放式操作系统。安卓系统有四个层级构成,分别是内核层、系统运行库层与应用程序框架层,应用程序层。内核可以为上层提供进程管理、内存管理及安全等服务,还可以在硬件层和系统的上层软件之间充当桥梁作用。系统运行库层有两个基本内容,分别是函数库与运行环境,函数库拥有Java语言中的一些功能,安卓系统里的组件能够调用函数库中提供的API,开发者可以通过应用程序框架进行支持。运行环境是指安卓应用程序的具体运行环境。应用程序框架层是一种专门为了开发应用程序而设计的系统结构,安卓的程序员可以通过这个框架来直接访问应用程序的核心以及系统中的API,进而有效实现了程序设计工作的简化,显著提升了编码效率,从而强化了系统程序的可重用性。应用程序层则是我们编写的应用运行的地方,安卓拥有一些自带的核心应用程序集合,能够提供综合数字服务的一些作用,具有发送与接受邮件、收发SMS等功能。

二、安卓操作系统应用软件开发探讨的内容

1、基于安卓操作系统应用的构建特点

安卓操作系统具有极其深刻的内容,在实际应用设计的过程中,表现了较强的适用性,主要原因是安卓是一个开源的操作系统,与传统的软件设计工作相比,其提供的软件开发环境相对自由,与此同时自安卓操作系统概念被提出之后,至今已经有12年的发展历史,安卓操作系统的各项应用方法及功能表现已经趋近于完善,安卓应用系统版本也在不断升级,其应用软件性能与社会发展实际需求在最大程度上保持一致,从而体现了软件系统应用与时俱进的特点。安卓操作系统的开发主要采用层叠的方法,让不同功能模块进行独立工作的同时,保持功能模块之间的联系,赋予功能模块共享软件资料的权利,从而保证系统运行的流畅性和有序性,在系统运行压力承受范围内,用户可以根据自己的工作需求,同时打开多种移动应用软件,继而保证在移动应用软件的支持下,用户可以进入高效的工作状态。

2、基于安卓操作系统的手机视频软件

在全球范围内开展经济快速进步活动的时代背景支持下,与软件开发技术不断提升相对应,移动设备硬件性能也在一定程度上得到了提升,智能手机的屏幕分辨率越来越高,同时“多核”与高频cpu的研发,为手机流畅播放视频功能的实现奠定了基础。从手机视频播放软件实际应用效果看,人们主要关注视频在线播放的流畅度与视频缓存的空间,但是当下视频观看与缓存大多都是高清片段,其占用的空间比较大,在实际应用的过程中,利用数据线路向电脑中传输比较麻烦。针对这样的现实问题,相关设计人员在原本程序结构基础上进行了适当的调整,围绕视频播放器应用的问题开展了研发工作,目前已经推出了媒介性质软件,利用该款软件,可以用手机连通电脑中储存的视频数据,在不影响电脑运行的基础上,突破时间与网络的限制,让用户可以随时随地的观看视频。

三、安卓系统的实际运用

1、在平板电脑上的应用

对于平板电脑来说,苹果的ios系统只会用在自己的ipad等产品上,其他公司无法使用ios开发平板电脑,但任何一家公司都可以使用安卓來开发具有自身特点的平板电脑。我们通过一些报告分析可以看出,因为开源的免费性和可定制性,谷歌公司当前还处于一个相对有利的位置。相当多的公司只有选择安卓系统来定制具有自身特色的平板电脑,并且也拥有很好的应用支持。因此,安卓平板电脑具有较高的支持率与较好的发展空间。

2、在智能手机上的应用

安卓系统具有一个显而易见的优势,便是它本身所具备的开源性特点,进而有效解决了软件成本较高的问题。许多智能手机的厂商在使用安卓系统时,不需要支付相关费用,便可以应用这个系统,从而降低了他们的生产成本。安卓智能机的上市,受到了广大手机用户的认可和支持。截至到目前安卓6.0操作系统在智能手机中的应用,使得手机用户的所有移动互联网应用可以畅通无阻。由于安卓系统具有较好的性价比,因此满足了中国许多消费者的现实需求,所以在中国具有较好的发展前景。手机用户开始逐渐体验到,采用了安卓系统的智能手机可以像电脑一样,实现移动互联网冲浪,随意安装软件扩展功能等等。安卓系统本身具有开放式源代码的特点,使得安卓应用逐渐得到了蓬勃发展。除此之外,安卓系统是由谷歌公司跟其它公司一起开发的,所以在网络应用上面具有较好的现实优势,从系统方面上来看,个性化是安卓系统的一个主要特性。随着安卓系统的不断完善与发展,扩展软件的数量也在不断增多,从而为智能手机用户带来了更多的体验。安卓智能手机能够支持3G、4G、WIFI等多种形式,可以较为轻松地联入互联网,进而成为了主要的融合应用终端。

结束语

通过上文的叙述我们能够了解到,在现代化科学技术的支撑下,移动软件应用及设计已经进入到了顶峰期,其各项应用功能根据人们需求的变化得到了极大的提升,在实际应用的过程中,利用安卓操作系统开放性平台的特点,为用户提供了良好的体验,进而在真正意义上表现了对基于安卓操作系统的移动应用软件进行研究的内在价值。

参考文献

[1]马明贤.基于安卓系统的多道伽玛能谱仪测量分析软件设计[D].中国地质大学(北京),2014.

[2]叶辉.安卓应用外部数据输入Fuzzing技术研究[D].中国科学技术大学,2014.

[3]饶润润.基于安卓操作系统的应用软件开发[D].西安电子科技大学,2014.

安卓计算器的开发 篇4

●Mathematics的主要功能及特点

Mathematics是一款强大的图形计算器,它不仅像一般的计算器那样,能够画图像、解联立方程组以及执行其他各种操作,而且还能支持求微积分、向量等其他功能。

在安卓手机里安装并打开软件(下载地址:http://android.d.cn/software/12389.html),软件暂时没有提供中文版,启动后的主界面及工具栏如图1所示。

Mathematics的主要操作都是通过工具栏中六大功能模块进行的,它有以下的主要功能和特点:1数学计算(formula):和一般的计算器常用功能差不多;2函数(function):绘制函数图像,能求微积分、最小值、最大值和交点;3代数(algebra):线性代数、向量、矩阵等计算;4转换(conversion):单位转换、二进制和十六进制等相互换算、复数计算;5概率(probability):能求组合数、常用的概率计算;6数论(number theory):模的计算,质因数分解。

●Mathematics在教学中的应用

在教学中用好Mathematics的话,可以增强数学学习的趣味性,激发学生学习的热情,充分发挥学生在学习过程中的主体地位,有利于学生自主构建知识。

1.利用Mathematics进行数学实验

Mathematics拥有强大的作图功能,这里以函数y=Asin(ωx+φ)的图像教学为例来说明它的用法。

函数y=Asin(ωx+φ)的图像的教学难点是让学生理解抽象的图像变化规律并把规律上升为理性认识。这里让学生利用Mathematics自主进行“数学实验”,动态演示图像变换,使抽象的问题直观化,从而很好地突破了这个难点。

探索一:探索A对y=Asinx的图像的影响。

先选中函数(function),然后选择“+”图标,再选择“fx”按键,在弹出的窗口中选择“sin”函数就输入好f(x)=sin(x)函数了。同样的再输入f(x)=2sin(x)和f(x)=1/2 sin(x),注意的是按键“)”代表的是计算机中的空格键。最后同时选中三个函数并绘制出它们的图像,单位可以选择弧度制,如图2所示。

探索二:探索φ对y=sin(x+φ)的图像的影响。输入f(x)=sin(x)、y=sin(x+π/4 )和y=sin(x-π/4 ),输入方法和前面一样,如图3所示。引导学生自主尝试改变不同的φ值,从而直观感受到图像的变化。

探索三:探索ω对y=sin(ωx)的图像的影响。

学生通过自己的观察思考,然后通过手机动手实验,并和同学相互交流,从而使他们的思维能力得到拓展,探究能力得到提高。

2.利用Mathematics进行数学计算

Mathematics还能进行微积分、极限和曲线的切线等复杂运算,这里以函数y=3x3+2x2+x-3为例,来体验它的强大功能。

先选中函数(function),然后输入函数y=3x3+2x2+x-3并绘制出图像,如图4所示。

此时在函数图像的下方会出现几个图标,分别是求导函数“d/dx”、求原函数“F(x)”、求积分“fab”、求极限“lim”,还可以求在某点处的切线“tangent”等。

限于篇幅,Mathematics其他方面的功能应用这里就不再举例,大家可以自已去学习。

●其他手机图形计算器软件简介

除了Mathematics外,还有一些像Math Sys、Mathlab GraphingCalculator、Algeo、微数等的图形计算器软件,为了使大家能识别它们,这里把相应的软件图标放在一起,如图5所示。

首先提的是Math Sys,这款软件是目前安卓手机中计算器功能最强大的,当然使用起来也是最复杂的,不容易上手。我们可以用它进行计算机编程,也可以像几何画板一样交互作图,可以构造轨迹,能绘制三维图像等。

Mathlab Calculator与GraphingCalculator的功能和Mathematics差不多,但没有Mathematics的求微积分等功能,而且界面不够简洁且免费版带有广告,但不影响使用。

Algeo使用起来最简单,界面也很简洁,它也有自己的特色就是能够求曲线的交点坐标,微数是一个国产的软件,特点是能绘制圆锥曲线,并能作3D函数图像。

安卓开发心得实例 篇5

将这段时间的Android开发心得记录如下。

1.开发环境和参考资料

由于学会__的时间比较短(年7月才学会),现在在用的mac版AndroidStudio是在国内某站上下载的。今年将开发环境由windows转为mac了,好在各种IDE都是跨平台的,迁过来后麻烦不多,Android Studio也贴心地支持Eclipse风格快捷键,使用技巧方面,《Android群英传》的第2章「Android开发工具新接触」讲了些很好的技巧。

同样因为学会__比较晚,主力参考资料一直是手头的几本书籍:可以当词典用的《疯狂Android讲义》,手把手地带新手入门的《第一行代码》,优雅细致地讲Android体系结构的《Android开发精要》,这三本是买的,很喜欢读,另外《Android群英传》《Android UI设计》《打造高质量Android应用》《App研发录》《Android开发艺术探索》买来后翻开的次数较少,感觉对不起它们。这几本其实也都是好书,以后要多看。

学会__之后,Android官网也成了好选择,但不代表书本就没用了。官方资料的优势是正统和条理清晰,但在「最佳实践」甚至「黑科技」上还是一线程序员写的书更接地气。而当想深入理解底层原理、类库的作用时,官网是好选择,而不像书本上的知识会让你有「说得对吗」「没翻译错吧」「没过时吧」的担忧。官网和书本,应当优势互补。具体编程中遇到的各种问题,书本上当然不能穷尽,官网就更不可能了,这时候Google和StackOverflow就有了巨大作用,当然,这也不能解决一切问题,很多时候还是要耐心地慢慢调试。

2.页面知识

这方面《Android开发精要》讲得非常好:安卓的四大组件,被以「任务」的方式组织在一起,「应用边界」和「进程边界」都被打破了。个人感觉,这是学习Android编程时极为重要、应该最早学习到的基础知识。

四大组件中,Activity最重要,它名为「活动」,视为「页面」更容易理解。页面间的关系,以「栈」的方式组织,显示一个新页面即将新页面入栈,总显示栈顶的页面,点击手机上的返回键,则弹出栈顶页面,这些跟浏览器的「前进/后退」按钮的逻辑是一致的,有些时候需要更复杂的控制,例如A打开B,B打开C,希望关闭C时直接返回到A,则应在显示C时将B关掉,栈内元素由ABC变成AC,即可实现目的。

国人用App,习惯了底部标签栏,但官方只有顶部标签栏,所以只好自己实现,Activity中放一个Fragment和一组显示为标签栏的页面元素(具体使用的是RadioGroup,也可以使用别的元素,这不重要),实现当点击标签按钮时,菜单、标签栏、Fragment的样式和逻辑都符合要求即可。Fragment的生命周期和能力,跟Activity几乎一模一样,问题只在于当和另外Activity交互时,接到信息的往往是TabActivity(即Fragment所在的Activity),需要把消息从TabActivity转交给Fragment。菜单的控制也是,点击菜单的消息会到TabActivity手里,要由它转交给具体的Fragment。

Activity和Fragment(下简称页面)中的元素关系,与html的dom类似,是树状的层次,事件也是先由子元素接收,再冒泡到父元素。布局方面,LinearLayout(线性布局)和RelativeLayout(相对布局)最常见,线性布局可以思路清晰地将元素摆在一条直线上,线性布局嵌套,即可先行后列地摆放,类似bootstrap中的row和column,可以嵌套许多层,而RelativeLayout适合用来摆以元素之间的相对位置为核心的页面,在思路上比LinearLayout要复杂一点,但功能强大,布局层次扁平,页面效率高。这两者的关系有点像html中的布局:各种block和inline元素的使用是常规武器,大部分时间好用且省心,但个别时候则需要脱离文档流。

页面中具体的单个元素,则与html的dom中的元素也非常类似,有宽度、高度、margin、padding、背景色、文本色、字号等「样式」属性,因此正如html中可以把样式写在html里,也可以写在css里一样,Android页面的样式也可以拿出来放到style配置文件里,这样能减少重复,便于维护。输入元素中用户输入的内容,当然也能从该元素的属性中读出。响应事件的元素的响应函数注册,也是在该元素上直接声明即可,类似网页中的__.onClick方式。元素和所属页面之间的关系,在页面的onCreate方法中使用findView找到该元素,并设到该页面的成员变量上。页面持有它的元素,元素拥有属性、输入值,并绑定有响应函数,这在任何有界面的编程中都是一致的。

3.数据知识

作为c/s程序,在本地当然有保存数据的能力,包括了键值对保存和数据库保存,这能力连html5后的b/s程序都具有了(5之前只有cookie的方式),Android这些能力的代码都很简单,不多说。

与服务器的交流,rest的交流方式是事实标准,这种交流方式保证了服务端写好rest接口后,开发的Android、IOS甚至Angular这种OPOA的网页程序都能共用这一套接口。rest的编码规范,网上早已有很多了,不多说。Android的HttpClient程序,只要指定url、参数、Get或Post等请求类型,即可发送请求,当服务器给出Http响应之后,Android程序可以从中拿到返回的json字符串,用JSON等库解析为集合或实体(其实json本质无非是map和list两种集合的混搭),然后遍历和取值,自动或手动构造成实体对象,然后改变页面的显示。在要页面显示时,由于Http返回的处理函数运行于另一个线程,直接调用页面的成员变量以试图修改其显示内容会报错。为此需要提早注册一个Handler,用于在接收到消息时读取页面的「数据属性」并改变页面显示,Http返回处理函数将数据更新到页面的「数据属性」中,向Handler发送一个消息,让Handler读取「数据属性」并更新页面即可。

在页面显示数据时,最常用到是ListView,可以定义一个Adapter,实现根据下标返回Item页面元素的方法,方法是声明一个Item布局文件,Adapter持有数据集合,在要实现的方法中使用传入的下标获得单个实体,再使用Item布局文件实例化一个页面元素对象,用实体的属性渲染页面元素对象,将页面元素对象返回即可,推荐使用ViewHolder来提高性能,这在包括《打造高质量Android应用》等书都讲了。

4.实践经验

有了上面1至3的知识,理论上即可完成App的开发,善于将各种编程技能元素组合使用即可(界面知识 + 数据知识 = 一切),但还有些具体工作了才会获得的经验。

在Android Studio中引入第三方库是使用Gradle,类似maven,写配置文件即可。

App上架方面360、百度、腾讯、豌豆荚、小米都成功上线了,华为和PP助手不允许非公司用户上线,没办法。

尝试手动实现定时轮询来获得服务器上的提醒,不成功,但对Service和BroadcastReceiver的理解更深了,Service的主要用途就是保证它打开的线程一直活着,但怎么保证这Service不死?一是设成常驻在通知栏的前台Service,二是在安卓手机「设置」里将该App设为「锁屏后继续运行」,还要将网络设为「锁屏后不断网」,以保证锁屏后线程能继续轮询并从网络上得到最新信息。而BroadcastReceiver的主要作用是,让两个相互之间解耦合得很好的组件可以互相通讯,只需要发起通讯那方指定一个字符串——既不需要访问对象,也不需要指定class类对象,指定一个字符串即可,这时通讯发起方根本不知道会不会有人响应它、会有几个人响应它,零个、一个、多个响应者都有可能,这就是「广播」的意义,可以联系「消息队列」来理解它,主要的目的是解耦。

虽然如此还是常有用户反馈收不到消息推送,只好使用专业的推送服务,目前使用的是「友盟」,文档很好,还提供了编程式发消息的sdk,测试也很友好,调了两天,用户基本能顺利收到推送了,当然还是要在手机设置中将App加入「锁屏后继续运行」的白名单,否则友盟的PushService被杀掉就收不到推送了。另外第三方的「统计」还在摸索。

程序更新提示的实现是在启动时向服务器发一个请求了解最新版本号,与本地程序版本号比对后,如果有更新的,则询问是否要更新。apk包是在Android Studio里签名打包之后,用360加固了之后(否则各平台不允上线),传到了「七牛云存储」的服务器上,在App获取最新版本号时,将最新的apk包的地址一并获取下来,如果用户同意更新,则在后台启动线程下载该apk包,下载完成后自动安装。

App的登录,是将用户名密码提交到服务器,服务器检查正确后返回一个token,App将这token保存在本地,以后请求api时附带用户名和token一起发给服务器,服务器检查用户名和token正确,则将关键的数据返回给App,否则视具体需求返回不完整的数据(未注册用户看到的数据不完整),或者直接返回错误(未注册用户完全不允许访问的数据)。注册时,则是生成一个验证码,将手机号和验证码存到库里,调用发短信的服务商的接口发到用户手机,当用户输入验证码发送请求到服务器,服务器检查手机号和验证码是否匹配,如果匹配,则注册成功。

Android页面中嵌入Html页面很简单,但这两者产生交互的功能还没做过,如果以后做到,再补充进来,这里留个TODO的「抽象方法」占位置。还有图像的延迟加载、数据库的使用,都要留个「TODO」。有时间即实践之。

5.个人感想

「应用程序员」做久了,总是觉得没太多成就感,虽然功能有人用会很开心。但当陷入没什么技术含量的细枝末节,觉得「知道这些东西仅代表有经验,没什么了不起」,就觉得很虚无。安卓的知识,对我来说最有趣的还是体系结构、界面的逻辑、数据的逻辑这三者,当陷入具体的事务,某个api该怎样调,函数有几个该怎样写,甚至最无聊的安卓各版本差异,就算做成功了,也觉得没什么好满足的。

安卓计算器的开发 篇6

曾有人说,全平台运营可以规避在单一平台下,因为受制开放平台导致颗粒无收的风险;而弊端则是企业需要保有较大的研发团队,一旦产品失去用户的青睐,即刻便会兵败如山倒。

“兵败说”未免有些危言耸听,按顽石创始人吴刚的看法,只要产品对路,定位清晰,最好的生存方式就是不把鸡蛋都放在一个篮子里。“将自己的游戏产品只放在一个开放平台里运营,很可能会出现收入单一化风险。因为一旦某个市场、某个平台或渠道,占了你整体利润的一半以上的时候,那么平台拥有者就能完全控制你的企业生命线,他让你干嘛你就得干嘛,而你则会永久性失去议价权。”

持此看法的当然不止吴刚一人,触控科技创始人陈昊芝亦有同感。“我们公司做的《捕鱼达人》重点就是在iPhone和安卓平台上运行,这可以让我们得到最广泛的客户积累,并且两个平台同时运营,也能让我们确保每月都有数十万美元的进账。”

然而,能挣钱却不代表自己的发展空间,都能自己说了算。无论是在iPhone、安卓、Facebook,还是在国内的腾讯平台上,如以插件形式更新游戏,很有可能被所在的开放平台否决,其结果就是开发者不得不失去对这一领域的控制。

热酷刘勇如今就在考虑通过HTML5的最新技术来提升游戏产品。“这是一种通过网页形式而非插件的技术来做游戏,这样我们就可以避免被开放平台压制,从而最大化地自主我们的发展空间。”

屋檐下生存

不得不接受的“潜规则”

相比其他行业,在平台游戏开发这个行当,拥有全球竞争的机会,但是开发者们不光要面对全球的竞争者,更要应付各个开放平台的“游戏规则”。

今年4月份,出自互爱科技创始人黄建之手的《胡莱三国》游戏,以超过5000万注册用户的规模一跃成为了腾讯开放平台上龙头榜首。而回想当初选择通过腾讯来推广自己的产品,黄建表示他看好的正是这个开放平台拥有着巨大的用户体量。

业内人士很清楚,与腾讯合作就必须接受其条件“苛刻”的分成规则。因为在国外,苹果的iPhone和Facebook都可以将收益中的70%给予开发者,而腾讯则规定收入的70%要归腾讯所有。人在屋檐下,选择“委曲求全”有时候是更为稳妥的生存之策。

“国外是‘三七开’,而腾讯是‘倒三七’,可是CP(内容提供商)有什么话语权吗?能跳出来对抗腾讯,要求改变这样的分成方式吗?不能。”吴刚说。

面对每月可以收入近百万美元的腾讯开放平台,吴刚无奈的选择了妥协。而在腾讯上拥有数倍于《二战风云》用户量的《胡莱三国》,妥协更似乎是惟一的选择。

“我们对各个开放平台的评价方法是不一样的,比如像Facebook,它虽然也和iPhone一样是三七开,但是能在Facebook上活下来的CP,就势必要投很多钱在Facebook的广告平台上做推广。”黄建说。

以全球知名的社交游戏公司Zynga为例,该公司于今年9月底公布的IPO文件中,显示其在第二季度的利润下跌了90%,直线降至140万美元,其用户数量也较上季度减少了大约300万,至2.28亿。

出现这一问题的根本原因,就是因为Zynga对Facebook的依存度几乎达到了99%。而当Facebook的用户量开始走下坡路的时候,Zynga就会同步受到影响。而玩家减少的同时,Zynga却又要面对Facebook提升其开放平台推广费用的现状,因此才陷入利润高速下滑的困境。

“虽然在腾讯上我们也需要做推广,但费用远比Facebook要低,几乎不会影响到我们可以拿到的那30%的收入部分。”黄建说,“但Zynga却要一年投上亿美元在Facebook上打广告。这是Facebook制定的生存规则,你没办法改变的,所以对于他们的三七开,要仔细想想你真正能够拿到手的钱能有多少。”

对此,长期奋战于国际市场的陈昊芝亦有同感。“虽然Facebook不是我们关注的重点,但我们也看到如今它的发展已进入瓶颈期,用户总量约为8亿人,已经没有更大的上升空间了。这样的话,他如果想向股东承诺利润上升,必然会增加对平台各种收费条件的提升。”而对CP来说,要么放弃这一平台,要么按Facebook的要求去做。

也许Facebook平台的强大,可以让CP暂时忘记自己的荷包在缩水,进而选择心甘情愿的在这棵树上“吊死”。但换棵树,去选择iPhone平台是否就可以摆脱这样的困扰呢?答案是否定的。

“在苹果IOS平台下运营,最大的麻烦就是坏账问题。”吴刚说,“例如在iPhone上,很多中国的用户会利用国外的‘黑信用卡’进行游戏充值,原本我们可以得到的收入,结果月底一看苹果发来的账单,很多都损失掉了。”

由于《二战风云》在iPhone上做的是游戏直营,因此他们更能清楚地看到哪些用户在游戏中使用了“黑信用卡”,而他们能做的只是将这一玩家的手机号封了,但对于苹果坏账的问题,却无从下手。

多平台运营

性价比是筛选核心

2011年10月20日,北京朝阳区复星国际中心10层,吴刚正亲自为公司未来的安卓版《二战风云》进行着测试,然而测试的结果他并不是很满意。

“这是二战游戏中,即iPhone的iOS版、WAP版、Java版等之外又一个新的版本,这个版本主要针对安卓手机的开放平台。”有点漫不经心的吴刚其实并不是很急于让这个安卓版上线。“一方面,用户体验还得加强;另一方面,对于进入国内的安卓开放平台,是否有利于我们顽石的发展,我还不是很有把握。”

“《二战风云》的玩家通常都有不错的工作和稳定收入。从他们的消费能力和消费习惯上来说,iPhone、Faceboo、腾讯这三大平台是他们最常使用的,而目前我们的核心收益也来源于此。”吴刚说。

事实上,在这三个平台上《二战风云》运营时长最短的也已近两年之久了,在如今强手如林的游戏市场,能够持续几年通常都是游戏中的精品。而让吴刚不想过多地分心去关注国内安卓市场的原因,正是这三大平台几乎每家都能为顽石贡献月超100万美元的收入。

“对比这三个平台,虽然各自的收益率不同,但放在一起看却能优势互补。例如在iPhone上的用户平均月消费能达到40美元以上,不过其用户总量较少;而本土开发平台腾讯虽然人均月消费仅为2元人民币,但在上千万的玩家群体支持下,也能实现巨大的收益;Facebook则介于这两者之间。”吴刚表示,他选择平台的依据之一,就是要么用户有能力付高价、要么付钱的人多,能够在这些平台上运营游戏的CP,才能有更大发展。

所以,即便当支持安卓系统的手机在国内开始热销的时候,有人就曾建议吴刚开发安卓版的《二战风云》,趁机扩大战果,再多赚点钱。但以吴刚的标准来看,本土安卓市场对他的吸引力就没那么大了。

“中国的安卓手机市场是相当乱的,不仅厂商多、品牌多、机型多,而且速度、画面效果各异。最重要的是,其用户对比iPhone手机玩家来说相对低端。所以,即便我做安卓的游戏产品,也一定会先在海外开放平台推广,而绝对不会选择在国内推,理由就这么简单。”吴刚说

在他看来,iPhone版和安卓版两者之间,顽石固然可以将游戏体验做得几无二致,但国内安卓版的手机和iPhone的定价是不可能一样的。“因此,这两个版本所要面对的用户消费能力完全不一样。因为本土安卓用户会显得太过低端,如果‘强行’推广的话,可能我要不得不采用降价方式。如果是这样,那iPhone的用户会怎么想?毕竟我的收入利润那么高,几乎都来自于iPhone。所以,不能做这种丢西瓜捡芝麻的事。”

显然,在各方开放平台风生水起之时,作为CP首先应该先想清楚自己到底要的是什么。而吴刚的经历也许相对特殊,因为他的《二战风云》已然在iPhone上爆出“天价”且收益颇丰的情况下,让他回头再眷顾低端消费者,显然于整体运营不利。

角力HTML5CP谋求“失控”

虽然CP面对的每个开放平台都有这样、那样的问题,但从未有哪个CP决定要退出这些市场,毕竟“蜗居”只是暂时的。

热酷创始人刘勇眼下正在想办法改变被开放平台控制的现实。“完全脱离开放平台肯定是不现实的,但CP是可以通过某些技术手段,如利用HTML5将客户端做成浏览器模式等方式,让CP能够争取到更多属于自己的游戏控制权。”

“举例来说,在安卓上的Facebook上,用户有时会发现某些游戏应用,他是无法访问的,这是因为安卓平台没有开放这样的入口。因为,如果我们的游戏完全采用客户端的方式,任何开放平台都可能会借口某一应用不可以上线为由,拒绝你今后对游戏的升级操作。”刘勇说。

事实上,刘勇所说的问题,如今在国内已不鲜见。某些本土的大型开放平台就曾经因为自身的利益问题,将CP开发的应用拒之门外,转而由自己的团队进行开发,将诱人的利润完全掌握在自己手里。

而在国外,这种现象也很常见。

“Facebook是公认的开放度最高的平台,它允许CP将用户直接导入到他们站外的网站上,而苹果则不允许这样的事情发生。”刘勇说,突破开放平台中类似瓶颈的办法之一,就是将客户端做成网页形式。“这就像给网页包一个客户端壳一样,如同我现在用的360等软件,他们其实就已经是网页化了。”

而这样做的好处正如刘勇所说,当CP需要进行产品更新时,可以让用户自己重新下载客户端,而后刷一下网页,就能完成。“这样我们就可以通过自己的后台服务器来直接向用户提供服务,从而绕开各个开放平台可能设置的限制。”刘勇说。“这么做可以保证任何在游戏中的全新体验,都能让用户感受到。”

国内的CP正是响应Facebook的号召。此前,Facebook就曾在自己的官方微博中公开宣称将全面支持HTML5的应用开发。对他们来说,自己既是开放平台,同时也扮演CP的角色,因为Facebook自己的客户端在iPhone、安卓等开放平台上有着近3亿移动网用户。

“由此可见,如果Facebook的应用在iPhone平台上不做成Web模式的话,它就将完全受到苹果的控制。每当Facebook要发布一个新版本,都必须要苹果同意才行。所以,Facebook正在千方百计地把客户端做成网页,到那时候,他们自己的应用就可以随便进出iPhone平台,谁也管不了他。”刘勇说,网页化客户端,这无疑是个趋势。

基于安卓的系统架构及程序开发探索 篇7

1 安卓系统平台的架构

安卓系统平台主要是由四个组成部分架构起来的, 它们分别是Linux内核层、应用框架层、安卓运行时以及应用程序层。这四个组成部分使安卓系统比传统的塞班等系统具有更强的生命力, 安卓系统具有更广阔的开放性、开发程序平等性以及应用程序开发快速无界限等特点。下面本文对构架安卓系统平台的四个主要组成部分进行介绍。

1.1 Linux内核层

Linux内核层是实现安卓系统运行的基础, 它是在Linux2.6版内核的基础上进行优化拓展得到的。它通过增加虚拟CPU的方式, 使优化而成的Linux内核层能够满足系统运行所需的内存空间和速度。Linux内核层是一个介于软件组合硬件层之间的一个抽象层, 它虽然是以Linux2.6版内核为基础进行开发的, 但是该内核层只对安卓系统具有兼容性, 所有的接口和标准都跟原版本的内核系统存在差别, 这点在使用识别过程中需要注意。Linux内核层主要是对内存使用、系统安全稳定性以及程序的进程管理进行负责, 此外它也负责处理网络堆栈和驱动模块等。Linux内核层采用了YAFFS2文件系统, 替代了原有的虚拟内存文件形式, 这使NAND Flash设计具有更好的开放性, 整个设备运行的速度更快, 占用内存也更少。此外, Linux内核层还增加了新的电源管理策略、低内存管理策略以及内存共享处理方式等, 这些都极大的提高了安卓系统的运行效率。

1.2 应用框架层

应用框架层是安卓系统程序开发的基础, 它为程序开发提供各种API。应用框架层由许多部分组成, 主要的有活动管理器、窗口管理器、视图系统、电话管理器、资源管理器以及通知管理器等。活动管理器是对所有的应用程序进行管理并提供回退功能;窗口管理器是对所有的窗口进行管理;视图系统是构建程序的主要组件, 包括文本框、按钮以及列表等;电话管理器就是对所有的移动设备进行管理;资源管理器是给程序开发提供各种现有的资源, 比如布局文件、图片以及字符串等;通知管理器就是实现在状态栏中显示短信提示以及未接来电提示等信息通知功能。应用框架层对于程序开发人员的进入门槛极低, 程序开发人员可以充分应用框架层的现有资源, 这极大的方便了安卓系统应用程序的开发。

1.3 安卓运行时

安卓系统虽然采用的是Java语言来编写应用程序, 但是在执行程序时采用的是安卓系统自带的安卓运行时。安卓运行时主要包括核心库和Dalvik虚拟机两个组成部分。核心库中, 一部分为安卓系统的核心库, 另一部分则是程序语言需要调用的功能函数。Dalvik虚拟机能够在一台设备上借助较少的资源来运行多个虚拟机程序, 它是专门为移动设备设计的。安卓运行时为手机的应用程序提供了广泛的开源代码, 它不需要在系统软件中进行另外安装, 也不需要额外的管理配置。安卓运行时提高了安卓系统的运行速度, 扩宽了服务范围。

1.4 应用程序层

安卓系统也为使用者提供了一些常用的应用程序, 比如短信、地图、日历、联系人以及电子邮件等。这些应用程序都是采用Java程序语言进行编写的, 程序开发人员不仅可以参考这些应用程序, 还可以自己编写程序来代替这些默认的应用程序, 这使安卓系统的应用程序平台更加的平等和开放。

2 安卓系统应用程序的开发

在安卓系统应用程序的开发中, 最重要的就是安卓系统应用程序的组成部分。一个安卓应用程序的组成部分很多, 主要的组件包括Activitv、Service、Broadcast Receiver、Content Provider以及Intent。

Activity是安卓应用程序的基本组件, 应用程序中的屏幕显示都需要通过Activity来实现。Activity属于应用程序的表示层, 应用程序中图形用户界面的实现都是通过Activity来控制的。Service是能够长时间在后台运行的程序, 它是没有用户界面的。比如在用户在浏览网页的同时, 也能够播放音乐, 此时的音乐后台播放就是借助Service机制来实现的。

Broadcast Reeeiver组件是实现用户接受广播通知功能的。安卓系统中, 系统或者应用程序都能够借助Broadcast Reeeiver组件来把相关信息通知给使用者。比如短信息、电量不足以及程序更新等情况都有可能导致系统广播。Content Provider属于内容提供器, 它是将应用程序的相关数据提供给其它应用程序使用。Content Provider能够通过一组标准的接口来实现程序之间的数据读写和存储。Intent主要起连接作用, 属于运行时绑定机制。它能够在程序运行时将两个不同的组件进行连接, 从而实现不同的功能。

3 结语

安卓系统在手机等移动端设备中占有重要地位, 本文探讨和分析了安卓系统的架构和程序开发中的重要组件。从此角度分析了安卓系统具有开放性、兼容性以及程序开发便捷性等特点。在程序开发中, 本文介绍了程序开发中的重要组件, 对于如何高效的进行程序开发探索, 还需进一步的研究。

摘要:安卓系统在智能手机中的应用越来越广泛, 而使用者对安卓系统架构和程序开发的认识依然不足。本文对安卓系统架构以及程序开发中的主要组成部件进行探讨分析, 以供使用者和程序开发者参考。

关键词:安卓系统,系统架构,程序开发制

参考文献

[1]李林涛, 石庆民.Android智能手机操作系统的研究[J].科技信息, 2011 (25) .

安卓计算器的开发 篇8

随着人们生活水平的提高和电子技术的飞速发展, 手机等移动设备已成为人们日常生活中必不可少的工具。而智能手机的全能化, 使得智能手机系统及其应用程序的市场需求量大幅增加。Android系统作为当下最热门的智能手机系统, 其在几次火爆发展之后已经稳定其地位, 而基于Android系统的应用程序的开发条件也已经相当成熟。本文介绍了一款基于Android系统的休闲类小游戏——连连看的设计过程, 游戏除包括游戏主体、主菜单功能外, 还含有刷新、时间限制、难度选择和新游戏等多种附加功能。

1 Android应用程序开发环境及组成

Android应用程序的开发是在Eclipse+Android SDK集成开发环境下进行的, 在Eclipse界面中, 左侧栏是一些树形结构的文件, 用reslayout下的xml文件来实现界面的布局, 通过在xml文件中增加和设置控件实现Activity的显示, 再在src下的java文件中编写Java语言代码对这些控件进行各种动作, 以实现游戏各项功能[1]。界面中间部分是工作界面, 打开java文件或者xml文件可以在此界面对其进行设计和修改。

一个完整的Android应用程序由一个或多个组件组成, Android应用程序有四种类型的组件, 分别是Activities (活动) 、Services (服务) 、Intent Receivers (意图接收器) 和Content Providers (内容提供者) [2]。Activity是一个可视化的用户界面, 例如游戏界面;Service是例如背景音乐之类的没有可视化的用户界面;Intent Receivers用于进程中的通信[3];Content Providers就像是一个信息库, 为应用程序提供内容。

2 连连看游戏规则及要求

本文所介绍的连连看游戏的游戏规则和要求如下:

(1) 游戏主体:在游戏界面放置m*n张图片, 当用户点击图片, 判断是否符合消除条件, 若符合则消除这两张图片, 反之则不消除。连连看游戏的消除条件是两张图片相同且可以用三条或三条以内的直线连接。

(2) 主菜单:包括开始游戏、游戏介绍、游戏设置、退出游戏四个选项。

(3) 时间限制:设置用户游戏的时间生命, 如果时间耗尽还没有消除所有图片, 游戏失败, 在游戏界面中设计时间进度条来显示用户剩余时间。

(4) 刷新功能:在游戏中点击刷新按钮, 剩下的图片重新排列, 每刷新一次时间减少。

(5) 难易选择:游戏设置难、中、易三种不同难度。

(6) 新游戏:游戏中选择新游戏, 开始当前难度下的一盘全新的游戏。

3 界面设计

3.1 界面布局语法

界面布局是指通过添加和设置控件来实现可视化界面的设计, 使用的是开发环境下的固定语法, 具体语法内容如下:

加背景的方法:android:background="@drawable/about_bg"。

加图片按钮元素的代码:

文本和普通按钮的增加和设置与图片按钮相比, 除了类型声明不同, 引用和设置部分的语法都一致。

3.2 主菜单界面

主菜单界面对应一个Activity。应用界面布局语法在xml文件中放置res/drawable-hdpi下的四张图片, 这四张图片分别代表着开始游戏、游戏介绍、游戏设置和退出游戏四个选择按钮, 声明为图片按钮的类型, 主菜单布局如图1所示。通过调用set On Click Listener (On Click Listener l) 方法监听主菜单是否有按钮被按下, 当其中任何一个图片按钮被按下时, 执行on Click (View v) 函数, 通过在此函数里编程对按键进行判断并实现对应操作。各按键功能设计如下:当监听到有按钮被按下, 用case语句判断被按下的是哪一个键。如果用户点击开始游戏, 则新建一个Intent转换到游戏界面的Activity;点击游戏设置, 进入难度选择的对话窗口;点击游戏介绍, 进入介绍游戏的Activity;点击退出游戏, 用函数System.exit (0) 结束运行当前应用程序。

游戏介绍界面放置了一个含有游戏介绍文本的Text View控件。

主菜单的设置界面用对话窗口实现, 对话窗口在已有Activity上生成, 难易程度的选择通过单选菜单实现。难易级别通过游戏中图片的多少来实现, 简单级别在游戏中放置了9种图片, 每种图片4张, 生成6*6的游戏区域;中级级别放置了12种图片, 生成了6*8的游戏区域;困难级别放置了18种图片, 生成了8*9的游戏区域。

3.3 游戏界面

游戏界面也对应一个Activity。它除了最重要的游戏区域之外, 还增加了刷新和设置按钮、时间进度条等控件。如图1所示, 当有按钮被按下, 用case语句判断是哪一个键, 若用户按下的是刷新按钮, 进入到刷新函数, 首先移除之前的数据, 把还没有消除的图片添加到集合 (已经消除的图片用0填充) , 之后再把集合中的图片重新放入游戏界面, 最后减少进程进度条的进程时间;若用户点击设置按钮, 等待用户点击按钮, 监听到用户点击确定, 采集数据判断用户的选择, 如果用户选择了新游戏, 则把所有数据初始化, 重新开始游戏, 如果不是选择新游戏, 则转到主菜单界面;如果监听到用户点击取消, 则用dialog.cancel () 函数取消当前对话窗口。

由于游戏界面的游戏区域是根据程序不断变化的界面显示, 并不是单一静态的显示界面, 因此它是在Game View.java文件中用Java语言实现的, 首先根据用户设置的难度确定游戏所需的图片, 然后计算不同图片出现的次数, 再把要用到的总数量的图片放到一个集合中 (同一图片出现几次在集合中就有几张) , 最后计算游戏区域所要用到的坐标位置, 再把图片随机放入界面 (已经用过的图片必须要从集合中消除, 避免重复使用) 。

游戏中设置界面也通过对话窗口实现, 窗口中的新游戏和返回菜单按钮为Radio Button类型, 确定和取消按钮通过调用set Positive Button (Char Sequence text, On Click Listener listener) 方法生成和设置。

时间进度条通过在游戏界面中放置一个Progress Bar控件来实现, 时间的长短通过android:progress属性设置[4]。

4 算法设计

游戏算法主要计算用户先后点击的两张图片是否符合消除条件, 如果两张图片相同, 则判断它们是否可以用规定数量的直线连接, 可分三种情况进行判断。

(1) 一条直线。首先判断两张图片是不是在同一列, 也就是它们的横坐标是否相同, 若是同一列的两张图片, 判断两张图片纵向之间有没有其他图片;若两张图片不在同一列, 再判断是否在同一行, 若是则判断两张图片横向之间是否存在其他图片, 没有则符合消除条件。

(2) 一个拐角线 (两条直线) 。首先生成如图2a所示的c点和d点, 这样a→c→b和a→d→b就成为可以连接两张图片的备选路径, 接下来, 只需要判断这两条路径中有没有图片阻挡, 若两条路径都被阻挡, 则不符合消除条件, 如至少有一条路径没有被图片阻挡则符合消除条件。

(3) 两个拐角线 (三条直线) 。如图2b所示, 可能满足条件的三条直线分别是一条a、b之间的直线 (线1) 、这条直线的一端到a的直线 (线2) 以及另一端到b的直线 (线3) 。首先我们把两张图片 (a、b) 横向之间的直线 (线1) 全部放到一个集合中, 再把这个集合中所有直线一条一条取出判断, 判断方法以图2b中线1为例, 首先判断线1本身是否被图片阻挡, 若没有再分别判断线2和线3有没有被图片阻挡, 若这三条直线都未被图片阻挡, 表示其符合消除条件。所有的横向直线经过判断不符合条件则转向纵向的判断, 纵向拐角线示例如图2c所示, 纵向的判断方法与横向相同。

5 结语

本文介绍了一款基于Android手机系统的连连看小游戏开发过程, 游戏程序设计在Eclipse+Android SDK集成环境中完成, 功能方面在游戏主体和主菜单功能基础上还设计了三种不同的难易程度, 增加了刷新、时间限制和新游戏等多种功能。游戏在Android SDK平台中运行测试, 得到了满意的结果。

参考文献

[1]杨文志.Google Android程序设计指南[M].电子工业出版社, 2009

[2]倪凯, 夏海波, 李焱, 程嘉昇.基于Android平台的安全生产移动执法系统实现[J].中国安全生产科学技术, 2012, 8 (4) :87-91

[3]张正政, 林耀荣.基于Android系统的影音播放器开发[J].现代电子技术, 2011, 34 (2) :5-8

安卓计算器的开发 篇9

基于Linux内核的Android操作系统已经在移动设备的操作系统市场上占主要部分。它是由Google公司和开放手机联盟领导并开发出的产品, 由于其自由和开放源代码的特点使其在智能手机和平板电脑平台上被广泛使用。2011年的统计数据显示Android操作系统的市场占有率已经超过老牌的Symbian系统。Android操作系统市场占有率仍在不断扩张中[1]。

1 什么是As ync Ta s k?

Async Task是Android的轻量级别的异步类, 该类中提供接口方法来返回异步操作执行程度以及异步操作的执行结果, 并将最后的执行结果反馈交由主线程并显示在UI界面上。在Android开发中也可以创建新的类来继承Async Task, 里面的接口方法可以重载。

Handler和Async Task其实都是Android开发中的异步任务机制, 两者是不同点在于Handler要为每一任务安排一个新的线程, 任务结束之后通过Handler实例来与UI主线程进行信息交换。而Async Task是比Handler更轻量级的异步类, 它是一个封装后的后台任务类, 适用于简单的异步处理。, Handler模式对于整个过程的控制比较精细, 但也是有缺点的, 例如代码相对臃肿, 在多个任务同时执行时, 不易对线程进行精确的控制。Async Task模式简单、快捷, 而且过程可控[2]。

2 As ync Ta s k的作用是什么?

Async Task的路径位置是在android.os.Async Task, 是Object类的子类。它有三个泛型参数, 这三个参数类型分别是Params、Progress和Result。Params启动任务执行的输入参数, 比如HTTP请求的URL。Progress后台任务执行的百分比。Result后台执行任务最终返回的结果, 比如String。

使用Async Task需重载其内部的方法。一个异步加载数据至少要重写以下两个方法。do In Background (Params…arg0) , 该方法一般在系统后台运行, 用来处理较为耗时的工作, 该方法不能直接操作UI界面。如果想在UI显示后台操作的更新进度可以调用public Progress (Progress) 方法。on Post Execute (String result) , do In Background方法将后台工作处理完毕, 将返回到主线程, 并将返回结果当作此方法的参数, 在此方法内完全UI更新操作。

除此之外还可以重写几个可选的方法:on Progress Update (Progress…) 可以实现进度条的界面显示。在主线程执行用于显示任务执行的进度。on Pre Execute () 此方法是在任务调用之前使用, 一般可用来显示进度对话框。on Cancelled () 是用户调用取消操作时, 所调用的方法。

使用Async Task类必须要遵守以下原则:首先, 必面在UI主线程中创建Task实例。其次, execute方法也必须在UI主线程中调用。再次, on Pre Execute () , on Post Execute (Result) , do InBackground (Params...) , on Progress Update (Progress...) 这几个方法不能手动调用。最后, Task实例只能被调用一次, 否则会出现异常。

3 以天预报的手机应用为例

天气预报是安卓智能手机中一款很常见的应用程序, 本文以天气预报程序为例详细阐述Async Task异步任务机制在安卓开发应用中的特点与应用。

3.1 框架设计

基于Android的天气预报程序分为前台UI和后台业务处理代码。UI界面包括应用程序的可视控件及其布局信息, 使用XML进行描述, 这样的XML文件也称为布局文件。本程序的的布局可简化为两个:第一是天气预报主布局文件, 至少包括三日内的天气数据及相关图片;第二是城市切换布局文件, 包括全国的有的县级市以上的城市信息。天气的数据信息来源于天气预报API数据接口, 程序通过此接口从气象局获取某一城市的天气数据信息, 再将读取的信息转换成可读数据, 最后将数据格式化并提交业务处理程序进行处理。业务主程序将处理后的数据再与UI布局文件进行关联对接, 将最终的数据显示在手机端。程序框架设计如图1所示。

3.2 数接获取

3.2.1 天气信息的获取

如果需要获取网络服务器上在线的天气信息数据, 则需要首先获取基础天气信息的数据接口。中国天气网提供三种数据接口, 接口数据采用的是JSON格式。通过三个数据接口分别可以获取当天天气基础信息, 当天天气详细信息, 以及六天内的天气信息。用户需要使用数据接口创建一个HTTPGET对象, 再创建一个默认的HTTP客户端。使用HTTP客户端执行请求, 返回结果为HTTP响应, 先判断请求是否正确?即从响应用获取状态行, 再从状态行中获取状态码, 判断是否等于200。如果请求正确则获取HTTPENTITY类对象, 数据就在这里面。把实体类转换成在STRING类型, 即可以得到需要的JSON数据。天气信息数据的获取设计如图2所示。

3.2.2 城市列表信息的获取

城市列表信息存放于文本文件之中, 程序采用文件流的方式来读取数据。在JAVA语言中把程序和数据源之间的数据传输抽象为流。从而实现统一的I/O操作。对于以文本文件作为数据源的程序来说, 程序与文本之间的数据传输则需要借助文件流来进行。在文件的读取过程中通常还需要一个缓冲流, 即开辟一个专门用来传送数据的内存块, 这样可以避免数据流每次操作都以字节为单位进行, 从而提高了读取效率。如图3所示。

3.3 异步处理

本程序中解决的异步处理问题主要指的是通过数据接口获取网络服务器上的天气数据字符串序列这一过程和主程序中将取来的数据进行处理并进行UI显示过程的异步处理。异步处理存在两种时机, 一种是当程序主界面第一次显示时候, 第二种是在切换城市主界面重绘显示内容的时候。因此建立两个异步处理类对象:

Async Task<String, Integer, String>my Task;

Async Task<String, Integer, String>my Task2;

在初始化my Task对象时需要重写do In Background () 方法, 并在此方法中完成网络服务器上的天气数据字符串序列的获取, 并将结果以字符串的格式予以返回。这样处理的理由是获取天气数据字符串序列操作属于较为耗时的操作, 适合于后台线性操作, 完成此类操作通常需要较长的时间。同时对象仍需重写on Post Execute () 方法, 方法将处理来自do In Background () 方法的返回值, 并将显示结果与UI组件进行关联。在处理do In Background () 方法返回值时使用到JSON技术, 即Java Script Object Notation, 将获取得到的数据以键值对的方法进行管理与显示。为此还引入了基于GSON的组件库来实现JSON数据和JAVA对象数组的关联操作, 如图4所示。

3.4 信息的显示

最终信息显示是采用线性嵌套的方式进行显示。天气相关图片存在在res/drawable文件夹内。图片分为白天和夜晚两组。首先获取时间信息以确定采用哪一组的图片信息, 其次获取天气数据信息以判断采用数组中的图片元素位置。信息显示分为三个阶段, 其一是初始信息, 即程序在完全运行之前显示, 这里的显示数据取自于上一次缓存的数据, 可以这些缓存信息存放于SQLITE数据库之中。其二是程序运行后的数据信息, 此信息来自于业务逻辑层的数据处理。其三是切换城市后的数据信息, 信息来源于切换后程序获取的新数据, 信息显示如图5所示。

4 结束语

安卓手机移动开发越来越流行, 是未来程序的热门发展方向。安卓程序时常会被人误认为只能开发一些轻量级的小程序, 而实际上, 安卓开发中的异步任务机制完全使其可以承载较为复杂的相关应用。在本例的程序事例中, 就是使用异步任务机制将基础应用与后台复杂操作区分开来。

参考文献

[1]杨潇亮.基于安卓操作系统的应用软件开发[J].电子制作, 2014.10.

[2]何璇, 基于Java语言的安卓手机软件开发[J].计算机光盘软件与应用, 2014.04.

[3]诸姣, 李宏伟, 彭鑫, 赵文耘.安卓应用系统的功能与权限相关性研究[J].计算机应用与软件, 2014.10 (10) .

[4]王世江, 余志龙, 陈昱勋, 郑名杰.Google Android SDK开发范例大全 (第2版) [M].北京:人民邮电出版社, 2010.

[5]张冬玲, 杨宁.Android应用开发教程[M].北京:清华大学出版社, 2014.1.

[6]朱意秋.基于安卓平台的智能家居系统研究[J].电脑知识与技术, 2014.10 (10) .

安卓计算器的开发 篇10

1 应用系统架构模型

应用系统架构一般由数据库、中间件、Web Service、应用程序 (B/S或C/S) 等组成。为了进一步满足市场的需求, 需要开发APP应用。APP应用是通过Web Service与应用系统的数据库进行交互用的。系统完整架构如图1所示。

架构中的4层功能及作用如下:

应用层: 是架构的最外层, 即用户UI层为不同用户类型提供不同应用接口, 并向用户展示最终的查询结果, 同时也向中间层提交相应的数据。

中间层: 是整个架构的核心, 完成数据集成的主要逻辑,包括元数据处理器、服务注册中心、查询处理器和结果整合器等。元数据处理器建立全局数据模型将各局部数据库映射为一个全局虚拟数据库, 为用户提供统一的全局视图。服务注册中心将各封装的异构数据源注册到服务中心, 形成各种服务以便查询调用。查询处理器负责接收上层传来的查询请求, 将针对全局的查询分解为针对各局部数据的查询, 传给数据访问层。结果整合器是将数据访问层返回的查询结果进行整合上传给应用层。

数据访问层: 是对底层数据源的包装 层 , 包括包装 器、查询转化器和结果转化器。包装器将底层的所有异构数据源进行封装通过Web Service对外发布。查询转化器将中间层传来的局部查询翻译为对应数据源的查询。结果转化器将从不同数据源得到的查询结果翻译为统一的数据格式格式返回给中间层。

数据层: 是系统最里层, 主要是各种不同类型数据资源的集合。可以是关系数据库, 面向对象的数据库, XML数据库以及文件系统等。

安卓APP应用程序 从应用层 请求或提 交数据 , 数据以XML格式进行封装通过中间层和数据访问层的交互 , 最后到达数据库层, 完成请求数据或提交数据。在数据封装时, 目前比较流行的有两种格式: 分别是XML和JSON, 下面将详细介绍这两种格式的特点。

2 XML 和 JSON 的比较

安卓APP数据交换过程中, 常用的数据交换格式主要有两种, 分别是: XML和JSON。

XML方式表示数据 :

JSON方式表示数据:

两种数据表示方式各有优缺点, XML的优点是: 格式统一, 符合标准; 容易与其他系统进行远程交互, 数据共享比较方便。缺点是: XML文件庞大, 冗余信息较多; 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写代码;服务器端和客户端解析XML花费较多的资源和时间。JSON的优点是: 数据格式比较简单, 易于读写, 格式都是 压缩的 ,占用带宽小; 因为JSON格式能直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 易于维护。JSON的缺点是: 目前JSON通用性较差, 还没有深入人心, JSON格式在Web Service中推广还属于初级阶段。

3 程序实现

Web Service发布端:

在Web Service发布端, 发布了get City By Province函数接口, 接口负责接受 请求 , 组织XML数据并返 回结果 ; 函数query Citys By Province负责从数据库里查询数据。接口函数代码如下:

安卓客户端:

安卓客户端调用了request Web Service函数, 函数通过中间层向Web Service层的get City By Province函数请求XML数据。parse XMLString函数负责解析XML数据格式, 图2为客户端请求运行结果。request Web Service函数代码如下:

4 结语

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:arp协议原理 下一篇:爱牙护牙的手抄报漂亮又好看内容