在随SDK提供的示例AudioFxDemo.java中,我得到了一个
java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -4
尝试创建android.media.audiofx.Visualizer
时mVisualizer = new Visualizer(mMediaPlayer.getAudioSessionId());
(AudioFxDemo.java:173)。
据我所知,错误起源于native code,(第266行)。尝试创建android.media.audiofx.Equalizer时也会发生错误:
mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId());
(AudioFxDemo.java:98)
我得到了
java.lang.IllegalArgumentException: Effect type: 0bed4300-ddd6-11db-8f34-0002a5d5c51b not supported.
我已为我的项目声明了以下权限:
<uses-permission android:name="android.permission.RECORD_AUDIO"
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
任何想法可能会出现问题吗?
这似乎是API级别的问题。我对Gingerbread(API Level 10)没有任何问题。我只在虚拟设备上进行了测试。
答案 0 :(得分:4)
这似乎是模拟器的一个问题。我已经在运行Android 4.0.3的实际设备上进行了测试,它运行得很好。
答案 1 :(得分:2)
似乎在一些Android设备上出现问题。我在联想a369i SDK版本17上遇到此崩溃http://pastebin.com/7kqPbxkV。目前我发现只检查设备是否支持均衡器效果:
boolean supports_equalizer=false;
AudioEffect.Descriptor [] effects = Equalizer.queryEffects();
for (AudioEffect.Descriptor lDescriptor:effects){
if (Build.VERSION.SDK_INT>=18) { //Equalizer present only starting with API 18. Cam try to hardcode its UUID
if (AudioEffect.EFFECT_TYPE_EQUALIZER.equals(lDescriptor.uuid)){
supports_equalizer=true;
}
}
}