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

Commit f7910e31 authored by Adam Powell's avatar Adam Powell Committed by Android (Google) Code Review
Browse files

Merge "Add wireless display selection support to MediaRouter." into jb-mr1-dev

parents 6e2cbccc 705ab808
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -11750,6 +11750,7 @@ package android.media {
    method public void removeUserRoute(android.media.MediaRouter.UserRouteInfo);
    method public void selectRoute(int, android.media.MediaRouter.RouteInfo);
    field public static final int ROUTE_TYPE_LIVE_AUDIO = 1; // 0x1
    field public static final int ROUTE_TYPE_LIVE_VIDEO = 2; // 0x2
    field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
  }
@@ -11798,6 +11799,7 @@ package android.media {
    method public int getVolume();
    method public int getVolumeHandling();
    method public int getVolumeMax();
    method public boolean isEnabled();
    method public void requestSetVolume(int);
    method public void requestUpdateVolume(int);
    method public void setTag(java.lang.Object);
+10 −3
Original line number Diff line number Diff line
@@ -221,21 +221,28 @@ public class MediaRouteButton extends View {
    void updateRouteCount() {
        final int N = mRouter.getRouteCount();
        int count = 0;
        boolean hasVideoRoutes = false;
        for (int i = 0; i < N; i++) {
            final RouteInfo route = mRouter.getRouteAt(i);
            if ((route.getSupportedTypes() & mRouteTypes) != 0) {
            final int routeTypes = route.getSupportedTypes();
            if ((routeTypes & mRouteTypes) != 0) {
                if (route instanceof RouteGroup) {
                    count += ((RouteGroup) route).getRouteCount();
                } else {
                    count++;
                }
                if ((routeTypes & MediaRouter.ROUTE_TYPE_LIVE_VIDEO) != 0) {
                    hasVideoRoutes = true;
                }
            }
        }

        setEnabled(count != 0);

        // Only allow toggling if we have more than just user routes
        mToggleMode = count == 2 && (mRouteTypes & MediaRouter.ROUTE_TYPE_LIVE_AUDIO) != 0;
        // Only allow toggling if we have more than just user routes.
        // Don't toggle if we support video routes, we may have to let the dialog scan.
        mToggleMode = count == 2 && (mRouteTypes & MediaRouter.ROUTE_TYPE_LIVE_AUDIO) != 0 &&
                !hasVideoRoutes;
    }

    @Override
+20 −2
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import android.app.MediaRouteActionProvider;
import android.app.MediaRouteButton;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.hardware.display.DisplayManager;
import android.media.MediaRouter;
import android.media.MediaRouter.RouteCategory;
import android.media.MediaRouter.RouteGroup;
@@ -70,6 +70,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
    };

    MediaRouter mRouter;
    DisplayManager mDisplayService;
    private int mRouteTypes;

    private LayoutInflater mInflater;
@@ -97,6 +98,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mRouter = (MediaRouter) activity.getSystemService(Context.MEDIA_ROUTER_SERVICE);
        mDisplayService = (DisplayManager) activity.getSystemService(Context.DISPLAY_SERVICE);
    }

    @Override
@@ -119,6 +121,15 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {

    public void setRouteTypes(int types) {
        mRouteTypes = types;
        if ((mRouteTypes & MediaRouter.ROUTE_TYPE_LIVE_VIDEO) != 0 && mDisplayService == null) {
            final Context activity = getActivity();
            if (activity != null) {
                mDisplayService = (DisplayManager) activity.getSystemService(
                        Context.DISPLAY_SERVICE);
            }
        } else {
            mDisplayService = null;
        }
    }

    void updateVolume() {
@@ -194,6 +205,9 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
    @Override
    public void onResume() {
        super.onResume();
        if (mDisplayService != null) {
            mDisplayService.scanWifiDisplays();
        }
    }

    private static class ViewHolder {
@@ -253,7 +267,9 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
                final RouteCategory cat = mRouter.getCategoryAt(i);
                routes = cat.getRoutes(mCatRouteList);

                if (!cat.isSystem()) {
                    mItems.add(cat);
                }

                if (cat == mCategoryEditingGroups) {
                    addGroupEditingCategoryRoutes(routes);
@@ -370,6 +386,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
        public boolean isEnabled(int position) {
            switch (getItemViewType(position)) {
                case VIEW_ROUTE:
                    return ((RouteInfo) mItems.get(position)).isEnabled();
                case VIEW_GROUPING_ROUTE:
                case VIEW_GROUPING_DONE:
                    return true;
@@ -434,6 +451,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
            }

            convertView.setActivated(position == mSelectedItemPosition);
            convertView.setEnabled(isEnabled(position));

            return convertView;
        }
+10 −5
Original line number Diff line number Diff line
@@ -24,7 +24,8 @@
               android:layout_height="56dp"
               android:scaleType="center"
               android:id="@+id/icon"
               android:visibility="gone" />
               android:visibility="gone"
               android:duplicateParentState="true" />

    <LinearLayout android:layout_width="0dp"
                  android:layout_height="match_parent"
@@ -32,21 +33,24 @@
                  android:orientation="vertical"
                  android:gravity="start|center_vertical"
                  android:paddingStart="?android:attr/listPreferredItemPaddingStart"
                  android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
                  android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
                  android:duplicateParentState="true">

        <TextView android:id="@android:id/text1"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:singleLine="true"
                  android:ellipsize="marquee"
                  android:textAppearance="?android:attr/textAppearanceMedium" />
                  android:textAppearance="?android:attr/textAppearanceMedium"
                  android:duplicateParentState="true" />

        <TextView android:id="@android:id/text2"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:singleLine="true"
                  android:ellipsize="marquee"
                  android:textAppearance="?android:attr/textAppearanceSmall" />
                  android:textAppearance="?android:attr/textAppearanceSmall"
                  android:duplicateParentState="true" />
    </LinearLayout>

    <ImageButton
@@ -56,6 +60,7 @@
        android:background="?android:attr/selectableItemBackground"
        android:src="@drawable/ic_media_group_expand"
        android:scaleType="center"
        android:visibility="gone" />
        android:visibility="gone"
        android:duplicateParentState="true" />

</LinearLayout>
+12 −0
Original line number Diff line number Diff line
@@ -3783,6 +3783,18 @@
    <!-- Content description of a MediaRouteButton for accessibility support -->
    <string name="media_route_button_content_description">Media output</string>

    <!-- Status message for remote routes attempting to scan/determine availability -->
    <string name="media_route_status_scanning">Scanning...</string>

    <!-- Status message for a remote route attempting to connect -->
    <string name="media_route_status_connecting">Connecting...</string>

    <!-- Status message for a remote route that is confirmed to be available for connection -->
    <string name="media_route_status_available">Available</string>

    <!-- Status message for remote routes that are not available for connection right now -->
    <string name="media_route_status_not_available">Not available</string>

    <!-- Display manager service -->

    <!-- Name of the built-in display.  [CHAR LIMIT=50] -->
Loading