我可以更改Android设备的LED强度吗?

时间:2011-05-11 20:26:39

标签: android camera led flashlight camera-flash

有没有办法设置我想要的LED强度?我知道要打开我使用的LED:

     p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
     mycam.setParameters(p);

但是这段代码只是打开了LED。但有没有办法为LED设置不同的强度以获得更强的光线或降低光强度?

5 个答案:

答案 0 :(得分:26)

HTC有一个支持此功能的替代API,但它仅适用于HTC Sense设备,而且从Gingerbread开始,他们已经更改了权限,因此它仅适用于他们的Flashlight应用程序,而不是第三方应用程序(除非您使用root用户)。 / p>

但是在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"来关闭它。

答案 1 :(得分:5)

简短回答是:没有。
更长的答案 - 可能在一些设备上使用非文件呼叫/参数。 支持的闪存模式及其含义(和行为)因设备而异。

您最好的选择是查询支持的闪存模式,并希望它们按预期工作。

答案 2 :(得分:4)

尝试为Camera参数设置不同的Flash模式。

* FLASH_MODE_OFF
* FLASH_MODE_AUTO
* FLASH_MODE_ON
* FLASH_MODE_RED_EYE
* FLASH_MODE_TORCH

您可以使用setFlashMode()方法设置Flash模式。

这只适用于相机背光。但如果你想改变完整的屏幕强度。看看示例here.

答案 3 :(得分:2)

尝试找到此功能的代码:

private native final void native_setParameters(String params);

我相信当你仔细观察时,你会发现这是否可行。

public,似乎不可能

答案 4 :(得分:2)

我在三星Galaxy S3 Mini中试过这个。我没有试过其他设备。

每当我这样做时(当led开启时):

public void changeIntensity()
{
    cam.stopPreview();
    cam.startPreview();
}

LED在3个强度级别之间旋转。它毫无意义,但它确实有效。