Autore Topic: LiveWallpaper e problema con Imposta Sfondo  (Letto 1069 volte)

Offline sergioandroid

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
LiveWallpaper e problema con Imposta Sfondo
« il: 07 Novembre 2011, 21:12:32 CET »
0
Ciao a tutti!
Dal momento che il mio problema mi sembra alquanto insolito, spero di essere chiaro nell'esposizione....

Sto realizzando un semplice live wallpaper(usando canvas)
Il problema è all'apparenza banale, e espongo i passaggi in sequenza:

- nel momento in cui lo scelgo da menu, lo sfondo si avvia e il metodo doDraw va senza problemi.
- idem per le impostazioni, tutto perfetto.
- non appena premo "imposta come sfondo", nella home principale ho il mio livewallpaper in pausa(usando il logcat, ho notato che entra dentro il metodo "onVisibilityChanged"...

se spengo e riaccendo il dispositivo,il livewallpaper va senza problemi, senza stopparsi piu.

questo il metodo in questione:


Codice (Java): [Seleziona]
@Override
                public void onVisibilityChanged(boolean visible) {                     
                       
                        Log.i("makemachine","visibilità "+ visible);
                       
                        if (visible) {         
                                painting.resumePainting();                             
                                Log.i("makemachine","engine_resume");

                        } else {                               
                                painting.pausePainting();
                                Log.i("makemachine","engine_pause");                           
                        }      
                }

e i rispettivi metodi di pausa e resume sono alquanto semplici:

Codice (Java): [Seleziona]
        ///Pausa       
        public void pausePainting() {
                this.wait = true;
                synchronized(this) {
                        this.notify();
                }
        }
       
        //Resume       
        public void resumePainting() {

                this.wait = false;
                synchronized(this) {
                        this.notify();
                }
        }


in cosa sbaglio? è mai capitato a qualcuno di voi?
grazie in anticipo
Sergio

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:LiveWallpaper e problema con Imposta Sfondo
« Risposta #1 il: 07 Novembre 2011, 22:25:59 CET »
+1
Ciao!
Quando visualizzi l'anteprima si crea un Engine, e quando lo setti come sfondo il wallpaper crea un altro Engine ancora, eliminando quello dell'anteprima. Quindi forse hai qualche variabile dichiarata nel wallpaperservice che crea il problema.   ;-)

Offline sergioandroid

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:LiveWallpaper e problema con Imposta Sfondo
« Risposta #2 il: 07 Novembre 2011, 23:59:31 CET »
0
grazie per la risposta Verandi... in effetti mi ero accorto dei due "onCreate"(praticamente uso Log dappertutto!!)e credevo anche io fosse quello il problema...

Codice (Java): [Seleziona]
@Override
        public Engine onCreateEngine() {       
                Log.i("makemachine","CREATE_ENGINE");  
                return new SampleEngine();             
        }

Il problema però l'ho individuato e non c'entrava nulla(fortunatamente) con il Wallpaperservice..
In realtà(essendo un principiante totale) gestivo male l'inizializzazione di alcune classi e alcuni bitmap, e usavo alcune variabili statiche che facevano "bloccare" l'animazione mandandola in pausa...

Dopo aver eliminato piano piano tutte le varie componenti(e perso 2 giorni di salute), ho scoperto il problema.
Speriamo bene..
Grazie mille

Offline sergioandroid

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:LiveWallpaper e problema con Imposta Sfondo
« Risposta #3 il: 11 Novembre 2011, 14:34:16 CET »
0
Aggiorno il topic in quanto il problema sopraesposto si presenta SOLO su Samsung Galaxy S2.
Ho testato e funziona su diversi emulatori virtuali, su diversi dispositivi htc e samsung..

succede esattamente quanto detto precedentemente:

- nel momento in cui lo scelgo da menu, lo sfondo si avvia e il metodo doDraw va senza problemi.
- idem per le impostazioni, tutto perfetto.
- non appena premo "imposta come sfondo", nella home principale ho il mio livewallpaper in pausa(usando il logcat, ho notato che entra dentro il metodo "onVisibilityChanged", con visible= false.

Codice (Java): [Seleziona]
@Override
                public void onVisibilityChanged(boolean visible) {                      
                       
                        Log.i("makemachine","visibilità "+ visible);
                       
                        if (visible) {          
                                painting.resumePainting();                              
                                Log.i("makemachine","engine_resume");

                        } else {                                
                                painting.pausePainting();
                                Log.i("makemachine","engine_pause");                            
                        }      
                }


questo avviene solo sul cellulare samsung galaxy II(dual core) che è della mia ragazza(quindi nn posso fregarglielo per giorni e testare)
Esiste un modo per simulare questo dispositivo in maniera virtuale?

PS: eliminando la riga     " painting.pausePainting();" tutto va senza problemi.. ma non voglio attentare alla vita delle batterie dei cellulari!