我在我的演示应用程序中使用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());
}
答案 0 :(得分:27)
这是由于我的愚蠢错误,该功能需要<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
权限。感谢
答案 1 :(得分:5)
我知道这是一个非常晚的答案,但我也在努力解决这个问题,我想分享我的经验。
首先,正如上面提到的答案,权限
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
并且,如果使用音频源0(Visualizer(0); //system mix
),
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
是必需的。将权限添加到我的应用程序并再次安装(新编译的)应用程序后,我的应用程序仍然崩溃。我发现,必须重新启动设备才能使用Visualizer而没有任何异常(无论出于何种原因)。因此,如果您开发应用并获得此异常,则在向应用添加权限后可能需要重新启动。