Pimlical Android Help

Managing Alarms

Note - Due to a limitation in the Android calendar database, alarms cannot be set at the event time for items in an Android Calendar, but have to be set at least one minute in advance. This limitation does not apply to items in Pimlical's Local calendars.

Make sure that the preference PimlicalAlarmHandling (see below) is set correctly to accomplish what you want.

Overview

There are three settings for the preference PimlicalAlarmHandling (Alarm Section of preferences):

None    Alarms are completely ignored by Pimlical in that they will never trigger. If you have alarms/notifications enabled in the built-in calendar application, those will continue to trigger as they did in earlier versions of Pimlical (i.e. the built-in calendar generates the notification and manages issues of snoozing etc.).

Local    This is the default setting. Pimlical's management of alarms is only set for items that are in Pimlical's local calendar on the SD card (this is Pimlical's database - not to be confused with the local calendar that is present on some Android phones). When an alarm triggers, Pimlical manages the alarm itself and provides more powerful alarm and snooze handling for the event. Alarms set on items in an Android calendar will also trigger, but the built-in calendar application (if so enabled) will manage the alarms set in that database.

All    With this setting, Pimlical manages alarms for both the local and Android calendars. If you choose this setting, you will definitely want to disable alarm notifications for all Android calendars displayed in Pimlical (go into built-in calendar application, choose settings and there will be an entry there that allows you to turn off notifications). If you do not disable alarm notifications, you will usually get two alarm notifications - one from Pimlical and one from the native Android Calendar application. You can set the preference: NoAlarmsOnTheseCategories to selectively suppress alarms on certain calendars or categories.


When Alarms Trigger on Android 10 or later

Alarm handling in Pimlical had to be substantially changed for Android 10 due to new restrictions that Google places on applications. Applications are no longer able to take over the screen when they are running in the background. And Google continues to place new restrictions on apps that try and circumvent that policy. Their goal is to avoid having apps interfere with the "user experience". Pimlico Software does not subscribe to the notion that an Operating System should be imposing such restrictions on Apps, and believes that intelligently designed apps should give the user the choice of how they want to be notified.

The main difference between the Android 10 implementation and the prior implementation is that Pimlical now by default uses the Android Notification system to manage alarms.  NOTE: with Version 3.8 of Pimlical/Android and later versions of the Android OS, it is now possible to retain the previous method of handling alarms with full-page alarms, so it is no longer required to use the notification system for alarms. If you wish to use the notification system for alarms, read the following section.

So instead of the Alarm dialog appearing, you now get a notification for the alarm. In order to provide a better user experience, Pimlical implements both manual and auto-snoozing of the alarm as well as preferences to allow the user to control the length of the alarm and the number of repetitions. There are several new preferences:

UseInsistentAlarmForNotification  - defaults to True in order to use the more insistent ALARM type sound for the notifications. If False, Pimlical uses the NOTIFICATION type sound which is usually a single unobtrusive "ding". The defaults for these two types of sounds can usually be set in the Android System settings of your device.

InsistentAlarmNotificationDuration - specifies how long the Insistent alarm should sound before being silenced. The default value is 20 seconds. If you have selected a sound that is shorter than this value, the alarm will simply end normally.

InsistentAlarmSnoozeDuration - specifies for how long an alarm should be silent before sounding again. The default value is 10 minutes which means that a typical insistent alarm will sound for 20 seconds, and then be silent for 10 minutes before it sounds again (and then goes through another cycle).

MaximumAlarmNotifications - specifies how many times Pimlical should go through the cycle of sounding the alarm and then silencing it. The default value is 5. You can completely turn off this auto-snoozing feature by setting this preference to 0.

AlwaysShowNotificationForAlarm - if set to True, notifications will ALWAYS be used for alarms. This is the default and probably best setting for Android 10 as it ensures completely consistent operation of the Alarms. If set to False, Pimlical will attempt to display the main Alarm dialog, but the Android OS will suppress that under some conditions (i.e. it will only display if Pimlical is active or in the foreground when the alarm triggers.

When an alarm triggers, Pimlical displays a notification similar to the one shown below:

Pimlical displays the time and the description for the item whose alarm has just triggered. What happens next depends on the setting of UseInsistentAlarmForNotification. If set to False, you would normally hear a single "ding" (or whatever sound you chose for notifications sounds) and the popup dialog remains on the screen until you take some action. If set to True, Pimlical plays the (typically) more insistent Alarm type sound for 20 seconds (or whatever value you use for the preference: InsistentAlarmNotificationDuration).  The notification is then silenced and the popup dialog is removed from the screen, but the notification remains active and the Pimlical icon stays on the top status bar. You can pull down on the status bar to review the alarm. After 10 minutes (or whatever value you have for the preference: InsistentAlarmSnoozeDuration) the alarm will popup on the screen again and play the alarm sound. This will be repeated until you dismiss or manually snooze the alarm by tapping the Snooze or Dismiss buttons.  By default it will repeat five times (but you can change that with the preference: MaximumAlarmNotifications. You can also avoid this automatic snoozing completely by setting that preference to zero.

You can remove the popup dialog (without affecting the notification or its autosnoozing) with a swipe on the notification, or by tapping the Clear All function provided by the Android OS.

To get rid of the alarm completely and avoid any further notifications, tap the Dismiss button. If there are two or more alarms, you will get a popup list of the alarms, all checked. If you uncheck one or more of the checkboxes, those alarms will not be dismissed, and the unchecked item(s) will be auto-snoozed to their original trigger time (if at least one minute in the future) or for the standard auto-snooze interval otherwise.

To manually snooze the notification, tap the SNOOZE button. A popup list appears of all the times that you have defined in the preference: AlarmStrings. The alarm will then be snoozed for the period of time that you choose. After that period of time, the notification will re-appear with sound, and then go back to the normal auto-snooze action.

If other alarms trigger while an alarm notification is auto-snoozing, they will be added to the list of displayed alarms. The alarms are shown in reverse chronological order, so the topmost item is always the most recent item. Items are cleared from the list only when you tap the Dismiss button or use the Edit button.

The Edit button will open up the Pimlical/Android Edit dialog with the selected item. If there are two or more items displayed when you tap Edit, a popup list appears and the item you select will be presented in the Edit dialog, while the other item(s) will be auto-snoozed to their original trigger time (if at least one minute in the future) or for the standard auto-snooze interval otherwise.

If you tap directly on the notification (not on the Dismiss or Snooze buttons) the notification will be dismissed and, provided that you tap on the notification within thirty seconds or so of it being displayed, you will then see the Pimlical Alarm dialog (the same dialog that was displayed on pre-Android 10 systems). However, if much more than 30s have passed, the alarm dialog will not always be displayed.

If you set the preference AlwaysShowNotificationForAlarm to false, Pimlical will attempt to display the "pre-Android-10" type Alarm/Snooze dialogs. That will work fine provided that Pimlical is in the foreground when the alarm goes off. But if some other app is in the foreground, then you will either (a) just get the Pimlical Alarm icon in the notification area with a "ding" type sound, or (b) you may hear no sound at all.  If you really dislike this newer method for handling alarms, you may wish to fiddle around with some of these alarm settings to see if you can get a more satisfactory resolution on your particular phone.

Setting Default Alarm Sound on Android 10

Setting the default Alarm sounds for notifications is now managed by preferences in Pimlical. One important caveat: there is a known bug in the Android OS (first appeared in Version 8 and still not fixed as of Version 14!) that the Android OS will ignore any change to the notification sound UNLESS you use the CLEAR DATA option in the App Info screen:

However - do not blindly use the CLEAR DATA option!! You will lose ALL your Data and ALL your preferences!!!

With Pimlical/Android V-4.0.26 or later, first save all your Pimlical data with Menu | Backup Everything (you may need to change the preference: MenuCommandsAndOrder to see this menu item). Make sure the backup concludes successfully. Then, you can long-press the Pimlical icon in the home screen, select APP INFO | Storage & cache | Clear Storage. Note that will completely zap the Pimlical folder in scoped storage.  Relaunch Pimlical - you will need to set all the permissions again, and you will see Pimlical prompting you to restore the Pimlical folder in scoped storage from your backup copy in the /Pimlical folder (that you just saved everything in). This procedure will clear out all the notification sounds and force the Android OS to use your new settings.  You will have to do this every time you change the notification sound, or the change will be ignored. The new preferences are:

The best setting for most users is likely to be to use the insistent type alarm sound (UseInsistentAlarmForNotification = true) which by default should either be a fairly long alarm sound, or one that repeats indefinitely. You can then control how long the alarm plays with the preference: InsistentAlarmNotificationDuration which has a default value of 20 seconds.

Restarting your phone and alarms on Android 10

When you restart your phone, Android 10 does notify Pimlical of that fact to give Pimlical a chance to reschedule alarms. Unfortunately, because of new restrictions in Android 10 that mechanism is not quite as clean as in Android 9, but it's close. Pimlical checks to see when the next scheduled alarm was set for (immediately before your restart) and reschedules that alarm. If that alarm is not at least one minute in the future, it will reschedule the alarm to trigger anyway in one minute. Note that you must log into the Android OS for any of this to work as the Android OS will not notify Pimlical of the restart unless you are logged in (this restriction applies to ALL apps that use alarms under Android 10).

When Alarms Trigger on Android 9 or earlier, or using V-3.8 of Pimlical on most recent versions of Android OS

When an alarm triggers in Pimlical, the default action is for Pimlical to display the alarm dialog listing all the alarms that triggered at that time (the window title displays the time that the alarm triggered - in this case 6:34pm). Each item is checked in the list, indicating that if you tap the Done or Snooze buttons, it will apply to all checked items. See note below about using the Android notification system instead.


Tapping the Done button will dismiss all the alarms and exit the dialog - they will not trigger again unless the alarm is reset on the event. Tap the Alarm Icon at top left to silence the alarm and (after having silenced the alarm) alternate between selecting all items and no items.  Tap the 5m+ button (this value is controlled by the preference: AlarmSnoozeButton5) to snooze all selected alarms for the specified amount of time.  Long-press the 5m+ button to snooze the alarm until 5 minutes before the start time of the selected Items..Tap the Snooze button to snooze all the selected items to some different time interval. When you finish managing the snooze settings for those selected alarms, the Snooze Dialog will return to the Alarm dialog with those items that were unchecked displaying so you can manage the remaining alarms.

Tap the Edit button to edit a single item in the list. To use this feature, you must have just one item selected in the list of alarms. Also, you can not edit an item if the alarm itself pops up over an open Edit Dialog (or any child dialogs of the Edit Dialog). If you have multiple items in the list and just one item selected and tap the Edit button, all the other items will be automatically snoozed as Pimlical brings up the edit dialog (you can just pull down on the notification bar and select the Pimlical alarm notification item to bring up the alarm dialog again with all the other alarms).

You can tap the alarm clock icon in the above dialog to immediately silence the alarm sound, vibration (if set) and the speaking of the alarm descriptions (note: some Android devices may continue to speak anyway due to a bug in Android OS), and it will also recheck all the items in the alarm list. Tapping any of the buttons at the bottom of the screen will also immediately silence the alarms.

Pimlical may need to re-read the database prior to displaying the alarms - and after dismissing the alarm/snooze dialogs, the device will display the normal lock screen if it had been powered off, etc.


The Snooze dialog displays the description of the selected alarm if only one was selected, otherwise it displays (Multiple Items) to signal that the snooze will apply to several items that you had selected.

There are five buttons and one drop-down list. The snooze times are all configurable in preference settings (see help section: Alarm Preferences) - so you can choose the four most likely snooze times that you use, and put the rest of them in a drop-down list.

Tapping any one of the four buttons will snooze all selected items for that period of time. By default, the snooze time is from right now, but you can also select To Before Start which sets the snooze time from the start time of the selected appointment(s) (if more than one appointment, it is the first appointment's start time that is used) or select To Before End to set the snooze time using the end time of the appointment.

Select a snooze time from the drop-down list, and then tap the Snooze For: button to the left of the list to set the selected snooze interval. Tap Cancel to return to the Alarm dialog.

After tapping one of the snooze buttons, if there were any items unselected when the Snooze button was tapped in the alarm dialog, Pimlical returns to the alarm dialog with the remaining items displayed and all selected. When snoozed alarms go off you can specify a separate alarm sound for them (Preference: AlarmSnoozeDefaultSound).

If there is a mix of appointments, floating events and snoozed alarms, the alarm sound is chosen based upon the first item in the alarms list.

When an alarm is snoozed (either manually by the user, or auto-snoozed by Pimlical) a notification icon (of an alarm) is placed in the standard, Android Notification bar to signify that there is a pending, snoozed alarm. You can dismiss/clear this notification by swiping the notification away or by using the command to Clear Notifications (but that will not remove the snoozed alarm). If you tap on the alarm notification, the full-page alarm dialog will appear at which point you can dismiss the snooze itself (by tapping the Done button) or you can snooze it to a new time with the Snooze button, or you can edit the event with the Edit button).

AutoSnooze

Alarms can be automatically snoozed if they are not acknowledged by the user. The default settings provide for automatically snoozing the alarm if it is not acknowledged within two minutes (Preference: SecondsToAutoSnooze). It will then come back ten minutes later (preference: AlarmSoundRepeatInterval) and ring again. Note that you can have a different alarm sound for the snooze alarm. The number of times the alarm will come back after being autosnoozed is controlled by the preference: AlarmSoundRepeatCount (default value is 3). You can set this to a very high value (say 10000) to effectively always have the alarm come back. This preference is useful in situations where the device may be left unattended for days at a time (in which case one would not want to have alarms drain the battery down by constantly, and futilely triggering the alarm). When the alarm is no longer triggered by the autosnooze feature, the notification is still left in the Android notification area so there is a notice that an alarm has gone off - and this notification can be pulled down to get the alarm dialog to display so those alarms can be managed. If you need to change the time of the snooze to something else, pull down on the Android notification bar and tap the Pimlical/Android alarm icon - the full-page alarm dialog will then appear at which point you can reschedule the alarm.

Using the Android Notification System on Android 9 and earlier

To use the Android Notification system instead of the full-screen Alarm and Snooze dialogs, set the preference UseNotificationWhenAlarmTriggers to True (default is false, to initially display the full-screen Alarm/Snooze dialogs when an alarm triggers).

When an alarm is snoozed, Pimlical posts an icon in the top status window to indicate that an item is being snoozed. At any time, you can pull down the notification and select that item and Pimlical will then invoke the standard Alarm Dialog so you can then dismiss/snooze the alarm(s). In the notification window, you will see PimlicalAlarm:  2, where the number (2 in this example) indicates how many alarms went off at that time. The time displayed is when the alarm last triggered the display of the Alarm Dialog (or when the alarm first went off if the initial display of the Alarm Dialog is suppressed -- see below).

The notification can use the standard Android Notification Sound on your device if the preference PlayNotificationSound is set to True. It will also vibrate if the preference VibrateOnAlarm is set to True.

Spoken Alarms

A very useful feature in Pimlical/Android (but only available from the full-screen Alarm dialog - so really only an option on Android OS prior to Android-10) is an option to speak alarms. When driving, instead of hearing an alarm and wondering what it's for, Pimlical/Android speaks the description field (even identifying advance/past-due notices and telling you how many days past-due or in the future they are). Like everything else, it's a preference setting and you can disable that feature if you don't like it. You can also set a custom Action Tag in an event (NoVoiceAlarm) to prevent that event's description from being spoken when the alarm goes off. 

By inserting commas into the preference: AlarmPreamble, you can also delay the spoken text. For example, if you had ',,,,,Calendar Alarm,,,,,,,,' you would see the dialog appear, a pause of several seconds, and then you would hear "Calendar Alarm" , then another pause of several seconds and then the spoken text of the alarm description. It's often a good idea to delay the text of the alarm, so you have a chance to silence it when an alarm goes off at an inconvenient time!

Avoiding Alarms on Reminders

You can avoid having Pimlical trigger alarms on advance reminders by using the Action Tag NoAlarmsOnReminder on the target event. When you include this Action Tag, Pimlical creates the advance reminder event with no alarm on it. The alarm(s) set on the original target event will go off normally.

Avoiding Alarms on Certain Calendars or Categories

The preference NoAlarmsOnTheseCategories allows you to suppress the alarms on any number of specific categories and calendars. Just check the box next to the calendar/category name when modifying this preference setting.

Alarms set on events in the Android calendar

There is a limitation in the built-in Android calendar that alarms must be set at least one minute in advance of the event time and maximum alarm advance is 28 days (a Google Calendar limitation). Also, the Android/Google calendar does not support post-Start Time alarms (i.e. alarms that go off after the start time). There are no such limitations when using Pimlical to manage alarms and the default setting of 1 minute for the alarm time in the dropdown list appears instead as At Event Time.

Avoiding Alarms During Telephone Calls

If you do not want alarms to interfere with telephone calls, set the preference AutoSnoozeDuringPhoneCall to True (the default value is false). When that preference is set, Pimlical will just automatically auto-snooze the event and put its alarm icon in the notification area.

Ensuring Alarms go off even if Do Not Disturb is set in the Android System Settings

By default, if you have Do Not Disturb set in the Android system settings, Pimlical will display its alarm dialog, but not invoke any sound, spoken text or vibration. You can force Pimlical's alarms to sound anyway by setting the preference AlarmsIgnoreDoNotDisturb to True. Note that the Android System DND feature has the ability to filter types of events and that works as expected. However, the "Alarms" filter will not apply to Pimlical if you are using the preference UseRingtoneVolumeForAlarms as Pimlical then uses the Ringtone Stream rather than the Alarm Stream.

Avoiding the Automatic Display of the Alarm Dialog on pre-Android-10 OS systems.

You can avoid having Pimlical automatically display the alarm dialog by setting the preference: UseNotificationWhenAlarmTriggers to True. When this is set to True, Pimlical will then automatically snooze the newly-firing alarm(s) and post a notification instead. When the snooze interval expires, the alarm dialog will be displayed, but you can postpone that effectively indefinitely by setting the preference: AlarmSoundRepeatInterval to a very large value (such as 10 days!).

Special Considerations and Trouble-Shooting (Android-9 and earlier only)

If you hear no alarm sound, go into menu | preferences and select a sound for the two preferences: AlarmDefaultSound (for appointments) and AlarmFloatDefaultSound (for floating events or tasks).

Starting with OS7 or so, it is imperative that Pimlical be white-listed from any power or battery optimizations as the Android OS will just ignore Pimlical's alarms in an attempt to avoid waking up the device - obviously, there's not much point in setting an alarm if the Androiid OS is going to ignore it! To do that, go into the BATTERY section in your Android device's System Settings, and see if there is an App Power Monitor section or some other similarly-named section that allows you to specify that Pimlical is not be subjected to any power-saving attempts. On a Galaxy S8, for example, there is an Unmonitored Apps section that allows you to add Apps that won't be throttled by the OS in an attempt to save power.

You can remove a pending snooze alarm set on an item by using the popup command Remove Snooze Alarm. Or you can remove the alarm on the item as that will also kill any snoozes set on that item. You can also pull down the notification bar, select the entry for Pimlical Alarm and then dismiss/snooze the alarm(s).

Regardless of whether you pick an alarm sound, a notification sound or a ringtone, the volume for the sound is controlled by the Alarm volume setting. Not all Android devices handle this the same way, and some don't handle it properly at all, so you may have to experiment a bit on some oddball Android devices to determine how the volume level of the alarm sound is controlled. 

If you use DirectSync - remember that it's a good habit to launch Pimlical/Android afterwards in case you created a new item AND put an alarm on it AND that alarm is the next alarm to go off. If you don't launch Pimlical/Android, that alarm might not always sound (in theory it should as Pimlical does cater to this issue, but some devices apparently have an OS issue that does not make it 100% reliable).

Pimlical must have been launched since the phone was rebooted in order for alarms to sound. On most Android devices this happens automatically (as Pimlical tells the Android OS to launch it briefly so alarms can be re-posted), but if for some reason when you reboot your phone you do not get alarms to sound, you may need to manually relaunch Pimlical to ensure the alarms appear.

For an alarm to sound, it must be set at least 15 seconds in advance of the minute when it will trigger. Also, alarms will not ring while the Alarm or Snooze dialogs are displayed. So setting up a reasonably short value for the AutoSnooze feature is recommended.

Some Android phones have no setting for controlling the Alarm Volume (Bug? DDD? (Dumb Design Decision). Although the standard Android OS has such a control,  many Samsung phones for example have no control over it. In that case, set the preference: UseRingtoneVolumeForAlarms to true and then you can control the Alarm volume by adjusting the Ringtone Volume.