diff options
5 files changed, 24 insertions, 1 deletions
diff --git a/api/lineage_current.txt b/api/lineage_current.txt index 41aa62fb..35620dbe 100644 --- a/api/lineage_current.txt +++ b/api/lineage_current.txt @@ -279,6 +279,7 @@ package lineageos.hardware { method public boolean setMode(int); method public boolean setNightColorTemperature(int); method public boolean setPictureAdjustment(lineageos.hardware.HSIC); + method public boolean isNightModeEnabled(); field public static final int ADJUSTMENT_CONTRAST = 3; // 0x3 field public static final int ADJUSTMENT_HUE = 0; // 0x0 field public static final int ADJUSTMENT_INTENSITY = 2; // 0x2 diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java b/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java index 37575d2e..d3279430 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java @@ -143,7 +143,7 @@ public abstract class LiveDisplayFeature { return mState.mTwilight; } - protected final boolean isNight() { + public final boolean isNight() { return mState.mTwilight != null && mState.mTwilight.isNight(); } diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayService.java b/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayService.java index 52816a73..bc8f2ec3 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayService.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayService.java @@ -370,6 +370,12 @@ public class LiveDisplayService extends LineageSystemService { mFeatures.get(i).dump(pw); } } + + @Override + public boolean isNight() { + final TwilightState twilight = mTwilightTracker.getCurrentState(); + return twilight != null && twilight.isNight(); + } }; // Listener for screen on/off events diff --git a/sdk/src/java/lineageos/hardware/ILiveDisplayService.aidl b/sdk/src/java/lineageos/hardware/ILiveDisplayService.aidl index a9a766d9..f864ea8c 100644 --- a/sdk/src/java/lineageos/hardware/ILiveDisplayService.aidl +++ b/sdk/src/java/lineageos/hardware/ILiveDisplayService.aidl @@ -52,4 +52,5 @@ interface ILiveDisplayService { HSIC getPictureAdjustment(); HSIC getDefaultPictureAdjustment(); boolean setPictureAdjustment(in HSIC adj); + boolean isNight(); } diff --git a/sdk/src/java/lineageos/hardware/LiveDisplayManager.java b/sdk/src/java/lineageos/hardware/LiveDisplayManager.java index 2ad650ce..eb7a5753 100644 --- a/sdk/src/java/lineageos/hardware/LiveDisplayManager.java +++ b/sdk/src/java/lineageos/hardware/LiveDisplayManager.java @@ -482,4 +482,19 @@ public class LiveDisplayManager { } return null; } + + /** + * Determine whether night mode is enabled (be it automatic or manual) + */ + public boolean isNightModeEnabled() { + // This method might be called before config has been set up + // so a NPE would have been thrown, just report night mode is disabled instead + try { + return getMode() == MODE_NIGHT || sService.isNight(); + } catch (NullPointerException e) { + Log.w(TAG, "Can\'t check whether night mode is enabled because the service isn\'t ready"); + } catch (RemoteException ignored) { + } + return false; + } } |