Могу ли я изменить интенсивность светодиодов на устройстве Android?

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

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

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

Ответ 1

У 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" там.

Ответ 2

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

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

Ответ 3

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

* FLASH_MODE_OFF
* FLASH_MODE_AUTO
* FLASH_MODE_ON
* FLASH_MODE_RED_EYE
* FLASH_MODE_TORCH

вы можете установить режим Flash с помощью метода setFlashMode().

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

Ответ 4

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

private native final void native_setParameters(String params);

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

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

Ответ 5

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

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

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

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