Autore Topic: Implementazione service che non va in standby per non bloccare accelerometro  (Letto 6732 volte)

Offline duky2003

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    LG P500
  • Sistema operativo:
    Windows xp, Ubuntu 10.10
Salve a tutti
sono nuovo del forum, volevo sapere come posso fare a far rilevare dalla mia app i valori dell'accelerometro anche quando il dispositivo va in standby. Poichè ho gia implemetato un service che li rileva, ma appena nel dispositivo va in standby, e quindi si inserisce il blocca schermo, ferma le rilevazioni...ho visto però che altre apps, tipo sleep as an droid, risolve il problema oscurando lo schermo e nn facendo andare il dispositivo in standby...come posso implementare questo meccanismo?
Grazie anticipatamente
« Ultima modifica: 26 Marzo 2011, 15:13:39 CET da duky2003 »

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
0
Ciao! Credo usino la classe WakeLock: PowerManager.WakeLock | Android Developers.
Codice (Java): [Seleziona]
PowerManager pm = (PowerManager)mContext.getSystemService(
                                          Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(
                                      PowerManager.SCREEN_DIM_WAKE_LOCK
                                      | PowerManager.ON_AFTER_RELEASE,
                                      TAG);
wl.acquire();
 // ...
wl.release();

Trovi maggiori informazioni qui: Power Management | Android Open Source.

Offline duky2003

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    LG P500
  • Sistema operativo:
    Windows xp, Ubuntu 10.10
0
Ok, grazie, ora provo e vi faccio sapere  ;-)

Offline duky2003

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    LG P500
  • Sistema operativo:
    Windows xp, Ubuntu 10.10
0
Funziona!!! :-)
 sia inserito in un activity, che in un service, l'unica cosa da aggiungere oltre quello già detto, è di aggiungere nel manifest
<uses-permission android:name="android.permission.WAKE_LOCK"/>
fatto ciò lo schermo dopo un pò si abbassa di luminosità(ma non si oscura completamente(forse modificando i parametri si riesce a fare)), e l'app continua a fare le sue operazioni senza problemi, fin quando non si rilascia il wake lock.
Grazie Verandi

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
0
Di niente  :D
Comunque sì, ci sono vari livelli di wake lock (nel secondo link del mio post precedente).

  • ACQUIRE_CAUSES_WAKEUP Normally wake locks don't actually wake the device, they just cause it to remain on once it's already on. Think of the video player app as the normal behavior. Notifications that pop up and want the device to be on are the exception; use this flag to be like them.
  • FULL_WAKE_LOCK    Wake lock that ensures that the screen and keyboard are on at full brightness.
  • ON_AFTER_RELEASE    When this wake lock is released, poke the user activity timer so the screen stays on for a little longer.
  • PARTIAL_WAKE_LOCK    Wake lock that ensures that the CPU is running. The screen might not be on.
  • SCREEN_BRIGHT_WAKE_LOCK    Wake lock that ensures that the screen is on at full brightness; the keyboard backlight will be allowed to go off.
  • SCREEN_DIM_WAKE_LOCK    Wake lock that ensures that the screen is on, but the keyboard backlight will be allowed to go off, and the screen backlight will be allowed to go dim.

 Prova a cambiare il parametro SCREEN_DIM_WAKE_LOCK con PARTIAL_WAKE_LOCK.

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
0
Funziona!!! :-)
 sia inserito in un activity, che in un service, l'unica cosa da aggiungere oltre quello già detto, è di aggiungere nel manifest
<uses-permission android:name="android.permission.WAKE_LOCK"/>
fatto ciò lo schermo dopo un pò si abbassa di luminosità(ma non si oscura completamente(forse modificando i parametri si riesce a fare)), e l'app continua a fare le sue operazioni senza problemi, fin quando non si rilascia il wake lock.
Grazie Verandi

Ho lo stesso problema però usando questo sistema non funziona sempre dipende dal telefono...tu come hai risolto ?

EDIT : Ho provato con i miei 2 GS in pratica e con questo codice l'accelerometro funziona anche se il telefono va in standby però tipo con il Defy  non va... :(

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #6 il: 10 Aprile 2011, 21:01:51 CEST »
0
Ragazzi non c'è nessuno che ha un idea di come posso risolvere il problema ? ho capito cosa non va ma non riesco a trovare una soluzione....
In pratica vi spiego il problema.....ho messo il log nel Service per vedere cosa non andava ed ho visto che quando spengo il display del telefono (con il tasto power oppure aspettando che si spenga da solo) l'accelerometro non funziona più perchè i log si fermano se poi accendo il display i log ripartono quindi vuol dire che l'accelerometro ricomincia a funzionare....

