安卓手机 - 关闭硬件按键灯

4

在我的应用程序中,我需要一种方法来通过编程方式关闭标准Android手机键(主页、菜单、返回和搜索)上的灯光 - 我该如何实现?

2个回答

2
根据this page,硬件键盘背光可以通过以超级用户权限(即手机必须“rooted”)写入文件系统中的特定文件来进行控制:
问:我如何控制键盘背光?
答:键盘背光可以通过/sys/class/leds/keyboard-backlight/brightness进行控制。它似乎是一个简单的开关控制(回显“0”将其关闭,回显“1”或更高将其打开)。由于某种原因,默认的系统背光控制工具似乎将其设置为“83”,但我不知道为什么。我似乎看不出83和任何其他数字之间的区别。该文件可被任何人读取,但只能被root编写,因此您需要访问手机的root权限以这种方式操纵它。
因此,要通过程序关闭背光,您可以在运行时上调用exec(),如下所示:
Runtime r = Runtime.getRuntime();
r.exec("echo 0 > /system/class/leds/keyboard-backlight/brightness");

根据你所做的事情而定,但最好在执行exec()后检查结果,以查看是否发生写入错误。
注意:我在自己的手机上测试过了,似乎可以正常工作而不必作为root。然而,在每个手机上情况可能不同,所以你可能会得到不同的结果。

一些图像将sys挂载在/sys上,这将使路径变为/sys/class/leds/button-backlight/brightness - 这在Elephone P5000上有效。 - Ján Sáreník
1
抱歉,现在我注意到路径在答案的引用部分中提到了。对于重复性造成的困扰,我感到非常抱歉。 - Ján Sáreník

1
This is applicable only for the device samsung devices:

To get the BackLight sate:
int backLight = Settings.System.getInt(getContentResolver(), "button_key_light");
// if it return -1 it means that light is on
// if it return 0 the light is off
// some time it will return values like 600(1.5 sec)
if you want to put the backLight as off u can do like this

Settings.System.putInt(getApplicationContext().getContentResolver(), "button_key_light", 0);

当我尝试使用putInt时,出现了以下异常:java.lang.IllegalArgumentException: 无法将设置保存在安全设置中。 - Rosenpin
在拥有背光功能的三星设备中,它具有名为“button_key_light”的系统变量,-1表示“开启”,0表示“关闭”。 - KomalG
我明白了,但是你设置它们的代码引发了异常并且不起作用,至少在我测试的设备上(Galaxy S7)是这样。 - Rosenpin
1
尝试使用以下命令: adb shell settings put system "button_key_light" -1 - KomalG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接