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
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
<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
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();
}
}
AndroidManifest.xml
<service android:name="MYReceiver">
<intent-filter>
<action android:name="com.ex.action.BC_ACTION" />
</intent-filter>
</service>
</application>