Il codice di questo topic non potrà mai funzionare perchè se il wake lock lo metto nell'oncreate del service questo viene richiamato solo alla sua creazione e quindi se successivamente lo schermo si spegne il problema resta, se lo metto nel onSensorChangeListener non va perchè appena lo schermo si spegne il sensore non rileva più cambiamaneti.....

Proposte ??? non mi dite di non far spegnere lo schermo perchè quello si deve poter spegnere...

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #7 il: 11 Aprile 2011, 10:20:26 CEST »
0
Aggiorno il topic perchè magari potrà servire a qualcuno.
Ho passato 2 giorni a vagare su internet in cerca della risoluzione a questo problema, alla fine mi sono imbattuto in un forum di sviluppatori nel quale si parlava proprio di questo. In pratica, quando il telefono va in standby, l'accelerometro funziona su alcuni telefoni (ed il mio Galaxy S) mentre su altri tipo l'ideos, il legend, il desire, etc vi è un bug del software che lo spegne, se poi si riaccende il display anche l'accelerometro riparte. Non esiste risoluzione alla problematica che ormai va avanti da 2 anni e di cui è stata resa edotta anche gogole che però ha risposto di esserne a conoscenza ma che ritiene non dover prendere provvedimenti anche perchè spegnere l'accelerometro durante lo standby comporta anche una riduzione del consumo della batteria. La soluzione ? semplicemente utilizzare il codice di cui sopra con il flag SCREEN_DIM_WAKE_LOCK che non fa mai andare in standby il telefono ma tiene lo schermo al minimo della luminosità, ovviamente quando il sensore non ci serve più occorre ricordarsi di inserire nell'onDestroy il wake.release() altrimenti il telefono non si spegne mai :-)

E' da poco che programmo su android e fino ad ora mi sono imbattuto in :
- Problema accelerometro quando il telefono va in standby
- Problema di non poter riprodurre audio durante una chiamata
- Problema di non poter accedere al microfono interno per poter registrare una chiamata
- Problema di non poter settare la status bar in modo che la stessa non venga visualizzata quando un'activity translucent è in full screen
potrei elencarne altri, ma la mia domanda è : come mai nel SO di Apple, che dovrebbe essere più chiuso di android, tutte queste cose si possono fare ? android è veramente un sistema aperto come si crede ? a me non sembra!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #8 il: 11 Aprile 2011, 10:28:22 CEST »
0
android è veramente un sistema aperto come si crede ? a me non sembra!

Dipende te cosa intendi con "aperto".
Il fatto che tu possa prenderne il codice, modificarlo e compilarlo come meglio credi mi basta per risponderti si.
Per essere definito aperto non necessariamente deve disporre di API per fare tutto cio' che passa per la testa alla gente.
E comunque, per essere sinceri, quello che hai elencato sono tutte cose piuttosto poco comuni. Per la terza direi anche "menomale che non c'e' un API!".

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #9 il: 11 Aprile 2011, 10:33:21 CEST »
0
E comunque, per essere sinceri, quello che hai elencato sono tutte cose piuttosto poco comuni. Per la terza direi anche "menomale che non c'e' un API!".

no ricky non direi, sono tutte cose molto comune, se ti fai un giro sui forum stranieri trovi valanghe di richieste di sviluppatori che vorrebbero poterlo fare, sono cose che fa l'iOS ma e persino Symbian e se lo fa anche Symbian ho detto tutto....

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #10 il: 11 Aprile 2011, 10:37:09 CEST »
0
no ricky non direi, sono tutte cose molto comune, se ti fai un giro sui forum stranieri trovi valanghe di richieste di sviluppatori che vorrebbero poterlo fare, sono cose che fa l'iOS ma e persino Symbian e se lo fa anche Symbian ho detto tutto....

E come mai nessuno ha pensato che puo' implementare e committare queste features nell'AOSP?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #11 il: 11 Aprile 2011, 10:37:48 CEST »
0
Per me non è una questione di "open" o "closed". Sono semplicemente features o funzionalità che non sono disponibili.


NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #12 il: 11 Aprile 2011, 10:41:17 CEST »
0
Si però non è giusto che io programmatore segnalo a Google queste deficienze e Google pur sapendo che precludono lo sviluppo di tanti programmi, se ne sbatte...

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #13 il: 11 Aprile 2011, 11:04:50 CEST »
0
come mai nel SO di Apple, che dovrebbe essere più chiuso di android, tutte queste cose si possono fare ? android è veramente un sistema aperto come si crede ? a me non sembra!
Mi sa che ti sfugge il significato di opensource:
http://it.wikipedia.org/wiki/Open_source

Le features che un prodotto offre non centrano nulla con il fatto che questo prodotto sia opensouce o closedsource.

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:Implementazione service che non va in standby per non bloccare accelerometro
« Risposta #14 il: 11 Aprile 2011, 11:14:07 CEST »
0
Ok allora mi sono esperesso male resta comunque il fatto che le restrizioni di google sulle features sono eccessive :)