標籤:
Android平台中,Alarm Manager Service控制著鬧鐘和喚醒功能。和其他系統服務一樣,提供了一個輔助管理類-AlarmManager,我們只需要使用AlarmManager即可調用Alarm Manager Service。
在AlarmManager提供了如下方法:
1、void cancel(pendingIntent operatioin):取消一個登入的定時器
2、void set(int type,long triggerAtTime,PendingIntent operation):設定一個新的定時器。
3、void setInecactRepeating(int type,long triggerAtMillis,long intervalMills,PendingIntent operation):設定一個不精確的重複類型的定時器。
4、void setRepeating(int type,long triggerAtMills,long intervalMills,PendingIntent operation):設定一個重複類型的定時器
5、void setTime(long millis):設定系統時鐘時間。
6、void setTimeZone(String timeZone):設定時區
在上面設定時鐘的方法中,第一個參數要設定一個鬧鐘的類型,在系統中提供了如下類型:
1、ELAPSED_REALTIME:此類型的鬧鐘在系統休眠狀態下是停用,不能喚醒系統。使用的時間是相對於系統的啟動時間,該時間可以通過SystemClock.elapsedRealTime()來擷取。
2、ELAPSED_REALTIME_WAKEUP:此類型的鬧鐘在系統休眠狀態下是可用的,使用的時間是相對於系統的啟動時間。
3、RTC:此類型在系統休眠狀態下是停用,使用的是真即時間。
4、RTC_WAKEUP:此類型在系統休眠狀態下可用,使用的是真即時間。
在上面的設定可重複的時鐘的方法中,intervalMillis參數的取值可以如下:
1、INTERVAL_FIFTEEN_MINUTES
2、INTERVAL_HALF_HOUR
3、INTERVAL_HOUR
4、INTERVAL_HALF_DAY
5、INTERVAL_DAY
具體如何使用AlarmManager呢,我們通過一個案例來說明。
public class AlarmManagerActivity extends ActionBarActivity { private AlarmManager alarmManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alarm_manager); alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); IntentFilter filter = new IntentFilter("com.jredu.action.MyAlarm"); registerReceiver(receiver,filter); } public void setClock(View v){ Intent i = new Intent("com.jredu.action.MyAlarm"); PendingIntent intent= PendingIntent.getBroadcast(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 30*1000,intent); } public void cancleClock(View v){ Intent i = new Intent("com.jredu.action.MyAlarm"); PendingIntent intent= PendingIntent.getBroadcast(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT); alarmManager.cancel(intent); } private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals("com.jredu.action.MyAlarm")){ Toast.makeText(AlarmManagerActivity.this,"這是我設定的鬧鐘!",Toast.LENGTH_LONG).show(); } } }; @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); }}
運行如下:
傑瑞教育
出處:http://www.cnblogs.com/jerehedu/
著作權聲明:本文著作權歸煙台傑瑞教育科技有限公司和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。
技術諮詢:
Android之AlarmManager