gpt4 book ai didi

android - 在 Android 中设置亮度 - 到目前为止没有任何效果

转载 作者:行者123 更新时间:2023-11-29 00:40:37 25 4
gpt4 key购买 nike

您好,我尝试了网络上和 SO 中的所有解决方案,但没有任何效果。我有一个叠加层(服务),当您单击触发器时它会全屏弹出。在叠加层上,我放置了一些快捷方式、音量控制和亮度控制。关键是无论我做什么,亮度都不会立即改变屏幕(我需要关闭和打开屏幕)。

这就是我在更新亮度 slider 时所说的:

@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {

int value = (int)(arg1*255.0/100);
int V=-1;
try {
V=android.provider.Settings.System.getInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS);
} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("V="+V+"brightness="+value);
//android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, value);
android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
// Intent intent= new Intent(getContext(), Bright.class);
// Bundle b=new Bundle();
// b.putFloat("lvl", (float)(arg1*0.01));
// intent.putExtras(b);
// //intent.putExtra("lvl", (float)(arg1*0.01));
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// getContext().startActivity(intent);
}
});

如果您关闭屏幕然后再打开它会起作用,否则不会起作用。由于该类是一个服务(没有可用的 getWindow()),我还尝试了生成一个调用代码的假 Activity 的技巧(也可以在网络上找到)

WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness=0.9f;
getWindow().setAttributes(lp);

不幸的是,上述解决方案似乎都不适用于我的情况。 WindowManager 似乎什么都不做。可能这是我的应用程序的实现方式(系统覆盖而不是“经典”窗口)

无论如何,当我在后台打开“设置”>“亮度”窗口时,我突然注意到 slider 开始工作。这样 slider 就可以通过设置两条线直接控制系统亮度

android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, 值); android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

所以这意味着当后台发生“某些过程”时,亮度调节非常容易(应该如此!)。任何人都可以帮助我尝试了解如何获得相同的效果吗?我可以简单地用命令行启动亮度窗口(如果我知道怎么做的话),但我显然想要一个更微妙的解决方案。

请告诉我你的想法。

干杯

埃马努埃莱

最佳答案

使用这个,它应该可以工作:

final WindowManager.LayoutParams window_params=getWindow().getAttributes();
window_params.screenBrightness=1f;
getWindow().setAttributes(window_params);

屏幕亮度介于 0.0f 和 1.0f 之间。

//抱歉,我注意到您已经尝试过此代码。我没有使用过叠加应用,因此无法在这方面为您提供帮助。

关于android - 在 Android 中设置亮度 - 到目前为止没有任何效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9606616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com