Tworzę Live Wallpaper dla systemu Android 2.3.3 i używałem klasy Visualizer. Mam już działającą wersję mojego programu Visualizer działającego samodzielnie, ale kiedy umieszczam kod w usłudze Live Wallpaper, mój problem zaczyna się. Poniższy kod jest tam, gdzie występuje błąd:android.media.audiofx.Visualizer rzuca wyjątek co drugi raz
// 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);
}
Oto dziwne część, kiedy szukam listę tapety na żywo, będę dotknij go, aby wyświetlić podgląd i działa dobrze. Bez ustawiania go jako aktywnej tapety, wciskam przycisk powrotu, a następnie wybieram go ponownie i ulega awarii. Mogę powtórzyć ten proces i to tylko się zdarza co drugi raz i działa w innych czasach. Jeśli zdecyduję się ustawić jako aktywną tapetę, to za każdym razem ulega awarii.
To działa! Dziękuję bardzo. Mówi, że nie mogę przyznać nagrody za kolejne 6 godzin, ale kiedyś będę mógł. – Foggzie
Miło mi słyszeć. Nigdy wcześniej nie współpracowałem z Visualizerem i mam nadzieję, że moja metoda znalezienia tego problemu będzie ci służyć w innych potrzebach. – MByD
Pomogło mi to naprawić podobny błąd jaki miałem przy orientacji ekranu! Świetna robota dzięki. – kabuto178