public static void setAlarmClock(@NonNull AlarmManager alarmManager, long triggerTime,
                                     @NonNull PendingIntent showIntent, @NonNull PendingIntent operation) {
        if (Build.VERSION.SDK_INT >= 21) {
            alarmManager.setAlarmClock(new AlarmManager.AlarmClockInfo(triggerTime, showIntent),
                    operation);
        } else {
            AlarmManagerCompat.setExact(alarmManager, AlarmManager.RTC_WAKEUP, triggerTime,
                    operation);
        }
    }
Schedule an alarm that represents an alarm clock.
<p>
The system may choose to display information about this alarm to the user.

<p>
This method is like {@link #setExact}, but implies
{@link AlarmManager#RTC_WAKEUP}.

@param alarmManager AlarmManager instance used to set the alarm
@param triggerTime  time at which the underlying alarm is triggered in wall time
                    milliseconds since the epoch
@param showIntent   an intent that can be used to show or edit details of
                    the alarm clock.
@param operation    Action to perform when the alarm goes off;
                    typically comes from {@link PendingIntent#getBroadcast
                    IntentSender.getBroadcast()}.
@see AlarmManager#set
@see AlarmManager#setRepeating
@see AlarmManager#setWindow
@see #setExact
@see AlarmManager#cancel
@see AlarmManager#getNextAlarmClock()
@see android.content.Context#sendBroadcast
@see android.content.Context#registerReceiver
@see android.content.Intent#filterEquals
android/android_framework/base/src/main/java/github/tornaco/android/thanos/core/compat/AlarmManagerCompat.java