我能改变安卓设备的LED强度吗?

37

有没有一种方法可以设置我想要的LED亮度?我知道要打开LED,我要使用:

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

但是这段代码只能打开LED灯。是否有一种方法可以为LED灯设置不同的亮度,以便获得更强的光或减少光的强度?


我不确定,但我认为不会。如果是这样的话,它肯定不能在所有设备上运行。您还可以考虑删除 [flash] 标签,因为它是用于 Adobe Flash 的,有些人可能会期望问题与此相关。 - FoamyGuy
2
我的HTC Evo带有一个“手电筒”功能,使用LED“闪光灯”,并具有三个不同的亮度设置。这个功能非常好用。因此一定有方法可以做到。由于它是一个内置应用程序,所以可能是设备特定的。 - T.E.D.
希望我的回答能够帮助到你。 - N-JOY
6个回答

27

HTC有一种替代API支持此功能,但它只适用于HTC Sense设备,并且从Gingerbread开始,它们更改了权限,因此仅适用于其手电筒应用程序,而不是第三方应用程序(除非您使用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。我明白你说的了。但是我不知道如何实现它。你能否提供相关的指南或教程? - Kartik Domadiya
快速设置,很酷。我认为你只是缺少了\n部分。这是我在TeslaLED中使用的代码http://teslacoilsw.com/tmp/SysDevicesLED.java - Kevin TeslaCoil
3
有没有一个概述可以列出写入sysfs可以改变哪些东西? - Pierre Barbera
谢谢你的回答。但是我在我的HTC手机上使用TinyFlashLight(https://play.google.com/store/apps/details?id=com.devuni.flashlight),它可以在没有root的情况下调节手电筒的亮度。所以你能告诉我如何做吗? - VAdaihiep
3
这篇文章是3年前写的,有没有更新? - nkint
显示剩余2条评论

5

简短回答是:不可以。
更长的回答是:在某些设备上,可能会使用未记录的调用/参数来实现该功能。不同设备支持的闪光模式及其含义(和行为)也各不相同。

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


4

尝试设置相机参数可用的不同闪光模式。

* FLASH_MODE_OFF
* FLASH_MODE_AUTO
* FLASH_MODE_ON
* FLASH_MODE_RED_EYE
* FLASH_MODE_TORCH

你可以使用setFlashMode()方法设置闪光灯模式。这仅适用于相机背光。但如果你想改变整个屏幕的亮度,请查看此处的示例。

2

试图找到此函数的代码:

private native final void native_setParameters(String params);

当您查看它时,我相信您会发现是否可能。

看起来似乎不可能,考虑到这些 public


2
我尝试在我的三星Galaxy S3 Mini上进行了此操作,但我没有在其他设备上尝试过。
每当我这样做(当LED灯亮起时):
public void changeIntensity()
{
    cam.stopPreview();
    cam.startPreview();
}

LED灯可以在3个不同的亮度级别之间旋转。虽然看起来没有什么意义,但它确实有效。


0

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