天天看點

AlarmManager的使用

AlarmManager是Android用來實作一個鬧鐘的服務,它一般不執行個體化,而是通過Context.getSystemService(Context.ALARM_SERVICE)方法獲得

屬性或方法名稱 說明                                   
 ELAPSED_REALTIME   設定鬧鐘時間,從系統啟動開  始    
ELAPSED_REALTIME_WAKEUP 同上,如果裝置休眠則喚醒
INTERVAL_DAY 設定鬧鐘,間隔一天
INTERVAL_HALF_DAY 設定鬧鐘,間隔半天
INTERVAL_FIFTEEN_MINUTES 設定鬧鐘,間隔15分鐘
INTERVAL_HALF_HOUR 設定鬧鐘,間隔半個小時
INTERVAL_HOUR 設定鬧鐘,間隔一個小時
RTC 設定鬧鐘時間從系統目前時間開(System.currentTimeMillis())
RTC_WAKEUP 同上,裝置休眠則喚醒
set(int type,long triggerAtTime,PendingIntent operation) 設定在某個時間執行鬧鐘
setRepeating(int type,long triggerAtTime,long interval PendingIntent operation) 設定在某個時間重複執行鬧鐘
setInexactRepeating(int type,long triggerAtTime,long interval PendingIntent operation) 設定在某個時間重複執行鬧鐘,但不是間隔固定時間

AlarmManager的使用步驟

1)獲得ALarmManager執行個體 ALarmManager am=(ALarmManager)getSystemService(ALARM_SERVICE);

2)定義一個PendingIntent發出廣播

3)調用ALarmManager方法,設定定時或重複提醒

具體為:

 MainActivity.java

[java]  view plain copy

  1. package com.ex;  
  2. import android.app.Activity;  
  3. import android.app.AlarmManager;  
  4. import android.app.PendingIntent;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10. public class MainActivity extends Activity {  
  11.     private Button btn_set,btn_cancel;  
  12.     //定義廣播Action  
  13.     private static final String BC_ACTION="com.ex.action.BC_ACTION";  
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.main);  
  18.         //獲得AlarManager執行個體  
  19.         final AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);  
  20.         //intent  
  21.         Intent intent = new Intent();  
  22.         intent.setAction(BC_ACTION);  
  23.         intent.putExtra("msg", "該去圖書館啦!");  
  24.         //執行個體化PendingIntent  
  25.         final PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,intent,0);   
  26.         final long time = System.currentTimeMillis();  
  27.         btn_set = (Button)findViewById(R.id.setalarm);  
  28.         btn_set.setOnClickListener(new OnClickListener(){  
  29.             @Override  
  30.             public void onClick(View v) {  
  31.                 //重複提示,從目前事件開始,間隔5秒  
  32.                 am.setRepeating(AlarmManager.RTC_WAKEUP, time, 8*1000, pi);  
  33.             }  
  34.         });  
  35.         btn_cancel=(Button)findViewById(R.id.cancelalarm);  
  36.         btn_cancel.setOnClickListener(new OnClickListener(){  
  37.             @Override  
  38.             public void onClick(View v) {  
  39.                 am.cancel(pi);  
  40.             }});  
  41.     }  
  42. }  

main.xml

[html]  view plain copy

  1. <Button  
  2.     android:id="@+id/setalarm"    
  3.     android:layout_width="wrap_content"   
  4.     android:layout_height="wrap_content"   
  5.     android:text="設定鬧鐘"  
  6.     />  
  7.     <Button  
  8.     android:id="@+id/cancelalarm"    
  9.     android:layout_width="wrap_content"   
  10.     android:layout_height="wrap_content"   
  11.     android:text="取消鬧鐘"  
  12.     />  

MyReceiver.java

[java]  view plain copy

  1. package com.ex;  
  2. import android.content.BroadcastReceiver;  
  3. import android.content.Context;  
  4. import android.content.Intent;  
  5. import android.widget.Toast;  
  6. public class MyReceiver extends BroadcastReceiver {  
  7.     @Override  
  8.     public void onReceive(Context context, Intent intent) {  
  9.         // TODO Auto-generated method stub  
  10.         //獲得提示資訊  
  11.         String msg=intent.getStringExtra("msg");  
  12.         Toast.makeText(context, msg, Toast.LENGTH_LONG).show();  
  13.     }  
  14. }  

轉載位址:http://blog.csdn.net/zengshuqin/article/details/7171248