2.1 设置闹铃
在第一小节中,我们已经提到过OPhone系统AlarmManagerService提供了两个设置闹铃的API,他们分别是:
void set(int type, long triggerAtTime, PendingIntent operation)
void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
在OPhone 1.5版本中又增加了一个API。
下面的程序演示了如何设置一个闹铃。
/当设置的闹铃触发时,Ophone系统会广播一个Intent,当然我们需要在创建一个新的闹铃
//时注册一个闹铃事件接收对象AlarmReceiver ,该接收对象也可以通过在//AndroidManifest.xml中发布,也可以在代码中动态注册。
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.SystemClock;
import android.os.Bundle;
import java.util.Calendar;
//创建一个PendingIntent
Intent intent = new Intent(ALARM_ALERT_ACTION);
intent.putExtra(ID, id);
intent.putExtra(TIME, atTimeInMillis);
PendingIntent sender = PendingIntent.getBroadcast(
context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
//获得AlarmMnager并注册一个新闹铃,
//一次性闹铃的设置
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.POWER_OFF_WAKEUP, atTimeInMillis, sender);
//重复性闹铃的设置
// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += 15*1000;
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.POWER_OFF_WAKEUP,
firstTime, 15*1000, sender);
//时注册一个闹铃事件接收对象AlarmReceiver ,该接收对象也可以通过在//AndroidManifest.xml中发布,也可以在代码中动态注册。
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.SystemClock;
import android.os.Bundle;
import java.util.Calendar;
//创建一个PendingIntent
Intent intent = new Intent(ALARM_ALERT_ACTION);
intent.putExtra(ID, id);
intent.putExtra(TIME, atTimeInMillis);
PendingIntent sender = PendingIntent.getBroadcast(
context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
//获得AlarmMnager并注册一个新闹铃,
//一次性闹铃的设置
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.POWER_OFF_WAKEUP, atTimeInMillis, sender);
//重复性闹铃的设置
// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += 15*1000;
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.POWER_OFF_WAKEUP,
firstTime, 15*1000, sender);
//在AndroidManifest.xml中注册
<receiver android:name="AlarmReceiver">
<intent-filter>
<action android:name="com.android.alarmclock.ALARM_ALERT" />
</intent-filter>
</receiver>
<receiver android:name="AlarmReceiver">
<intent-filter>
<action android:name="com.android.alarmclock.ALARM_ALERT" />
</intent-filter>
</receiver>
//在应用程序执行过程中注册
AlarmReceiver mAlarmReceiver;
IntentFilter filter = new IntentFilter();
filter.addAction(“com.android.alarmclock.ALARM_ALERT”);
context.registerReceiver(mAlarmReceiver, filter);
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
AlarmReceiver mAlarmReceiver;
IntentFilter filter = new IntentFilter();
filter.addAction(“com.android.alarmclock.ALARM_ALERT”);
context.registerReceiver(mAlarmReceiver, filter);
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}