blob: 09e5d4be14a4f73792235b953b446f959fb25106 [file] [log] [blame]
/*
* Copyright 2020 The Android Open Source Project
*
* 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.android.server.audio;
import android.annotation.NonNull;
import android.media.AudioAttributes;
import android.media.AudioDeviceAttributes;
import android.media.AudioSystem;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
/**
* Provides an adapter for AudioSystem that does nothing.
* Overridden methods can be configured.
*/
public class NoOpAudioSystemAdapter extends AudioSystemAdapter {
private static final String TAG = "ASA";
private boolean mIsMicMuted = false;
private boolean mMuteMicrophoneFails = false;
private boolean mIsStreamActive = false;
public void configureIsMicrophoneMuted(boolean muted) {
mIsMicMuted = muted;
}
public void configureIsStreamActive(boolean active) {
mIsStreamActive = active;
}
public void configureMuteMicrophoneToFail(boolean fail) {
mMuteMicrophoneFails = fail;
}
//-----------------------------------------------------------------
// Overrides of AudioSystemAdapter
@Override
public int setDeviceConnectionState(AudioDeviceAttributes attributes, int state,
int codecFormat) {
Log.i(TAG, String.format("setDeviceConnectionState(0x%s, %d, 0x%s",
attributes.toString(), state, Integer.toHexString(codecFormat)));
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int getDeviceConnectionState(int device, String deviceAddress) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int handleDeviceConfigChange(int device, String deviceAddress,
String deviceName, int codecFormat) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int setDevicesRoleForStrategy(int strategy, int role,
@NonNull List<AudioDeviceAttributes> devices) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int removeDevicesRoleForStrategy(int strategy, int role) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int setDevicesRoleForCapturePreset(int capturePreset, int role,
@NonNull List<AudioDeviceAttributes> devices) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int removeDevicesRoleForCapturePreset(
int capturePreset, int role, @NonNull List<AudioDeviceAttributes> devicesToRemove) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int clearDevicesRoleForCapturePreset(int capturePreset, int role) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int setParameters(String keyValuePairs) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public boolean isMicrophoneMuted() {
return mIsMicMuted;
}
@Override
public int muteMicrophone(boolean on) {
if (mMuteMicrophoneFails) {
return AudioSystem.AUDIO_STATUS_ERROR;
}
mIsMicMuted = on;
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public int setCurrentImeUid(int uid) {
return AudioSystem.AUDIO_STATUS_OK;
}
@Override
public boolean isStreamActive(int stream, int inPastMs) {
return mIsStreamActive;
}
@Override
@NonNull
public ArrayList<AudioDeviceAttributes> getDevicesForAttributes(
@NonNull AudioAttributes attributes, boolean forVolume) {
return new ArrayList<>();
}
}