mercoledì 30 marzo 2011

Android ed i LED (parte 2)

Aggiornamento 09-Settembre-2013:
Aggiornati i link.

Aggiornamento 27-Gennaio-2012:
Alcune applicazione impediscono il funzionamento di XLed quando arrivano gli SMS. In particolare GoSMS Pro impedisce la notifica quando arrivano gli SMS. Per ripristinare il corretto funzionamento bisogna disabilitare l'opzione "Disable other message notification". Vedi quà per ulteriori informazioni.


Aggiornamento 28-Novembre-2011: L'applicazione è ora disponibile nel market [3]. Purtroppo poiché è firmata in maniera diversa se avete una versione minore della 0.12 è necessario disinstallarla per poter installare quella del market.

A seguito del precedente post (Android ed i LED ) ho riscritto da zero un'applicazione per avere la notifica led di alcuni eventi quali la ricezione di un SMS e una telefonata senza risposta.

Tale applicazione è compatibile con lo LG Optimus ONE (purchè si abbiano i privilegi di root); tuttavia non escludo che possa essere compatibili con altri tipi di cellulari basati su Android. Il led che viene controllato è quello usato per illuminare i 4 tasti fisici.

Lo stato del led è controllato dal file
/sys/devices/platform/pmic-leds/leds/button-backlight/brightness
Basta scrivere nel file un valore 255 o 0 per, rispettivamente, attivare e disattivare i led.

Normalmente tale file non è scrivibile dalle applicazioni standard. Ma avendo disponibili i privilegi di root, si può renderlo scrivibile da tutti (i processi).

Installazione

Qui[1] potete trovare il file APK per installare il programma.

Dopo aver installato il programma, appena lanciato XLed prova a verificare se il file per controllare il Led è accessibile. Se tutto è andato OK vi troverete di fronte alla schermata seguente:



dove è possibile settare:

  • Enabled per abilitare o meno il programma
  • Blink on sms per abilitare o meno il lampeggio del led quando arriva un SMS
  • Blink on missing call per abilitare o meno il lampeggio del led in caso di una chiamata senza risposta
  • Set blink type per settare il numero di lampeggi: 1, 2, 3...
  • Set blink period per settare il periodo dei lampeggi
  • Set blink length per settare il la lunghezza dei lampeggi


Il default è 1 lampeggio (type = 1 flash blink) che dura 250ms (length = 250ms) ogni due secondi (period = 2 seconds).

Il pulsante Change led permission... serve per abilitare l'accesso al file che controlla il led. L'abilitazione all'accesso al file di controllo richiede i privilegi di root. Una volta abilitato l'accesso i privilegi di root non vengono più usati. L'abilitazione deve essere rieseguita esplicitamente dopo ogni riavvio e la prima volta quando si installa il programma.

Note di compatibilità

Come detto sopra XLed controlla l'accesso al file che controlla il led. Se il file non è scrivibile, viene emesso il seguente messaggio:



