Диоды aka Leds
Надо искать, в штатном 2.2 или гуглить, как диоды вообще прикручиваются в <range type="comment" id="129830">Андроиде</range id="129830">.
- Скорее всего нам будет нужен демон или либа которая слушает системные события и по ним дергает диоды
- Надо искать похожую в которую можно внести нужные изменения
- Писать свою, нужен программер
P.S В 2.2 диоды прикручиваются через liblights, которая в оригинале через sysfs управляет диодами по разным событиям. Пример, как реализовано, можно посмотреть у HTC HD2 в репе cm7. В этой либе существуют отдельно для батарейки\уведомлений\питания\вайфая и всего-всего события для отлавливания
а через /sys/class бла бла бла нельзя?
- liblights в htc leo дает массу полезной инфы https://github.com/CyanogenMod/android_device_htc_leo/blob/gingerbread/liblights/lights.c
- Собрать сюда инфу по нашим диодам что где дергать в sysfs и можно будет прикрутить по аналогии
- работают при записи значений от 1 до 8 включительно в файл /sys/class/nvec-led/brightness, при записи значения 0 выключаются
- Режимы примерно такие:
- работают при записи значений от 1 до 8 включительно в файл /sys/class/nvec-led/brightness, при записи значения 0 выключаются
1 - одно стандартное моргание с коротким интервалом, 2 - одно стандартное моргание с длинным интервалом, 3 - два стандартных моргания с коротким интервалом, 4 - два стандартных моргания с длинным интервалом, 5 - одно быстрое моргание с коротким интервалом, 6 - одно быстрое моргание с длинным интервалом, 7 - два быстрых моргания с коротким интревалом, 8 - два быстрых моргания с длинным интервалом
' придумать к каким системным событиям привязать какие моргания ( <range type="comment" id="872665">а известно как сказать андроиду что ему надо когда то моргать?</range id="872665"> )
- ну только теоритически известно что в liblights можно обыгровать события и по ним дергать лампочки, но как чего делать точно нужно разбираться, но общий смысл такой:
завести переменные включения лампочек с прописыванием нужных значений в <range type="comment" id="779141">/sys/class/nvec-led/brightness</range id="779141"> и выключению и функцию нотификации которая по определенному ивенту включает их или выключает.
На заметку: http://www.kandroid.org/online-pdk/guide/lights.html
Попытка завести мигалки на АС-100:
Notification.java
Класс реализации стандартных уведомлений;
- FLAG_SHOW_LIGHTS - константа, переопределяющая мигалки по-умолчанию;
- ledARGB - целочисленная переменная для задания цвета. Поскольку у нас цветов нет, использовать не будем;
- ledOnMS, ledOffMS - переменные управляющие мерцанием, либо работой светодиодов.
Из документации:
- To turn the LED off, pass 0 in the alpha channel for colorARGB
- or 0 for both ledOnMS and ledOffMS.
- To turn the LED on, pass 1 for ledOnMS and 0 for ledOffMS.
Поскольку у нас передача значения включает уже готовые режимы мигания, будем использовать Для включения:
ledOnMS = 1 или ledARGB = любое целое, отличное от нуля; ledOffMS = 0;
Для выключения: ledOnMS = 0; ledOffMS = 0;
lights.h
Хидер библиотеки реализации моргания светодиодов. Очень много полезной инфы для грамотной реализации библиотеки в комментах;
Нужные переменные находятся в struct light_state_t:
- color == ledARGB; 0 - выключение диодов, иначе - включение;
- flashMode - хранит режим горение/мерцание внутри библиотеки. У нас "мерцание" не будет использоваться;
- flashOnMS == ledOnMS;
- flashOffMS == ledOffMS;
lights.c
- Реализация. Самое интересное;
Что-то попробовал написать, результат http://pastebin.com/ELeg4NvL Лучше так: http://pastebin.com/bTyaYjCP (в первом варианте не учёл выключение при colorARGB = 0) Не факт, что это вобще компилируется и будет работать, но мне кажется, движусь в правильном направлении :)
- <range type="comment" id="186522">Не компилируется</range id="186522">
target thumb C: lights.tegra <= device/toshiba/paz00/liblights/lights.c device/toshiba/paz00/liblights/lights.c:136: error: storage class specified for parameter 'mode' make: *** [out/target/product/paz00/obj/SHARED_LIBRARIES/lights.tegra_intermediates/lights.o] Ошибка 1 make: *** Ожидание завершения заданий...
Можно проверять вообще компиляцию отдельно от всего андроида, возьми просто нужные инклюды и трави сборку на него.
- С патчем от stuw'а все собралось, но диоды не загораются при оповещениях.
Тестовое андроид-приложение для проверки мигалок
zombah, дальнейшее развитие событий зависит от тебя :)