私は遊んでいてEqualizer、アプリケーションを起動してから別のイコライザーアプリを使用するたびに、何かを使用しようとするとアプリがクラッシュすることがわかりました(例setBandLevel)。
java.lang.UnsupportedOperationException: AudioEffect: android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1244) で無効なパラメータ操作 android.media.audiofx.Equalizer.setBandLevel(Equalizer.java:230)
を聞いてonControlStatusChangeいますが、アプリが効果を制御できなくなったという情報があります。どうすれば元に戻すことができonResumeますか?
エフェクト インスタンスをクリア (リリースしてから無効化) し、エフェクト クラスを再度インスタンス化できると思いますが (以下のコード例のように)、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;
}