【发布时间】:2014-11-14 23:58:46
【问题描述】:
我在玩Equalizer,发现每当我启动我的应用程序然后使用另一个均衡器应用程序时,我的应用程序在尝试使用任何东西时都会崩溃(例如setBandLevel)。
java.lang.UnsupportedOperationException: AudioEffect: 无效 参数操作在 android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1244) 在 android.media.audiofx.Equalizer.setBandLevel(Equalizer.java:230)
我正在收听onControlStatusChange,并且我知道我的应用程序失去了对效果的控制。如何在onResume 中收回它?
我假设我可以清除效果实例(释放然后无效)并再次实例化效果类 v(如下面的代码示例),但想知道是否有类似 setControlState(true) 的内置功能。
@Override
protected void onResume() {
super.onResume();
if (mEqualizer.hasControl() == false) {
prepareEqualizer();//force re-gaining control
}
}
private void prepareEqualizer() {
if (mEqualizer != null) {
releaseEqualizer();
}
mEqualizer = new Equalizer(0, 0);
mEqualizer.setEnabled(true);
mEqualizer.setControlStatusListener(this);
mEqualizer.setEnableStatusListener(this);
mEqualizer.setParameterListener(this);
mMaxBands = mEqualizer.getNumberOfBands();
mGainLevels = mEqualizer.getBandLevelRange();
}
private void releaseEqualizer() {
if (mEqualizer == null)
return;
mEqualizer.setControlStatusListener(null);
mEqualizer.setEnableStatusListener(null);
mEqualizer.setParameterListener(null);
mEqualizer.release();
mEqualizer = null;
}
【问题讨论】:
标签: android equalizer audioeffect