Si está utilizando UiModeManager para permitir CarMode y el modo NOCHE se define en AUTO. Puede obtener una referencia al tema actual utilizado al declarar un atributo para buscar en el tiempo de ejecución.
attrs.xml
<resources>
<!-- Theme name reference -->
<attr name="metaThemeName" format="string"/>
</resources>
valores-noche /themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
<item name="metaThemeName">night</item>
</style>
</resources>
java.class
...
TypedValue outValue = new TypedValue();
getTheme().resolveAttribute(R.attr.metaThemeName, outValue, true);
boolean isNight="night".equals(outValue.string);
...
Bueno, se podría usar la cámara del dispositivo para evaluar la claridad/oscuridad del entorno, combinado con la medición del tiempo que le toma al GPS obtener una corrección de ubicación como una pista sobre si el usuario está realmente afuera ... No, no estoy hablando en serio :) Una solución simple como la actual (barra algunos arreglos obvios, como usar 'b oolean' y deshacerse de 'if') es lo más probable que pueda obtener. – Xion
¿No hay una forma de detectar si el dispositivo está actualmente en modo nocturno? Veo que hay una manera de cambiar el modo del dispositivo, pero no veo cómo se puede leer el modo actual. http://developer.android.com/reference/android/app/UiModeManager.html – OlivierM
¿Encontró una respuesta para esto? Estoy tratando de resolver el mismo problema. UiModeManager no parece ser muy útil. –