Android Visualizer класс, выбрасывающий исключение во время выполнения - PullRequest
8 голосов
/ 07 августа 2011

Я использую класс AndroidFX Visualizer в своем демонстрационном приложении для чтения FFT, но когда я пытаюсь создать объект этого класса, возникает исключение времени выполнения (java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -1). Класс Player - это мой пользовательский класс для управления воспроизведением, и с использованием того же класса Player я реализовал класс эквалайзера, и это работает нормально. Нужно ли добавлять какие-либо разрешения в файл манифеста?

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());
    }

Ответы [ 2 ]

27 голосов
/ 07 августа 2011

Это было из-за моей глупой ошибки, эта функция требует разрешения <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>.спасибо

5 голосов
/ 09 марта 2017

Я знаю, что это очень поздний ответ, но я также боролся с этой проблемой и хочу поделиться своим опытом.

Во-первых, как ответ выше, разрешения

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

и, если используется аудиоисточник 0 (Visualizer(0); //system mix), необходимо

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

.После добавления разрешений к моему приложению и повторной установки (нового скомпилированного) приложения мое приложение по-прежнему зависало.Я обнаружил, что устройство должно быть перезапущено, чтобы использовать визуализатор без каких-либо исключений (по любой причине).Поэтому, если вы разрабатываете приложение и получаете это исключение, может потребоваться перезагрузка после добавления разрешений для приложения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...