


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實訓(xùn)報告姓名:祝新學(xué)號:1144131專業(yè):軟件技術(shù)課程名稱:android實訓(xùn)工程名稱:業(yè)指導(dǎo)教師:M實訓(xùn)日期:2021年10月28日至2021年1月2日2021年1月2日.word.zl.|ZpjOM第一章概述1第二章需求分析22.1工程背景22.2工程需求2第三章相關(guān)技術(shù)43.1Adnroid平臺介紹43.2關(guān)鍵技術(shù)研究4第四章概要設(shè)計64.1系統(tǒng)體系構(gòu)造64.2用戶界面設(shè)計6第五章詳細(xì)設(shè)計95.1添加鬧鈴功能模塊9第六章結(jié)論28第一章概述本課題要求:設(shè)計一個基于Android的位置鬧鐘的軟件。實現(xiàn)的功能有:a)能在Android上利用其提供地相關(guān)API獲取位置信息。b)能通過界面設(shè)置鬧
2、鐘的啟動條件,包括入場與出場條件的設(shè)c)建立后臺效勞進(jìn)程,監(jiān)查位置信息,當(dāng)滿足觸發(fā)條件時,鬧鐘響應(yīng)相應(yīng)事件。需重點研究的關(guān)鍵問題:通過AndroidApi獲取位置信息,并在指定地點設(shè)置鬧鐘提醒。解決思路:在界面里顯示當(dāng)前位置信息經(jīng)緯度值,并輸入指定地點的經(jīng)緯度值,編程實現(xiàn)對位置信息實時更新,將兩者的經(jīng)緯度轉(zhuǎn)換為距離,如在誤差圍那么啟動鬧鈴功能。第二章需求分析2.1工程背景移動互聯(lián)網(wǎng)時代的降臨,直接促進(jìn)了搭載智能操作系統(tǒng)、具有強大擴(kuò)展性的智能手機(jī)、平板電腦等移動終端產(chǎn)業(yè)的蓬勃開展。搭載安卓操作系統(tǒng)的智能手機(jī)目前已經(jīng)成為市場上最炙手可熱的智能產(chǎn)品。開放的源代碼和零本錢已經(jīng)讓安卓在全世界圍受到宵睞并
3、迅速獲得了主要手機(jī)廠商和數(shù)白萬軟件開發(fā)者的支持,2021年安卓系統(tǒng)的市場份額已經(jīng)超過Symbian成為全球第一大智能手機(jī)操作系統(tǒng)。GPS產(chǎn)業(yè)參軍用轉(zhuǎn)入民用后,正在逐漸向普通消費群體開展,作為使用終端的GPS產(chǎn)品正逐漸的深入人們生活得各個領(lǐng)域。GPS使用終端最主要的應(yīng)用方面主要表達(dá)在各種接收器,比方航空、航海用途的接收器,汽車導(dǎo)航設(shè)備,或用于登上、遠(yuǎn)足的手持接收器等終端產(chǎn)品。GPS接收終端的構(gòu)造包括,接收天線、芯片組、電池等,以及外部按鍵和液晶面板等相關(guān)零部件。該課題實現(xiàn)在手機(jī)操作系統(tǒng)Android上將GPS導(dǎo)航和鬧鐘提醒兩個功能結(jié)合起來,攜帶方便,并能超越傳統(tǒng)的時間鬧鐘提醒功能,使用起來靈活、
4、快捷、省心,是一款實用而且高端的手機(jī)軟件。2.2工程需求“位置鬧鐘"是一款提醒你地點的軟件,它通過地圖指定提醒的目的地,同時要求定位準(zhǔn)確、使用過程可用Wifi節(jié)省手機(jī)流量和普通無網(wǎng)絡(luò)?!拔恢敏[鐘"可以通過GPS定位和手機(jī)蜂窩基站定位兩種定位方式來監(jiān)測用戶所在位置。當(dāng)你靠近目的地的時候,“位置鬧鐘"會進(jìn)展鬧鐘提醒。而在封閉的空間中,如擁擠的公交車上,接收不到衛(wèi)星的GPS信號,此時,手機(jī)基站定位就可派上用場。雖然基站的定位精度比起GPS來說稍低,但完全可以滿足位置提醒的要求。此外,.“位置鬧鐘"還可以后臺運行,且能和普通鬧鐘一樣設(shè)置多個位置鬧鈴,有良好的人機(jī)
5、交互界面,可對其編輯、啟用或禁用。第三章相關(guān)技術(shù)3.1Adnroid平臺介紹Android是一種基丁Linux的自由及開放源代碼的操作系統(tǒng),主要使用丁移動設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機(jī)聯(lián)盟共同研發(fā)改進(jìn)Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部
6、Android智能手機(jī)發(fā)布丁2021年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2021年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。2021年11月數(shù)據(jù)顯示,Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場76%的份額,中國市場占有率為90%。2021年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)到達(dá)10億臺。3.2關(guān)鍵技術(shù)研究應(yīng)用SQLLite數(shù)據(jù)庫:SQLite提供構(gòu)造化的數(shù)據(jù)存取。SQLite是一款輕型的數(shù)據(jù)庫,它的設(shè)計目標(biāo)是嵌入式的,目前已經(jīng)在很多嵌入式產(chǎn)品使用了它,它占用
7、的資源非常低。它能夠支持Windows/Linux/Unix等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比方php,Java,還有ODBC接口,同樣比起Mysql,PostgreSQ或講,它的處理速度比它們都快。它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數(shù)據(jù)庫,體積小,雖只有250KB但支持?jǐn)?shù)據(jù)庫大小至2TB。它雖然很小巧,但是支持的SQL語句毫不遜色于其它開源數(shù)據(jù)庫。同時它還支持事務(wù)功能和并發(fā)處理等等。SQLite也是一套開放性的關(guān)聯(lián)式資料庫,其特點在于輕量性方面的設(shè)計構(gòu)造,更適合在手機(jī)上使用。第四章概要設(shè)計4.1系統(tǒng)體系構(gòu)造系統(tǒng)旨在建立Android系統(tǒng)的鬧鐘,主要有如下
8、幾個核心功能模塊如圖5所示主程序添加鬧鈴、設(shè)置時間、重復(fù)等音樂、鬧鈴提醒方式圖5系統(tǒng)功能模塊圖4.2用戶界面設(shè)計通過小組討論用戶的界面如下:主頁面4.2.2添加鬧鈴功能4.2.3音樂清單第五章詳細(xì)設(shè)計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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌配件庫存管理制度
- 小區(qū)靜默日常管理制度
- 固定資產(chǎn)投資管理制度
- 醫(yī)院油料使用管理制度
- 各國海域使用管理制度
- 回遷小區(qū)車輛管理制度
- 公園醫(yī)療安全管理制度
- 針對持續(xù)集成環(huán)境的測試案例設(shè)計試題及答案
- 自動化腳本設(shè)計中的最佳實踐試題及答案
- 幼兒廚房衛(wèi)生管理制度
- 北理工-學(xué)術(shù)論文寫作與表達(dá)-期末考試答案-適用40題版本
- (中職)中國稅收:稅費計算與申報項目十四 企業(yè)所得稅計算與申報課件
- 心理照護(hù)教材課件匯總完整版ppt全套課件最全教學(xué)教程整本書電子教案全書教案課件合集
- 男朋友申請表
- 高中心理健康:我心換你心——心理主題:人際交往 課件(22張PPT)
- 高三經(jīng)典英語勵志語句(最新)
- 高清元素周期表(專業(yè)版)
- 北京中考英語作文模板
- 訂單運作與產(chǎn)品交付流程
- 暗黑破壞神2所有綠色套裝(大圖)
- 糖尿病視網(wǎng)膜病變PPT課件
評論
0/150
提交評論