我想以编程方式更改系统亮度.为此我使用此代码:
WindowManager.LayoutParams lp = window.getAttributes();
lp.screenBrightness = (255);
window.setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)
因为我听说最大值是255.
但它什么都没做.请建议任何可以改变亮度的东西.谢谢
我想在android中以编程方式更改屏幕亮度.目前我使用此代码:
WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)
但是这个示例代码适用于蛋糕,而不是最新版本.我使用的是最新版本的SDK.对于较新的Android版本,首选解决方案是什么?
我试图从小部件设置屏幕亮度.我们知道这很容易实现,因为大量的小部件已经这样做,但是如何......
在我从小部件调用的服务中,我这样做来设置亮度:
Settings.System.putInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 200);
Run Code Online (Sandbox Code Playgroud)
除非它不"刷新"屏幕以应用新设置,否则效果很好.关闭和打开屏幕会刷新显示设置,因此我们知道代码有效.
我还在几个网站上看到这样的东西会刷新屏幕,但我们不能使用它,因为我们在一个小部件中.窗口小部件活动和服务不能使用getWindow.
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100 / 100.0f;
getWindow().setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)
除了Beautiful Widgets,Power control,Extended controls等所有这些小工具还有什么用呢?
更新:另一张海报建议启动空活动并执行WindowManager刷新.这样可行,但它会在一秒钟内出现一个丑陋的黑屏.由于其他小部件不这样做,必须有一种方法来防止丑陋的空白黑屏显示.
我需要以编程方式更改屏幕亮度.我读过这样的多个解决方案无法在Android中以编程方式应用系统屏幕亮度.
我的问题是,这些解决方案意味着将活动更改为有效(有一个虚拟活动立即完成),我想避免活动开关的开销.
有没有其他解决方案...可能使用本机代码,以便屏幕亮度会立即改变?
谁知道为什么这段代码没有降低我的应用程序的背光?
Context context = this;
Settings.System.putInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, 255);
Run Code Online (Sandbox Code Playgroud) 目前,我正在使用下面的代码来获取当前的屏幕亮度
...
// for HTC Nexus One and HTC Desire
String cmd = "cat /sys/class/leds/lcd-backlight/brightness";
java.lang.Process p = Runtime.getRuntime().exec(cmd);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()),cmd.length());
...
Run Code Online (Sandbox Code Playgroud)
当我用来获得HTC设备(Nexus One,Desire)的亮度时,这没关系.但是当在三星Galaxy S上运行此代码时,此代码无效,因为"cmd"中的路径在此设备上是错误的.问题是我没有三星Galaxy S来找出正确的亮度路径.那么请你告诉我三星Galaxy S设备的正确路径或其他方法来完成这项任务!谢谢,