技术开发 频道

PendingInent 与 AlarmManager

  2.1 设置闹铃

  在第一小节中,我们已经提到过OPhone系统AlarmManagerService提供了两个设置闹铃的API,他们分别是:

        void      set(int type, long triggerAtTime, 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);

 

//在AndroidManifest.xml中注册
<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) {
    
   }
}

 

0
相关文章