




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、-. z.目 錄TOC o 1-3 h u HYPERLINK l _Toc458 1 引言 PAGEREF _Toc458 1 HYPERLINK l _Toc9358 2 安卓的概述 PAGEREF _Toc9358 1 HYPERLINK l _Toc10683 2.1 Android簡介 PAGEREF _Toc10683 1 HYPERLINK l _Toc25465 2.2 Android平臺特性 PAGEREF _Toc25465 2 HYPERLINK l _Toc25949 2.3 Android用戶界面構(gòu)建 PAGEREF _Toc25949 2 HYPERLINK l _
2、Toc29064 2.4 資源的獲取和使用 PAGEREF _Toc29064 3 HYPERLINK l _Toc31220 3 功能設(shè)計概述與需求分析 PAGEREF _Toc31220 4 HYPERLINK l _Toc29334 3.1 軟件功能設(shè)計 PAGEREF _Toc29334 4 HYPERLINK l _Toc18672 3.2 數(shù)據(jù)庫設(shè)計 PAGEREF _Toc18672 4 HYPERLINK l _Toc25421 3.3 需求分析 PAGEREF _Toc25421 4 HYPERLINK l _Toc24934 3.4 用戶分析 PAGEREF _Toc249
3、34 5 HYPERLINK l _Toc20285 3.3.1用戶要求具備根本功能 PAGEREF _Toc20285 5 HYPERLINK l _Toc7753 3.3.2除根本功能外,可另曾特色功能 PAGEREF _Toc7753 5 HYPERLINK l _Toc13471 3.5 系統(tǒng)體系構(gòu)造 PAGEREF _Toc13471 6 HYPERLINK l _Toc16284 4 功能模塊介紹 PAGEREF _Toc16284 6 HYPERLINK l _Toc27483 4.3 添加日記模塊 PAGEREF _Toc27483 9 HYPERLINK l _Toc7658
4、 4.4 編輯日志 PAGEREF _Toc7658 10 HYPERLINK l _Toc20742 4.5 添加設(shè)置鬧鐘 PAGEREF _Toc20742 13自學 HYPERLINK l _Toc21181 心得16 HYPERLINK l _Toc21181 參考文獻17-. z1 引言隨著Android的崛起,智能手機的操作系統(tǒng)絕大數(shù)都是Android系統(tǒng)。Android的成功,并不是什么巧合,Android所獲得的成就,有2個重要方面:1.Android是一款開放源碼的操作系統(tǒng);因此,人人都有可能成為Android的開發(fā)人員,這樣使得Android的應(yīng)用豐富多彩。2.Androi
5、d注重用戶體驗;用戶體驗的提高,使得操作變得更加的簡單方便。手機給我們帶來了便利,我們隨身帶著的手機可以集成許多的功能,其中就能夠有日志的功能,因為方便攜帶所以我們不需要帶上那性差,有容易遺失的日記本了,我們現(xiàn)在只需要用手機,就能夠隨時隨地的記錄下我們?nèi)菀走z忘的事情,因此,我們設(shè)計了這么一款手機日志程序。本論文所設(shè)計與開發(fā)出的這款基于Android手機的日志,分析了Android系統(tǒng)的技術(shù)原理和實現(xiàn)策略,以更加合理和有效的方式實現(xiàn)了各個功能模塊,最后將其有機結(jié)合在一起,成為一款實用的日志軟件。本系統(tǒng)包括日志的添加,修改,刪除等操作,為了讓其更加實用,我們還搭配了鬧鐘的功能,使得界面簡潔清晰,使
6、用方便且人性化。2 安卓的概述2.1 Android簡介 Android操作系統(tǒng)最初由Andy Rubin開發(fā),最初主要支持手機。2005年由Google收購注資,并組建開放手機聯(lián)盟開發(fā)改進,逐漸擴展到平板電腦及其他領(lǐng)域上。Android的主要競爭對手是蘋果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2011年11月數(shù)據(jù),Android占據(jù)全球智能手機操作系統(tǒng)市場52.5%的份額,中國市場占有率為58%。Android是一種以Linu*為根底的開放源代碼操作系統(tǒng),主要使用于便攜設(shè)備。目前尚未有統(tǒng)一中文名
7、稱,中國大陸地區(qū)較多人使用安卓或安致。Android操作系統(tǒng)最初由Andy Rubin開發(fā),最初主要支持手機。2005年由Google收購注資,并組建開放手機聯(lián)盟開發(fā)改進,逐漸擴展到平板電腦及其他領(lǐng)域上。Android的主要競爭對手是蘋果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2012年2月數(shù)據(jù),Android占據(jù)全球智能手機操作系統(tǒng)市場52.5%的份額,中國市場占有率為68.4%。2.2 Android平臺特性1、應(yīng)用程序框架支持組件的重用與替換。2、Dalvik虛擬機專為移動設(shè)備優(yōu)化。3、集成的
8、瀏覽器基于開源的WebKit引擎。4、優(yōu)化的圖形庫包括定制的2D圖形庫,3D圖形庫基于OpenGLES1.0硬件加速可選。5、SQLite用作構(gòu)造化的數(shù)據(jù)存儲。6、多媒體支持包括常見的格式 如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF。7、GSM技術(shù)依賴于硬件。8、藍牙Bluetooth,EDGE,3G,和WiFi依賴于硬件。9、照相機,GPS,指南針,和加速度計accelerometer依賴于硬件。10、豐富的開發(fā)環(huán)境包括設(shè)備模擬器,調(diào)試工具,存及性能分析圖表,和Eclipse集成開發(fā)環(huán)境插件。2.3 Android用戶界面構(gòu)建 在Android平臺下開發(fā)應(yīng)用軟件
9、,最重要的是布局問題。一個好看而又簡潔的界面,是相當重要的,既能提高使用者的體驗,又保證應(yīng)用的高效執(zhí)行。Android生成用戶界面有三種方式:*ml配置生成、通過用戶自己的界面接口生成和直接用代碼生成。對于一個Activity應(yīng)用來說,android.app.Activity類是一個最根本的功能單元。一個Activity實例可以做很多的事情,但是它本身無法顯示在屏幕上,而是借助于View group和View,這兩個是Android平臺上最根本的兩個用戶界面表達單元。下面介紹下主要的布局對象: 線性布局(Linear Layout):以單一方向?qū)ζ渲械娘@示對象進展排列顯示。 如以垂直排列顯示,
10、則布局管理器中將只有一列;如以水平排列顯示,則布局管理器中將只有一行。同時,還可以對個別的顯示對象設(shè)置顯示比例2。 表格布局(Table Layout):以擁有任意行列的表格對顯示對象進展布局,每個顯示對象被分配到各自的單元格之中,但單元格的邊框線不可見。 絕對布局(Absolute Layout):允許以坐標的方式,指定顯示對象的具體位置,左上角的坐標為(0,0),向下及向右,坐標值變大。這種布局管理器由于對象的位置固定了,所以在不同的設(shè)備上,有可能會出現(xiàn)不一樣的顯示效果。 相對布局(Relative Layout):允許通過指定顯示對象相對于其它顯示對象或父級對象的相對位置來布局。一個按鈕
11、可以放于另一個按鈕的右邊,或者可以放在布局管理器的中央。 對于Android應(yīng)用中的一個屏幕,它的屏幕元素是按層次構(gòu)造來描述的。要將一個屏幕元素層次樹綁定在一個屏幕上顯示,Activity會調(diào)用它的setContentView()方法并且傳入這個層次樹的根節(jié)點引用2.4 資源的獲取和使用 資源是外部文件(不含代碼的文件),它被代碼使用并在編譯時編入應(yīng)用程序。 Android支持不同類型的資源文件,包括*ML、PNG以及JPEG文件。它們在運行的時候被解析,*ML文件根據(jù)描述不同有不同的格式。源代碼以及*ML文件將資源打包并編譯進二進制文件,這種模式能使得資源更快的被加載。字符串也同樣被壓縮成更
12、高效的模式。 由于這些原因,Android平臺上可以有不同的資源類型。Android資源系統(tǒng)能跟蹤所有非代碼相關(guān)的應(yīng)用程序。程序開發(fā)者可以使用資源類來訪問應(yīng)用程序的資源,資源的實例通常和應(yīng)用程序聯(lián)系在一起,可以通過Conte*t.getResources來訪問。應(yīng)用程序的資源在編譯時就被編譯到應(yīng)用程序二進制代碼里為了使用*個資源,程序開發(fā)者需要將它放在對應(yīng)的代碼目錄構(gòu)造里,然后編譯。作為編譯過程的一局部,產(chǎn)生的資源代號可以在源代碼里使用,這就可以用編譯器來驗證程序代碼和定義的資源是否相符。 Android的鬧鐘系統(tǒng)提供了警報和時間設(shè)置方面支持,其實現(xiàn)的硬件根底通 常是實時時鐘設(shè)備。在Linu*
13、核代碼中,需要有實時時鐘設(shè)備驅(qū)動程序和Android的Alarm驅(qū)動程序。警報器-實時時鐘系統(tǒng)包含了JNI和JAVA層的接口,在JAVA應(yīng)用程序?qū)涌梢酝ㄟ^接口控制警報器方面的功能。3 功能設(shè)計概述與需求分析3.1 軟件功能設(shè)計該系統(tǒng)的設(shè)計與實現(xiàn)主要包括以下幾個方面的工作: 1.搭建基于Android系統(tǒng)平臺的多功能日記本構(gòu)架,設(shè)計包含了寫日志,我的日記本,鬧鐘和鬧鐘情景模式,四個功能模塊的日記本系統(tǒng)體系。 2.對日記本系統(tǒng)四個功能模塊逐一論述需求分析,構(gòu)建每一模塊的根本功能和預(yù)期產(chǎn)生的效果。 3.采用面向?qū)ο蟮某绦蛟O(shè)計方法分別實現(xiàn)寫日記、查看和修改日志、設(shè)定鬧鐘和修改鬧鐘選項四個功能模塊。 4
14、.分別對四個功能模塊進展軟硬件測試,在每一模塊測試成功的根底上,完善整個日記本系統(tǒng)功能連調(diào)。 基于Android系統(tǒng)手機開發(fā)的日記本軟件界面友好,操作便捷,具有良好的擴展性和可維護性。經(jīng)過系統(tǒng)測試,該軟件工作平安可靠,可以穩(wěn)定運行。3.2 數(shù)據(jù)庫設(shè)計該程序數(shù)據(jù)庫是在Android平臺上執(zhí)行Java代碼,通過DVM編譯來建立的,由于整個SQLite數(shù)據(jù)庫是非可視化操作,因此所有對數(shù)據(jù)庫的操作都是通過執(zhí)行Java代碼實現(xiàn)。且表的設(shè)計也盡量優(yōu)化,沒有錯綜復(fù)雜的關(guān)系,每表都是獨立的,不存在任何約束,因此數(shù)據(jù)庫也是獨立數(shù)據(jù)庫。3.3 需求分析日記本是很平常的東西,很多人都有記日記的習慣,有人記賬,有人記
15、事、有人記下心情。隨著計算機技術(shù)的開展,很多家庭都買了手機,開場上網(wǎng),開場使用電腦和手機來辦公、打字等。所寫現(xiàn)在也有很多的人在使用電腦說說,寫博客,發(fā)帖子等等,受此啟發(fā)我就萌生了編寫一個日記本,用手機來寫日記的想法。很多事我們不想忘記,于是寫進日記本里,多年后翻出來再看看,很是愜意。大多數(shù)人都使用的是紙質(zhì)的日記本,這中日記很難保存,容易喪失,也容易遭到水浸等物理破壞,這樣我們的日記就丟了。同紙質(zhì)的日記本相比擬,用軟件日記本不僅環(huán)保,而且平安方便,不怕被別人偷看。軟件日記本可以很方便的攜帶只要存在手機里面就可以了。3.4 用戶分析這個軟件面向的用戶是擁有手機的群眾,而其具有寫日記的習慣的人。用戶
16、使用的軟件必須簡單容易使用,界面得體,在此根底上盡可能多的提供人性化功能,豐富軟件的涵。同時軟件必須盡量保證不會因用戶的不當操作而使用戶受到嚴重的經(jīng)濟、財產(chǎn)、精神損失。軟件必須具有很強的可靠性,不會無故終止運行、死機、退出等。3.3.1用戶要求具備根本功能a編寫日記:包括添加日記和取消。b管理日記:包括保存及刪除日記、按日期分組日記。c編輯鬧鐘:包括設(shè)定鬧鐘,和刪除鬧鐘d設(shè)置魔石:包括設(shè)定鬧鐘的提醒方式和刪除方式3.3.2除根本功能外,可另曾特色功能a鬧鐘音樂播放。b編輯鬧鐘提醒方式。3.5 系統(tǒng)體系構(gòu)造系統(tǒng)主旨在建立系統(tǒng)的鬧鐘,日志等,主要有如下幾個核心功能模塊界面設(shè)置寫日志鬧鐘設(shè)置查看日志
17、歡送界面主界面4 功能模塊介紹4.1 歡送界面添加聯(lián)系人整個布局的主體采用默認的LinearLayout來呈現(xiàn),采用TableRow的好處是對齊很方便,為了整體的美觀,大多數(shù)情況都是用的Imageview和Imagebutton控件顯示,如下列圖的代碼和圖4-1所示。ImageButtonandroid:id=+id/picmakandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_marginTop=130dpandroid:layout_marginLeft=150dpandroi
18、d:src=drawable/p6android:background=#00000000android:contentDescription=string/hello_world圖4-14.2 主界面主界面里面就是通向其他界面的四個按鈕,因為總體界面不是很大,所以我嘗試使用了HorizontalScrollView控件,多數(shù)的代碼都是由系統(tǒng)自動生成,我的工作就是給四個控件添加監(jiān)聽事件,如圖4-2-1,4-2-2所示。圖4-2-1圖4-2-24.3 添加日記模塊點開寫日記,即可添加日記,因為日記需要保存信息,所以需要吧信息都保存在數(shù)據(jù)庫中,我們首先要創(chuàng)立一個數(shù)據(jù)庫,新建MyLiteHelper
19、.java,然后創(chuàng)立一個數(shù)據(jù)庫,數(shù)據(jù)庫文件名稱為my_note.db,因為Android的數(shù)據(jù)庫是不是可視的,所以盡可能的把數(shù)據(jù)庫能夠書寫的簡單一點,局部代碼如下。效果圖如圖4-3private SQLiteDatabase db;protectedvoid onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_write);imgbut1=(ImageButton) findViewById(R.id.imgbut1);imgbut2=(I
20、mageButton) findViewById(R.id.imgbut2);houtui=(ImageButton) findViewById(R.id.houtui);w_tit=(EditTe*t) findViewById(R.id.w_tit);w_cont=(EditTe*t) findViewById(R.id.w_cont);db=new MyLiteHelper(this).getWritableDatabase();圖4-34.4 編輯日志日志添加過后肯定需要有所改動,所以需要有添加、刪除、修改的選項,而日志容就需要接收之前存儲的數(shù)據(jù)庫。讀取接收的局部代碼如下。效果圖如圖4
21、-4接收日志Intent intent=getIntent();id=intent.getIntE*tra(.chao.note.id, 1); String tit=intent.getStringE*tra(.chao.note.tit);String cont=intent.getStringE*tra(.chao.note.cont); String datetime=intent.getStringE*tra(.chao.note.datetime);修改或者刪除日志switch(arg0.getId()case R.id.imgbut1_1:String tit=edt_tit.g
22、etTe*t().toString().trim();String cont=edt_cont.getTe*t().toString().trim();String sql=update my_note set title=+tit+,content=+cont+ where id=+id+;db.e*ecSQL(sql);Toast.makeTe*t(ShowOneActivity.this, 保存成功., Toast.LENGTH_LONG).show();finish();break;case R.id.imgbut2_1:edt_tit.setTe*t();edt_cont.setTe
23、*t();break;case R.id.imgbut3_1:AlertDialog.Builder builder=new Builder(ShowOneActivity.this);builder.setTitle(刪除);builder.setIcon(R.drawable.t_sc);builder.setMessage(是否刪除);builder.setPositiveButton(ok, new DialogInterface.OnClickListener() Overridepublicvoid onClick(DialogInterface dialog, int which
24、) / TODO Auto-generated method stubString sql1=delete from my_note where id=+id;db.e*ecSQL(sql1);Toast.makeTe*t(ShowOneActivity.this, 刪除成功, Toast.LENGTH_LONG).show();finish(););builder.setNegativeButton(否, null);builder.create().show();break;case R.id.houtui_1:finish();break; 圖4-44.5 添加設(shè)置鬧鐘 鬧鐘與鬧鐘的情景
25、模式是相互關(guān)聯(lián)的,添加鬧鐘后可以再情景模式當中或者是鬧鐘設(shè)置當中選擇提醒的方式,局部情景模式設(shè)置的代碼如下,效果圖如圖4-5-1和4-5-2所示。hours = 0;minutes = 0;c = Calendar.getInstance();intent = getIntent();isnew = intent.getIntE*tra(MY_ALARM_TYPE, 2); / 2表示新的,1 表示舊的type=常規(guī)模式;if (isnew = 1) hours = intent.getIntE*tra(hours, 0);minutes = intent.getIntE*tra(minute
26、, 0);c.set(Calendar.HOUR_OF_DAY, hours);c.set(Calendar.MINUTE, minutes);num = intent.getIntE*tra(num, 0);type = intent.getStringE*tra(type);id = intent.getIntE*tra(id, 0);tv.setTe*t(你選定的時間是 + hours + 時 + minutes + 分 + id);if (type.equals(常規(guī)模式) radioone.setChecked(true);my_check = 1; elseif (type.equ
27、als(震動模式) radiotwo.setChecked(true);my_check = 2; elseif (type.equals(靜音模式) radiothree.setChecked(true);my_check = 3;圖4-5-1圖4-5-2自學心得安卓應(yīng)用程序設(shè)計中,我遇到了很多的問題,但同時我也收獲很多,設(shè)計開發(fā)過程初期,我一直都不清楚我要做一個什么樣子的程序,所以一開場都是漫無目的的去做著登錄界面,最近的幾周都有考試,設(shè)計不是沒有進展,只是比擬緩慢,后來我發(fā)現(xiàn)我總是莫名的忘記一些事情,真巧最近有安卓程序設(shè)計,想著想著我就開場著手制作起日志和鬧鐘的程序了。但是,剛開場并不能
28、預(yù)測難度,跟著書本我學習了許多控件的用法,先實現(xiàn)根本的邏輯框架,和界面框架,然后在此根底上進一步完善豐富,設(shè)計制作的過程中很多的函數(shù)、屬性、成員名都是英文的,甚至連應(yīng)用軟件Eclipse也只有英文版的,大感頭疼的我只能自己去翻英漢字典,或者網(wǎng)上查找。首先遇到的問題便是事件監(jiān)聽,我之前雖然做過類似的JAVA課程設(shè)計,但我并沒有好好的掌握,自己的程序完成后產(chǎn)生大量的錯誤,最后還是迫不得已去使用網(wǎng)上已有的源代碼和腳本,經(jīng)過幾番的調(diào)試,我終于算是完成第一個界面。一開場我用button做的界面,因為方便使用,很好的布局,但是每當擴大一種功能時,為了使界面整體美觀,我換成了imagebutton,界面變得
29、簡單,使用方便。這次的自主學習中我學會了設(shè)置安裝環(huán)境,也根本掌握了安卓的開發(fā)方法及根本流程。在本次開發(fā)過程中,安卓的設(shè)計中還需要用到的*ML和SQL的語言,主要用到的知識有Activity的使用,在程序中用到了多個窗口,因而需創(chuàng)立多個Activity。主要是用于多個Activity之間的跳轉(zhuǎn)。在開發(fā)期間,我學會了有目的的去學習一些將要用到的東西,仔細地考慮工作流程的規(guī)律和步驟,充分利用手中的開發(fā)工具,利用其所具備的功能,盡量使自己的開發(fā)在代碼上實現(xiàn)少而準確、讓用戶能夠盡量簡單地進展操作。但是在檢測過程中,還是出現(xiàn)了很多的缺乏之處,這些都是要在今后的工作中需要努力改進和完善的。 在這次程序開發(fā)設(shè)
30、計中,我也難免會遇到不少困難,這主要是由于我對所用的開發(fā)環(huán)境并不是很熟悉,開發(fā)軟件的經(jīng)歷缺乏。安卓開發(fā)用的語言是java,這次開發(fā)對我來說可以算是一次鍛煉,整個開發(fā)過程并雖然不是很順利,卻使我從中充分體會到學習的快樂,開發(fā)的程序也在一步步得到完善。 雖然我只能完成一些根本的功能,好多設(shè)想都未實現(xiàn),但是當我第一次在我的手機上用到了我自己開發(fā)的程序,我的頓時信心大增,整個學習的過程變得讓人滿足和愉悅。參考文獻1.王保羅.Java面向?qū)ο蟪绦蛟O(shè)計M. :清華大學,2003年2 杜波依斯. MySQL技術(shù)幕M. 第4版. 人民郵電 , 2011年3 熊剛.基于.Android的智能手機的設(shè)計與實現(xiàn)D.
31、理工大學,2010 4 靳巖,尚朗.Android 發(fā)入門與實踐D.人民郵電出版補, 2009附錄:程序package .chao.adapter;import java.util.List;import .chao.model.MyAlarm;import .chao.note.R;import android.content.Conte*t;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;im
32、port android.widget.Te*tView;public class MyAlarmAdapter e*tends BaseAdapter private Conte*t conte*t;private List data;public MyAlarmAdapter(Conte*t conte*t, List data) this.conte*t = conte*t;this.data = data;Overridepublic int getCount() / TODO Auto-generated method stubreturn data.size();Overridep
33、ublic Object getItem(int arg0) / TODO Auto-generated method stubreturn data.get(arg0);Overridepublic long getItemId(int arg0) / TODO Auto-generated method stubreturn arg0;Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) / TODO Auto-generated method stubView view;if(arg1!=null)view=ar
34、g1;elseview=LayoutInflater.from(conte*t).inflate( R.layout.activity_alarm_list_item,null);Te*tView type=(Te*tView) view.findViewById(R.id.alarm_type);Te*tView time=(Te*tView) view.findViewById(R.id.alarm_time);MyAlarm ma=data.get(arg0);type.setTe*t(模式:+ma.getType();time.setTe*t(所設(shè)置的時間:+ma.getHours()
35、+時+ma.getMinute()+分);return view;package .chao.model;public class MyAlarm private int id;private String type;private int num;private int hours;private int minute;public MyAlarm(int id, String type, int num, int hours, int minute) this.id = id;this.type = type;this.num = num;this.hours = hours;this.m
36、inute = minute;public int getId() return id;public void setId(int id) this.id = id;public String getType() return type;public void setType(String type) this.type = type;public int getNum() return num;public void setNum(int num) this.num = num;public int getHours() return hours;public void setHours(i
37、nt hours) this.hours = hours;public int getMinute() return minute;public void setMinute(int minute) this.minute = minute;package .chao.model;public class MyTe*tView private String tit;private String wr_time;private String cont;private int id;public String getCont() return cont;public void setCont(St
38、ring cont) this.cont = cont;public int getId() return id;public void setId(int id) this.id = id;public MyTe*tView(int id,String tit,String cont,String wr_time)this.tit=tit;this.wr_time=wr_time;this.id=id;this.cont=cont;public String getTit() return tit;public void setTit(String tit) this.tit = tit;p
39、ublic String getWr_time() return wr_time;public void setWr_time(String wr_time) this.wr_time = wr_time;package .chao.note;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.Te*tView;public class AboutUsActivity e*tends Activity private Te*tView tv2,tv
40、3;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_about_us);tv2=(Te*tView) findViewById(R.id.about_te*t);tv3=(Te*tView) findViewById(R.id.my_te*t);tv2.setTe*t( 測試軟件的過程中);tv3.setTe*t( 如有問題或建議請聯(lián)系我);Overridepublic boolean on
41、CreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.about_us, menu);return true;package .chao.note;import java.util.Calendar;import .chao.service.MyService;import .chao.sqlitehelper.MyAlarmHelper;import android.os.Bundl
42、e;import android.app.Activity;import android.app.AlarmManager;import android.app.AlertDialog;import android.app.PendingIntent;import android.app.TimePickerDialog;import android.content.Conte*t;import android.content.Intent;import android.content.SharedPreferences;import android.database.sqlite.SQLit
43、eDatabase;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBo*;import android.widget.poundButton;import android.widget.ImageButton;import android.widget.RadioButton;import androi
44、d.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.Te*tView;import android.widget.TimePicker;import android.widget.Toast;public class AlarmActivity e*tends Activity implements OnClickListener private ImageButton imgbut;private RadioGroup rg;private But
45、ton but_ok, but_e*it;private Calendar c;private Te*tView tv;private AlarmManager alarmManager;private PendingIntent pdintent;/ private CheckBo* check_bo*;private Intent myintent;private int isnew, ischeck;private Intent intent;private long longtime;private int num;private int hours, minutes, id;priv
46、ate String type;private RadioButton radio_one, radio_two;private int my_check = 1;private SQLiteDatabase db;private SharedPreferences prefs;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_alarm);init();void init() ischeck
47、 = 0;/ check_bo* = (CheckBo*) findViewById(R.id.check_bo*);radio_one = (RadioButton) findViewById(R.id.radio_one);radio_two = (RadioButton) findViewById(R.id.radio_two);tv = (Te*tView) findViewById(R.id.my_te*t);prefs = this.getSharedPreferences(my_time_count, Conte*t.MODE_PRIVATE);num = prefs.getIn
48、t(my_count, -1);if (num = -1) SharedPreferences.Editor edit = prefs.edit();edit.putInt(my_count, 0);edit.mit();num = 0;hours = 0;minutes = 0;c = Calendar.getInstance();myintent = getIntent();isnew = myintent.getIntE*tra(MY_ALARM_TYPE, 2);/ num=Calendar.getInstance().getTimeInMillis();if (isnew = 1)
49、/ 2是新的,1是舊的hours = myintent.getIntE*tra(hours, 0);minutes = myintent.getIntE*tra(minute, 0);c.set(Calendar.HOUR_OF_DAY, hours);c.set(Calendar.MINUTE, minutes);num = myintent.getIntE*tra(num, 0);type = myintent.getStringE*tra(type);id = myintent.getIntE*tra(id, 0);tv.setTe*t(你選定的時間是 + hours + 時 + min
50、utes + 分 + id);if (type.equals(one) radio_one.setChecked(true);my_check = 1; else if (type.equals(every) radio_two.setChecked(true);my_check = 2;imgbut = (ImageButton) findViewById(R.id.image_but_checktime);rg = (RadioGroup) findViewById(R.id.radioGroup_one);but_ok = (Button) findViewById(R.id.my_e*
51、it);but_e*it = (Button) findViewById(R.id.button_ok);Log.e(我設(shè)置的num, num + );db = new MyAlarmHelper(this).getWritableDatabase();rg.setOnCheckedChangeListener(new OnCheckedChangeListener() Overridepublic void onCheckedChanged(RadioGroup arg0, int arg1) / TODO Auto-generated method stubswitch (arg1) ca
52、se R.id.radio_one: my_check = 1;break;case R.id.radio_two: my_check = 2;break;);imgbut.setOnClickListener(this); / 設(shè)置我的監(jiān)聽器but_ok.setOnClickListener(this);but_e*it.setOnClickListener(this);/* * check_bo* .setOnCheckedChangeListener(new * poundButton.OnCheckedChangeListener() * * Override public void
53、onCheckedChanged(poundButton arg0, boolean * arg1) / TODO Auto-generated method stub if (arg1) ischeck = 1; * else ischeck = 0; ); */Overridepublic boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.alarm, me
54、nu);return true;Overridepublic void onClick(View arg0) / 對圖標進展監(jiān)聽switch (arg0.getId() case R.id.image_but_checktime: timeDialog(); / 顯示對話框break;case R.id.my_e*it: e*itAlarm();AlarmActivity.this.finish();Toast.makeTe*t(AlarmActivity.this, 設(shè)置的鬧鐘已取消, Toast.LENGTH_LONG).show();break;case R.id.button_ok:
55、setAlarm();AlarmActivity.this.finish();Toast.makeTe*t(AlarmActivity.this, 鬧鐘設(shè)置成功!, Toast.LENGTH_LONG).show();break;private void setAlarm() / 設(shè)置我選中的鬧鐘alarmManager = (AlarmManager) getSystemService(Conte*t.ALARM_SERVICE);intent = new Intent(AlarmActivity.this, MyService.class); / 啟動效勞pdintent = Pendin
56、gIntent.getService(AlarmActivity.this,Integer.valueOf(num), intent, PendingIntent.FLAG_CANCEL_CURRENT);String sql1 = null;/ num=Calendar.getInstance().getTimeInMillis();if (my_check = 1) alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis()+ longtime * 60 * 1000, pdintent);if (isnew = 2) sql1 = insert into my_alarm_time(num,type,hours,minute) values (+ num + ,one, + hours + , + minutes +
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZRIA 002-2024 工業(yè)巡檢四足機器人通.用技術(shù)條件
- T-ZSM 0058-2024“領(lǐng)跑者”評價技術(shù)要求 飾面木質(zhì)墻板
- 二零二五年度林業(yè)林地經(jīng)營權(quán)買賣合同
- T-ZJATA 0022-2024 土壤中揮發(fā)性有機物測定用便攜式氣相色譜-質(zhì)譜聯(lián)用儀
- T-ZJZYC 022-2024 靈芝工廠化生產(chǎn)技術(shù)規(guī)程
- 二零二五年度簽約主播與汽車廠商合作直播試駕體驗協(xié)議
- 二零二五年度會展中心物業(yè)管理服務(wù)托管協(xié)議
- 二零二五年度新能源項目投資對賭協(xié)議
- 二零二五年度股東清算與清算資產(chǎn)評估及拍賣協(xié)議
- 二零二五年度創(chuàng)新創(chuàng)業(yè)團隊員工合作協(xié)議書
- 《時代與變革?版畫藝術(shù)的魅力》教學設(shè)計
- 《民法典》醫(yī)療損害責任篇培訓課件
- 咨詢公司項目風險控制方案
- 2024年初一英語閱讀理解專項練習及答案
- 病例報告表(CRF)模板
- 2024年云南昆明市教育體育局直屬學校(單位)選調(diào)10人易考易錯模擬試題(共500題)試卷后附參考答案
- (完整版)建筑工程項目精益建造實施計劃書
- 《2024年 《法學引注手冊》示例》范文
- DL∕T 2447-2021 水電站防水淹廠房安全檢查技術(shù)規(guī)程
- NB-T+10499-2021水電站橋式起重機選型設(shè)計規(guī)范
- 城市更新可行性研究結(jié)論與建議
評論
0/150
提交評論