我可以更改 Android 设备的 LED 强度吗?
Posted
技术标签:
【中文标题】我可以更改 Android 设备的 LED 强度吗?【英文标题】:Can I change the LED intensity of an Android device? 【发布时间】:2011-08-23 15:12:47 【问题描述】:有没有办法设置我想要的 LED 强度?我知道要打开我使用的 LED:
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mycam.setParameters(p);
但是这段代码只是打开了 LED。但是有没有办法为 LED 设置不同的强度以获得更强的光或降低光强度?
【问题讨论】:
我不这么认为,但我不确定。如果是这样,它肯定不会在所有设备上运行。您也可以考虑删除 [flash] 标签,因为它是针对 Adobe flash 的,有人可能会期待与此相关的问题。 我的 HTC Evo 带有一个使用 LED“闪光灯”的“手电筒”功能,并具有三种不同的亮度设置。也像冠军一样工作。所以必须有 some 方法来做到这一点。由于它是一个内置应用程序,我想它可能是特定于设备的。 希望我的回答能帮到你。 【参考方案1】:HTC 有一个支持此功能的替代 API,但它仅适用于 HTC Sense 设备,并且从 Gingerbread 开始,他们已更改权限,因此仅适用于他们的 Flashlight 应用程序,而不适用于第三方应用程序(除非您使用 root)。
但在 2.2 HTC 设备上,您可以通过将字符串写入/sys/devices/platform/flashlight.0/leds/flashlight/brightness
来使用它。这控制 LED 是否打开以及它的亮度。最大亮度写"128\n"
,半亮度写"64\n"
。易于从 adb shell 进行测试:
echo "128" > /sys/devices/platform/flashlight.0/leds/flashlight/brightness
最后通过在此处写入"0\n"
将其关闭。
【讨论】:
谢谢@Kevin TeslaCoil .. 我明白了你所说的。但不知道如何实现它。您能提供与此相关的指南或教程吗? 到目前为止我得到了code.google.com/p/quick-settings/source/browse/trunk/… ..... 快速设置,很酷。我认为您只是缺少 \n 部分。这是我用于 TeslaLED teslacoilsw.com/tmp/SysDevicesLED.java 是否有可以通过写入 sysfs 来更改的概览? 这篇文章写于 3 年前。有更新吗?【参考方案2】:简短的回答是:不。 更长的答案 - 可能在某些使用 undocumenterd 调用/参数的设备上。 支持的 Flash 模式及其含义(和行为)因设备而异。
您最好的选择是查询支持的闪存模式,并希望它们按预期工作。
【讨论】:
【参考方案3】:尝试为相机参数设置不同的闪光模式。
* FLASH_MODE_OFF
* FLASH_MODE_AUTO
* FLASH_MODE_ON
* FLASH_MODE_RED_EYE
* FLASH_MODE_TORCH
您可以使用 setFlashMode() 方法设置 Flash 模式。
这只是用于相机背光。但如果你想改变完整的屏幕强度。看看例子here.
【讨论】:
【参考方案4】:尝试查找该函数的代码:
private native final void native_setParameters(String params);
相信你看完之后就会知道这是否可行。
看public
s,好像不可能
【讨论】:
【参考方案5】:我已经在我的三星 Galaxy S3 Mini 中尝试过这个。我没有在其他设备上尝试过。
每当我这样做时(当 LED 亮起时):
public void changeIntensity()
cam.stopPreview();
cam.startPreview();
LED 在 3 个强度级别之间旋转。这没有任何意义,但它确实有效。
【讨论】:
以上是关于我可以更改 Android 设备的 LED 强度吗?的主要内容,如果未能解决你的问题,请参考以下文章