A questo punto premendo il pulsante Change led permission... si rende il file di controllo accessibile (ripeto che è l'unico momento in cui sono necessari i privilegi di root).

In caso che il file non esista, invece appare il seguente messaggio:



purtroppo in questo caso non c'è nulla che si possa fare. Per un qualche motivo il file di controllo non esiste: tipicamente perche si sta usando il programma su di un telefonino Android sprovvisto di quel tipo di led. In tal caso, con un minimo di supporto da parte dell'utente, sono disponibile a modificare il programma per farlo funzionare su hardware diverso dal mio; ovviamente nei limiti del possibile e del tempo a disposizione.

Avvertenza

L'applicativo non è firmato. Ed ovviamente devo applicare il disclaimer standard:

l'uso di questo programma è a vostro rischio; non si fornisce alcuna garanzia né esplicita né implicita. C'è il rischio di danneggiare permanentemente il vostro telefonino, di votare un tizio basso con i capelli finti e appassionato di minorenni o di sperare in una fazione politica incosistente.


Licenza

Il programma è rilasciato sotto la licenza GPL v2, e potete trovare il sorgente qui[2]

Link
[1] File APK del programma (XLed.apk) [AGGIORNATO]
[2] Repository git del programma
[3] https://market.android.com/search?q=xled&so=1&c=apps

54 commenti:

  1. Che suona molto bene. Vorrei provare ancora e sono molto curioso di vedere come e se funziona qui con me.

    RispondiElimina
  2. Un sincero grazie!
    Era proprio l'applicativo che cercavo, funziona alla perfezione sul mio Optimus One!

    RispondiElimina
  3. Un sincero Grazie!
    Era proprio l'applicativo che cercavo, funziona a meraviglia sul mio Optimus one!

    RispondiElimina
  4. Grazie del programma! Ho un optimus one, io però non riesco a cambiare il blink period, mi rimane fisso ad 1 secondo. Forse mi sfugge qualcosa?

    RispondiElimina
  5. @Anonimo

    in effetti era vero. C'era un BUG per cui il parametro "Blink period" non veniva gestito correttamente. Ho apportato una correzione al codice, per cui ora il problema dovrebbe essere sparito.

    RispondiElimina
  6. Ma sei un grande!
    Ho provato e funziona!

    Senti, pensi che sarebbe possibile intercettare anche le notifiche degli appuntamenti? Per me è una delle cose più utili in assoluto!

    Grazie ancora!

    RispondiElimina
  7. Sarebbe ottimo poter impostare un tempo massimo per i flash.. oppure un numero dopo di che smette?..

    RispondiElimina
  8. @Anonimo
    - intercettare le notifiche degli appuntamenti sarebbe interessante. Bisogna capire sia come leggere le notifiche pendenti, sia come "lampeggiare". Mi spiego meglio: mentre per un sms perso e/o una chiamata persa è sufficiente attendere lo "sblocco" dello schermo; per un evento perso bisogna che l'utente lo "accetti", cosa che magari non vuole fare subito e preferisce tenersi il lampeggio come promemoria.
    Quindi bisogna prevedere due lampeggi "sovrapponibili", tipo due lampi veloci per i messaggi e le telefonate ed un lampo "lento" per gli appuntamenti. Se i due "lampeggi" sono attivi contemporaneamente devono poter essere distinguibili (che so due lampi veloci ed uno lento)...
    - buono il suggerimento per un timeout massimo dei lampeggi

    RispondiElimina
  9. Grazie dell'utilissima app!
    Per caso funziona anche con whatsapp e con altri programmi di comunicazione/chat?
    Sarebbe straaaaacomodo, dato che gli sms non li uso più da mesi.

    RispondiElimina
  10. Ho ricevuto già qualche richiesta di questo tipo: "può l'applicazione XYZ usare i led ?"
    Purtroppo bisognerebbe scrivere del codice che effettua il check per ogni applicazione; non usandole onestamente non mi sento molto motivato. Se qualcuno lo volesse fare sono aperto ad integrarle nel mio codice.

    RispondiElimina
  11. Torno qui dopo un mesetto. :)
    ok, purtroppo non ti posso aiutare, non ho mai scritto una riga di codice in vita mia... Però magari qualche volenteroso arriverà!
    Adesso riprovo l'apk con la cyanogenmod di mik, vediamo se gira. :P

    p.s. Whatsapp ti consiglio comunque di provarlo, è davvero comodo e utile!

    RispondiElimina
  12. ma anche alarmklock è tua???
    aaaah, ma LOL! grande!!!

    RispondiElimina
  13. @jmz,

    no non è mia; ho solo apportato qualche modifica: in particolare non implementava lo snooze, o comunque non lo faceva come volevo io.

    RispondiElimina
  14. Se cambio la durata in millisecondi del lampeggio non salva la modifica.

    RispondiElimina
  15. Innanzi tutto grazie per l'applicazione. Volevo segnalare che non mi salva i cambiamenti nella durata del flash.

    RispondiElimina
  16. Ciao Daniele, scusa per il ritardo nella risposta; sto provando a verificare quello che mi scrivi, ed in effetti verifico il problema. Purtroppo il mio ambiente di sviluppo è andato un po' a farsi benedire. Appena riesco a sistemarlo spero di correggere il problema.

    Grazie e ciao

    RispondiElimina
  17. Dovrei aver corretto il baco. Ho uploadato la nuova versione (0.9). Fammi sapere se ci sono ancora problemi.

    RispondiElimina
  18. era un po che non guardavo se mi avevi risposto , nel frattempo mi sono istallato l'ambiente di sviluppo e ho corretto il problema da solo aggiungendo anche l'intensita del lampeggio (cambiando il valore scritto nel file), grazie comunque :)

    RispondiElimina
  19. A seguito del tuo messaggio ho inserito la possibilità di regolare la luminosità su 5 livelli (100%, 80%, 60%, 40%, 20%)

    RispondiElimina
  20. Ora la versione è la 0.11 (ho saltato la 0.10)

    RispondiElimina
  21. I miei complimenti! E' un'applicazione che aggiunge un vero LED a questo cellulare (le app che accendono lo schermo per fare da LED li definirei degli pseudoLED, tra l'altro c'è il discorso del consumo). Sei stato molto astuto! E dato che sono anch'io un felice possessore di questo cellulare sono obbligato a ringraziarti molto!

    Un consiglio: pubblicizzala il più possibile!

    RispondiElimina
  22. Grazie, è un po' che volevo metterla nel market.. ma la pigrizia :-)

    RispondiElimina
  23. Innanzitutto grazie del programma, il migliore del suo genere.

    Mi sono accorto che se mi arriva un sms a schermo accesso i tasti non smettono di lampeggiare.
    Esiste un modo per interrompere la cosa?

    RispondiElimina
  24. Ciao, grazie per i complimenti.
    In generale non riesco a replicare il tuo problema: se lo schermo è acceso, i tasti NON devono lampeggiare. In realtà è necessario che lo schermo sia acceso da più di 1500ms (1.5 secondi), per cui esiste la possibilità che se attivi lo schermo e contemporaneamente arriva un SMS i tasti lampeggino.
    Se questo è il tuo problema si potrebbe ridurre la finestra temporale.

    Fammi sapere.

    RispondiElimina
  25. Io ho lo stesso problema ma solo quando arrivano sms o chiamate e il telefono è in carica e quindi lo schermo rimane semrpe acceso. Per farlo smettere basta premere il tasto power(e si spegne lo schermo) e poi riaccenderlo

    RispondiElimina
  26. ciaooo =) senti ho un problema con la tua app, funziona tutto.. con le chiamate vanno ma con gli sms no. non capisco cosa possa essere.. idee?

    RispondiElimina
    Risposte
    1. Ho aggiunto una nota in testa al blog. Se hai installato Go SMS Pro, devi diabilitare l'opzione "Disable other message notification".

      Elimina
  27. per caso qualcuno sa se per lg optimus black funziona l'applicazione del led di stato?????

    RispondiElimina
  28. Buongiorno, volevo chiedere come si può fare a mettere la notifica per programmi come whatsapp. ho fatto qualche prova ma con poco successo :)

    RispondiElimina
    Risposte
    1. Che io sappia no. Purtroppo non sono riuscito a trovare nessun metodo per gestire in maniera globale le notifiche. Ogni applicazione (sms, telefonate, email...) ha una gestione separata.
      Se qualcuno a qualche suggerimento, ben venga

      Elimina
    2. Io ho trovato questo http://developer.android.com/guide/topics/ui/notifiers/notifications.html ma la mia esperieza è ancora troppo poca e non sono riuscito a farlo funzioanre

      Elimina
    3. Il link da te citato spiega come gestire le proprie notifiche. Il mio problema è come venire a conoscenza delle notifiche altri: se il programma X (dove X= programma di posta, facebook, twitter) emette una notifica, io la devo intercettare e far partire il lampeggio: è questo il problema.
      Purtroppo per ragioni di sicurezza, non è consentito di accedere alle notifiche altrui..

      Elimina
    4. Ho un lg p500, e stava cercando di fare questo. Ma, come detto sopra, WhatsApp è ampiamente usato, e alcuni altri ..
      Guardando "play google", ho trovato qualcosa che può aiutare
      "LED Color Tester"
      "Note: For your led light to work, check that the 'Pulse notification light' setting under your phone's 'Display' or 'Sound' settings is enabled."
      Per la spiegazione, può darsi che la chiave è quello di suonare le notifiche..
      Espero que sea de ayuda

      Elimina
  29. Ciao saresti disposto a cercare di far funzionare la tua applicazione su un i9001?? l'applicazione mi dice che il led nn è accessibile, se mi dici dove cercare magari riesco a trovare i file giusti

    RispondiElimina
    Risposte
    1. Lasciami qualche giorno, che provo a modificare l'applicazione per renderla più flessibile, in modo da gestire più led.

      Elimina
  30. Risposte
    1. Ultimamente sono un po' incasinato, ma spero presto di arrivare ad una soluzione...

      Elimina
  31. Ok, Grazie per la tua disponibilità

    RispondiElimina
    Risposte
    1. Ok, ecco un primo passo:

      1) ti dovresti scaricare questa piccola applicazione per android

      http://cassiopea.homelinux.net/DumpSysFs.apk

      2) La lanci, e ti compare una schermata con tre bottoni all base. Premi il tasto "Scan". Il programma girerà per *qualche minuto* raccogliendo informazioni sul tuo cellulare (*non* sono informazioni sensibili ne personali).

      3) Quando in cima comparirà la scritta Finished,
      premi il tasto Copy. Ora devi mandarmi quelle informazioni via email (lancia un programma di posta dal tuo cellulare e fai "Paste")

      Con quelle informazioni dovrei essere in grado di capire come gestire i led del 9001i.

      Ciao

      Elimina
    2. Ciao scusa il ritardo ma in questi giorni di festa non ho avuto il tempo di controllare se avevi risposto, ti ho inviato l'email con le informazioni da te richieste, spero ti saranno utili, grazie a presto.

      Elimina
    3. Ok, ho ricevuto l'email. Ho trovato due possibili candidati per il led:
      - il display
      - il touch
      Lasciami qualche giorno per modificare il programma e poi ti ricontatto.

      Elimina
  32. Meglio il touch perchè c'è già noled che usa il display e a me, non so ad altri mi serve un app che mi illumina i tasti touch sotto lo schermo, perchè cn noled mi capita che nn mi appaiono le notifiche sullo schermo

    RispondiElimina
  33. Complimenti per il lavoro che hai fatto, sto provando la tua app sul P500 e devo dire che è essenziale :)

    Una piccola richiesta, puoi inserire anche uno scheduler, che spenga i tasti fisici di giorno e li riattivi la notte per far vedere le notifiche lampeggianti?

    esempio le notifiche lampeggianti mi farebbero molto comodo la sera, quando il telefono è impostato su silenzioso
    mentre dalle 7 alle 19 l'illuminazione dei tasti fisici mi è inutile

    RispondiElimina
    Risposte
    1. Prova questa versione:

      http://cassiopea.homelinux.net/android/XLed/XLed.apk

      Ho aggiunto le seguenti feature:
      - ora supporta virtualmente più hardware (in pratica solo il P500 per ora in attesa di altro hardware)
      - è possibile impostare una fascia oraria in cui XLed funziona, specificando lo "Start time" e lo "End time". Funzionano tutte e due le casistiche:
      * Start time < End time: tra "start time" ed "end time" funziona il lampeggio dei led
      * Start time >= End time: prima di "end time" o dopo "start time" funziona il lampeggio dei led

      Nel tuo caso settando "Start time" alle 19:00 e "End time" alle 07:00, il telefono "puo'" lampeggiare solo di notte.

      Elimina
  34. Ciao.
    Possiedo un Alcatel 991D che ha il led che si accende solo quando il telefono è in carica.
    Nessuno riesce ad abilitarlo per le notifiche.
    Se ti mando lo scan con la tua DumpSysFs avresti voglia di darci un'occhiata?
    Grazie mille x quanto farai..
    Ciao

    RispondiElimina
    Risposte
    1. Guardo molto volentieri il dump. Non ti prometto nulla, pero' se ci si riesce ben volentieri.
      Ciao

      Elimina
  35. ciao, anch'io sarei interessato ed anch'io ho un alcatel 991d spero di poter usufruire anch'io delle modifiche per utilizzare il led!!,,grazie..:)

    RispondiElimina
    Risposte
    1. Ho aggiornato la "mia" versione con il supporto al 991d, sulla base del contributo di "tatankam".
      Fammi sapere se ci sono problemi.
      Ciao

      http://cassiopea.homelinux.net/android/XLed/XLed.apk

      Elimina
    2. Hello from Germany..sorry i have to write in english :-)

      Could you please add the possability to catch up other event such as notify at google talk message ?? That would be really great...

      By the way you programm is running fine on LG P700 phone .. i use the LG P500 driver

      Elimina
    3. Hi,

      I am working an the "next generation" of XLed... called XLed2. Tha main change is the support for "generic events" (the ones which appear on the top bar). If you want to test it you should try this apk:

      http://cassiopea.homelinux.net/android/XLed/XLed.apk

      Some notes:
      - it start to blink when a new event happens.
      - It is possible to have a lot of "false positive"
      - to enable it, you should set from the config page of XLed2:
      Blink on sms -> off
      Blink on missing call -> off
      Blink for any notification -> on
      -from the setting of the *phone*, select to Accessibility, then enable Accessibility. You should see in the same page also XLed2: enable it.

      Let me know if it works. In my TODO:
      - filter which events start to blink
      - improve the "user presence" (often a blink starts when I am playing with the phone)

      Elimina
  36. ciao, come procedono i lavori su xled2? ho ancora un optimus one e la tua app pare sia la quasi perfezione (dico quasi perchè con le notifiche per le altre app sarebbe perfetta) . peccato averla scoperta così tardi (usavo missed message flasher)

    RispondiElimina
    Risposte
    1. In realtà l'ultima versione supporta una notifica più "generale".

      Ho riaggiornato gli URL, prova a scaricare l'apk.

      Elimina
  37. Saluti dalla Germania!

    Ciao,
    possiedo il LG e610 (=Optimus 5) e dopo aver avuto i privilegi di root Xled i Led funzionano perfettamente. Un elogio speciale allo sviluppatore dell'app.
    Per avere i privilegi di root, però, è un altra storia. Molti suggerimenti dall'internet non funzionano più.
    Grazie

    RispondiElimina

My little patches...

Below a list of my patches spread on different projects: Linux kernel [all] 2018-02-01 iversion: Rename make inode_cmp_iversion{+raw}...