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

Commit 465bfde0 authored by tim peng's avatar tim peng Committed by Automerger Merge Worker
Browse files

Merge "Disable group volume control bar" into sc-dev am: 076dfc83 am: 14dfdc7c am: 09180348

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14779546

Change-Id: Iecaedf94263d1812dd17098f64e31b466cda023e
parents fd13aef4 09180348
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.settingslib.media;

import static android.media.MediaRoute2Info.FEATURE_REMOTE_GROUP_PLAYBACK;
import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_DOCK;
@@ -31,6 +32,7 @@ import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR;

import android.annotation.TargetApi;
import android.app.Notification;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
@@ -38,6 +40,7 @@ import android.content.Context;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RoutingSessionInfo;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;

@@ -391,6 +394,38 @@ public class InfoMediaManager extends MediaManager {
        return shouldDisableMediaOutput;
    }

    @TargetApi(Build.VERSION_CODES.R)
    boolean shouldEnableVolumeSeekBar(RoutingSessionInfo sessionInfo) {
        if (sessionInfo == null) {
            Log.w(TAG, "shouldEnableVolumeSeekBar() package name is null or empty!");
            return false;
        }
        final List<MediaRoute2Info> mediaRoute2Infos =
                mRouterManager.getSelectedRoutes(sessionInfo);
        // More than one selected route
        if (mediaRoute2Infos.size() > 1) {
            if (DEBUG) {
                Log.d(TAG, "shouldEnableVolumeSeekBar() package name : "
                        + sessionInfo.getClientPackageName()
                        + ", mediaRoute2Infos.size() " + mediaRoute2Infos.size());
            }
            return false;
        }
        // Route contains group feature
        for (MediaRoute2Info mediaRoute2Info : mediaRoute2Infos) {
            final List<String> features = mediaRoute2Info.getFeatures();
            if (features.contains(FEATURE_REMOTE_GROUP_PLAYBACK)) {
                if (DEBUG) {
                    Log.d(TAG, "shouldEnableVolumeSeekBar() package name : "
                            + mediaRoute2Info.getClientPackageName()
                            + "contain group playback ");
                }
                return false;
            }
        }
        return true;
    }

    private void refreshDevices() {
        mMediaDevices.clear();
        mCurrentConnectedDevice = null;
+7 −0
Original line number Diff line number Diff line
@@ -408,6 +408,13 @@ public class LocalMediaManager implements BluetoothCallback {
        return mInfoMediaManager.shouldDisableMediaOutput(packageName);
    }

    /**
     * Returns {@code true} if needed to enable volume seekbar, otherwise returns {@code false}.
     */
    public boolean shouldEnableVolumeSeekBar(RoutingSessionInfo sessionInfo) {
        return mInfoMediaManager.shouldEnableVolumeSeekBar(sessionInfo);
    }

    @VisibleForTesting
    MediaDevice updateCurrentConnectedDevice() {
        MediaDevice connectedDevice = null;