Sie müssen mit SurfaceFlinger kommunizieren und eine Farbtransformationsmatrix senden (Transaktion 1015, Token "android.ui.ISurfaceComposer", Daten bestehen aus einer 32-Bit-Ganzzahl, gefolgt von 16 Gleitkommazahlen). Werfen Sie einen Blick in Android-Quellcode für SurfaceFlinger.cpp sowie die Farbe Inversion Code in der system accessibility settings. Auf diese Weise können Sie eine beliebige Farbtransformationsmatrix festlegen. Zumindest mache ich das so in meiner ColorChanger app.
Sie können dann die benutzerdefinierte Farbtransformationsmatrix verwenden, um die Farbtemperatur neu zuzuordnen.
Sofern Sie keine System-Signatur für Ihre App haben, müssen Sie root verwenden und dann entweder nativ mit SurfaceFlinger kommunizieren oder Java-Code starten, der eine gewisse Menge an Reflektion verwendet.
Darüber hinaus funktioniert das nur für Android 5.0 oder höher. Mein ColorChanger hat einen sehr hackigen Weg, um mit 4.4 zu arbeiten, aber vertrau mir, du willst nicht dorthin gehen (ich tat es, weil ich nur ein 4.4-Gerät hatte, als ich es schrieb).
Alternativ können Sie noch etwas niedrigeres Zeug wie CF.lumen tun. Ich denke Chainfire schreibt Teile des Bildschirmtreibers neu. Ich bin mir nicht sicher, ob das funktioniert, wenn Sie keinen Schreibzugriff auf/system haben.
Haben Sie es geschafft, dass ein Beispielcode funktioniert? – Guillaume