Класс Android Visualizer выбрасывает исключение времени выполнения

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

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 ответов


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


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

во-первых, как уже упоминалось выше, разрешения

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

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

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
есть. После добавления разрешений в мое приложение и повторной установки (нового скомпилированного) приложения мое приложение все равно разбилось. Я узнал, что устройство должно быть перезапущено, чтобы использовать визуализатор без каких-либо исключение (по какой-либо причине). Поэтому, если вы разрабатываете приложение и получаете это исключение, перезапуск может потребоваться после добавления разрешений в приложение .