アラームを使用して処理をトリガーしたい。
以下のコードでは、2つのアラームを設定しようとしました。それらは、ちょうど鳴ったアラームのID番号を示すService
を表示するaをトリガーします。Notification
最初Alarm
がオフになると、aNotification
が表示され、「1」と表示されます。2番目Alarm
の場合、Notification
は「2」を表示する必要があります。
Javadocで説明されているように、トリガーされるアラームは1つだけです(同じIntent
であるため、2番目のアラームが最初のアラームに置き換わります)。しかし、奇妙なのは、Notification
「1」が表示され、2番目が消えたときに表示されるAlarm
ことです!!! アラームが鳴る時間は変更されているようですが、余分な時間は変更されていません。
何か案が?
あなたが私を助けるために費やす時間を前もって感謝します。
public class TestAlarmes extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState){
AlarmManager am;
Intent action;
PendingIntent intent;
long t0;
RecepteurMessageAlarme récepteur;
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// créer le récepteur de message d'alarme
récepteur=new RecepteurMessageAlarme();
// et l'enregistrer en lui demandant de filtrer sur les messages d'alarme
registerReceiver(récepteur,new IntentFilter("GL.TestAlarmes.ALARME"));
// récupérer le service d'alarme
am=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
// créer l'action 1
action=new Intent(this,ServiceAlarme.class);
action.setAction("GL.TestAlarmes.ALARME");
// personnaliser l'action a exécuter
action.putExtra("GL.TestAlarmes.Action",1);
// créer l'intent à lancer lors du déclenchement de l'alarme
intent=PendingIntent.getService(this,0,action,PendingIntent.FLAG_ONE_SHOT);
// prendre l'instant présent
t0=java.lang.System.currentTimeMillis();
// configurer l'alarme
am.set(AlarmManager.RTC_WAKEUP,t0+5000,intent);
// créer l'action 2
action=new Intent(this,ServiceAlarme.class);
action.setAction("GL.TestAlarmes.ALARME");
// personnaliser l'action a exécuter
action.putExtra("GL.TestAlarmes.Action",2);
// créer l'intent à lancer lors du déclenchement de l'alarme
intent=PendingIntent.getService(this,0,action,PendingIntent.FLAG_ONE_SHOT);
// configurer l'alarme
am.set(AlarmManager.RTC_WAKEUP,t0+10000,intent);
}
}