基于安卓android系统的铃声模式的设计与实现毕业论文_第1页
基于安卓android系统的铃声模式的设计与实现毕业论文_第2页
基于安卓android系统的铃声模式的设计与实现毕业论文_第3页
基于安卓android系统的铃声模式的设计与实现毕业论文_第4页
基于安卓android系统的铃声模式的设计与实现毕业论文_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于 Android 系统的铃声模式的设计与实现 【摘 要】 近年来,随着现代工业及科学技术的迅速发展,人们对于信息的获取有着强烈的需求。 智能手机作为一种非常重要的通讯工具,功能越来越强大,智能手机行业的发展也越来越 受到各大制造厂商的关注,考虑到 Android 广阔的市场前景,各大手机厂商也都争相参与 该系统的开发,并希望能将该系统应用到自己的手机产品上,而我们正好参加了一个 android 项目开发的大赛, 因此毕业设计题目选择开发一款手机 android 软件。 本文首先对比分析了市场上多个智能手机平台,研究了智能手机发展现状,接着分 析了 Android 平台的系统架构,剖析了 Android 应用组件和 Activity 生命周期,对 Android 平台底层组件软件开发和应用层软件开发方法进行了深入研究,其中深入分析了 Intent, 对 Intent 进行了详细的讲解,以及时间的设置和 AlarmManager 的使用进行了详解。在此基 础上,开发设计实现了基于 Android 系统的手机铃声模式软件。 关键字关键字:Android、智能手机、铃声设置、Activity、Intent、Service 前言 随着移动互联网的蓬勃发展,手机作为移动互联网最重要的承载设备,在人们日常生 活中所扮演的角色越来越重要。人们开始关注手机应用的多元化和功能的强大,在满足消 费者越来越高的要求方面,智能手机成为了最好的选择。同时也正是基于这种原因,智能 手机在手机市场扮演着非常重要的角色,而且相应的智能手机应用领域也变得火爆起来, 对智能手机平台的研究与开发是当前移动计算技术发展中最为活跃的领域,从中我们不难 看出智能手机所蕴含着广阔发展前景。 所谓智能手机,是指类似于个人电脑,具备独立的操作系统,可以由用户自行安装软 件、游戏等程序来不断对手机进行扩展,并可以通过移动网络来实现无线网络接入的一类 手机的总称。从应用角度讲,智能手机除了具备手机的基本通话功能外,还具备了 PDA(个人数字助理)的大部分功能,特别是具有个人信息管理、基于无线数据通信的浏览 器,GPS(全球定位系统)和电子邮件等功能。 智能手机为用户提供了宽大的屏幕尺寸和良好的运行性能,既方便随身携带,又为软 件运行和内容服务提供了广阔的舞台,很多移动增值业务因此可以就此展开,如交通、商 品、股票、新闻、天气、应用程序下载、音乐图片下载等等。借着正在大力推广的 3G 网 络的支持,智能手机势必将成为一个功能强大,集通话、短信、网络接入、影视娱乐为一 体的综合性个人手持终端设备。 在国内外 Android 手机应用开发如火如荼、日益盛行的大背景下,本人决定开发一款 界面美观、操作简单,具有数据记录的 Android 手机软件。 通过本软件您可根据自己的生活、工作习惯,按时间段来切换手机的通话模式。您再 也不会因忘记关闭铃声而半夜被电话惊醒。工作的时候不必在开完会议后忘记切换回铃声 模式错过电话而烦恼。 通过本软件设定,在您一天的工作、生活、休息、睡眠,手机都能智能而体贴备至的 为您全天候服务。不但减少了您生活中的烦恼,也给您带来了美妙贴心的手机体验。实乃 享受生活、决胜职场的必备软件。 目录 第一章第一章 绪论绪论 4 (一)手机操作系统简介(一)手机操作系统简介4 (二)手机操作系统目前现状(二)手机操作系统目前现状4 (三)手机操作系统发展趋势(三)手机操作系统发展趋势5 (四)(四)A ANDROIDNDROID简介简介6 第二章第二章 ANDROIDANDROID 的架构的架构7 (一)(一) A ANDROIDNDROID 架构架构.7 (二)(二)A ANDROIDNDROID 中的中的 I INTENTNTENT.9 (三)(三)A ANDROIDNDROID 中的中的 A ALARMLARMM MANAGERANAGER.11 (四)(四) ECLIPSE12 第三章第三章 会议助手的设计思路会议助手的设计思路14 (一)(一) 程序的设计特点程序的设计特点 14 (二)(二) 会议助手的设计会议助手的设计 14 (三)(三) 程序的流程程序的流程 14 (四)定时手机情景模式程序的具体实现(四)定时手机情景模式程序的具体实现 16 (五)(五) 铃声情景模式的测试铃声情景模式的测试.28 第四章第四章 总结总结 32 致致 谢谢33 【参考文献与附录参考文献与附录】 .34 第一章第一章 绪论绪论 (一)(一)手机操作系统简介手机操作系统简介 手机的用户群日益庞大,在人民生活中手机起到愈加重要的作用。在 2010 年 1 月由一个网站所做的调查表明,中国手机用户数量将达到七点四亿多。 全国的手机及其它具有手机功能的设备的用户群体,这个数量还在继续增长。 这样一来,就有更多的手机厂商也都想抓住商机赢得更多用户,.所以也就涌现 出许许多多的手机品牌和手机操作系统,我们大家所知道的有如:Symbian, PalmOS,Windows Mobile, Smartphone 等等,这里对手机品牌不作介绍,对于 手机的操作系统,这些系统中,每个系统也有许多版本,有的版本是智能的, 有的版本非智能的,各有各的特色和优缺点,这里不对各个系统进行详细的评 论。Google 公司推出了一套手机操作系统 Android,并宣布 Google 要进军手机 领域,宣称其手机系统是一个开放平台,所以就引来了许多的手机厂商的关注 和极大的兴趣。由于 Android 系统是基于标准的 Linux 内核开发的一套嵌入式 系统,也可以说 Android 系统的核心部分(不包括上层应用程序部分)是 Linux 系统,所以该论文在介绍 Android 系统移植开发之前,也就会描述和介绍通用 嵌入式 Linux 系统移植的有关软件内容,对于涉及硬件方面不作过多的描述。 (二)(二)手机操作系统目前现状手机操作系统目前现状 近来微电子技术的迅猛发展,处理器升级增长的速度也随之加快,嵌入式 系统领域发生了翻天覆地的变化,特别是现在网络的普及,可以使嵌入式系统 具备网络的功能,嵌入式与网络也就成为当今最热门的技术,从而使得嵌入式 系统得以更广泛的应用,应用到了各个领域,但是在这众多的应用中,我们最 有切身体会的就是手机的使用。 接下来就针对常见的几款智能手机系统简单介绍一下: (1) Windows Mobile 系列操作系统是微软在计算机的 Windows 操作系统上 变化而来的,因此,它们的操作界面与 PC 的操作系统非常相似,因此性能比较 好,操作起来速度会比较快。但是,此系列手机也有一定的缺点,如因配置高、 功能多而产生耗电量大、电池续航时间短、硬件采用成本高等缺点。 (2) Symbian 操作系统提供了灵活的应用操作界面框架,不但使开发者得 以快速掌握必要的技术,同时还使手机制造商能够推出不同界面的产品,但是 这种系统类型的手机,它的输入方式包括键盘输入和手写笔输入,不同的输入 方式和外观设计会对各款手机的主要用途产生很大的影响,每种输入方法对消 费者也有一些要求,如要求熟悉拼音,写字等。 (3) PalmOS 是 3Com 公司开发的一种 32 位的嵌入式操作系统,原本是一家 生产掌上电脑及掌上电脑操作系统为主的公司,Palm 智能手机所用的 Palm 操 作系统又与 Palm 掌上电脑所用的操作系统非常相似,与微软所推出操作系统要 占有大量的系统资源和储存容量不同的是,它本身所占的内存极小,基于 Palm 操作系统编写的应用程序所占的空间也很小,对于中国用户而言,它有一个不 足之处是,它的操作系统起初在中国销售的产品仍然要使用中文外挂平台,有 相当部分依然是以英文界面为主,在一定程度上影响了基于 Palm 操作系统的产 品大面积进入中国市场。 (4) Linux 是一套免费使用和自由传播的操作系统。Linux 具有稳定、可靠、 安全等优点,有强大的网络功能。由于 Linux 具有源代码开放,这一特点非常 重要。从应用开发的角度看,由于 Linux 的源代码是开放的,有利于独立软件 开发商(ISV )开发出硬件利用效率高、功能更强大的应用软件,也方便行业用 户开发自己的安全、可控认证系统,因为丰富的应用是智能手机的优越性体现 和关键卖点所在。特别是当智能手机大量用作行业应用的移动终端时,Linux 在手机操作系统市场中也异军突起,成为一股不容忽视的力量。 (5) iPhone,相比于前面几个系统,Apple 的 iPhone 系统的性能可能算是 比较优越的,但是它在价格和语言本地化方面有一定的局限性,但是 Android 也吸纳了它的一些优点,而且在此基础上还做了优化,这就是 Google 的聪明和 可以制胜之处。 目前,琳琅满目的手机系统,有时也让消费者在选择手机时头痛,比如:有 的手机外观还蛮赏心悦目的,但是使用时感觉手机系统和应用不是很理想;有的 手机系统和应用系统很称心,但是外观傻傻的;有一些手机系统操作起来很复杂, 好像是为一些专业人士设计似的等等;还有的是所谓的高端手机其实就是增加了 几个吸引消费者眼球的卖点就把手机价格拉得很高;总的来说目前的手机市场不 是很令人满意,所以希望能有某个手机软件能够一统手机的操作系统。 (三)手机操作系统发展趋势(三)手机操作系统发展趋势 据不完全统计,目前全球手机用户有 30 亿,2006 年统计的中国手机用户 有 2.61 亿;去年全球手机出货量约 11 亿部,其中中国约 5.5 亿部141。美国 最著名的未来学家尼葛洛庞帝在 1999 年访华时曾经预言,在 4 至 5 年后嵌入式 系统和互联网将是既 PC 之后的最伟大的发明。如今 10 年将要过去了,现实的 发展验证了他的语言的正确性。现在嵌入式系统正处于高速的发展阶段,未来 的几年,这种发展和竞争将是愈演愈烈。由于嵌入式系统己经渗透到许多领域, 如工业控制、移动通信、GPS、娱乐等,将来它会发挥更大的优势。 Symbian, Linux, Windows Mobile, Palm 是目前主要的手机嵌入式操作系统,而 Linux 手机市场份额的上升,更多的源于 Linux 开放平台的支持,也随着嵌入式系统 时代的发展而发展,近期,随着 3G 时代的到来,也可能是由于底层的 Linux 核 心是一个开源平台,中国几大手机运营商如移动、电信、联通也在紧锣密鼓的 筹备并与 Google 公司合作而开发 Android 系统,由于 Android 的内核 Linux 部 分是开源的,所以在价格方面占据了很大的优势。看来使用 Android 系统是将 来手机系统的很大的趋势。 (四)(四)AndroidAndroid 简介简介 Android 是一个开源的智能手机操作系统,Android 翻译成中文是机器人, 机器人这个名词通常是指硬件部分,而 Android 是操作系统,是软件部分。这 个目前正热门的手机系统跟以往各大手机厂商闭门自修所研发的系统最大的区 别在于它开放原始代码,让一些手机厂商或一般的开发爱好者也可以轻易的利 用 Google 公司所提供的 SDK 开发各式各样的应用软件。Android 是基于 Linux 内核,由 Linux 内核、Linux 运行库、用来运行代码的类似 Java 虚拟机以及全 套的移动电话应用程序组成的,和标准的 Linux 开发流程一样,Android 系统 平台开发的一个很重要的基础工作就是对其内核的编译和移植,其系统架构如 下图 1-1,其中 Applications 是 Android 的应用软件部分,Application Framework 是 Android 的应用软件框架模型,Android Runtime 是 Android 系统 的运行库,Libraries 是 Linux 系统的标准库,Linux Kernel 是 Linux 系统的 内核,也是 Android 系统的内核。 第二章第二章 AndroidAndroid 的架构的架构 Android 是一个移动设备的软件框架。它包括一个操作系统,中间件和一 些关键应用。Android 是由 Linux+Java 构成的开源软件。 (一)(一) AndroidAndroid 架构架构 下图给出了 Android 操作系统的大部分组件。 图 2-1Android 架构 应用程序 Android 的配置搭载它的核心应用,包括 email 客户端,SMS 程序,日历, 地图,浏览器,contacts 以及其它一些应用。所有的应用都是用 java 语言编 写的。 应用程序框架 开发人员具有和核心应用相同的框架 API 访问权限。应用程序的构建模式 被设计成简单的可重用的组件。所有应用能够分享他的能力,所有应用都是如 此(这是被框架强迫的安全约束) 。这样允许用户在相同的机器上替换组件。一 套用于支撑应用的服务和系统,包括:一套强大和可扩展的视图,用于构建应 用,甚至内嵌的 Web 浏览器。内容提供,用于应用间的数据提供和数据共享 。一个资源管理器, 提供非代码的资源支持,包括本地字符串,图像文件,和 布局文件 。一个 Notification 管理器, 用于应用程序在状态栏显示告警信 息 。一个 Activity 管理器,用于管理应用的生命周期,以及提供通用的导航 辅助 。 库 Android 包含一整套 C/C+ 库,用于构建 Android 系统的大量不同的组 件。这些能力通过 Android 应用程序框架暴露给开发人员。部分核心库如下: 系统 C 库,一个由 BSD 发起的标准 C 库实现,专门为基于 Linux 的嵌 入式设备作了调整。 媒体库,基于 PacketVideos OpenCORE;该库支持回放和录制大量流行的 音视频格式和静态图片,包括 MPEG4, H.264, MP3,AAC,AMR, JPG, 和 PNG。 Surface 管理,用于管理显示子系统和无缝合成不同应用的 2D 和 3D 图 形层。 LibWebCore,先进的 web 浏览器引擎。被用来构建 Android 浏览器和内 嵌的 web 视图。 SGL,底层的 2D 图形引擎。 3D 库,一套 OpenGL ES 1.0 APIs 的实现;该库使用硬件加速(当硬件可 用时)或者高度优化的 3D 软件光栅。 FreeType,用于点阵和矢量字体渲染。 SQLite,能够被所有应用使用的强大的轻量级的关系数据库引擎。 SSL, (Secure Sockets Layer) ,中文名为 “ 安全套接层协议层 ” ,它是网 景( Netscape )公司提出的基于 WEB 应用的安全协议,当前版本为 3.0。SSL 协议指定了一种在应用程序协议(如 HTTP 、 Telenet 、 NMTP 和 FTP 等)和 TCP/IP 协议之间提供数据安全性分层的机制,它为 TCP/IP 连接 提供数据加密、服务器认证、消息完整性以及可选的客户机认证。它已被广泛 地用于 Web 浏览器与服务器之间的身份认证和加密数据传输。SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。SSL 协议可分 为两层: SSL 记录协议(SSL Record Protocol):它建立在可靠的传输协议(如 TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL 握 手协议(SSL HandshakeProtocol):它建立在 SSL 记录协议之上,用于在实际 的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 SSL 协议提供的服务主要有: 一、认证用户和服务器,确保数据发送到正确的客户机和服务器; 二、加密数据以防止数据中途被窃取; 三、维护数据的完整性,确保数据在传输过程中不被改变。 (二)(二)AndroidAndroid 中的中的 IntentIntent 在一个 Android 应用中,主要是由四种组件组成的,这四种组件是独立的, 它们之间可以互相调用,协调工作,最终组成一个真正的 Android 应用。在这 些组件之间的通讯中,主要是由 Intent 协助完成的。Intent 负责对应用中一次 操作的动作、动作涉及数据、附加数据进行描述,Android 则根据此 Intent 的 描述,负责找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调用。 因此,Intent 在这里起着一个媒体中介的作用,专门提供组件互相调用的相关 信息,实现调用者与被调 用者之间的解耦。 1、抽象描述的内容 在 Android 参考文档中,对 Intent 的定义是执行某操作的一个抽象描述。 首先,是要执行的动作(action)的一个简要描述。 其次,是执行动作要操作的数据(data) ,Android 中 采用指向数据的一个 URI 来表示。 另外,除了 action 和 data 这两个重要属性外,还有一些附加属性: category(类别) ,被执行动作的附加信息。 type(数据类型) ,显式指定 Intent 的数据类型(MIME) 。一般 Intent 的 数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用 显式指定的类型而不再进行推导。 component(组件) ,指定 Intent 的的目标组件的类名称。通常 Android 会根据 Intent 中包含的其它属性的信息,比如 action、data/type、category 进 行查找,最终找到一个与之匹配的目标组件。但是,如果 component 这个属性 有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这 个属性以后,Intent 的其它所有属性都是可选的。 extras(附加信息) ,是其它所有附加信息的集合。使用 extras 可以为组件 提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮 件的标题、正文等保存在 extras 里,传给电子邮件发送组件。 总之,action、data/type、category 和 extras 一起形成了一种语言。这种语 言使系统能够理解诸如“查看某联系人的详细信息”之类的短语。随着应用不 断的加入到系统中,它们可以添加新的 action、 data/type、category 来扩展这 种语言。应用也可以提供自己的 Activity 来处理已经存在的这样的“短语” , 从而改变这些“短语”的行为。 2、Android 解析 Intent 的过程 在应用中,我们可以以两种形式来使用 Intent: A、直接 Intent: 指定了 component 属性的 Intent(调用 setComponent(ComponentName)或 者 setClass(Context, Class)来指定) 。通过指定具体的组件类,通知应用启动对应 的组件。 B、间接 Intent: 没有指定 comonent 属性的 Intent。这些 Intent 需要包含足够的信息,这 样系统才能根据这些信息,在在所有的可用组件中,确定满足此 Intent 的组件。 对于直接 Intent,Android 不需要去做解析,因为目标组件已经很明确, Android 需要解析的是那些间接 Intent,通过解析,将 Intent 映射给可以处理 此 Intent 的 Activity、IntentReceiver 或 Service。Intent 解析机制主要是通过查 找已注册在 AndroidManifest.xml 中的所有 IntentFilter 及其中定义的 Intent, 最终找 到匹配的 Intent。在这个解析过程中,Android 是通过 Intent 的 action、type、category 这三个属性来进行判断的,判断方 法如下: 如果 Intent 指明定了 action,则目标组件的 IntentFilter 的 action 列表中 就必须包含有这个 action,否则不能匹配; 如果 Intent 没有提供 type,系统将从 data 中得到数据类型。和 action 一样,目标组件的数据类型列表中必须包含 Intent 的数据类型,否则不能匹配。 如果 Intent 中的数据不是 content: 类型的 URI,而且 Intent 也没有明确 指定它的 type,将根据 Intent 中数据的 scheme (比如 http: 或者 mailto: ) 进行匹配。同上,Intent 的 scheme 必须出现在目标组件的 scheme 列表中。 如果 Intent 指定了一个或多个 category,这些类别必须全部出现在组建的 类别列表中。比如 Intent 中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。 (三)(三)AndroidAndroid 中的中的 AlarmManagerAlarmManager AlarmManager 的使用机制有的称呼为全局定时器,有的称呼为闹钟。通过 对它的使用,它的作用和 Timer 有点相似。都有两种相似的用法: (1)在指定时长后执行某项操作 (2)周期性的执行某项操作 AlarmManager 对象配合 Intent 使用,可以定时的开启一个 Activity,发送一 个 BroadCast,或者开启一个 Service. AlarmManager 包含的主要方法: 取消已经注册的与参数匹配的定时器 :void cancel(PendingIntent operation); 注册一个新的延迟定时器:void set(int type, long triggerAtTime, PendingIntent operation); 注册一个重复类型的定时器:void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation); 注册一个非精密的重复类型定时器:void setInexactRepeating (int type, long triggerAtTime, long interval, PendingIntent operation); 设置时区 :void setTimeZone(String timeZone)。 定时器主要类型: public static final int ELAPSED_REALTIME 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被 唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包 括睡眠时间,可以通过调用 SystemClock.elapsedRealtime()获得。系统值是 3 (0x00000003)。 public static final int RTC 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒 才传递它,该闹铃所用的时间是绝对时间,所用时间是 UTC 时间,可以通过调 用 System.currentTimeMillis()获得。系统值是 1 (0x00000001) 。 public static final int RTC_WAKEUP 表示闹钟在睡眠状态下会唤醒系统并执行提示功能,用法同 RTC 类型,系 统值为 0(0x00000000)。 System.uptimeMillis():记录从机器启动后到现在的毫秒数,当系统进入深 度睡眠时,此计时器将会停止。 System.currentTimeMillis():返回自 1970 年 1 月 1 日到现在的毫秒数,通 常用来设置日期和时间。 System.elapsedRealtime():返回从机器启动后到现在的毫秒数,包括系统深 度睡眠的时间。 它大致分为两种类型 一种是相对时间 一种是绝对时间.所以,根据使用的 类型不同 triggerAtTime 设置也有所不同。 如果使用 ELAPSED_REALTIME_WAKEUP 类型 应该调用 SystemClock.elapsedRealtime()获取相对时间在加上你设定的延迟时间: alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+5000, sender); 如果使用 RTC_WAKEUP 类型 应该调用 System.currentTimeMillis()获取从 1970.1.1 号以来的时间在加上你设定的延迟时间: alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5000, sender); (四)(四) Eclipse Eclipse 是一个集成开发环境(Integrated Development Environment) 。其前 身是 IBM 的 Visual Age for Java(VA4J)。Eclipse 是可扩展的体系结构,可以 集成不同软件开发供应商开发的产品,将他们开发的工具和组件加入到 Eclipse 平台中。随 Java 应用的广泛,各大主要软件供应商都参与到 Eclipse 架构开 发中,使得 Eclipse 插件数量与日增加。Eclipse 平台的免费,架构的成熟,行 业协会 Eclipse 基金会的支持,使得很多的 Java 开发采用了 Eclipse 架构。 插件(plug-in)是遵循一定规范的应用程序结构编写出来的程序,也成为 扩展,不同于组件。Eclipse 正是一个精心设计的、可扩展的核心结构。通过插 件的形式,将根据自己需要选择的扩展开发工具集成到 Eclipse 平台核心。因 此使得可以避免因过去不兼容工具带来的麻烦,降低开发出成本,大幅度提高 工作效率。 Eclipse 本身作为一个开放源码的软件项目,它主要包含 3 个子项目: 平台子项目,Java 开发工具(JDT-java)子项目,插件开发环境(PDE-plug-in) 子项目。其中,Java 开发工具 JDT 为开发人员提供大量的集成工具集,主要 为 Java 应用程序提供编程接口(API)。Eclipse 软件开发工具箱(SDK)是主要有 Eclipse 本身的项目软件和其他一些开发源吗的第三方软件组成。次者,插件开 发环境(JDT)则为插件开发和测试提供相应的环境,如:创建插件清单文件、定 义扩展点等。 图 2-3 Eclipse 体系结构图 其他的 Java 集成开发环境有 Jbuilder、WebSpher Studio、 NetBeans。然 而 Eclipse 以其强大的可扩展性和开放性脱颖而出,拥有为数众多的支持者, 也被许多大的企业所青睐。 第三章第三章 会议助手的设计思路会议助手的设计思路 (一)(一) 程序的设计特点程序的设计特点 本系统建立在 Android 平台之上,有以下特点: 1. 开源性 android 操作系统核心是基于 linux kernel 的,它是典型的开源系统。 2. 界面清楚,操作简单便捷 本软件界面清楚,操作简单便捷。 (二)(二) 会议助手的设计会议助手的设计 详细的软件结构分析图如图 3-1 所示。 图 3-1铃声模式功能结构图 (三)(三) 程序的流程程序的流程 软件主要的输入输出及模块间的调用情况用 IPO 图表示如图 3-2 所示: 开始 显示系统按钮键 选择操作 24小时内 启动 每周启动 返回 图 3-2 铃声模式流程图 当用户点击进入软件系统时,进入到将是设置手机情景模式界面 QingjingmoshiActivity 类。在这个界面使用人可以根据自己的要求设置时间和情 景模式,可以点击“24 小时内启动”或“周期启动” 。若点击“24 小时内启动, 当系统时间与设置时间一致,会根据使用人选中的情景模式调用情景模式类 (包括 Vibrate 类、Silent 类、Ring 类、RingAndVibrate 类) ,比如:当使用人 选中的是震动,这时就会调用 Vibrate 类,如果使用人选中“来电自动回复短信” 则会进入 MonitorPhone 类。在 QingjingmoshiActivity 这个界面而若点击“周期 性启动”就会进入 AtstartService 类(AtstartService 类在开机时会通过 Atstart 类 自动启动)然后马上进入 WeekService 类并且每日 00:00 也会进入 WeekService 类。最后根据使用人的选择调用情节模式类。 在 MeetingActivity 界面,选择录音按钮时,会调用 android 系统本身的录 音器。当使用人点击菜单时,会出现三个帮助:铃声帮助、签到帮助、录音帮 助。依次选择所进入的类 HelpOne、 HelpToo 、HelpThree。 (四)定时手机情景模式程序的具体实现(四)定时手机情景模式程序的具体实现 Android 程序=Activity+xml(view、surfaceview) +Service+Brosadcast+res+string.xml 铃声界面类 QingjingmoshiActivity, 该类是通过扩展基类 Activity 得到的, 是根据使用人需求设定数据及类型。代码如下: public class QingjingmoshiActivity extends Activity Button bt3,time1,time2,only; CheckBox cb1,cb2,cb3,cb4,cb5,cb6,cb7,reply; Calendar c=Calendar.getInstance(); Calendar c2=Calendar.getInstance(); SharedPreferences.Editor editor; SharedPreferences preferences; int hour1,minute1,hour2,minute2; String number,content; RadioGroup xuanxiang1,xuanxiang2; RadioButton radio1, radio2, radio3, radio4; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); /设置当前的容器视图 setContentView(R.layout.lingshengmain); /设置背景 View view = this.getWindow().getDecorView(); /getDecorView 获得 window最顶层的View view.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.moshi beijing); cb1=(CheckBox)findViewById(R.id.monday); cb2= (CheckBox)findViewById(R.id.tuesday); cb3=(CheckBox)findViewById(R.id.wednesday); cb4=(CheckBox)findViewById(R.id.thursday); cb5= (CheckBox)findViewById(R.id.friday); cb6= (CheckBox)findViewById(R.id.saturday); cb7=(CheckBox)findViewById(R.id.sunday); reply=(CheckBox)findViewById(R.id.reply); xuanxiang1 = (RadioGroup) findViewById(R.id.xuanxiang1); xuanxiang2 = (RadioGroup) findViewById(R.id.xuanxiang2); radio1 = (RadioButton) findViewById(R.id.radio1); radio2 = (RadioButton) findViewById(R.id.radio2); radio3 = (RadioButton) findViewById(R.id.radio3); radio4 = (RadioButton) findViewById(R.id.radio4); bt3=(Button)findViewById(R.id.start); time1=(Button)findViewById(R.id.time1); time2=(Button)findViewById(R.id.time2); only=(Button)findViewById(R.id.only); preferences= getSharedPreferences(“settime“, MODE_WORLD_READABLE); editor = preferences.edit(); /读取储存的数据 hour1 = preferences.getInt(“hour1“, 22); minute1 = preferences.getInt(“minute1“, 0); hour2 = preferences.getInt(“hour2“, 7); minute2 = preferences.getInt(“minute2“, 0); cb1.setChecked(preferences.getBoolean(“cb1“,false); cb2.setChecked(preferences.getBoolean(“cb2“,false); cb3.setChecked(preferences.getBoolean(“cb3“,false); cb4.setChecked(preferences.getBoolean(“cb4“,false); cb5.setChecked(preferences.getBoolean(“cb5“,false); cb6.setChecked(preferences.getBoolean(“cb6“,false); cb7.setChecked(preferences.getBoolean(“cb7“,false); reply.setChecked(preferences.getBoolean(“reply“,false); radio1.setChecked(preferences.getBoolean(“radio1“,true); radio2.setChecked(preferences.getBoolean(“radio2“,false); radio3.setChecked(preferences.getBoolean(“radio3“,true); radio4.setChecked(preferences.getBoolean(“radio4“,false); /显示时间的设置 c.set(Calendar.HOUR_OF_DAY, hour1); c.set(Calendar.MINUTE, minute1); c.set(Calendar.SECOND, 0); c2.set(Calendar.HOUR_OF_DAY, hour2); c2.set(Calendar.MINUTE, minute2); c2.set(Calendar.SECOND, 0); /完善显示时间格式 if(c.getTime().getHours()=10) if(c.getTime().getMinutes()=10) time1.setText(c.getTime().getHours()+“:“+c.getTime().getMinutes(); elsetime1.setText(c.getTime().getHours()+“:0“+c.getTime().getMinutes(); else if(c.getTime().getMinutes()=10) time1.setText(“0“+c.getTime().getHours()+“:“+c.getTime().getMinutes(); elsetime1.setText(“0“+c.getTime().getHours()+“:0“+c.getTime().getMinut es(); if(c2.getTime().getHours()=10) if(c2.getTime().getMinutes()=10) time2.setText(c2.getTime().getHours()+“:“+c2.getTime().getMinutes(); elsetime2.setText(c2.getTime().getHours()+“:0“+c2.getTime().getMinutes (); else if(c2.getTime().getMinutes()=10) time2.setText(“0“+c2.getTime().getHours()+“:“+c2.getTime().getMinutes(); elsetime2.setText(“0“+c2.getTime().getHours()+“:0“+c2.getTime().getMin utes(); /设置修改模式时间 time1.setOnClickListener (new OnClickListener() Override public void onClick(View v) Calendar current=Calendar.getInstance(); new TimePickerDialog(QingjingmoshiActivity.this, 0, new OnTimeSetListener() Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) /时间设置 c.setTimeInMillis(System.currentTimeMillis(); c.set(Calendar.HOUR_OF_DAY, hourOfDay); c.set(Calendar.MINUTE, minute); c.set(Calendar.SECOND, 0); Toast.makeText(QingjingmoshiActivity.this, “设置 成功“, Toast.LENGTH_SHORT).show(); /时间显示 if(c.getTime().getHours()=10) if(c.getTime().getMinutes()=10) time1.setText(c.getTime().getHours()+“:“+c.getTime().getMinutes(); elsetime1.setText(c.getTime().getHours()+“:0“+c.getTime().getMinutes(); else if(c.getTime().getMinutes()=10) time1.setText(“0“+c.getTime().getHours()+“:“+c.getTime().getMinutes(); elsetime1.setText(“0“+c.getTime().getHours()+“:0“+c.getTime().getMinut es(); , current.get(Calendar.HOUR_OF_DAY), current.get(Calendar.MINUTE),false).show(); ); /设置恢复模式时间 time2.setOnClickListener (new OnClickListener() Override public void onClick(View v) Calendar current=Calendar.getInstance(); new TimePickerDialog(QingjingmoshiActivity.this, 0, new OnTimeSetListener() Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) c2.setTimeInMillis(System.currentTimeMillis(); c2.set(Calendar.HOUR_OF_DAY, hourOfDay); c2.set(Calendar.MINUTE, minute); c2.set(Calendar.SECOND, 0); Toast.makeText(QingjingmoshiActivity.this, “设置成 功“, Toast.LENGTH_SHORT).show(); /时间显示 if(c2.getTime().getHours()=10) if(c2.getTime().getMinutes()=10) time2.setText(c2.getTime().getHours()+“:“+c2.getTime().getMinutes(); elsetime2.setText(c2.getTime().getHours()+“:0“+c2.getTime().getMinutes (); else if(c2.getTime().getMinutes()=10) time2.setText(“0“+c2.getTime().getHours()+“:“+c2.getTime().getMinutes(); elsetime2.setText(“0“+c2.getTime().getHours()+“:0“+c2.getTime().getMin utes(); , current.get(Calendar.HOUR_OF_DAY), current.get(Calendar.MINUTE),false).show(); ); /每周启动按钮 bt3.setOnCli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论