Программируем LED на телефоне

Хотя Android API не позволяет напрямую включать-выключать светодиодный индикатор или вспышку фотокамеры, на некоторых телефонах такая возможность имеется.

Как программно помигать разноцветными огоньками, как написать свой «Фонарик» или какими еще светодиодами устройства можно управлять — об этом Вы узнаете ниже.

Началось все с того, что я, исследуя файловую систему своего HTC Desire с помощью ES Проводника, случайно наткнулся на любопытные каталоги: /sys/class/leds/blue, /sys/class/leds/flashlight и т.п.

Какой еще blue?! Я видел только оранжевый и зеленый индикатор. Но самое интересное — внутри этих каталогов оказался файл brightness с правом на запись! Чем я сразу и воспользовался.

На самом деле, это не простой файл, а интерфейс работы с драйвером светодиода. Так, записав в файл /sys/class/leds/blue/brightness положительное число, мы включим синий индикатор на корпусе телефона, записав 0 — выключим. Аналогично с индикаторами amber и green. Включив два светодиода вместе, получим новые цвета:

amber + blue = purple; green + blue = aqua.

А теперь, как это все программируется

public void ledControl(String name, int brightness) {

try {

FileWriter fw = new FileWriter("/sys/class/leds/" + name + "/brightness");

fw.write(Integer.toString(brightness));

fw.close();

} catch (Exception e) {

// Управление LED недоступно

}

}

// Включим пурпурный индикатор

ledControl("amber", 255);

ledControl("blue", 255);

// Сделаем дисплей темнее

ledControl("lcd-backlight", 30);

// Выключим подсветку кнопок

ledControl("button-backlight", 0);

// Организуем фонарик средней яркости

ledControl("flashlight", 128);

Приложение-пример с исходными кодами можно скачать тут.

Заключение

Все! Теперь телефон светится, как новогодняя елка. Код проверялся только на HTC Desire под управлением Android 2.2, но, вероятно, может работать и на других устройствах. Напишите мне, получится или не получится фокус на Вашем телефоне.

http://habrahabr.ru/blogs/android/104627/