aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/lineage_current.txt1
-rw-r--r--lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java2
-rw-r--r--lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayService.java6
-rw-r--r--sdk/src/java/lineageos/hardware/ILiveDisplayService.aidl1
-rw-r--r--sdk/src/java/lineageos/hardware/LiveDisplayManager.java15
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;
+ }
}