我可以更改 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] 标签,因为它是针对 Adob​​e 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);

相信你看完之后就会知道这是否可行。

publics,好像不可能

【讨论】:

【参考方案5】:

我已经在我的三星 Galaxy S3 Mini 中尝试过这个。我没有在其他设备上尝试过。

每当我这样做时(当 LED 亮起时):

public void changeIntensity()

    cam.stopPreview();
    cam.startPreview();

LED 在 3 个强度级别之间旋转。这没有任何意义,但它确实有效。

【讨论】:

以上是关于我可以更改 Android 设备的 LED 强度吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中使用磁力计查找磁场强度

如何检查设备是不是有闪光灯 LED android

Android驱动开发第七章

无法在 Android 上更改单选按钮颜色

如何使用蓝牙信号强度计算两个安卓设备之间的距离?

在设备上更改时间 => 在游戏中作弊