Fix runnable to actually exit the alarm alert.
This commit is contained in:
		| @@ -27,12 +27,11 @@ public class AlarmAlertActivity extends Activity { | ||||
|     // TODO correct alert lifetime | ||||
|     private static final int ALERT_LIFE = 1000*10;//1000*60*2; // 2 minutes | ||||
|     private static final long[] vPattern = {500, 500}; | ||||
|     private static final Handler handler = new Handler(); | ||||
|     private static Runnable r; | ||||
|     private static AlarmManager graceManager; | ||||
|     private static PendingIntent gracePendingIntent; | ||||
|     private static Intent notifyIntent; | ||||
|     private static Vibrator vibrator; | ||||
|     private static Boolean userCancelled; | ||||
|  | ||||
|     @Override | ||||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
| @@ -41,7 +40,7 @@ public class AlarmAlertActivity extends Activity { | ||||
|         Window window = getWindow(); | ||||
|         // Set to use the full screen | ||||
|         int fullScreen = WindowManager.LayoutParams.FLAG_FULLSCREEN; | ||||
|         // if KitKat, mimic the main alarm | ||||
|         // TODO if KitKat, mimic the main alarm | ||||
|         fullScreen = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; | ||||
|         window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | ||||
|                 | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | ||||
| @@ -56,21 +55,23 @@ public class AlarmAlertActivity extends Activity { | ||||
|         stopService(notifyIntent); | ||||
|  | ||||
|         // Turn off the alert activity, and switch to a notification | ||||
|         r = new Runnable() { | ||||
|         new Handler().postDelayed(new Runnable() { | ||||
|             public void run() { | ||||
|                 // Close the dialogue | ||||
|                 finish(); | ||||
|                 // Switch to notification if the Activity has not been closed by the user | ||||
|                 startService(notifyIntent); | ||||
|                 if (!userCancelled) { | ||||
|                     // Close the dialogue and switch to notification | ||||
|                     // if the Activity has not been closed by the user | ||||
|                     finish(); | ||||
|                     startService(notifyIntent); | ||||
|                 } | ||||
|                 Log.d("AlarmAlertActivity", "Started notification"); | ||||
|             } | ||||
|         }; | ||||
|         handler.postDelayed(r, ALERT_LIFE); | ||||
|         }, ALERT_LIFE); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onStart() { | ||||
|         super.onStart(); | ||||
|         userCancelled = false; | ||||
|  | ||||
|         vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); | ||||
|         vibrator.vibrate(vPattern, 0); | ||||
| @@ -86,6 +87,8 @@ public class AlarmAlertActivity extends Activity { | ||||
|                 gracePendingIntent = PendingIntent.getBroadcast(getApplicationContext(), MainActivity.GRACE_REQUEST, graceIntent, 0); | ||||
|                 graceManager.cancel(gracePendingIntent); | ||||
|                 Log.d("AlarmAlertActivity", "Cancelled grace alarm."); | ||||
|                 // Ensure we don't load a notification now | ||||
|                 userCancelled = true; | ||||
|                 // Close the dialogue (stop vibration &c) | ||||
|                 finish(); | ||||
|             } | ||||
| @@ -93,8 +96,6 @@ public class AlarmAlertActivity extends Activity { | ||||
|     } | ||||
|  | ||||
|     public void onStop() { | ||||
|         // Ensure we don't load a notification now | ||||
|         handler.removeCallbacks(r); | ||||
|         vibrator.cancel(); | ||||
|         super.onStop(); | ||||
|     } | ||||
|   | ||||
| @@ -86,7 +86,7 @@ public class AlarmNotify extends Service { | ||||
|                 int secondsLeft = (int) ((endTime - System.currentTimeMillis())) / (1000); | ||||
|                 int gracePeriodSeconds = gracePeriod * 60; | ||||
|                 // Multiply each int by 1000 for greater progress resolution | ||||
|                 int progress = ((((gracePeriodSeconds * 1000) - (secondsLeft * 1000)) * max) / (gracePeriodSeconds * 1000)); | ||||
|                 int progress = (((gracePeriodSeconds * 1000) - (secondsLeft * 1000)) * max) / (gracePeriodSeconds * 1000); | ||||
|  | ||||
|                 while (progress < max) { | ||||
|                     // Stop the thread if cancelled elsewhere | ||||
| @@ -102,7 +102,7 @@ public class AlarmNotify extends Service { | ||||
|                     // Prepare secondsLeft and progress for the next loop | ||||
|                     secondsLeft = secondsLeft - (UPDATE_INTERVAL / 1000); | ||||
|                     // Multiply each int by 1000 for greater progress resolution | ||||
|                     progress = ((((gracePeriodSeconds * 1000) - (secondsLeft * 1000)) * max) / (gracePeriodSeconds * 1000)); | ||||
|                     progress = (((gracePeriodSeconds * 1000) - (secondsLeft * 1000)) * max) / (gracePeriodSeconds * 1000); | ||||
|                     // Sleeps the thread, simulating an operation | ||||
|                     // that takes time | ||||
|                     try { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user