1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5  * except in compliance with the License. You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the
10  * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11  * KIND, either express or implied. See the License for the specific language governing
12  * permissions and limitations under the License.
13  */
14 
15 package com.android.systemui.statusbar.policy;
16 
17 import com.android.systemui.statusbar.policy.KeyguardMonitor.Callback;
18 
19 public interface KeyguardMonitor extends CallbackController<Callback> {
20 
isSecure()21     boolean isSecure();
isShowing()22     boolean isShowing();
isOccluded()23     boolean isOccluded();
isKeyguardFadingAway()24     boolean isKeyguardFadingAway();
isKeyguardGoingAway()25     boolean isKeyguardGoingAway();
isLaunchTransitionFadingAway()26     boolean isLaunchTransitionFadingAway();
getKeyguardFadingAwayDuration()27     long getKeyguardFadingAwayDuration();
getKeyguardFadingAwayDelay()28     long getKeyguardFadingAwayDelay();
calculateGoingToFullShadeDelay()29     long calculateGoingToFullShadeDelay();
30 
31     /**
32      * @return a shortened fading away duration similar to
33      * {{@link #getKeyguardFadingAwayDuration()}} which may only span half of the duration, unless
34      * we're bypassing
35      */
getShortenedFadingAwayDuration()36     default long getShortenedFadingAwayDuration() {
37         if (isBypassFadingAnimation()) {
38             return getKeyguardFadingAwayDuration();
39         } else {
40             return getKeyguardFadingAwayDuration() / 2;
41         }
42     }
43 
isDeviceInteractive()44     default boolean isDeviceInteractive() {
45         return false;
46     }
47 
setLaunchTransitionFadingAway(boolean b)48     default void setLaunchTransitionFadingAway(boolean b) {
49     }
50 
notifyKeyguardGoingAway(boolean b)51     default void notifyKeyguardGoingAway(boolean b) {
52     }
53 
54     /**
55      * @return {@code true} if the current fading away animation is the fast bypass fading.
56      */
isBypassFadingAnimation()57     default boolean isBypassFadingAnimation() {
58         return false;
59     }
60 
61     /**
62      * Notifies that the Keyguard is fading away with the specified timings.
63      * @param delay the precalculated animation delay in milliseconds
64      * @param fadeoutDuration the duration of the exit animation, in milliseconds
65      * @param isBypassFading is this a fading away animation while bypassing
66      */
notifyKeyguardFadingAway(long delay, long fadeoutDuration, boolean isBypassFading)67     default void notifyKeyguardFadingAway(long delay, long fadeoutDuration,
68             boolean isBypassFading) {
69     }
70 
notifyKeyguardDoneFading()71     default void notifyKeyguardDoneFading() {
72     }
73 
notifyKeyguardState(boolean showing, boolean methodSecure, boolean occluded)74     default void notifyKeyguardState(boolean showing, boolean methodSecure, boolean occluded) {
75     }
76 
77     interface Callback {
onKeyguardShowingChanged()78         default void onKeyguardShowingChanged() {}
onKeyguardFadingAwayChanged()79         default void onKeyguardFadingAwayChanged() {}
80     }
81 }
82