Mise à jour Luminosité de l'écran sur Android après la modification par programme
-
09-10-2019 - |
Question
Je suis en train de mettre à jour la luminosité de l'écran à partir d'un widget, mais j'ai quelques problèmes.
Pour modifier le niveau de luminosité, j'utilise:
Settings.System.putInt(context.getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, 200);
modifie le réglage d'affichage de (en fait dans Display-> Luminosité le niveau est correct), mais la luminosité efficace de l'affichage ne change pas. Si je verrouille l'écran et déverrouillage, la luminosité change enfin à la valeur de consigne i.
Je suppose que cela est un problème de mise à jour des paramètres, donc comment les paramètres d'affichage mis à jour immédiatement après le changement des paramètres?
Je lis que WindowManager.LayoutParams lp = getWindow().getAttributes();
doit être utilisé, mais je travaille dans un Widget App si getWindow () ne peut pas être appelé.
La solution
J'ai eu un problème similaire et juste créé une activité sans interface utilisateur pour faire le changement de luminosité, utilisé l'intention de l'exécuter à partir du widget App.
Autres conseils
En premier lieu, la valeur à modifier dans LayoutParams est screenBrightness . Vous devrez alors faire window.setAttributes pour l'appliquer. Comme geekyouup dit, vous pouvez faire une activité factice pour obtenir votre objet fenêtre.
Peut-on utiliser ce code dans votre RemoteView,
Settings.System.putInt(context.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);
// This makes the new screen brightness effective
WindowManager.LayoutParams layoutParams = ((Activity)context).getWindow().getAttributes();
float b = brightness/255.0f;
if(b == 0.0)
b = 0.01f;
layoutParams.screenBrightness = b;
((Activity)context).getWindow().setAttributes(layoutParams);
Ce code bien fonctionne lorsque vous réglez la luminosité de l'écran du téléphone à l'intérieur d'une classe définie par l'utilisateur qui est ne pas étendre une activité , mais vous ne devez le contexte.