基于Android手机平台的闹铃.docx
- 文档编号:10221013
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:30
- 大小:488.92KB
基于Android手机平台的闹铃.docx
《基于Android手机平台的闹铃.docx》由会员分享,可在线阅读,更多相关《基于Android手机平台的闹铃.docx(30页珍藏版)》请在冰豆网上搜索。
基于Android手机平台的闹铃
实习实训报告
题目名称:
基于Android手机平台的闹铃
系部:
计算机工程系
专业班级:
通信13-1班
学生姓名:
邝鑫鑫
学号:
2013232020
指导教师:
王爱民
完成日期:
2015.1.10
新疆工程学院
实习实训评定意见
设计题目基于Android手机平台的闹铃
系部计算机工程系专业班级通信13-1班
学生姓名邝鑫鑫学生学号2013232020
评定意见:
评定成绩:
指导教师(签名):
王爱民
2015年1月15日
(此页背书)
评定意见参考提纲:
1、学生完成的工作量与内容是否符合任务书的要求。
2、学生的勤勉态度。
3、设计或说明书的优缺点,包括:
学生对理论知识的掌握程度、实践工作能力、表现出的创造性和综合应用能力等。
新疆工程学院
计算机工程系学生实训任务书
2015-2016学年上学期2015年12月28日
专业
通信技术
班级
通信13-1班
课程名称
移动终端应用开发
设计题目
基于Android手机平台的闹铃
指导教师
王爱民
起止时间
2015.12.28-2016.1.10
周数
2周
设计地点
北京路1号机房
设计目的:
1.巩固和加深学生对移动终端(Android)应用开发课程的基本知识的理解和掌握
2. 掌握移动终端(Android)应用开发编程和程序调试的基本技能
3. 利用移动终端(Android)应用开发进行基本的程序设计
4. 掌握书写程序设计说明文档的能力
设计任务或主要技术指标:
1. 分析实训题目的要求
2. 写出详细设计说明
3. 编写程序代码,调试程序使其能正确运行
4. 设计完成的程序要能够解决问题并便于操作和使用
5. 设计完成后提交实训报告
设计进度与要求:
第1天读题目理解题目,查找资料
第2-3天理出思路,写出需求分析及概要设计
第4-12天写出详细设计及代码,调试程序
第13天指导老师核查程序运行结果、审核报告。
学生查缺补漏,修改报告,通过后打印实训报告。
第14天以小组为单位进行考核
主要参考书及参考资料:
[1]张东玲,杨宁,Android应用开发教程,清华大学出版社,2013
[2]
[3]
教研室主任(签名)系(部)主任(签名)
第一章概述
设计一个基于Android的位置闹钟的软件。
实现的功能有:
a)能在Android上利用其提供地相关API获取位置信息。
b)能通过界面设置闹钟的启动条件,包括入场与出场条件的设
c)建立后台服务进程,监查位置信息,当满足触发条件时,闹钟响应相应事件。
需重点研究的关键问题:
通过AndroidApi获取位置信息,并在指定地点设置闹钟提醒。
解决思路:
在界面里显示当前位置信息(经纬度值),并输入指定地点的经纬度值,编程实现对位置信息实时更新,将两者的经纬度转换为距离,如在误差范围内则启动闹铃功能。
第二章需求分析
2.1项目背景
移动互联网时代的来临,直接促进了搭载智能操作系统、具有强大扩展性的智能手机、平板电脑等移动终端产业的蓬勃发展。
搭载安卓操作系统的智能手机目前已经成为市场上最炙手可热的智能产品。
开放的源代码和零成本已经让安卓在全世界范围内受到青睐并迅速获得了主要手机厂商和数百万软件开发者的支持,2011年安卓系统的市场份额已经超过Symbian,成为全球第一大智能手机操作系统。
GPS产业从军用转入民用后,正在逐渐向普通消费群体发展,作为使用终端的GPS产品正逐渐的深入人们生活得各个领域。
GPS使用终端最主要的应用方面主要体现在各种接收器,比如航空、航海用途的接收器,汽车导航设备,或用于登上、远足的手持接收器等终端产品。
GPS接收终端的结构包括,接收天线、芯片组、电池等,以及外部按键和液晶面板等相关零部件。
该课题实现在手机操作系统Android上将GPS导航和闹钟提醒两个功能结合起来,携带方便,并能超越传统的时间闹钟提醒功能,使用起来灵活、快捷、省心,是一款实用而且高端的手机软件。
2.2项目需求
“位置闹钟”是一款提醒你地点的软件,它通过地图指定提醒的目的地,同时要求定位精确、使用过程可用Wifi(节省手机流量)和普通无网络。
“位置闹钟”可以通过GPS定位和手机蜂窝基站定位两种定位方式来监测用户所在位置。
当你靠近目的地的时候,“位置闹钟”会进行闹钟提醒。
而在封闭的空间中,如拥挤的公交车上,接收不到卫星的GPS信号,此时,手机基站定位就可派上用场。
虽然基站的定位精度比起GPS来说稍低,但完全可以满足位置提醒的要求。
此外,“位置闹钟”还可以后台运行,且能和普通闹钟一样设置多个位置闹铃,有良好的人机交互界面,可对其编辑、启用或禁用。
第三章相关技术
3.1Android的架构分析
Android是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆栈架构。
由下而上,其核心为嵌入式Linux2.6作业系统,向上搭配Google为Android开发的类库及Android运行时,再配合应用程序架构,来开发各种不同的应用程序。
3.2Android的功能特征
1.应用程序框架支持组件的重用与替换。
这样我们可以把系统中不喜欢的应用程序删除,安装我们喜欢的应用程序。
2.Dalvik虚拟机专门为移动设备进行了优化。
Android应用程序将由Java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。
Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快很多。
3.内部集成浏览器基于开源的WebKit引擎。
有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台“小电脑”,可以在网上随意遨游。
4.优化的图形库包括2D和3D图形库,3D图形库基于OpenGLES1.0。
强大的图形库给游戏开发带来福音。
在3G最为重要的的应用莫过于手机上网和手机游戏。
5.SQLite用作结构化的数据存储。
6.多媒体支持包括常见的音频、视频和静态印象文件格式
如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。
7.GSM电话(依赖于硬件)。
8.蓝牙(Bluetooth)、EDGE、3G、WiFi(依赖于硬件)。
9.照相机、GPS、指南针和加速度计(依赖于硬件)。
10.丰富的开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成的开发环境插件。
Google提供了Android开发包SDK,其中包含了大量的类库和开发工具,并且针对Eclipse的可视化开发插件ADT。
1.3Android架构分析
3.3Android平台架构
图1-1Android操作系统的体系结构
从上图我们可以看出,Android操作系统的体系结构可分为4层,由上到下依次是应用程序、应用程序框架、核心类库和Linux内核,其中第三层还包括Android运行时的环境。
下面分别来讲解各个部分。
1.程序应用
Android连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。
所有的应用程序都是用Java编写的。
2.应用程序框架
开发者完全可以访问核心应用程序所使用的API框架。
该应用程序框架架构用来简化组件软件的重用,任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。
该应用程序重用机制使得组件可以被用户替换。
以下所有的应用程序都由一系列的服务和系统组成,包括:
1.一个可扩展的视图(Views)可以用来创建应用程序,包括列表(lists)、网络(grids)、文本框(textboxes)、按钮(buttons),甚至是一个可嵌入的Web浏览器。
2.内容管理器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
3.一个资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串、图形和分层文件(layoutfiles)。
4.一个通知管理器(NotificationManager)使得应用程序可以在状态栏中显示客户通知信息。
5.一个活动类管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。
3.Android程序库
Android包括一个被Android系统中各种不同组件所使用的C/C++集库。
该库通过Android应用程序框架为开发者提供服务。
以下是一些主要的核心库:
1.统C库:
一个从BSD继承来的标准C系统函数库(libc),专门为基于EmbeddedLinux的设备定制。
2.媒体库:
基于PacketVideoOpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。
3.SurfaceManager:
对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。
4.LibWebCore:
一个最新的Web浏览器引擎,用来支持Android浏览器和一个可嵌入的Web视图。
5.SGL:
一个内置的2D图形引擎。
6.3Dlibraries:
基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
7.FreeType:
位图(bitmap)和向量(vector)字体显示。
8.SQLite:
一个对于所以应用程序可用、功能强劲的轻型关系型数据库引擎。
4.Android运行库
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik是针对同时高效地运行多个VMs实现的。
Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。
该虚拟机是基于寄存器的,所有的类都是经由Java汇编器编译,然后通过SDK中的DX工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。
5.Linux内核
Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。
Linux内核也同时作为硬件和软件栈之间的硬件抽象层。
3.4Android应用的构成和工作机制
对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。
在应用程序中使用时,需要在配置文件AndroidManifest.xml中进行配置。
这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。
Android应用的构成和工作流程如图2-2:
图1-2Android的构成和工作流程
3.5关键技术研究
应用SQLLite数据库:
SQLite提供结构化的数据存取。
SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品使用了它,它占用的资源非常低。
它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如php,Java等,还有ODBC接口,同样比起Mysql,PostgreSQL来讲,它的处理速度比它们都快。
它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小,虽只有250KB但支持数据库大小至2TB。
它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。
同时它还支持事务功能和并发处理等等。
SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。
第四章开发过程
4.1系统体系结构
系统旨在建立Android系统的闹钟,主要有如下几个核心功能模块如图5所示。
图5系统功能模块图
4.2用户界面设计
通过小组讨论用户的界面如下:
4.2.1主页面
4.2.2添加闹铃功能
4.2.3音乐清单
第五章详细设计
5.1添加闹铃功能模块
具体实现代码如下:
/*
*Copyright(C)2009TheAndroidOpenSourceProject
*
*LicensedundertheApacheLicense,Version2.0(the"License");
*youmaynotusethisfileexceptincompliancewiththeLicense.
*YoumayobtainacopyoftheLicenseat
*
*http:
//www.apache.org/licenses/LICENSE-2.0
*
*Unlessrequiredbyapplicablelaworagreedtoinwriting,software
*distributedundertheLicenseisdistributedonan"ASIS"BASIS,
*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
*SeetheLicenseforthespecificlanguagegoverningpermissionsand
*limitationsundertheLicense.
*/
packagecom.android.superdeskclock;
importjava.text.DateFormatSymbols;
importjava.util.Calendar;
importandroid.content.Context;
importandroid.database.Cursor;
importandroid.media.RingtoneManager;
import.Uri;
importandroid.os.Parcel;
importandroid.os.Parcelable;
importandroid.provider.BaseColumns;
publicfinalclassAlarmimplementsParcelable{
//////////////////////////////
//Parcelableapis
//////////////////////////////
publicstaticfinalParcelable.Creator
=newParcelable.Creator
publicAlarmcreateFromParcel(Parcelp){
returnnewAlarm(p);
}
publicAlarm[]newArray(intsize){
returnnewAlarm[size];
}
};
publicintdescribeContents(){
return0;
}
publicvoidwriteToParcel(Parcelp,intflags){
p.writeInt(id);
p.writeInt(enabled?
1:
0);
p.writeInt(hour);
p.writeInt(minutes);
p.writeInt(daysOfWeek.getCoded());
p.writeLong(time);
p.writeInt(vibrate?
1:
0);
p.writeString(label);
p.writeParcelable(alert,flags);
p.writeInt(silent?
1:
0);
//新增
p.writeInt(times);
p.writeInt(interval);
}
//////////////////////////////
//endParcelableapis
//////////////////////////////
//////////////////////////////
//Columndefinitions
//////////////////////////////
publicstaticclassColumnsimplementsBaseColumns{
/**
*Thecontent:
//styleURLforthistable
*/
publicstaticfinalUriCONTENT_URI=
Uri.parse("content:
//com.android.superdeskclock/alarm");
/**
*Hourin24-hourlocaltime0-23.
*
Type:
INTEGER
*/
publicstaticfinalStringHOUR="hour";
/**
*Minutesinlocaltime0-59
*
Type:
INTEGER
*/
publicstaticfinalStringMINUTES="minutes";
/**
*Daysofweekcodedasinteger
*
Type:
INTEGER
*/
publicstaticfinalStringDAYS_OF_WEEK="daysofweek";
/**
*AlarmtimeinUTCmillisecondsfromtheepoch.
*
Type:
INTEGER
*/
publicstaticfinalStringALARM_TIME="alarmtime";
/**
*Trueifalarmisactive
*
Type:
BOOLEAN
*/
publicstaticfinalStringENABLED="enabled";
/**
*Trueifalarmshouldvibrate
*
Type:
BOOLEAN
*/
publicstaticfinalStringVIBRATE="vibrate";
/**
*Messagetoshowwhenalarmtriggers
*Note:
notcurrentlyused
*
Type:
STRING
*/
publicstaticfinalStringMESSAGE="message";
/**
*Audioalerttoplaywhenalarmtriggers
*
Type:
STRING
*/
publicstaticfinalStringALERT="alert";
//新增
publicstaticfinalStringTIMES="times";
publicstaticfinalStringINTERVAL="interval";
/**
*Thedefaultsortorderforthistable
*/
publicstaticfinalStringDEFAULT_SORT_ORDER=
HOUR+","+MINUTES+"ASC";
//Usedwhenfilteringenabledalarms.
publicstaticfinalStringWHERE_ENABLED=ENABLED+"=1";
staticfinalString[]ALARM_QUERY_COLUMNS={
_ID,HOUR,MINUTES,DAYS_OF_WEEK,ALARM_TIME,
ENABLED,VIBRATE,MESSAGE,ALERT
//新增
TIMES,INTERVAL};
/**
*Thesesavecallstocursor.getColumnIndexOrThrow()
*THEYMUSTBEKEPTINSYNCWITHABOVEQUERYCOLUMNS
*/
publicstaticfinalintALARM_ID_INDEX=0;
publicstaticfinalintALARM_HOUR_INDEX=1;
publicstaticfinalintALARM_MINUTES_INDEX=2;
publicstaticfinalintALARM_DAYS_OF_WEEK_INDEX=3;
publicstaticfinalintALARM_TIME_INDEX=4;
publicstaticfinalintALARM_ENABLED_INDEX=5;
publicstaticfinalintALARM_VIBRATE_INDEX=6;
publicstaticfinalintALARM_MESSAGE_INDEX=7;
publicstaticfinalintALARM_ALERT_INDEX=8;
//新增
publicstaticfinalintALARM_TIMES_INDEX=9;
publicstaticfinalintALARM_INTERVAL_INDEX=10;
}
//////////////////////////////
//Endcolumndefinitions
//////////////////////////////
//Publicfields
publicintid;
publicbooleanenabled;
publicinthour;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 手机 平台 闹铃
![提示](https://static.bdocx.com/images/bang_tan.gif)