2017-08-14 1 views
0

J'ai créé une minuterie à l'aide androïdes construire en classe AlarmClock en utilisant le code ci-dessousComment puis-je annuler une minuterie de androïdes classe AlarmClock

// This method is called to start the Timer from Androids Alarm Clock class 
private void StartAlarmClockTimer() 
{ 
    Intent alarmIntent = new Intent(Android.Provider.AlarmClock.ActionSetTimer); 
    alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraLength, 5); 
    alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraVibrate, true); 
    alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraMessage, "Custom Text!"); 
    alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraSkipUi, true); 
    alarmIntent.AddFlags(ActivityFlags.NewTask); 
    StartActivity(alarmIntent); 
} 

Il fonctionne et correctement les fonctions de minuterie. Le problème que j'ai est de savoir comment annuler prématurément cette minuterie. Dois-je chercher d'une manière ou d'une autre le minuteur, puis le rejeter?

https://developer.android.com/reference/android/provider/AlarmClock.html

Répondre

1

Depuis la classe AlarmClock ne pas exposer une action publique pour cela, il n'y a aucun moyen pris en charge pour faire un programme. L'attente est probablement que les utilisateurs le feront via l'interface utilisateur. Si vous voulez plus de contrôle, utilisez AlaramManager et réglez/effacez vos propres alarmes.

Edit:

Utilisation comme ceci:

AlarmManager manager; 
Intent alarmIntent; 
PendingIntent pendingIntent; 

... 

//Creat a timer 
private void StartAlarmClockTimer() 
{ 
    manager = (AlarmManager)GetSystemService(Context.AlarmService); 
    alarmIntent = new Intent(Android.Provider.AlarmClock.ActionSetTimer); 
    alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraLength, 2); 
    alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraVibrate, true); 
    alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraMessage, "Custom Text!"); 
    alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraSkipUi, true); 
    alarmIntent.AddFlags(ActivityFlags.NewTask); 

    pendingIntent = PendingIntent.GetActivity(this, 0, alarmIntent, 0); 
    manager.SetExact(AlarmType.RtcWakeup, SystemClock.ElapsedRealtime(), pendingIntent); 
}; 

//Cancel a timer 
private void CancelAlarmClockTimer() 
{ 
    manager.Cancel(pendingIntent); 
} 
+0

Merci pour la réponse. Je vais regarder le gestionnaire d'alarme – Jim