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
- package com.ex;
- import android.app.Activity;
- import android.app.AlarmManager;
- import android.app.PendingIntent;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class MainActivity extends Activity {
- private Button btn_set,btn_cancel;
- //定義廣播Action
- private static final String BC_ACTION="com.ex.action.BC_ACTION";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //獲得AlarManager執行個體
- final AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
- //intent
- Intent intent = new Intent();
- intent.setAction(BC_ACTION);
- intent.putExtra("msg", "該去圖書館啦!");
- //執行個體化PendingIntent
- final PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,intent,0);
- final long time = System.currentTimeMillis();
- btn_set = (Button)findViewById(R.id.setalarm);
- btn_set.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- //重複提示,從目前事件開始,間隔5秒
- am.setRepeating(AlarmManager.RTC_WAKEUP, time, 8*1000, pi);
- }
- });
- btn_cancel=(Button)findViewById(R.id.cancelalarm);
- btn_cancel.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- am.cancel(pi);
- }});
- }
- }
main.xml
[html] view plain copy
- <Button
- android:id="@+id/setalarm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="設定鬧鐘"
- />
- <Button
- android:id="@+id/cancelalarm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="取消鬧鐘"
- />
MyReceiver.java
[java] view plain copy
- package com.ex;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.widget.Toast;
- public class MyReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- //獲得提示資訊
- String msg=intent.getStringExtra("msg");
- Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
- }
- }
轉載位址:http://blog.csdn.net/zengshuqin/article/details/7171248