Controle de luz de fundo do processo de ativação

Este artigo é baseado na análise de código da plataforma rk3128;

O processo de controle da luz de fundo no processo de ativação é o seguinte:

1、frameworks/base/services/core/java/com/android/server/display/DisplayPowerController.java

final privado LightsManager mLights

mLights = LocalServices.getService(LightsManager.class); //ServidorLightServer

mPowerState = new DisplayPowerState(mBlanker,
                mLights.getLight(LightsManager.LIGHT_ID_BACKLIGHT ) ,
                new ColorFade(Display.DEFAULT_DISPLAY)); \\Obter instância lightserver e inicializar estrutura DisplayPowerState

mPowerState.setScreenState(state); //Chama o método na instância DisplayPowerState para controlar o brilho

PS: LightServer também fornece outro controle de luz, o seguinte é um exemplo

mButtonLight = mLights.getLight(LightsManager.LIGHT_ID_BUTTONS);

mButtonLight.setBrightness(0);
 

2.frameworks/base/services/core/java/com/android/server/display/DisplayPowerState.java

 /**
127 * Define se a tela está ligada, desligada ou cochilando.
128 */
129 public void setScreenState(int state) { 130 if (mScreenState != state) { 131 if (DEBUG) { 132 Slog.d(TAG, "setScreenState: state=" + state); 133 } 134  135 mScreenState = estado; 136 mScreenReady = falso; 137 agendaTelaAtualização(); 138 } 139 }









De acordo com os diferentes status da tela, o método de configuração automática da troca de tela, incluindo a configuração de brilho, etc., este artigo se concentra apenas na configuração de brilho;

Após atualizar o estado do mScreenState aqui, realize uma série de configurações através do método scheduleScreenUpdate;

Chamada final: mBacklight.setBrightness(backlight); set // mBacklight é a instância Light obtida acima de mLights.getLight( LightsManager.LIGHT_ID_BACKLIGHT )

3.frameworks/base/services/core/java/com/android/server/lights/LightsService.java

A segunda parte chama a classe interna private final class LightImpl estende Light neste documento

public void setBrightness(brilho int);

Por fim, chame a camada jni:

setLight_native(mNativePointer, mId, cor, modo, onMS, offMS, brilhoMode);

4.frameworks/base/services/core/jni/com_android_server_lights_LightsService.cpp

Obtenha módulos relacionados através de hw_get_module( LIGHTS_HARDWARE_MODULE_ID , (hw_module_t const**)&module);

Finalmente, chame a interface devices->lights[light]->set_light(devices->lights[light], &state); da camada hal para definir a luz de fundo;

5. hardware/rockchip/liblights/lights.cpp (Rockchip private hal, procure por LIGHTS_HARDWARE_MODULE_ID )

Verifique o código correspondente e, finalmente, chame write_int(BACKLIGHT_PATH, brilho); grave no arquivo de luz de fundo em sysfs para configuração;

BACKLIGHT_PATH定义:#define BACKLIGHT_PATH "/sys/class/backlight/rk28_bl/brightness"

6. Em seguida, digite o driver do kernel, para continuar


---------------------
Autor: lzpdz
Fonte: CSDN
Original: https://blog.csdn.net/lzpdz/article/details/52274759
Declaração de direitos autorais: Esta artigo Artigo original do autor, anexe o link da postagem do blog para reimpressão!
Análise de conteúdo Por: CSDN, CNBLOG postagem no blog plug-in de reimpressão com um clique

Acho que você gosta

Origin blog.csdn.net/xiaowang_lj/article/details/132173631
Recomendado
Clasificación