Могу ли я изменить интенсивность светодиодов на устройстве Android? - PullRequest
35 голосов
/ 12 мая 2011

Есть ли способ установить желаемую интенсивность светодиодов?Я знаю, что для включения светодиода я использую:

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

Но этот код просто включает светодиод.Но есть ли способ установить различные интенсивности светодиодов для более яркого освещения или уменьшения интенсивности света?

Ответы [ 5 ]

26 голосов
/ 05 августа 2011

HTC имеет альтернативный API, который поддерживает это, однако он доступен только для устройств HTC Sense, и с Gingerbread они изменили разрешения, поэтому они предназначены только для приложения Flashlight, а не сторонних (если вы не используете root).

Но на 2.2 устройствах HTC вы можете использовать его, записав строку в /sys/devices/platform/flashlight.0/leds/flashlight/brightness. Это контролирует, включен ли светодиод и насколько он яркий. Для максимальной яркости пишите "128\n", наполовину яркость пишите "64\n". Легко проверить из оболочки adb:

echo "128" > /sys/devices/platform/flashlight.0/leds/flashlight/brightness

И, наконец, выключите его, написав "0\n" там.

5 голосов
/ 05 августа 2011

Краткий ответ: НЕТ.
Более длинный ответ - возможно, на некоторых устройствах, использующих недокументированные вызовы / параметры. Поддерживаемые режимы вспышки и их значения (и поведение) различаются в зависимости от устройства.

Лучший вариант - запросить поддерживаемые режимы флэш-памяти и надеяться, что они будут работать по назначению.

4 голосов
/ 02 августа 2011

Попробуйте установить различные режимы вспышки, доступные для параметров камеры.

* FLASH_MODE_OFF
* FLASH_MODE_AUTO
* FLASH_MODE_ON
* FLASH_MODE_RED_EYE
* FLASH_MODE_TORCH

Вы можете установить режим Flash, используя метод setFlashMode ().

Это было только для подсветки камеры.но если вы хотите изменить полную интенсивность экрана.посмотрите на пример здесь.

2 голосов
/ 06 декабря 2013

Я пробовал это в моем Samsung Galaxy S3 Mini.Я не пробовал на других устройствах.

Всякий раз, когда я делаю это (когда светодиод включен):

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

Светодиод вращается между 3 уровнями интенсивности.Это не имеет смысла, но это работает.

2 голосов
/ 05 августа 2011

Попробуйте найти код этой функции:

private native final void native_setParameters(String params);

Я полагаю, что вы узнаете, возможно ли это, когда вы посмотрите через него.

Глядя на public с, кажется невозможным

...