Se si utilizza UiModeManager per consentire CarMode e modalità NOTTE è impostato su Auto. È possibile ottenere un riferimento al tema corrente utilizzato dichiarando un attributo per cercare in fase di runtime.
attrs.xml
<resources>
<!-- Theme name reference -->
<attr name="metaThemeName" format="string"/>
</resources>
valori-notte /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);
...
Beh, è possibile utilizzare la fotocamera del dispositivo per valutare la leggerezza/oscurità dell'ambiente circostante, in combinazione con la misurazione del tempo necessario per il GPS per ottenere una posizione fissa come suggerimento se l'utente è effettivamente al di fuori ... No, non sto facendo sul serio :) Una soluzione semplice come quella attuale (salvo alcune correzioni ovvie, come usare 'b oolean' e sbarazzarsi di 'if') è molto probabilmente il meglio che si possa ottenere. – Xion
Non c'è un modo per rilevare se il dispositivo è attualmente in NightMode? Vedo che c'è un modo per cambiare la modalità del dispositivo ma non vedo come è possibile leggere la modalità corrente. http://developer.android.com/reference/android/app/UiModeManager.html – OlivierM
Hai trovato una risposta per questo? Sto cercando di risolvere lo stesso problema. UiModeManager non sembra essere molto utile. –