Używam klasy AndroidFX Visualizer w mojej aplikacji demonstracyjnej do odczytu FFT, ale gdy próbuję utworzyć obiekt tej klasy, jego wyjątek Runtime throw (java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -1
). Klasa odtwarzacza to moja klasa niestandardowa do sterowania odtwarzaniem i używanie tej samej klasy odtwarzacza Zaimplementowałem klasę equalizera i to działa dobrze. Czy muszę dodawać jakieś uprawnienia w pliku manifestu?
Player mediaPlayer = Player.GetInstance();
mediaPlayer.LoadFile("song.mp3");
mediaPlayer.Play();
try{
visual = new Visualizer(mediaPlayer.GetAudioSessionID()); // this line causing Exception
visual.setEnabled(true);
visual.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
}
catch(Exception ex)
{
Log.e("Visual Ex", ex.getMessage());
}
Odpowiedzi:
27 dla odpowiedzi nr 1Było to spowodowane moim głupim błędem, którego ta funkcja wymaga <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
pozwolenie. dzięki
4 dla odpowiedzi nr 2
Wiem, że to bardzo późna odpowiedź, ale ja też zmagałem się z tym problemem i chcę podzielić się moimi doświadczeniami.
Po pierwsze, jak wspomniano powyżej, uprawnienia
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
i, jeśli używane jest źródło audio 0 (Visualizer(0); //system mix
),
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
są potrzebne. Po ponownym dodaniu uprawnień do mojej aplikacji i ponownym zainstalowaniu aplikacji (nowej) moja aplikacja wciąż się zawieszała. Dowiedziałem się, że urządzenie musi zostać zrestartowane, aby użyć Visualizera bez żadnego wyjątku (z jakiegokolwiek powodu). Jeśli więc stworzysz aplikację i uzyskasz ten wyjątek, ponowne uruchomienie może być wymagane po dodaniu uprawnień do aplikacji .