Use an automation app like MacroDroid, Tasker, or AutoMate
I use MacroDroid for most things.
There are 2 strategies to detect upcoming meetings:
Detect meeting reminder notifications
In macrodroid:
- Trigger: Notification - from (calendar apps) - anything
- (for outlook, I filter by "\d\d:\d\d.*\d\d:\d\d" to match "09:00 - 10:00"
- If "events seen" variable contains notification text, abort macro
- (this avoids problems with ongoing notifications over-triggering)
- Set variable "events seen" to "events seen" plus notification text
- Set alarm with notificatoin text, plus "#macro"
Specifically watch for calendar events
Most automation apps can detect meetings/events, though it varies how hard it is to do. I found MacroDroid does well at this, with some caveats: you must create one trigger per calendar.
- Use MacroDroid
- Trigger on meetings 5 minutes before they begin.
- Exclude all-day events
- Create a similar trigger for each calendar you want alarms for
- Constraints: (either on the entire macro, or the trigger)
- only during working hours plus buffer (7:00am to 5:30pm)
- Or, only during waking hours (7am to 10pm)
- Action: Check variable with event title [calendar_title]. Abort if it contains words/phrases like "out of office/OOO/paid time off/PTO").
- This would be an abort macro action with an action-level constraint based on variable pattern matching
- Action: Set an alarm 2 minutes in the future with title set to variable [calendar_title]. I found 1 minute ahead sometimes ended up on the next day.
- The drawback of this approach is it always sets alarms the same amount of time before a meeting.
- I usually use an alarm app that slowly increases in volume. AMDroid and Sleep As Android work well. I set them up so that single-occurence alarms auto-delete.