7

Realizzo uno sfondo animato per Android 2.3.3 e ha utilizzato la classe Visualizer. Ho già una versione funzionante del mio programma Visualizer che funziona da solo, ma quando inserisco il codice in un servizio Live Wallpaper, inizia il mio problema. Il seguente codice è dove esiste l'errore:android.media.audiofx.Visualizer eccezione di lancio ogni altra volta

// Called in my Engine extension's constructor 
public void setupVisualizer() 
{ 
    mBytes = null; 
    mVisualizer = new Visualizer(0); 

    // EDIT 
    mVisualizer.setEnabled(false); // This fixes the issue 
    // END EDIT 

    mVisualizer.setCaptureSize(
     Visualizer.getCaptureSizeRange()[1]); // IllegalStateException Thrown 

    mVisualizer.setDataCaptureListener() { 
     public void onWaveFormDataCapture(Visualizer visualizer, 
      byte[] bytes, int samplingRate) { 
       updateVisualizer(bytes); 
      } 
     public void onFftDataCapture(Visualizer visualizer, 
      bytes[] bytes, int samplingRate) {} 
     }, Visualizer.getMaxCaptureRate()/2, true, false); 

    mVisualizer.setEnabled(true); 
} 

Ecco la parte strana, quando sto cercando l'elenco live wallpaper, io toccarlo per visualizzare l'anteprima e funziona benissimo. Senza impostarlo come sfondo attivo, premo il pulsante Indietro e poi lo seleziono di nuovo e si blocca. Posso ripetere questo processo e si blocca solo ogni altra volta e funziona le altre volte. Se scelgo di impostarlo come sfondo attivo, si blocca ogni volta.

risposta

21

Guardando at the source, sembra che IllegalStateException venga generato se lo stato non è STATE_INITIALIZED.

Poiché il costruttore imposta lo stato su STATE_ENABLED o STATE_INITIALIZED, significa che lo stato quando si ottiene l'eccezione è STATE_ENABLED (l'unica opzione).

Nella documentazione di setCaptureSize() accennano che non si deve chiamare questo metodo, mentre lo Stato è STATE_ENABLED, quindi penso che è necessario chiamare setEnabled(false) sull'oggetto Visualizer prima di chiamare setCaptureSize()

+0

che ha funzionato! Grazie mille. Dice che non posso assegnare il premio per altre 6 ore ma lo farò una volta. – Foggzie

+1

Sono felice di sentire. Non ho mai lavorato con Visualizer in precedenza, e spero che il mio metodo per trovare il problema ti serva in altri momenti di bisogno. – MByD

+0

Questo mi ha aiutato a correggere un errore simile che stavo avendo con l'orientamento dello schermo! Ottimo lavoro, grazie. – kabuto178

Problemi correlati