Программируем 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/