版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、實訓報告姓名:祝新學號:1144131專業(yè):軟件技術課程名稱:android實訓工程名稱:業(yè)指導教師:M實訓日期:2021年10月28日至2021年1月2日2021年1月2日.word.zl.|ZpjOM第一章概述1第二章需求分析22.1工程背景22.2工程需求2第三章相關技術43.1Adnroid平臺介紹43.2關鍵技術研究4第四章概要設計64.1系統(tǒng)體系構造64.2用戶界面設計6第五章詳細設計95.1添加鬧鈴功能模塊9第六章結論28第一章概述本課題要求:設計一個基于Android的位置鬧鐘的軟件。實現(xiàn)的功能有:a)能在Android上利用其提供地相關API獲取位置信息。b)能通過界面設置鬧
2、鐘的啟動條件,包括入場與出場條件的設c)建立后臺效勞進程,監(jiān)查位置信息,當滿足觸發(fā)條件時,鬧鐘響應相應事件。需重點研究的關鍵問題:通過AndroidApi獲取位置信息,并在指定地點設置鬧鐘提醒。解決思路:在界面里顯示當前位置信息經(jīng)緯度值,并輸入指定地點的經(jīng)緯度值,編程實現(xiàn)對位置信息實時更新,將兩者的經(jīng)緯度轉換為距離,如在誤差圍那么啟動鬧鈴功能。第二章需求分析2.1工程背景移動互聯(lián)網(wǎng)時代的降臨,直接促進了搭載智能操作系統(tǒng)、具有強大擴展性的智能手機、平板電腦等移動終端產(chǎn)業(yè)的蓬勃開展。搭載安卓操作系統(tǒng)的智能手機目前已經(jīng)成為市場上最炙手可熱的智能產(chǎn)品。開放的源代碼和零本錢已經(jīng)讓安卓在全世界圍受到宵睞并
3、迅速獲得了主要手機廠商和數(shù)白萬軟件開發(fā)者的支持,2021年安卓系統(tǒng)的市場份額已經(jīng)超過Symbian成為全球第一大智能手機操作系統(tǒng)。GPS產(chǎn)業(yè)參軍用轉入民用后,正在逐漸向普通消費群體開展,作為使用終端的GPS產(chǎn)品正逐漸的深入人們生活得各個領域。GPS使用終端最主要的應用方面主要表達在各種接收器,比方航空、航海用途的接收器,汽車導航設備,或用于登上、遠足的手持接收器等終端產(chǎn)品。GPS接收終端的構造包括,接收天線、芯片組、電池等,以及外部按鍵和液晶面板等相關零部件。該課題實現(xiàn)在手機操作系統(tǒng)Android上將GPS導航和鬧鐘提醒兩個功能結合起來,攜帶方便,并能超越傳統(tǒng)的時間鬧鐘提醒功能,使用起來靈活、
4、快捷、省心,是一款實用而且高端的手機軟件。2.2工程需求“位置鬧鐘"是一款提醒你地點的軟件,它通過地圖指定提醒的目的地,同時要求定位準確、使用過程可用Wifi節(jié)省手機流量和普通無網(wǎng)絡。“位置鬧鐘"可以通過GPS定位和手機蜂窩基站定位兩種定位方式來監(jiān)測用戶所在位置。當你靠近目的地的時候,“位置鬧鐘"會進展鬧鐘提醒。而在封閉的空間中,如擁擠的公交車上,接收不到衛(wèi)星的GPS信號,此時,手機基站定位就可派上用場。雖然基站的定位精度比起GPS來說稍低,但完全可以滿足位置提醒的要求。此外,.“位置鬧鐘"還可以后臺運行,且能和普通鬧鐘一樣設置多個位置鬧鈴,有良好的人機
5、交互界面,可對其編輯、啟用或禁用。第三章相關技術3.1Adnroid平臺介紹Android是一種基丁Linux的自由及開放源代碼的操作系統(tǒng),主要使用丁移動設備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領導及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯(lián)盟共同研發(fā)改進Android系統(tǒng)。隨后Google以Apache開源許可證的授權方式,發(fā)布了Android的源代碼。第一部
6、Android智能手機發(fā)布丁2021年10月。Android逐漸擴展到平板電腦及其他領域上,如電視、數(shù)碼相機、游戲機等。2021年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。2021年11月數(shù)據(jù)顯示,Android占據(jù)全球智能手機操作系統(tǒng)市場76%的份額,中國市場占有率為90%。2021年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設備數(shù)量已經(jīng)到達10億臺。3.2關鍵技術研究應用SQLLite數(shù)據(jù)庫:SQLite提供構造化的數(shù)據(jù)存取。SQLite是一款輕型的數(shù)據(jù)庫,它的設計目標是嵌入式的,目前已經(jīng)在很多嵌入式產(chǎn)品使用了它,它占用
7、的資源非常低。它能夠支持Windows/Linux/Unix等主流的操作系統(tǒng),同時能夠跟很多程序語言相結合,比方php,Java,還有ODBC接口,同樣比起Mysql,PostgreSQ或講,它的處理速度比它們都快。它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數(shù)據(jù)庫,體積小,雖只有250KB但支持數(shù)據(jù)庫大小至2TB。它雖然很小巧,但是支持的SQL語句毫不遜色于其它開源數(shù)據(jù)庫。同時它還支持事務功能和并發(fā)處理等等。SQLite也是一套開放性的關聯(lián)式資料庫,其特點在于輕量性方面的設計構造,更適合在手機上使用。第四章概要設計4.1系統(tǒng)體系構造系統(tǒng)旨在建立Android系統(tǒng)的鬧鐘,主要有如下
8、幾個核心功能模塊如圖5所示主程序添加鬧鈴、設置時間、重復等音樂、鬧鈴提醒方式圖5系統(tǒng)功能模塊圖4.2用戶界面設計通過小組討論用戶的界面如下:主頁面4.2.2添加鬧鈴功能4.2.3音樂清單第五章詳細設計5.1添加鬧鈴功能模塊具體實現(xiàn)代碼如下:* /*Copyright(C)2021TheAndroidOpenSourceProject* LicensedundertheApacheLicense,Version2.0(the"License");* youmaynotusethisfileexceptinpliancewiththeLicense.* Youmayobtain
9、acopyoftheLicenseat*./licenses/LICENSE-2.0* Unlessrequiredbyapplicablelaworagreedtoinwriting,software* distributedundertheLicenseisdistributedonan"ASIS"BASIS,WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.* SeetheLicenseforthespecificlanguagegoverningpermissionsand
10、* limitationsundertheLicense.*/package.android.superdeskclock;importjava.text.DateFormatSymbols;importjava.util.Calendar;importandroid.content.Context;importandroid.database.Cursor;importandroid.media.RingtoneManager;.Uri;importandroid.os.Parcel;importandroid.os.Parcelable;vider.Bas
11、eColumns;publicfinalclassAlarmimplementsParcelable/Parcelableapis./publicstaticfinalParcelable.Creator<Alarm>CREATOR=newParcelable.Creator<Alarm>()publicAlarmcreateFromParcel(Parcelp)returnnewAlarm(p);publicAlarmnewArray(intsize)returnnewAlarmsize;publicintdescribeContents()return0;publi
12、cvoidwriteToParcel(Parcelp,intflags)p.writeInt(id);p.writeInt(enabled?1:0);p.writelnt(hour);p.writelnt(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.writelnt(times);p.writelnt(interv
13、al);/endParcelableapis/Columndefinitions/publicstaticclassColumnsimplementsBaseColumns(/*Thecontent:/styleURLforthistable*/publicstaticfinalUriCONTENT_URI=Uri.parse("content:/.android.superdeskclock/alarm");/*Hourin24-hourlocaltime0-23.*<P>Type:INTEGER</P>*/publicstaticfinalStr
14、ingHOUR="hour"/*Minutesinlocaltime0-59*<P>Type:INTEGER</P>*/publicstaticfinalStringMINUTES="minutes"/*Daysofweekcodedasinteger*<P>Type:INTEGER</P>*/publicstaticfinalStringDAYS_OF_WEEK="daysofweek"/*AlarmtimeinUTCmillisecondsfromtheepoch.*<P>
15、;Type:INTEGER</P>*/publicstaticfinalStringALARM_TIME="alarmtime"/*Trueifalarmisactive*<P>Type:BOOLEAN</P>*/publicstaticfinalStringENABLED="enabled"/*Trueifalarmshouldvibrate*<P>Type:BOOLEAN</P>*/publicstaticfinalStringVIBRATE="vibrate"/*Mes
16、sagetoshowwhenalarmtriggers*Note:notcurrentlyused*<P>Type:STRING</P>*/publicstaticfinalStringMESSAGE="message"/*Audioalerttoplaywhenalarmtriggers*<P>Type:STRING</P>*/publicstaticfinalStringALERT="alert"/新增publicstaticfinalStringTIMES="times"publi
17、cstaticfinalStringINTERVAL="interval"/*Thedefaultsortorderforthistable*/publicstaticfinalStringDEFAULT_SORT_ORDER=HOUR+","+MINUTES+"ASC"/Usedwhenfilteringenabledalarms.publicstaticfinalStringWHERE_ENABLED=ENABLED+"=1"staticfinalStringALARM_QUERY_COLUMNS=_ID,HO
18、UR,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;publicst
19、aticfinalintALARM_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;publicstaticf
20、inalintALARM_INTERVAL_INDEX=10;/Endcolumndefinitions/Publicfieldspublicintid;publicbooleanenabled;publicinthour;publicintminutes;publicDaysOfWeekdaysOfWeek;publiclongtime;publicbooleanvibrate;publicStringlabel;publicUrialert;publicbooleansilent;/新增publicinttimes;publicintinterval;publicAlarm(Cursorc
21、)id=c.getInt(Columns.ALARM_ID_INDEX);enabled=c.getInt(Columns.ALARM_ENABLED_INDEX)=1;hour=c.getInt(Columns.ALARM_HOUR_INDEX);minutes=c.getInt(Columns.ALARM_MINUTES_INDEX);daysOfWeek=newDaysOfWeek(c.getInt(Columns.ALARM_DAYS_OF_WEEK_INDEX);time=c.getLong(Columns.ALARM_TIME_INDEX);vibrate=c.getInt(Col
22、umns.ALARM_VIBRATE_INDEX)=1;label=c.getString(Columns.ALARM_MESSAGE_INDEX);/新增times=c.getInt(Columns.ALARM_TIMES_INDEX);interval=c.getInt(Columns.ALARM_INTERVAL_INDEX);StringalertString=c.getString(Columns.ALARM_ALERT_INDEX);if(Alarms.ALARM_ALERT_SILENT.equals(alertString)if(Log.LOGV)Log.v("Ala
23、rmismarkedassilent");silent=true;elseif(alertString!=null&&alertString.length()!=0)alert=Uri.parse(alertString);/Ifthedatabasealertisnulloritfailedtoparse,usethe/defaultalert.if(alert=null)alert=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);publicAlarm(Parcelp)id=p.readInt()
24、;enabled=p.readInt()=1;hour=p.readInt();minutes=p.readInt();daysOfWeek=newDaysOfWeek(p.readInt();time=p.readLong();vibrate=p.readInt()=1;label=p.readString();alert=(Uri)p.readParcelable(null);silent=p.readInt()=1;/新增times=p.readInt();interval=p.readInt();/Createsadefaultalarmatthecurrenttime.publicA
25、larm()id=-1;Calendarc=Calendar.getInstance();c.setTimeInMillis(System.currentTimeMillis();hour=c.get(Calendar.HOUR_OF_DAY);minutes=c.get(Calendar.MINUTE);vibrate=true;daysOfWeek=newDaysOfWeek(0);alert=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);/新增times=10;interval=0;publicStringgetLab
26、elOrDefault(Contextcontext)(if(label=null|label.length()=0)(returncontext.getString(R.string.default_label);returnlabel;/* Daysofweekcodeasasingleint.* 0x00:noday* 0x01:Monday* 0x02:Tuesday* 0x04:Wednesday* 0x08:Thursday* 0x10:Friday* 0x20:Saturday* 0x40:Sunday*/staticfinalclassDaysOfWeek(privatesta
27、ticintDAY_MAP=newint(Calendar.MONDAY,Calendar.TUESDAY,Calendar.WEDNESDAY,Calendar.THURSDAY,Calendar.FRIDAY,Calendar.SATURDAY,Calendar.SUNDAY,;/BitmaskofallrepeatingdaysprivateintmDays;DaysOfWeek(intdays)mDays=days;publicStringtoString(Contextcontext,booleanshowNever)StringBuilderret=newStringBuilder
28、();/nodaysif(mDays=0)returnshowNever?context.getText(R.string.never).toString():""/everydayif(mDays=0x7f)returncontext.getText(R.string.every_day).toString();/countselecteddaysintdayCount=0,days=mDays;while(days>0)if(days&1)=1)dayCount+;days>>=1;/shortorlongform?DateFormatSymb
29、olsdfs=newDateFormatSymbols();StringdayList=(dayCount>1)?dfs.getShortWeekdays():dfs.getWeekdays();/selecteddaysfor(inti=0;i<7;i+)(if(mDays&(1<<i)!=0)(ret.append(dayListDAY_MAPi);dayCount-=1;if(dayCount>0)ret.append(context.getText(R.string.day_concat);returnret.toString();privatebooleanisSet(intday)(return(mDays&(1<<day)>0);publicvoidset(intday,booleanset)(if(set)(mDays|=(1<<day);else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《西廂記》賞析(首都師范大學)學習通測試及答案
- 2025版數(shù)據(jù)中心租賃承包經(jīng)營服務協(xié)議3篇
- 二零二五年度建筑工地環(huán)保作業(yè)勞動用工協(xié)議3篇
- 二零二五年度建筑工程項目合同信息化管理合同3篇
- 2025年度消防工程設計、施工與驗收一體化協(xié)議3篇
- 2025年度版權質押合同質押標的與權利限制3篇
- 小兒高熱驚厥緊急培訓
- 2025版窗簾窗簾桿銷售、安裝與售后服務合同3篇
- 二零二五年度工資結算與員工團隊建設協(xié)議3篇
- 2025年度智慧社區(qū)物業(yè)管理系統(tǒng)招標投標教材3篇
- 一年級數(shù)學練習題-20以內(nèi)加減法口算題(4000道)直接打印版
- 外研版小學英語(三起點)六年級上冊期末測試題及答案(共3套)
- 跨部門合作銷售提成方案
- 機械制圖課件(完整版)
- 夸美紐斯-大教學論-文本細讀
- 《行政組織學小抄》word版
- 日立多聯(lián)機系統(tǒng)調試培訓教材
- (完整版)環(huán)境科學與工程-專業(yè)英語詞匯必備(免費)
- 交通管理與控制課件(全)全書教學教程完整版電子教案最全幻燈片
- 小學鋼筆字寫字課教案(20課時完整版)
- 紅金簡約風教師退休歡送會PPT通用模板
評論
0/150
提交評論