Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92b146af authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove rolled out flag automatic_bt_device_type" into main

parents 1253632d 90f8ae19
Loading
Loading
Loading
Loading
+0 −45
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAUL
import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_AUDIO;
import static android.content.Context.DEVICE_ID_DEFAULT;
import static android.media.audio.Flags.autoPublicVolumeApiHardening;
import static android.media.audio.Flags.automaticBtDeviceType;
import static android.media.audio.Flags.cacheGetStreamMinMaxVolume;
import static android.media.audio.Flags.cacheGetStreamVolume;
import static android.media.audio.Flags.FLAG_DEPRECATE_STREAM_BT_SCO;
@@ -7454,41 +7453,6 @@ public class AudioManager {
        }
    }

    /**
     * @hide
     * Sets the audio device type of a Bluetooth device given its MAC address
     */
    @RequiresPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    public void setBluetoothAudioDeviceCategory_legacy(@NonNull String address, boolean isBle,
            @AudioDeviceCategory int btAudioDeviceType) {
        if (automaticBtDeviceType()) {
            // do nothing
            return;
        }
        try {
            getService().setBluetoothAudioDeviceCategory_legacy(address, isBle, btAudioDeviceType);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * @hide
     * Gets the audio device type of a Bluetooth device given its MAC address
     */
    @RequiresPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    @AudioDeviceCategory
    public int getBluetoothAudioDeviceCategory_legacy(@NonNull String address, boolean isBle) {
        if (automaticBtDeviceType()) {
            return AUDIO_DEVICE_CATEGORY_UNKNOWN;
        }
        try {
            return getService().getBluetoothAudioDeviceCategory_legacy(address, isBle);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * @hide
     * Sets the audio device type of a Bluetooth device given its MAC address
@@ -7500,9 +7464,6 @@ public class AudioManager {
    @RequiresPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    public boolean setBluetoothAudioDeviceCategory(@NonNull String address,
            @AudioDeviceCategory int btAudioDeviceCategory) {
        if (!automaticBtDeviceType()) {
            return false;
        }
        try {
            return getService().setBluetoothAudioDeviceCategory(address, btAudioDeviceCategory);
        } catch (RemoteException e) {
@@ -7517,9 +7478,6 @@ public class AudioManager {
    @RequiresPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    @AudioDeviceCategory
    public int getBluetoothAudioDeviceCategory(@NonNull String address) {
        if (!automaticBtDeviceType()) {
            return AUDIO_DEVICE_CATEGORY_UNKNOWN;
        }
        try {
            return getService().getBluetoothAudioDeviceCategory(address);
        } catch (RemoteException e) {
@@ -7534,9 +7492,6 @@ public class AudioManager {
     */
    @RequiresPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    public boolean isBluetoothAudioDeviceCategoryFixed(@NonNull String address) {
        if (!automaticBtDeviceType()) {
            return false;
        }
        try {
            return getService().isBluetoothAudioDeviceCategoryFixed(address);
        } catch (RemoteException e) {
+0 −7
Original line number Diff line number Diff line
@@ -364,13 +364,6 @@ interface IAudioService {
    @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED")
    oneway void setCsdAsAFeatureEnabled(boolean csdToggleValue);

    @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED")
    oneway void setBluetoothAudioDeviceCategory_legacy(in String address, boolean isBle,
            int deviceCategory);

    @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED")
    int getBluetoothAudioDeviceCategory_legacy(in String address, boolean isBle);

    @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED")
    boolean setBluetoothAudioDeviceCategory(in String address, int deviceCategory);

+0 −10
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.audio;
import static android.media.AudioManager.AUDIO_DEVICE_CATEGORY_UNKNOWN;
import static android.media.AudioSystem.DEVICE_NONE;
import static android.media.AudioSystem.isBluetoothDevice;
import static android.media.audio.Flags.automaticBtDeviceType;

import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;

@@ -146,20 +145,11 @@ public final class AdiDeviceState {
    }

    public synchronized boolean isBtDeviceCategoryFixed() {
        if (!automaticBtDeviceType()) {
            // do nothing
            return false;
        }

        updateAudioDeviceCategory();
        return mAutoBtCategorySet;
    }

    public synchronized boolean updateAudioDeviceCategory() {
        if (!automaticBtDeviceType()) {
            // do nothing
            return false;
        }
        if (!isBluetoothDevice(mInternalDeviceType)) {
            return false;
        }
+5 −11
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import static android.media.AudioSystem.isBluetoothDevice;
import static android.media.AudioSystem.isBluetoothLeOutDevice;
import static android.media.AudioSystem.isBluetoothOutDevice;
import static android.media.AudioSystem.isBluetoothScoOutDevice;
import static android.media.audio.Flags.automaticBtDeviceType;

import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
import static com.android.media.audio.Flags.asDeviceConnectionFailure;
@@ -206,11 +205,10 @@ public class AudioDeviceInventory {
            AdiDeviceState deviceState, boolean syncInventory) {
        AtomicBoolean updatedCategory = new AtomicBoolean(false);
        synchronized (mDeviceInventoryLock) {
            if (automaticBtDeviceType()) {
            if (deviceState.updateAudioDeviceCategory()) {
                updatedCategory.set(true);
            }
            }

            deviceState = mDeviceInventory.merge(deviceState.getDeviceId(),
                    deviceState, (oldState, newState) -> {
                        if (oldState.getAudioDeviceCategory()
@@ -305,12 +303,8 @@ public class AudioDeviceInventory {
     */
    @GuardedBy({"mDevicesLock", "mDeviceInventoryLock"})
    void onSynchronizeAdiDeviceInInventory_l(AdiDeviceState updatedDevice) {
        boolean found = false;
        found |= synchronizeBleDeviceInInventory(updatedDevice);
        if (automaticBtDeviceType()) {
            found |= synchronizeDeviceProfilesInInventory(updatedDevice);
        }
        if (found) {
        if (synchronizeBleDeviceInInventory(updatedDevice)
                || synchronizeDeviceProfilesInInventory(updatedDevice)) {
            mDeviceBroker.postPersistAudioDeviceSettings();
        }
    }
+1 −76
Original line number Diff line number Diff line
@@ -35,20 +35,13 @@ import static android.content.Intent.ACTION_PACKAGE_ADDED;
import static android.content.Intent.ACTION_PACKAGE_REMOVED;
import static android.content.Intent.EXTRA_ARCHIVAL;
import static android.content.Intent.EXTRA_REPLACING;
import static android.media.AudioDeviceInfo.TYPE_BLE_HEADSET;
import static android.media.AudioDeviceInfo.TYPE_BLE_SPEAKER;
import static android.media.AudioDeviceInfo.TYPE_BLUETOOTH_A2DP;
import static android.media.AudioManager.AUDIO_DEVICE_CATEGORY_HEADPHONES;
import static android.media.AudioManager.AUDIO_DEVICE_CATEGORY_UNKNOWN;
import static android.media.AudioManager.DEVICE_OUT_BLE_HEADSET;
import static android.media.AudioManager.DEVICE_OUT_BLE_SPEAKER;
import static android.media.AudioManager.DEVICE_OUT_BLUETOOTH_A2DP;
import static android.media.AudioManager.RINGER_MODE_NORMAL;
import static android.media.AudioManager.RINGER_MODE_SILENT;
import static android.media.AudioManager.RINGER_MODE_VIBRATE;
import static android.media.AudioManager.STREAM_SYSTEM;
import static android.media.audio.Flags.autoPublicVolumeApiHardening;
import static android.media.audio.Flags.automaticBtDeviceType;
import static android.media.audio.Flags.cacheGetStreamMinMaxVolume;
import static android.media.audio.Flags.cacheGetStreamVolume;
import static android.media.audio.Flags.concurrentAudioRecordBypassPermission;
@@ -4970,8 +4963,7 @@ public class AudioService extends IAudioService.Stub
                + asDeviceConnectionFailure());
        pw.println("\tandroid.media.audio.autoPublicVolumeApiHardening:"
                + autoPublicVolumeApiHardening());
        pw.println("\tandroid.media.audio.automaticBtDeviceType:"
                + automaticBtDeviceType());
        pw.println("\tandroid.media.audio.automaticBtDeviceType - EOL");
        pw.println("\tandroid.media.audio.featureSpatialAudioHeadtrackingLowLatency:"
                + featureSpatialAudioHeadtrackingLowLatency());
        pw.println("\tandroid.media.audio.focusFreezeTestApi:"
@@ -12355,72 +12347,11 @@ public class AudioService extends IAudioService.Stub
        mSoundDoseHelper.setCsdAsAFeatureEnabled(csdToggleValue);
    }
    @Override
    @android.annotation.EnforcePermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    public void setBluetoothAudioDeviceCategory_legacy(@NonNull String address, boolean isBle,
            @AudioDeviceCategory int btAudioDeviceCategory) {
        super.setBluetoothAudioDeviceCategory_legacy_enforcePermission();
        if (automaticBtDeviceType()) {
            // do nothing
            return;
        }
        final String addr = Objects.requireNonNull(address);
        AdiDeviceState deviceState = mDeviceBroker.findBtDeviceStateForAddress(addr,
                (isBle ? AudioSystem.DEVICE_OUT_BLE_HEADSET
                        : AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP));
        int internalType = !isBle ? DEVICE_OUT_BLUETOOTH_A2DP
                : ((btAudioDeviceCategory == AUDIO_DEVICE_CATEGORY_HEADPHONES)
                        ? DEVICE_OUT_BLE_HEADSET : DEVICE_OUT_BLE_SPEAKER);
        int deviceType = !isBle ? TYPE_BLUETOOTH_A2DP
                : ((btAudioDeviceCategory == AUDIO_DEVICE_CATEGORY_HEADPHONES) ? TYPE_BLE_HEADSET
                        : TYPE_BLE_SPEAKER);
        if (deviceState == null) {
            deviceState = new AdiDeviceState(deviceType, internalType, addr);
        }
        deviceState.setAudioDeviceCategory(btAudioDeviceCategory);
        mDeviceBroker.addOrUpdateBtAudioDeviceCategoryInInventory(
                deviceState, true /*syncInventory*/);
        mDeviceBroker.postPersistAudioDeviceSettings();
        mSpatializerHelper.refreshDevice(deviceState.getAudioDeviceAttributes(),
                false /* initState */);
        mSoundDoseHelper.setAudioDeviceCategory(addr, internalType,
                btAudioDeviceCategory == AUDIO_DEVICE_CATEGORY_HEADPHONES);
    }
    @Override
    @android.annotation.EnforcePermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    @AudioDeviceCategory
    public int getBluetoothAudioDeviceCategory_legacy(@NonNull String address, boolean isBle) {
        super.getBluetoothAudioDeviceCategory_legacy_enforcePermission();
        if (automaticBtDeviceType()) {
            return AUDIO_DEVICE_CATEGORY_UNKNOWN;
        }
        final AdiDeviceState deviceState = mDeviceBroker.findBtDeviceStateForAddress(
                Objects.requireNonNull(address), (isBle ? AudioSystem.DEVICE_OUT_BLE_HEADSET
                        : AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP));
        if (deviceState == null) {
            return AUDIO_DEVICE_CATEGORY_UNKNOWN;
        }
        return deviceState.getAudioDeviceCategory();
    }
    @Override
    @android.annotation.EnforcePermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    public boolean setBluetoothAudioDeviceCategory(@NonNull String address,
            @AudioDeviceCategory int btAudioDeviceCategory) {
        super.setBluetoothAudioDeviceCategory_enforcePermission();
        if (!automaticBtDeviceType()) {
            return false;
        }
        final String addr = Objects.requireNonNull(address);
        if (isBluetoothAudioDeviceCategoryFixed(addr)) {
@@ -12439,9 +12370,6 @@ public class AudioService extends IAudioService.Stub
    @AudioDeviceCategory
    public int getBluetoothAudioDeviceCategory(@NonNull String address) {
        super.getBluetoothAudioDeviceCategory_enforcePermission();
        if (!automaticBtDeviceType()) {
            return AUDIO_DEVICE_CATEGORY_UNKNOWN;
        }
        return mDeviceBroker.getAndUpdateBtAdiDeviceStateCategoryForAddress(address);
    }
@@ -12450,9 +12378,6 @@ public class AudioService extends IAudioService.Stub
    @android.annotation.EnforcePermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
    public boolean isBluetoothAudioDeviceCategoryFixed(@NonNull String address) {
        super.isBluetoothAudioDeviceCategoryFixed_enforcePermission();
        if (!automaticBtDeviceType()) {
            return false;
        }
        return mDeviceBroker.isBluetoothAudioDeviceCategoryFixed(address);
    }
Loading