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

Commit 34c1540b authored by Iván Budnik's avatar Iván Budnik Committed by Android (Google) Code Review
Browse files

Merge "Expose an Output Switcher dialog for system routing" into main

parents e85e483a 4c77537d
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -413,12 +413,8 @@ public abstract class InfoMediaManager extends MediaManager {
     */
    @NonNull
    List<MediaDevice> getSelectedMediaDevices() {
        if (TextUtils.isEmpty(mPackageName)) {
            Log.w(TAG, "getSelectedMediaDevices() package name is null or empty!");
            return Collections.emptyList();
        }
        RoutingSessionInfo info = getRoutingSessionInfo();

        final RoutingSessionInfo info = getRoutingSessionInfo();
        if (info == null) {
            Log.w(TAG, "getSelectedMediaDevices() cannot find selectable MediaDevice from : "
                    + mPackageName);
+11 −0
Original line number Diff line number Diff line
@@ -47,6 +47,17 @@ public class MediaOutputConstants {
    public static final String ACTION_LAUNCH_MEDIA_OUTPUT_DIALOG =
            "com.android.systemui.action.LAUNCH_MEDIA_OUTPUT_DIALOG";

    /**
     * An intent action to launch a media output dialog without any app or playback metadata, which
     * only controls system routing.
     *
     * <p>System routes are those provided by the system, such as built-in speakers, wired headsets,
     * bluetooth devices, and other outputs that require the app to feed media samples to the
     * framework.
     */
    public static final String ACTION_LAUNCH_SYSTEM_MEDIA_OUTPUT_DIALOG =
            "com.android.systemui.action.LAUNCH_SYSTEM_MEDIA_OUTPUT_DIALOG";

    /**
     * An intent action to launch media output broadcast dialog.
     */
+1 −0
Original line number Diff line number Diff line
@@ -1044,6 +1044,7 @@
                  android:exported="true">
            <intent-filter android:priority="1">
                <action android:name="com.android.systemui.action.LAUNCH_MEDIA_OUTPUT_DIALOG" />
                <action android:name="com.android.systemui.action.LAUNCH_SYSTEM_MEDIA_OUTPUT_DIALOG" />
                <action android:name="com.android.systemui.action.LAUNCH_MEDIA_OUTPUT_BROADCAST_DIALOG" />
                <action android:name="com.android.systemui.action.DISMISS_MEDIA_OUTPUT_DIALOG" />
            </intent-filter>
+33 −12
Original line number Diff line number Diff line
@@ -58,8 +58,8 @@ import androidx.core.graphics.drawable.IconCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.android.systemui.res.R;
import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.phone.SystemUIDialog;

import java.util.concurrent.Executor;
@@ -85,6 +85,13 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
    final MediaOutputController mMediaOutputController;
    final BroadcastSender mBroadcastSender;

    /**
     * Signals whether the dialog should NOT show app-related metadata.
     *
     * <p>A metadata-less dialog hides the title, subtitle, and app icon in the header.
     */
    private final boolean mIncludePlaybackAndAppMetadata;

    @VisibleForTesting
    View mDialogView;
    private TextView mHeaderTitle;
@@ -210,8 +217,11 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
        }
    }

    public MediaOutputBaseDialog(Context context, BroadcastSender broadcastSender,
            MediaOutputController mediaOutputController) {
    public MediaOutputBaseDialog(
            Context context,
            BroadcastSender broadcastSender,
            MediaOutputController mediaOutputController,
            boolean includePlaybackAndAppMetadata) {
        super(context, R.style.Theme_SystemUI_Dialog_Media);

        // Save the context that is wrapped with our theme.
@@ -226,6 +236,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
        mListPaddingTop = mContext.getResources().getDimensionPixelSize(
                R.dimen.media_output_dialog_list_padding_top);
        mExecutor = Executors.newSingleThreadExecutor();
        mIncludePlaybackAndAppMetadata = includePlaybackAndAppMetadata;
    }

    @Override
@@ -354,7 +365,10 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
            updateDialogBackgroundColor();
            mHeaderIcon.setVisibility(View.GONE);
        }
        if (appSourceIcon != null) {

        if (!mIncludePlaybackAndAppMetadata) {
            mAppResourceIcon.setVisibility(View.GONE);
        } else if (appSourceIcon != null) {
            Icon appIcon = appSourceIcon.toIcon(mContext);
            mAppResourceIcon.setColorFilter(mMediaOutputController.getColorItemContent());
            mAppResourceIcon.setImageIcon(appIcon);
@@ -373,6 +387,11 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
            mHeaderIcon.setLayoutParams(new LinearLayout.LayoutParams(size + padding, size));
        }
        mAppButton.setText(mMediaOutputController.getAppSourceName());

        if (!mIncludePlaybackAndAppMetadata) {
            mHeaderTitle.setVisibility(View.GONE);
            mHeaderSubtitle.setVisibility(View.GONE);
        } else {
            // Update title and subtitle
            mHeaderTitle.setText(getHeaderText());
            final CharSequence subTitle = getHeaderSubtitle();
@@ -384,6 +403,8 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
                mHeaderSubtitle.setText(subTitle);
                mHeaderTitle.setGravity(Gravity.NO_GRAVITY);
            }
        }

        // Show when remote media session is available or
        //      when the device supports BT LE audio + media is playing
        mStopButton.setVisibility(getStopButtonVisibility());
+6 −4
Original line number Diff line number Diff line
@@ -42,12 +42,10 @@ import androidx.annotation.NonNull;
import androidx.core.graphics.drawable.IconCompat;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.media.BluetoothMediaDevice;
import com.android.settingslib.media.MediaDevice;
import com.android.settingslib.qrcode.QrCodeGenerator;
import com.android.systemui.res.R;
import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.phone.SystemUIDialog;

import com.google.zxing.WriterException;
@@ -237,7 +235,11 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog {

    MediaOutputBroadcastDialog(Context context, boolean aboveStatusbar,
            BroadcastSender broadcastSender, MediaOutputController mediaOutputController) {
        super(context, broadcastSender, mediaOutputController);
        super(
                context,
                broadcastSender,
                mediaOutputController, /* includePlaybackAndAppMetadata */
                true);
        mAdapter = new MediaOutputAdapter(mMediaOutputController);
        // TODO(b/226710953): Move the part to MediaOutputBaseDialog for every class
        //  that extends MediaOutputBaseDialog
Loading