版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着智能的迅速开展,它一步步走进了普通人的生活,成为人们获取即时信息的主要设备。因此,的应用软件将会有非常大的开展空间,其中闹钟是人们日常生活中必不可少的应用软件。Android平台也提供应用户方便、快捷的效劳。另外,Android平台根本都是免费的,这让软件开发缩小了本钱,也吸引更多人投入Android的软件开发,使Android的平台更加具有竞争性,也能使每个用户能够获得更好的体验与效劳。本文讲述了国内外安卓系统及应用的研究概况,对其开展趋势做了分析,同时介绍了Android的相关技术和应用程序结构。进而研究分析了Android平台的系统构架和组件模型,接着解析了Android中重要的API和应用构成,以及Intent和生命周期的机制。在简要讲述了Android的开发环境的搭建过程后,对位置闹钟设计的相关技术〔Android系统和GPS技术〕进行了分析和概括,在此根底上,进行位置闹钟的设计与实现,本系统界面舒服,操作简便,具有良好的可扩展性;系统经过测试,可以稳定运行,能够满足用户的根本需求。关键字:安卓,闹钟,智能平台目录7002一、开发工具与环境137201.1JAVA集成开发环境eclipse1313211.2Activity概述1282291.3Android的相关技术介绍256541.3.1Android的组成结构222230应用程序架构3253871.3.3Dalvik虚拟机器311487集成的浏览器313398优化的绘图能力377231.3.6SQLite数据库35684多媒体的支持能力410991二、系统分析与设计5240432.1Android权限的获取 5313262.2Android用户界面构建 5107512.3资源的获取和使用 623712三、系统详细设计8202323.1系统功能模块设计8116833.2系统界面详细设计8135683.2.1功能导航模块设计8100873.2.2设置闹铃时间模块设计107273闹铃列表模块设计13265443.2.4闹钟铃音模块设计1566963.2.5开始闹铃模块设计1619524四、结论191558参考文献20一、开发工具与环境1.1JAVA集成开发环境eclipseEclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组效劳,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具〔JavaDevelopmentKit,JDK〕[1]。虽然大多数用户很乐于将Eclipse当作Java集成开发环境〔IDE〕来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境〔Plug-inDevelopmentEnvironment,PDE〕,这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所[2]。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的根底。1.2Activity概述Activity是最常用的。每个Activity都是Activity的子类,并实现了一些独有的功能,如管理UI显示和UI的反应事件。一个Activity就相当于应用程序的一个用户界面,由事件响应以及视图等组成。大多数的应用程序通常包括多个界面。例如:一个文本聊天应用程序,至少应该包含一个联系人列表界面、一个聊天界面、一个设置界面、一个聊天记录查询界面等等。每个界面其实都可看作是一个Activity。显示一个新界面就相当于生成一个对应的Activity对象。在一些情况下,Activity能够返回给它的上级界面一个返回值,例如一个提供应用户选择照片的Activity可以返回给它的调用者用户选择了哪个照片文件[5]。当一个新的Activity出现时,前一个Activity被中断并被放入到一个历史堆栈中。用户可以使用返回键使前一个Activity重现。当一个Activity不再需要时,可以将它们从历史堆栈中移除。默认情况下,Android会为每个应用程序保存从主界面开始的历史堆栈。Android通过一个被称作Intent的特殊类,来实现界面与界面之间的跳转。一个Intent描述了一个应用程序想要做什么。在Intent的描述结构中,含有两个重要的数据结构:动作和动作对应的数据。典型的动作类型包括MAIN、VIEW、PICK、EDIT等等,而动作对应的数据那么以URI的形式表示。例如:显示一个联系人信息的界面,可以创立一个Intent,并将它的动作设置成VIEW,数据设置成表示这个人信息的URI[7]。如图1.1所示图1.1Android的构成和工作流程1.331482Android的相关技术介绍本章介绍了Android的功能特性和Android架构,同时讲述了Android应用程序构成和工作机制。1.3.1Android的组成结构Android主要由程序应用架构、集成的浏览器、Dalvik虚拟机、SQLite数据库、优化的绘图能力、多媒体的支持能力、GSM技术、蓝牙,EDGE和3G及Wi-Fi以及GPS等九个框架组成。应用程序架构在应用程序架构内已经具备多种不同的根底组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。1.3.3Dalvik虚拟机器在Android平台上所使用的Java虚拟机,不是Sim公司的标准Java虚拟机,而是使用Google自主开发的代号为Dalvik的虚拟机,它在保证API方面的兼容的同时,针对移动进行了大幅优化,占用资源更小,运行效率更高[9]。集成的浏览器集成的浏览器是Android内建的浏览器,是以Webkit的浏览引擎为根底所开发成的。Wedkit是一个开源浏览器网页排版引擎,目前使用Webkit引擎的浏览器主要有:Safari,Midori,Epiphany等。配合Android的功能,可以在浏览网页时,到达更好的效果,例如:局部性的缩放网页上的资讯、触控式的操作等效果[2]。优化的绘图能力在程序里可以用到的绘图功能分为2D与3D两个方面。在2D方面,Android提供了一套特有的类库(SGL;而在3D方面那么是使用OpenGLES1.0(openGLforEmbeddedsystems)标准的类库。它们是一种非常快的图形引擎,并且支持硬件加速。1.3.6SQLite数据库SQLite提供结构化的数据存取。SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品使用了它,它占用的资源非常低。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比方php,Java等,还有ODBC接口,同样比起Mysql,PostgreSQL来讲,它的处理速度比它们都快。它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小,虽只有250KB但支持数据库大小至2TB。它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。同时它还支持事务功能和并发处理等等。SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在上使用[4]。多媒体的支持能力主要用于播放媒体文件。这同时包括对音频(如播放MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放URI地址〞(Note:URI即是统一资源识别地址)模式,即在网络上直接播放的流媒体。另外支持各种通用的静态图像格式,例如:JPG、PNG、GIF等格式[8]。二、系统分析与设计在Android平台下开发位置闹钟软件采用的关键技术包括Android权限的获取问题、用户界面构架问题、资源的获取和使用问题。2.1Android权限的获取Android平安中的一个重要的设计点是在默认情况下应用程序没有权限执行对其它应用程序、操作系统或用户的有害操作。这些操作包括读/写用户的隐私数据(例如联系方式或〔e-mail〕,执行网络访问,保持设备Activity,等等。应用程序的进程是一个平安的黑盒子,它不能干扰其它应用程序,除非给它声明权限,现对权限的命名和获取问题做下说明[6]。(1)权限命名一个根本的Android应用程序没有与其相关联的权限,意味着它不能做任何影响用户体验或设备中数据的有害操作。在应用程序需要时,可在AndroidManifest.xml文件中列举一个或更多的<uses.permission>标签来声明此权限。(2)在AndroidManifest.xml文件中支持权限通过AndroidManifest.xml文件可以设置高级权限,用来限制访问组件或应用程序。所以如果要访问某组件,需要在这个文件里声明一个权限,现对跟本系统有关的组件权限做以下说明。①Activity权限(使用<activity>标签)限制能够启动与Activity权限相关联的组件或应用程序。此权限在Context.startActivity()和Activity.startActivityForResult期间要经过检查;如果调用者没有请求权限,那么会为调用抛出一个平安异常。②BroadcastReceiver权限(使用<receiver>标签)限制能够为相关联的接收器发送播送的组件或应用程序。在Context.sendBroadcast()期间,此权限将被检查,同时系统设法将播送递送至相关接收器。因此,权限失败将会导致抛回给调用者一个异常[10]。2.2Android用户界面构建在Android平台下开发应用软件,最重要的是布局问题。一个好看而又简洁的界面,是相当重要的,既能提高使用者的体验,又保证应用的高效执行。Android生成用户界面有三种方式:xml配置生成、通过用户自己的界面接口生成和直接用代码生成。对于一个Activity应用来说,android.app.Activity类是一个最根本的功能单元。一个Activity实例可以做很多的事情,但是它本身无法显示在屏幕上,而是借助于Viewgroup和View,这两个是Android平台上最根本的两个用户界面表达单元。下面介绍下主要的布局对象:线性布局(LinearLayout):以单一方向对其中的显示对象进行排列显示。如以垂直排列显示,那么布局管理器中将只有一列;如以水平排列显示,那么布局管理器中将只有一行。同时,还可以对个别的显示对象设置显示比例[2]。表格布局(TableLayout):以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。绝对布局(AbsoluteLayout):允许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0,0),向下及向右,坐标值变大。这种布局管理器由于对象的位置固定了,所以在不同的设备上,有可能会出现不一样的显示效果。相对布局(RelativeLayout):允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。对于Android应用中的一个屏幕,它的屏幕元素是按层次结构来描述的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用[2]。2.3资源的获取和使用资源是外部文件(不含代码的文件),它被代码使用并在编译时编入应用程序。Android支持不同类型的资源文件,包括XML、PNG以及JPEG文件。它们在运行的时候被解析,XML文件根据描述不同有不同的格式。源代码以及XML文件将资源打包并编译进二进制文件,这种模式能使得资源更快的被加载。字符串也同样被压缩成更高效的模式。由于这些原因,Android平台上可以有不同的资源类型。Android资源系统能跟踪所有非代码相关的应用程序。程序开发者可以使用资源类来访问应用程序的资源,资源的实例通常和应用程序联系在一起,可以通过Context.getResources来访问。应用程序的资源在编译时就被编译到应用程序二进制代码里[3]。为了使用某个资源,程序开发者需要将它放在对应的代码目录结构里,然后编译。作为编译过程的一局部,产生的资源代号可以在源代码里使用,这就可以用编译器来验证程序代码和定义的资源是否相符。Android的闹钟系统提供了警报和时间设置方面支持,其实现的硬件根底通常是实时时钟设备。在Linux内核代码中,需要有实时时钟设备驱动程序和Android的Alarm驱动程序。警报器-实时时钟系统包含了JNI和JAVA层的接口,在JAVA应用程序层可以通过接口控制警报器方面的功能。如图2.1所示图2.1Android闹钟应用结构图三、系统详细设计本章主要阐述了闹钟软件的功能模块的设计和界面设计。3.1系统功能模块设计系统旨在建立Android系统的闹钟,主要有如下几个核心功能模块如图3.1所示。主程序主程序关闭闹铃执行操作模块闹铃再响时长选择模块关闭闹铃执行操作模块闹铃再响时长选择模块闹铃设置模块功能导航模块主页面,显示当系统时间图3.1系统功能模块图3.2系统界面详细设计3.2.1功能导航模块设计程序的主页面,设置闹钟的入口;显示系统的当前时间和日期以及相关的系统信息,点击闹钟的图标,即可进入设置闹钟信息的页面。如图3.2所示图3.2功能导航界面图主要代码:privatefinalBroadcastReceivermIntentReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(mLive&&intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)){mCalendar=Calendar.getInstance();}//Postarunnabletoavoidblockingthebroadcast.mHandler.post(newRunnable(){publicvoidrun(){updateTime();}});}};staticclassAmPm{privateTextViewmAmPm;privateStringmAmString,mPmString;AmPm(Viewparent){mAmPm=(TextView)parent.findViewById(R.id.am_pm);String[]ampm=newDateFormatSymbols().getAmPmStrings();mAmString=ampm[0];mPmString=ampm[1];}voidsetShowAmPm(booleanshow){mAmPm.setVisibility(show?View.VISIBLE:View.GONE);}voidsetIsMorning(booleanisMorning){mAmPm.setText(isMorning?mAmString:mPmString);}}设置闹铃时间模块设计此模块设为一个面板,点击数字进行设置闹铃时间,程序中以数组的形式表示,当按下其中某一数字时,表示选择数组中的一个值,将此值保存。还可以选择一个星期中的闹铃开启的天数。如图3.3所示图3.3设置闹铃时间界面图主要代码:publicvoidbindView(Viewview,Contextcontext,Cursorcursor){finalAlarmalarm=newAlarm(cursor);Viewindicator=view.findViewById(R.id.indicator);//Settheinitialresourceforthebarimage.finalImageViewbarOnOff=(ImageView)indicator.findViewById(R.id.bar_onoff);barOnOff.setImageResource(alarm.enabled?R.drawable.ic_indicator_on:R.drawable.ic_indicator_off);//Settheinitialstateoftheclock"checkbox"finalCheckBoxclockOnOff=(CheckBox)indicator.findViewById(R.id.clock_onoff);clockOnOff.setChecked(alarm.enabled);//新增this.context=context;//Clickingoutsidethe"checkbox"shouldalsochangethestate.indicator.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){ myDialog=ProgressDialog.show(AlarmTimeAdapter.this.context,"提示","请稍候",true);newThread(){publicvoidrun(){try{ sleep(800); }catch(Exceptione){ e.printStackTrace(); }finally{//卸载所创立的myDialog对象。 myDialog.dismiss(); } } }.start();try{ Thread.sleep(500); }catch(InterruptedExceptione){ e.printStackTrace(); }clockOnOff.toggle();updateIndicatorAndAlarm(clockOnOff.isChecked(),barOnOff,alarm);}});3.2.3闹铃列表模块设计在这个页面显示所有的设置过的闹钟信息,点击闹钟图标可以开启或者关闭闹钟,点击时间可以设置闹钟和选择闹钟要开启的天数。如图3.4、图3.5所示。图3.4闹钟列表界面图图3.5闹钟详细信息界面主要代码:publicclassAnalogAppWidgetProviderextendsBroadcastReceiver{staticfinalStringTAG="AnalogAppWidgetProvider";publicvoidonReceive(Contextcontext,Intentintent){Stringaction=intent.getAction();if(AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)){RemoteViewsviews=newRemoteViews(context.getPackageName(),R.layout.analog_appwidget);views.setOnClickPendingIntent(R.id.analog_appwidget,PendingIntent.getActivity(context,0,newIntent(context,AlarmClock.class),PendingIntent.FLAG_CANCEL_CURRENT));int[]appWidgetIds=intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);AppWidgetManagergm=AppWidgetManager.getInstance(context);gm.updateAppWidget(appWidgetIds,views);}}}3.2.4闹钟铃音模块设计此模块主要的功能是选择闹钟的铃音,铃音的来源是系统中的.Mp3格式的文件,但凡此格式的文件都可以作为闹钟的铃音。如图3.6所示图3.6闹钟铃音选择图主要代码:publicclassDigitalClockextendsLinearLayout{privatefinalstaticStringM12="h:mm";privateCalendarmCalendar;privateStringmFormat;privateTextViewmTimeDisplay;privateAmPmmAmPm;privateContentObservermFormatChangeObserver;privatebooleanmLive=true;privatebooleanmAttached;/*calledbysystemonminuteticks*/privatefinalHandlermHandler=newHandler();privatefinalBroadcastReceivermIntentReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(mLive&&intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)){mCalendar=Calendar.getInstance();}//Postarunnabletoavoidblockingthebroadcast.mHandler.post(newRunnable(){publicvoidrun(){updateTime();}});}};3.2.5开始闹铃模块设计针对当前人们起床难的问题,在关闭闹铃模块,需要答对一道算术题才可以关闭闹铃,这样就可以到达闹铃的目的,让闹铃的发挥更好的作用。点击暂停再响,五分钟后会再次开启闹钟,点击取消,那么是关闭闹钟。如图3.7所示图3.7开始闹铃界面图主要代码:publicclassAnalogAppWidgetProviderextendsBroadcastReceiver{staticfinalStringTAG="AnalogAppWidgetProvider";publicvoidonReceive(Contextcontext,Intentintent){Stringaction=intent.getAction();if(AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)){RemoteViewsviews=newRemoteViews(context.getPackageName(),R.layout.analog_appwidget);views.setOnClickPendi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产行业业务员工作总结
- 运动品牌的市场推广计划
- 【八年级下册历史】第16课 独立自主的和平外交 同步练习
- 金属行业行政后勤运营总结
- 2023年高考语文试卷(上海)(春考)(空白卷)
- 2024年美术教案集锦5篇
- 2024年煤矿应急预案
- 红光十字线激光器行业市场发展及发展趋势与投资战略研究报告
- 2025保险合同协议书大全
- 2024年度天津市公共营养师之二级营养师综合练习试卷B卷附答案
- 2024年纪检监察综合业务知识题库及答案(新)
- 师德师风考核实施方案
- 【真题】2023年南京市中考语文试卷(含答案解析)
- 膀胱憩室护理查
- 2024年河南省水务规划设计研究有限公司人才招聘笔试参考题库附带答案详解
- 工程制图知识要点
- 2024山东能源集团中级人才库选拔高频考题难、易错点模拟试题(共500题)附带答案详解
- 视频后期剪辑述职报告
- 个人就业能力展示
- 银行对公业务课件
- 水吧管理方案
评论
0/150
提交评论