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

Commit ef06dcb4 authored by Kim Baekgyeong's avatar Kim Baekgyeong Committed by Mikhail Naganov
Browse files

Add last connected device concept

When connecting multiple audio devices
Media and Sonification sounds comes out of the last connected device,
not a high-priority device.

Test: play music
Test: connect wired earphone // sound : wired earphone
Test: connect usb earphone // sound : usb earphone, not the wired earphone(high-priority)
Test: connect bluetooth headset // sound : bluetooth headset
Test: disconnect bluetooth headset // sound : usb earphone, not the wired earphone(high-priority)
Bug: 135749685

Change-Id: I366e136f8e660c4d7f00935cc9088a926c9a605a
parent dd2c2406
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;
@@ -45,6 +44,7 @@ import com.android.internal.annotations.VisibleForTesting;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Set;

/**
@@ -58,7 +58,7 @@ public class AudioDeviceInventory {

    // Actual list of connected devices
    // Key for map created from DeviceInfo.makeDeviceListKey()
    private final ArrayMap<String, DeviceInfo> mConnectedDevices = new ArrayMap<>();
    private final LinkedHashMap<String, DeviceInfo> mConnectedDevices = new LinkedHashMap<>();

    private @NonNull AudioDeviceBroker mDeviceBroker;

@@ -148,8 +148,7 @@ public class AudioDeviceInventory {
     */
    /*package*/ void onRestoreDevices() {
        synchronized (mConnectedDevices) {
            for (int i = 0; i < mConnectedDevices.size(); i++) {
                DeviceInfo di = mConnectedDevices.valueAt(i);
            for (DeviceInfo di : mConnectedDevices.values()) {
                AudioSystem.setDeviceConnectionState(
                        di.mDeviceType,
                        AudioSystem.DEVICE_STATE_AVAILABLE,
@@ -799,11 +798,10 @@ public class AudioDeviceInventory {
        }
        int delay = 0;
        Set<Integer> devices = new HashSet<>();
        for (int i = 0; i < mConnectedDevices.size(); i++) {
            int dev = mConnectedDevices.valueAt(i).mDeviceType;
            if (((dev & AudioSystem.DEVICE_BIT_IN) == 0)
                    && BECOMING_NOISY_INTENT_DEVICES_SET.contains(dev)) {
                devices.add(dev);
        for (DeviceInfo di : mConnectedDevices.values()) {
            if (((di.mDeviceType & AudioSystem.DEVICE_BIT_IN) == 0)
                    && BECOMING_NOISY_INTENT_DEVICES_SET.contains(di.mDeviceType)) {
                devices.add(di.mDeviceType);
            }
        }
        if (musicDevice == AudioSystem.DEVICE_NONE) {