2017-08-14 55 views
0

我一直在使用使用下面的代碼如何取消計時器從機器人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); 
} 

它的工作原理和正確的定時器功能AlarmClock類機器人會建立創建一個定時器。我有的問題是如何提前取消該計時器。我應該以某種方式尋找計時器,然後解僱它?

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

回答

1

由於AlarmClock類不公開該公開的動作,還有以編程方式做到這一點沒有受支持的方法。期望可能是用戶將通過用戶界面來完成。如果您想要更多控制,請使用AlaramManager並設置/清除自己的警報。

編輯:

用法是這樣的:

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

感謝您的回答。我會看看報警管理器 – Jim