/*
* Copyright (C) 2014 Haruki Hasegawa
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.h6ah4i.android.media.standard.audiofx;
import android.media.audiofx.PresetReverb;
import com.h6ah4i.android.media.audiofx.IPresetReverb;
import com.h6ah4i.android.media.utils.AudioEffectSettingsConverter;
public class StandardPresetReverb extends StandardAudioEffect implements IPresetReverb {
private IPresetReverb.OnParameterChangeListener mUserOnParameterChangeListener;
private android.media.audiofx.PresetReverb.OnParameterChangeListener mOnParameterChangeListener = new android.media.audiofx.PresetReverb.OnParameterChangeListener() {
@Override
public void onParameterChange(
android.media.audiofx.PresetReverb effect, int status, int param, short value) {
StandardPresetReverb.this.onParameterChange(effect, status, param, value);
}
};
public StandardPresetReverb(int priority, int audioSession) throws IllegalStateException,
IllegalArgumentException, UnsupportedOperationException, RuntimeException {
super(new PresetReverb(priority, audioSession));
getPresetReverb().setParameterListener(mOnParameterChangeListener);
}
/**
* Get underlying PresetReverb instance.
*
* @return underlying PresetReverb instance.
*/
public PresetReverb getPresetReverb() {
return (PresetReverb) super.getAudioEffect();
}
@Override
public void setProperties(IPresetReverb.Settings settings)
throws IllegalStateException, IllegalArgumentException, UnsupportedOperationException {
checkIsNotReleased("setProperties()");
getPresetReverb().setProperties(AudioEffectSettingsConverter.convert(settings));
}
@Override
public void release() {
workaroundPrevReleaseSync();
super.release();
mOnParameterChangeListener = null;
mUserOnParameterChangeListener = null;
}
@Override
public short getPreset() throws IllegalStateException, IllegalArgumentException, UnsupportedOperationException {
checkIsNotReleased("getPreset()");
return getPresetReverb().getPreset();
}
@Override
public IPresetReverb.Settings getProperties() throws IllegalStateException,
IllegalArgumentException,
UnsupportedOperationException {
checkIsNotReleased("getProperties()");
return AudioEffectSettingsConverter.convert(getPresetReverb().getProperties());
}
@Override
public void setPreset(short preset) throws IllegalStateException, IllegalArgumentException, UnsupportedOperationException {
checkIsNotReleased("setPreset()");
getPresetReverb().setPreset(preset);
}
@Override
public void setParameterListener(
IPresetReverb.OnParameterChangeListener listener) {
checkIsNotReleased("setParameterListener()");
mUserOnParameterChangeListener = listener;
}
/* package */void onParameterChange(
android.media.audiofx.PresetReverb effect,
int status, int param, short value) {
IPresetReverb.OnParameterChangeListener listener = null;
listener = mUserOnParameterChangeListener;
if (listener != null) {
listener.onParameterChange(this, status, param, value);
}
}
}