Есть несколько слоев, где можно манипулировать цветами.
SurfaceFlinger
. Этот компонент является общим для всех систем Android. В него можно передать собственную цветовую матрицу (см. исходный код обработчика этого запроса ), например, с помощью следующей команды, выполняемой как пользователь root
:
service call SurfaceFlinger 1015 i32 1 \
f 0 f 0 f 1 f 0 \
f 0 f 1 f 0 f 0 \
f 1 f 0 f 0 f 0 \
f 0 f 0 f 0 f 1
Приведенный выше пример команды устанавливает матрицу, которая, действуя на векторы RGBA, меняет красный и синий каналы. Чтобы сбросить пользовательскую матрицу по умолчанию (идентичность), вы можете просто сделать
service call SurfaceFlinger 1015 i32 0
Вы можете сделать все это из приложения Java / JNI без привилегий root, просто попросив разрешения, я не исследовал это.
- mDN Ie, что означает мобильный движок Digital Natural Image . Это специфицированная Samsung c система, которая работает на более низком уровне, чем
SurfaceFlinger
. А именно, это влияет на Always On Display, на который пользовательская цветовая матрица SurfaceFlinger
не оказывает никакого влияния.
Текущий режим экрана можно увидеть в файле /sys/class/mdnie/mdnie/mode
, который, как представляется, имеет следующее отображение значений на Galaxy A320F / DS: 0
- кинотеатр AMOLED, 1
- фото AMOLED, 2
- Basi c, 3
- (не знаю его назначение, но значение принимается, если записано в mode
) 4
- Адаптивный дисплей. 5
- (не знаю его назначение, но значение принимается, если записано в mode
)
Более того, Cool * 1050 также влияет на цвета * - Теплый ползунок , а также Дополнительные параметры Настройки RGB на канал. Изменения в первом так или иначе отражаются в файлах mdnie_ldu
и sensorRGB
в том же каталоге, в то время как последний напрямую соответствует файлу whiteRGB
.
Кроме того, Фильтр синего света состояние отражается в файле night_mode
(оно также влияет на файлы mdnie_ldu
и sensorRGB
, упомянутые выше).
Из файлов, описанных выше, только mode
доступно для чтения не root
пользователь.