Я використовую клас AndroidFX Visualizer у своєму демонстраційному додатку, щоб читати FFT, але коли я намагаюся створити об’єкт цього класу, його виняток під час кидання (java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -1
). Клас гравців - це мій спеціальний клас для управління відтворенням і за допомогою того ж класу гравців, я реалізував еквалайзерний клас, і це працює нормально. Чи потрібно додати будь-який дозвіл у файл маніфесту?
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());
}
Відповіді:
27 за відповідь № 1Це було пов’язано з моєю дурною помилкою, якої вимагає ця особливість <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
дозвіл. Дякую
4 для відповіді № 2
Я знаю, що це дуже пізня відповідь, але я також боровся з цією проблемою і хочу поділитися своїм досвідом.
По-перше, як відповідь згадана вище, дозволи
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
і, якщо використовується джерело звуку 0 (Visualizer(0); //system mix
),
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
потрібні. Після додавання дозволу до мого додатка та встановлення (нової компільованої) програми знову мій збій. Я дізнався, що пристрій потрібно перезапустити, щоб користуватися Visualizer без будь-якого винятку (з будь-якої причини). Тож якщо ви розробляєте додаток і отримуєте цей виняток, після додавання дозволу в додаток може знадобитися перезапуск .