——AlarmManager简介
现在普遍的手机都会有一个闹钟功能,如果使用Android来实现一个闹钟可以使用AlarmManager来实现。
AlarmManager提供了一种系统级的提示服务,允许你安排在将来的某个时间执行一个服务。
AlarmManager对象一般不直接实例化,而是通过Content.getStstemService()方法获得。
——AlarmManager常用属性和方法
——AlarmManager实现步骤
1)获得ALarmManager实例
ALarmManageram=(ALarmManager)getSystemService(ALARM_SERVICE);
2)定义一个PendingIntent发出广播
3)调用ALarmManager方法,设置定时或重复提醒
4)取消提醒:
package com.xspacing.alarmmanager;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
/**
*
* @ClassName MainActivity.java
* @Description 闹钟
* @author smile
* @version v1.0
* @date 2016年10月11日
*/
public class MainActivity extends Activity {
private AlarmManager alarmManager;
private Context mContext;
private PendingIntent mOperation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.activity_main);
alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
}
/**
* 普通闹钟
*
* @param v
*/
public void btn1(View v) {
// RTC:手机关机状态,闹钟也会响
// RTC_WAKEUP:同上
// 闹钟2秒后响
// System.currentTimeMillis() 绝对时间
// SystemClock.elapsedRealtime(); 相对时间
long triggerAtMillis = System.currentTimeMillis() + 2000;
Intent intent = new Intent("com.xspacing.alarmmanager.broacatreceiver");
PendingIntent operation = PendingIntent.getBroadcast(mContext, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtMillis, operation);
}
/**
* 可重复闹钟
*
* @param v
*/
public void btn2(View v) {
long triggerAtMillis = System.currentTimeMillis() + 2000;
Intent intent = new Intent("com.xspacing.alarmmanager.broacatreceiver");
mOperation = PendingIntent.getBroadcast(mContext, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtMillis, 5000, mOperation);
}
/**
* 取消闹钟
*
* @param v
*/
public void btn3(View v) {
alarmManager.cancel(mOperation);
}
}
package com.xspacing.alarmmanager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "闹钟响了", Toast.LENGTH_SHORT).show();
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.xspacing.alarmmanager.MainActivity" >
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="btn1"
android:text="设置普通闹钟" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="btn2"
android:text="设置可以重复的闹钟" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="btn3"
android:text="取消闹钟" />
</LinearLayout>
791

被折叠的 条评论
为什么被折叠?



