Autore Topic: Tasto home  (Letto 2675 volte)

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
Tasto home
« il: 17 Gennaio 2011, 01:14:09 CET »
0
Esiste un modo di far terminare l'activity corrente quando si preme il tasto home ? in pratica nel programma che sto realizzando c'è una musica e voglio che quando viene premuto il tasto home termini l'activity perchè altrimenti mi continua a suonare in background.

Grazie

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:Tasto home
« Risposta #1 il: 17 Gennaio 2011, 08:10:03 CET »
0
Provo a risponderti, ma prendi quello che dico con le pinze, perchè non mi sono mai interessato di queste problematiche finora.

Credo che la riproduzione della musica sia affidata ad un service, che è fatto per continuare a girare anche si distrugge l'activity. Così, a rigor di logica, dovresti stoppare il servizio quando fai OnDestroy dell'activity.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Tasto home
« Risposta #2 il: 17 Gennaio 2011, 08:35:29 CET »
0
Provo a risponderti, ma prendi quello che dico con le pinze, perchè non mi sono mai interessato di queste problematiche finora.

Credo che la riproduzione della musica sia affidata ad un service, che è fatto per continuare a girare anche si distrugge l'activity. Così, a rigor di logica, dovresti stoppare il servizio quando fai OnDestroy dell'activity.

L'onDestroy può essere chiamato diverso tempo dopo che l'activity va in background...
Se l'intento è quello di riprodurre la musica solo quando l'activity è visualizzata io la starterei nel metodo onResume e la stopperei nel metodo onPause.


Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Tasto home
« Risposta #3 il: 17 Gennaio 2011, 09:12:18 CET »
0
L'onDestroy può essere chiamato diverso tempo dopo che l'activity va in background...
Se l'intento è quello di riprodurre la musica solo quando l'activity è visualizzata io la starterei nel metodo onResume e la stopperei nel metodo onPause.

Quoto e straquoto: se si preme il tasto HOME la onDestroy potrebbe teoricamente non essere mai chiamata (vai ad aspettare la onDestroy dopo aver premuto il tasto HOME su un DHD con 768MB di RAM :D)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

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:Tasto home
« Risposta #4 il: 17 Gennaio 2011, 10:02:38 CET »
0
Visto la discussione si fa interessante  :-) , approfitto e pongo un quesito che si applica a questa discussione e che riguarda la rotazione dello schermo.

E' noto che la rotazione dello schermo, in condizioni normali, richiama in sequenza (vado a memoria) onSaveInstance, OnPause, OnStop, OnDestroy, OnCreate sull'activity. Un service che riproduce musica lanciato dalla activity, per sua stessa natura di service, non ha problemi e continua a suonare. Se metto lo stop al service nella OnPause (ma vale anche per OnDestroy), quando ruotiamo lo schermo, la musica si interrompe ed eventualmente riparte.

C'è un modo di distinguere quando la OnPause/OnDestroy proviene da una rotazione dello schermo?
(a parte usare la onConfigurationChange che mi obbliga però a ricostruire tutto a mano)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Tasto home
« Risposta #5 il: 17 Gennaio 2011, 10:14:58 CET »
0
Io semplicemente uso android:configChanges="orientation" nel manifest così l'activity non viene stoppata/distrutta quando l'utente ruota lo schermo...

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Tasto home
« Risposta #6 il: 17 Gennaio 2011, 11:30:15 CET »
0
Io semplicemente uso android:configChanges="orientation" nel manifest così l'activity non viene stoppata/distrutta quando l'utente ruota lo schermo...

cosa cosa cosa? mai sentita questa! spiegaci perchè è interessantissima!!!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

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:Tasto home
« Risposta #7 il: 17 Gennaio 2011, 11:45:21 CET »
0
cosa cosa cosa? mai sentita questa! spiegaci perchè è interessantissima!!!

Questa è l'opzione che avevo citato per ultima, quella che ero troppo pigro per usare, perchè in linea generale devi fare a mano cose che prima erano automatizzate.

Un testo autorevole la descrive così:
Citazione
The more complicated way is to use the android:configChanges= property   in   AndroidManifest.xml    to   inform   Android   which changes  you  can  handle.  For  example,  if  you  set  it  to keyboardHidden|orientation, then Android will not destroy and re-create  your  activity  when  the  user  flips  the  keyboard. Instead,  it  will  call  onConfigurationChanged(Configuration)  and assume you know what you’re doing.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

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:Tasto home
« Risposta #8 il: 17 Gennaio 2011, 12:38:07 CET »
0
cosa cosa cosa? mai sentita questa! spiegaci perchè è interessantissima!!!
È il punto 2 di questo tutorial:
[medio] Rotazione dello schermo e onCreate: problema e soluzioni - Android Developers Italia

;)

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:Tasto home
« Risposta #9 il: 17 Gennaio 2011, 13:26:56 CET »
0
Ok ragazzi allora adesso provo con onDestroy e vi facio sapere se funge....a dopo

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:Tasto home
« Risposta #10 il: 17 Gennaio 2011, 15:06:35 CET »
0
Ragazzi funziona alla grande! ho fatto l'override del metodo onPause chiamando il finish() e l'onDestroy() che dite ho esagerato ? :D

Cmq topic risolto ! Grazie

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:Tasto home
« Risposta #11 il: 17 Gennaio 2011, 23:17:25 CET »
0
Ragazzi riapro il topic perchè ho cantato vittoria troppo presto.....
Praticamente tutto funziona bene mettendo il finish nell'Override dell'onPause finechè non esco dal programma. Mi spiego meglio....l'activity in questione parte tramite un alarm manager ed un pendingintent quindi il metodo dell'onPause funziona se io resto dentro l'applicazione ma se invece prima che parta l'acivity esco dall'applicazione con il tasto back oppure il tasto home, quando parte l'activity questa si trova già in onPause e quindi viene subito chiamato il metodo finish!!!

Avete qualche idea ?

Mi servirebbe qualcosa che mi intercettasse il tasto HOME in modo che quando lo premo richiamo direttamente il finish.....ma a quanto pare il tasto home non può essere intercettato :(

Accetto consigli. Grazie

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:Tasto home
« Risposta #12 il: 18 Gennaio 2011, 09:52:27 CET »
0
Nesuna idea?  :(

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:Tasto home
« Risposta #13 il: 18 Gennaio 2011, 10:14:05 CET »
0
Sinceramente io non ho capito questa parte:

Citazione
Praticamente tutto funziona bene mettendo il finish nell'Override dell'onPause finechè non esco dal programma. Mi spiego meglio....l'activity in questione parte tramite un alarm manager ed un pendingintent quindi il metodo dell'onPause funziona se io resto dentro l'applicazione ma se invece prima che parta l'acivity esco dall'applicazione con il tasto back oppure il tasto home, quando parte l'activity questa si trova già in onPause e quindi viene subito chiamato il metodo finish!!!
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:Tasto home
« Risposta #14 il: 18 Gennaio 2011, 10:28:19 CET »
0
Allora spiego bene come funziona il programma.
C'è un AlarmManager che fa partire una activity ad una data ora settata dall'utente. Se l'utente apre il programma per settare l'orario e NON esce dal programma, all'ora stabilita parte l'activity e se premo il tasto Home si stoppa proprio perchè nell'Override dell'onPause ho richiamato il finish().

PERO' se l'utente apre il programma, setta l'orario e poi esce dal programma, quando l'activity viene richiamata non parte perchè è già in onPause quindi viene chiamato subito il finish()

Mi sono spiegato?