本文實(shí)例講述了android手機(jī)鬧鐘用法。分享給大家供大家參考。具體如下:
一、開發(fā)手機(jī)鬧鐘主要用到了alarmmanager類,alarmmanager類提供了訪問系統(tǒng)定時(shí)服務(wù)的途徑,開發(fā)人員可以在程序中設(shè)置某個(gè)應(yīng)用程序在未來的某個(gè)時(shí)刻被執(zhí)行。當(dāng)alarmmanager定時(shí)時(shí)間到了之后,當(dāng)初注冊(cè)的intent對(duì)象將會(huì)被系統(tǒng)廣播,進(jìn)而啟動(dòng)目標(biāo)程序。
二、在程序運(yùn)行時(shí)當(dāng)需要使用alarmmanager類時(shí),可以通過context對(duì)象的getsystemservice(context.alarm_service)方法來獲得alarmmanager對(duì)象。
以下程序中使用時(shí)間選擇對(duì)話框設(shè)置鬧鐘的時(shí)間。
main.xml布局文件:
1
2
3
4
5
6
7
8
9
10
|
<?xml version= "1.0" encoding= "utf-8" ?> <linearlayout xmlns:android= "http://schemas.android.com/apk/res/android" android:orientation= "vertical" android:layout_width= "fill_parent" android:layout_height= "fill_parent" > <button android:id= "@+id/btn" android:text= "設(shè)置鬧鐘" android:layout_width= "fill_parent" android:layout_height= "wrap_content" /> </linearlayout> |
清單文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version= "1.0" encoding= "utf-8" ?> <manifest xmlns:android= "http://schemas.android.com/apk/res/android" package = "com.ljq.activity" android:versioncode= "1" android:versionname= "1.0" > <application android:icon= "@drawable/icon" android:label= "@string/app_name" > <activity android:name= ".mainactivity" android:label= "@string/app_name" > <intent-filter> <action android:name= "android.intent.action.main" /> <category android:name= "android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name= ".alarmactivity" /> <!-- android:process= ":remote" : 新開一個(gè)進(jìn)程 --> <receiver android:name= ".alarmreceiver" android:process= ":remote" /> </application> <uses-sdk android:minsdkversion= "7" /> </manifest> |
alarmreceiver類:
1
2
3
4
5
6
7
8
9
10
11
12
|
package com.ljq.activity; import android.content.broadcastreceiver; import android.content.context; import android.content.intent; public class alarmreceiver extends broadcastreceiver{ @override public void onreceive(context context, intent intent) { intent i= new intent(context, alarmactivity. class ); i.addflags(intent.flag_activity_new_task); context.startactivity(i); } } |
alarmactivity類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package com.ljq.activity; import android.app.activity; import android.app.alertdialog; import android.content.dialoginterface; import android.content.dialoginterface.onclicklistener; import android.os.bundle; public class alarmactivity extends activity { @override public void oncreate(bundle savedinstancestate) { super .oncreate(savedinstancestate); //顯示對(duì)話框 new alertdialog.builder(alarmactivity. this ). settitle( "鬧鐘" ). //設(shè)置標(biāo)題 setmessage( "時(shí)間到了!" ). //設(shè)置內(nèi)容 setpositivebutton( "知道了" , new onclicklistener(){ //設(shè)置按鈕 public void onclick(dialoginterface dialog, int which) { alarmactivity. this .finish(); //關(guān)閉activity } }).create().show(); } } |
mainactivity類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package com.ljq.activity; import java.util.calendar; import android.app.activity; import android.app.alarmmanager; import android.app.dialog; import android.app.pendingintent; import android.app.timepickerdialog; import android.content.context; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.timepicker; import android.widget.toast; public class mainactivity extends activity{ private button btn= null ; private alarmmanager alarmmanager= null ; calendar cal=calendar.getinstance(); final int dialog_time = 0 ; //設(shè)置對(duì)話框id @override protected void oncreate(bundle savedinstancestate) { super .oncreate(savedinstancestate); setcontentview(r.layout.main); alarmmanager=(alarmmanager)getsystemservice(context.alarm_service); btn=(button)findviewbyid(r.id.btn); btn.setonclicklistener( new view.onclicklistener(){ public void onclick(view view) { showdialog(dialog_time); //顯示時(shí)間選擇對(duì)話框 } }); } @override protected dialog oncreatedialog( int id) { dialog dialog= null ; switch (id) { case dialog_time: dialog= new timepickerdialog( this , new timepickerdialog.ontimesetlistener(){ public void ontimeset(timepicker timepicker, int hourofday, int minute) { calendar c=calendar.getinstance(); //獲取日期對(duì)象 c.settimeinmillis(system.currenttimemillis()); //設(shè)置calendar對(duì)象 c.set(calendar.hour, hourofday); //設(shè)置鬧鐘小時(shí)數(shù) c.set(calendar.minute, minute); //設(shè)置鬧鐘的分鐘數(shù) c.set(calendar.second, 0 ); //設(shè)置鬧鐘的秒數(shù) c.set(calendar.millisecond, 0 ); //設(shè)置鬧鐘的毫秒數(shù) intent intent = new intent(mainactivity. this , alarmreceiver. class ); //創(chuàng)建intent對(duì)象 pendingintent pi = pendingintent.getbroadcast(mainactivity. this , 0 , intent, 0 ); //創(chuàng)建pendingintent //alarmmanager.set(alarmmanager.rtc_wakeup, c.gettimeinmillis(), pi); //設(shè)置鬧鐘 alarmmanager.set(alarmmanager.rtc_wakeup, system.currenttimemillis(), pi); //設(shè)置鬧鐘,當(dāng)前時(shí)間就喚醒 toast.maketext(mainactivity. this , "鬧鐘設(shè)置成功" , toast.length_long).show(); //提示用戶 } }, cal.get(calendar.hour_of_day), cal.get(calendar.minute), false ); break ; } return dialog; } } |
運(yùn)行結(jié)果:
希望本文所述對(duì)大家的android程序設(shè)計(jì)有所幫助。