2016-07-14 5 views
1

manipulieren Ich versuche, eine App zu entwickeln, die Benutzer die Wärme des Bildschirms auf App-Basis steuern lassen. Diese Funktion kommt in miui als Lesemodus.Wie man Bildschirm Farbtemperatur in android wie f.lux

Verhalten, das ich zu erreichen versuchen, ist hier vertreten: http://en.miui.com/thread-170033-1-1.html

Ich weiß nicht, was in Android zu verwenden, um das gleiche zu erreichen. Gibt es APIs oder Klassen in Android, die mir helfen können?

+0

Haben Sie es geschafft, dass ein Beispielcode funktioniert? – Guillaume

Antwort

2

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.

+0

Link zu Ihrer App 'ColorChanger App' ist defekt. Wie auch immer, danke für die Antwort. Ist dies der einzige Weg, um das beschriebene Verhalten zu erreichen? – light

+0

Nach meinem Wissen sind dies die einzigen Möglichkeiten, dies auf einer Vielzahl von Geräten zu tun. Samsung Galaxy S-Geräte verfügen über ein MDNIE-System, das viel Farbkontrolle ermöglicht. Ich habe es in meiner Galactic Night App verwendet, aber diese App hat in neueren Modellen nicht funktioniert. Vielleicht könnte aktualisiert werden, aber es gibt zu viele Unterschiede zwischen Modellen, um es wert zu sein, es sei denn, Sie besitzen eines der Modelle und benötigen es selbst. –

Verwandte Themen