《Android项目开发实训总结报告.docx》由会员分享,可在线阅读,更多相关《Android项目开发实训总结报告.docx(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、实训报告姓 名:祝新学 号:1144131专 业:软件技术课程名称:android实训工程名称:圆铃指导教师:X#实训日期:2021年10月28日至2021年1月2日2021年1月2日主页面添加闹铃功能word.zl.音乐清单word.zl.第五章详细设计5.1添加闹铃功能模块具体实现代码如下:/*Copyright (C) 2021 The Android Open Source Project*Licensed under the Apache License, Version 2.0 (the License);* you may not use this file except in
2、pliance with the License.* You may obtain a copy of the License at* .apache.org/licenses/LTCENSE-2.0* Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an AS IS BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express orwor
3、d.zl.implied.* See the License for the specific language governing permissions and* limitations under the License.* /package .android.superdcskclock;import java.text.DateFormatSymbols;import java.util.Calendar;import android.content.Context;import android.databasc.Cursor;import android.media. Ringto
4、ncManagcr;import .Uri;import android.os.Parcel;import android.os.Parcelable;import android.provider.BaseColumns;public final class Alarm implements Parcclablc / / Parcclable apisword.zl./public static final Parcelable.Creator CREATOR=new Parcelable.Creator0 public Alarm crcateFromParcel(Parcel p) re
5、turn new Alarm(p);public Alarm new/rray(int size) return new Alarm size;;public int dcscribcContcntsO return 0;public void writeToParcel(Parcel p, int flags) p.writelnt(id);p.vritclnt(cnablcd ? 1 : 0);p.writclnt(hour);p.writclnt(minutcs);p.writeInt(daysOfreek.getCodcd();word.zl.p.writeLong(time);p.v
6、ritelnt(vibrate ? 1 : 0);p.writeString(label);p.vritcParcclablc(alcrt, flags);p.vritclnt(silcnt ? 1 : 0);新增p.writelnt(times);p.vriteInt(intenTal);/ end Parcclablc apis/ Column definitions/public static class Columns implements BaseColumns /* The content:/ style URL for this tabic*/public static fina
7、l Uri CONTENT.URI 二word.zl.Uri.parse(Hcontent:/.android.superdeskclock/alarm);* Hour in 24-hour localtime 0 - 23.* Typc: 1NTEGERpublic static final String HOUR =hour;* Minutes in localtime 0-59Type: INTCGERpublic static final String MINUTES =minutes;Days of week coded as integer* Type: INTEGER*/publ
8、ic static final String DAYS_OF_WEEK 二 ndaysofvcckn;/* Alarm time in UTC milliseconds from the epoch.word.zl.* Type: INTEGER/public static final String ALARM_TIME = alarmtime;/* True if alarm is activeType: BOOLEAN* /public static final String ENABLED = enabled;True if alarm should vibrate* Type: BOO
9、LEAN/public static final String VIBR/XTE = vibrate;Message to show when alarm triggers* Note: not currently usedTypc: STRING* /public static final String MESSAGE =message;word.zl./*Audio alert to play when alarm triggers* Type: STRING/public static final String ALERT = alert;新增public static final St
10、ring TIMES = times;public static final String INTERVAL = interval;/*The default sort order for this tabic* /public static final String DEF/ULT_SORT_ORDER =HOUR + MINUTES + “ ASC”;/ Used when filtering enabled alarms.public static final String WHERE_ENABLED = ENABLED + “= 1”;static final String ALARM
11、_QUERY_COLUMNS = ID, HOUR, MINUTES, D/XYS OF WEEK, ALARM TIME,word.zl.ENABLED, VIBR/XTE, MESSAGE, /LERT新增,TIMES,INTERVAL;/* These save calls to cursor.getColumnlndexOflhrowOTHEY MUST BE KEPT IN SYNC WITH ABOVE QUERY COLUMNS*/public static final int ALARM_ID_INDEX = 0;public static final int ALARM_HO
12、URNDEX = 1;public static final int ALARM_MINUTES_INDEX = 2;public static final int ALARM_1)AYS_OF_WEEK_INDEX = 3;public static final int ALARM_TIME_1NDEX = 4;public static final int ALARM_ENABLEDNDEX = 5;public static final int AL/RM_VIBR/TE_INDEX = 6;public static final int ALARM_MESSAGENDEX = 7;pu
13、blic static final int ALARM_ALERT_INDEX = 8;/新增public static final int ALARM_T1MES_INDEX = 9;public static final int ALARM_INTERVALJNDEX = 10;word.zl./ End column definitions/ Public fieldspublic DaysOWeek daysOfWeek;public intid;public booleanenabled;public inthour;public intminutes;public longtime
14、;public booleanvibrate;public Stringlabel;public Urialert;public booleansilent;/新增public int times;public int interval;public ;larm (Cursor c) word.zl.id = c.getInt(Columns.ALARMDNDEX);enabled = c.getInt(Columns.ALARM_ENABLED_INDEX) = 1;hour = c.getInt(Columns.ALARM_HOURNDEX);minutes = c.geHnt(Colum
15、ns.ALARM_MINUTESNDEX);daysOWcck二newDays()fWeek(c.getInt(Columns.ALARM_DAYS_()F_VCEEKNDEX);time 二 c.getLong(Columns.ALARM_TIME_INDEX);vibrate = c.gednt(Columns./LARM_VIBRATE_INDEX) = 1;label = c.getString(Columns.ALARM_MESSAGE_INDEX);/新增times 二 c.gctInt(Columns.ALARM_TIMESNDEX);interval 二 c.gctInt(Co
16、lumns.ALARM_lNTERVAL_INDEX);String alertString = c.getString(Cokimns.ALARM_ALERT_INDEX);if(Alarms.ALARM_ALERT_SILENT.equals(alertString) if(Log.LOGV) Log.v( Alarm is marked as silent*);silent = true; else if (alertString != null & alertString.length() != 0) word.zl.alert = Uri.parse(alertString);/ I
17、f the database alert is null or it failed to parse, use the/ default alertif (alert = null) alert = RingtoneManager.getDefaukUri(RingtoneManager.TYPE_/LARM);public Alarm (Parcel p) id = p.readlntQ;enabled = p.readlntO = 1;hour = p.readlntQ;minutes = p.readlntQ;daysOfWeek 二 new Days()fXreek(p.readInt
18、();time = p.readLongO;vibrate = p.rcadlntQ = 1;label = p.readStringQ;alert =(Uri) p.readParcelable(null);word.zl.silent = p.readlntO = 1;/新增timcs=p.readlnt0;interval=p.readlntO;)/ Creates a default alarm at the current time.public Alarm。id = -1;Calendar c = Calendar.getlnstanceO;c.sctTimcInMillis(Sy
19、stcm.currcntTimcMillisO);hour 二 c.gct(Calcndar.HOUR_OF_DAY);minutes = c.get(Calendar.MINUTE);vibrate = true;daysOOXeek = new DaysOOX eek(0);alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);/新增times = 1();intcrval=O;)word.zl.public String getLabelOrDefault(Context context) if (label
20、= null | | label.lengthQ = 0) return context.getString(R.string.default_label);)return label;)/* Days of week code as a single int.* 0x00: no dav J0x01: Monday* 0x02: Tuesday J* 0x04: Wednesday* 0x08: Thursday* 0x10: Friday* 0x20: Saturday0x40: Sunday J* /static final class DaysOWcck private static
21、int。DAY_MAP = new int。word.zl.Calendar.MONDAY,Calendar.TUESDAY,Calendar. WEDNESDAY,Calendar.THURSDAY,Calcndar.FRIDAY,Calendar.S ATU RD AY,Calendar.SUNDAY,;/ Bitmask of all repeating daysprivate int mDays;Days( )fVcck(int days) mDays = days;public String toString(Context context, boolean showNever) S
22、tringBuilder ret = new StringBuilderO;/ no daysif (mDays =() return showNever ?word.zl.context.getText(R.string.never).toStringO :1,n;/ every dayif(mDays 二二 0x7。T_day).toStringQ;)/ count selected daysint dayCount = 0, days = mDays;while (days 0) if (days & 1) = 1) dayCount+;days = 1;)/ short or long
23、 form?DateFormatSymbols dfs = new DateFormatSymbolsO;String1 dayList = (dayCount 1) ?dfs.getShortWeekdaysQ :dfs.getWeekdaysQ;/ selected daysword.zl.for (int i = 0; i 0) rct.appcnd(context.getText(R.string.day_concat);return ret.toStringO;private boolean isSct(int day) return (mDays & (1 day) 0);)pub
24、lic void set(int day, boolean set) if (set) mDays | = (1 Xeek dow) mDays = dow.mDays;public int getCodedf) return mDays;/ Returns days of week encoded in an array of booleans.public boolean | getBoolcanArrayO (boolcan ret = new boolean 7;for (inti = 0;i7;i+) reti = isSet(i);return ret;public boolean
25、 isRcpcatSctO return mDays != 0;word.zl.* returns number of days from today until next alarmparam c must be set to today* /public int gctNcxtAlarm(Calcndar c) if (mDays = 0) return -1;int today = (c.get(Calendar.DAY_OF_WEEK) + 5) % 7;int day = 0;int dayCount = 0;for (; dayCount 7; dayCount+) day = (
26、today + dayCount) % 7;if (isSet(day) break;return dayCount;word.zl.第一章概述1第二章需求分析22.1 工程背景22.2 工程需求2第三章相关技术43.1 Adnroid平台介绍43.2 关键技术研究4第四章概要设计64.1 系统体系构造64.2 用户界面设计6第五章详细设计95.1 添加闹铃功能模块9第六章结论28word.zl.word.zl.第六章结论经过累计一个多月的努力,基于Android平台的位置闹钟软件终于完成了。 由于对Android浓厚的兴趣引发了我对JAVA的好奇心,毕竟Android是基于JA VA的,虽然
27、这个软件的开发没有到达教师的期望值,但是在教师和同学的帮助 下,我还是慢慢摸索完成了这个软件。在这个过程中,我学会了很多知识,比方Android环境的搭建和配置问题、 GPS技术和Android的构架和根本组建等等,同时我学会的最重要的一点是,要 利用现有的资源去解决问题,在图书馆、在网络上寻找答案,也可以请教教师或 与同学相互讨论。虽然,这个软件目前运行良好,但是我认为代码的强健还很差,在整个工程的构思方面也缺乏,用户操作界面还不够灵活,这些问题还需要今后逐一解决。与此 同时,这个软件还可以进一步扩展,例如“同时设置多个闹钟”、信息提供”、“应用推荐”等,使功能更加强大,带给用户更好的体验与
28、便捷的生活效劳。word.zl.第一章概述本课题要求:设计一个基于Android的位置闹钟的软件。实现的功能有:a)能在Android上利用其提供地相关API获取位置信息。b)能通过界面设置闹钟的启动条件,包括入场与出场条件的设c)建立后台效劳进程,监查位置信息,当满足触发条件时,闹钟响应相应 事件。需重点研究的关键问题:通过Android Api获取位置信息,并在指定地点设 置闹钟提醒。解决思路:在界面里显示当前位置信息经纬度值,并输入指定地点的经 纬度值,编程实现对位置信息实时更新,将两者的经纬度转换为距离,如在误差 围那么启动闹铃功能。word.zl.第二章需求分析2.1 工程背景移动互
29、联网时代的降临,直接促进了搭载智能操作系统、具有强大扩展性的 智能手机、平板电脑等移动终端产业的蓬勃开展。搭载安卓操作系统的智能手机 目前已经成为市场上最炙手可热的智能产品。开放的源代码和零本钱已经让安卓 在全世界国受到青睐并迅速获得了主要手机厂商和数百万软件开发者的支持, 2021年安卓系统的市场份额已经超过Symbian,成为全球第一大智能手机操作系 统。GPS产业参军用转入民用后,正在逐渐向普通消费群体开展,作为使用终端 的GPS产品正逐渐的深入人们生活得各个领域。GPS使用终端最主要的应用方 面主要表达在各种接收器,比方航空、航海用途的接收器,汽车导航设备,或用 于登上、远足的手持接收
30、器等终端产品。GPS接收终端的构造包括,接收天线、 芯片组、电池等,以及外部按键和液晶面板等相关零部件。该课题实现在手机操作系统Android上将GPS导航和闹钟提醒两个功能结 合起来,携带方便,并能超越传统的时间闹钟提醒功能,使用起来灵活、快捷、 省心,是一款实用而且高端的手机软件。2.2 工程需求“位置闹钟”是一款提醒你地点的软件,它通过地图指定提醒的目的地,同 时要求定位准确、使用过程可用3而节省手机流量和普通无网络。“位置闹钟”可以通过GPS定位和手机蜂窝基站定位两种定位方式来监测word.zl.用户所在位置。当你靠近目的地的时候,“位置闹钟”会进展闹钟提醒。而在封 闭的空间中,如拥挤
31、的公交车上,接收不到卫星的GPS信号,此时,手机基站 定位就可派上用场。虽然基站的定位精度比起GPS来说稍低,但完全可以满足 位置提醒的要求。此外,.“位置闹钟还可以后台运行,且能和普通闹钟一样设 置多个位置闹铃,有良好的人机交互界面,可对其编辑、启用或禁用。word.zl.第三章相关技术3.1 Adnroid平台介绍Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动 设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚 未有统一中文名称,中国大陆地区较多人使用“安卓”或安致。Android操 作系统最初由Andy Rubin开发,主要支持手机
32、。2005年8月由Google收购注资。 2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放 手机联盟共同研发改进Android系统。随后Google以Apache开源许可证的授权 方式,发布了 Android的源代码。第一部Android智能手机发布于2021年10月。 Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2021 年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2021 年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市 场占有率为90%。2021年()9月24日谷歌
33、开发的操作系统Android在迎来了 5岁 生日,全世界采用这款系统的设备数量已经到达10亿台。3.2 关键技术研究应用SQLLite数据库:SQLite提供构造化的数据存取。SQLite是一款轻型的教 据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品使用了它,它占用 的资源非常低。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够 跟很多程序语言相结合,比方php,Java等,还有ODBC接口,同样比起Mysql, PostgreSQL来讲,它的处理速度比它们都快。它无需安装和管理配置,它是一个word.zl.储存在单一磁盘文件中的完整数据库,体积小,虽只有250KB但支持数据库大小 至2TB。它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。同 时它还支持事务功能和并发处理等等。SQLite也是一套开放性的关联式资料库, 其特点在于轻量性方面的设计构造,更适合在手机上使用。word.zl.第四章概要设计4.1系统体系构造系统旨在建立Android系统的闹钟,主要有如下几个核心功能模块如图5所示。主程序添加闹铃、 设置时间、 重等等图片选取返回首页图5系统功能模块图4.2用户界面设计通过小组讨论用户的界面如下:word.zl.
限制150内