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

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

Merge "API updates for MediaRouter" into jb-dev

parents 7661bc6c 0d03c042
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -3679,6 +3679,7 @@ package android.app {
  public class MediaRouteActionProvider extends android.view.ActionProvider {
    ctor public MediaRouteActionProvider(android.content.Context);
    method public android.view.View onCreateActionView();
    method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
    method public void setRouteTypes(int);
  }
@@ -3687,7 +3688,9 @@ package android.app {
    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
    method public int getRouteTypes();
    method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
    method public void setRouteTypes(int);
    method public void showDialog();
  }
  public class NativeActivity extends android.app.Activity implements android.view.InputQueue.Callback android.view.SurfaceHolder.Callback2 android.view.ViewTreeObserver.OnGlobalLayoutListener {
@@ -11511,6 +11514,7 @@ package android.media {
    method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
    method public void clearUserRoutes();
    method public android.media.MediaRouter.RouteCategory createRouteCategory(java.lang.CharSequence, boolean);
    method public android.media.MediaRouter.RouteCategory createRouteCategory(int, boolean);
    method public android.media.MediaRouter.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
    method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
    method public int getCategoryCount();
@@ -11524,7 +11528,8 @@ package android.media {
    field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
  }
  public static abstract interface MediaRouter.Callback {
  public static abstract class MediaRouter.Callback {
    ctor public MediaRouter.Callback();
    method public abstract void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
    method public abstract void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
    method public abstract void onRouteGrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup, int);
@@ -11536,6 +11541,7 @@ package android.media {
  public static class MediaRouter.RouteCategory {
    method public java.lang.CharSequence getName();
    method public java.lang.CharSequence getName(android.content.Context);
    method public java.util.List<android.media.MediaRouter.RouteInfo> getRoutes(java.util.List<android.media.MediaRouter.RouteInfo>);
    method public int getSupportedTypes();
    method public boolean isGroupable();
@@ -11548,17 +11554,21 @@ package android.media {
    method public int getRouteCount();
    method public void removeRoute(android.media.MediaRouter.RouteInfo);
    method public void removeRoute(int);
    method public void setIconDrawable(android.graphics.drawable.Drawable);
    method public void setIconResource(int);
  }
  public static class MediaRouter.RouteInfo {
    method public android.media.MediaRouter.RouteCategory getCategory();
    method public android.media.MediaRouter.RouteGroup getGroup();
    method public android.graphics.drawable.Drawable getIconDrawable();
    method public java.lang.CharSequence getName();
    method public java.lang.CharSequence getName(android.content.Context);
    method public java.lang.CharSequence getStatus();
    method public int getSupportedTypes();
  }
  public static class MediaRouter.SimpleCallback implements android.media.MediaRouter.Callback {
  public static class MediaRouter.SimpleCallback extends android.media.MediaRouter.Callback {
    ctor public MediaRouter.SimpleCallback();
    method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
    method public void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
@@ -11570,8 +11580,14 @@ package android.media {
  }
  public static class MediaRouter.UserRouteInfo extends android.media.MediaRouter.RouteInfo {
    method public java.lang.Object getTag();
    method public void setIconDrawable(android.graphics.drawable.Drawable);
    method public void setIconResource(int);
    method public void setName(java.lang.CharSequence);
    method public void setName(int);
    method public void setRemoteControlClient(android.media.RemoteControlClient);
    method public void setStatus(java.lang.CharSequence);
    method public void setTag(java.lang.Object);
  }
  public class MediaScannerConnection implements android.content.ServiceConnection {
+7 −2
Original line number Diff line number Diff line
@@ -11514,6 +11514,7 @@ package android.media {
    method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
    method public void clearUserRoutes();
    method public android.media.MediaRouter.RouteCategory createRouteCategory(java.lang.CharSequence, boolean);
    method public android.media.MediaRouter.RouteCategory createRouteCategory(int, boolean);
    method public android.media.MediaRouter.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
    method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
    method public int getCategoryCount();
@@ -11527,7 +11528,8 @@ package android.media {
    field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
  }
  public static abstract interface MediaRouter.Callback {
  public static abstract class MediaRouter.Callback {
    ctor public MediaRouter.Callback();
    method public abstract void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
    method public abstract void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
    method public abstract void onRouteGrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup, int);
@@ -11539,6 +11541,7 @@ package android.media {
  public static class MediaRouter.RouteCategory {
    method public java.lang.CharSequence getName();
    method public java.lang.CharSequence getName(android.content.Context);
    method public java.util.List<android.media.MediaRouter.RouteInfo> getRoutes(java.util.List<android.media.MediaRouter.RouteInfo>);
    method public int getSupportedTypes();
    method public boolean isGroupable();
@@ -11560,11 +11563,12 @@ package android.media {
    method public android.media.MediaRouter.RouteGroup getGroup();
    method public android.graphics.drawable.Drawable getIconDrawable();
    method public java.lang.CharSequence getName();
    method public java.lang.CharSequence getName(android.content.Context);
    method public java.lang.CharSequence getStatus();
    method public int getSupportedTypes();
  }
  public static class MediaRouter.SimpleCallback implements android.media.MediaRouter.Callback {
  public static class MediaRouter.SimpleCallback extends android.media.MediaRouter.Callback {
    ctor public MediaRouter.SimpleCallback();
    method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
    method public void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
@@ -11580,6 +11584,7 @@ package android.media {
    method public void setIconDrawable(android.graphics.drawable.Drawable);
    method public void setIconResource(int);
    method public void setName(java.lang.CharSequence);
    method public void setName(int);
    method public void setRemoteControlClient(android.media.RemoteControlClient);
    method public void setStatus(java.lang.CharSequence);
    method public void setTag(java.lang.Object);
+1 −1
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ public class MediaRouteButton extends View {

        if (mToggleMode) {
            if (mRemoteActive) {
                mRouter.selectRoute(mRouteTypes, mRouter.getSystemAudioRoute());
                mRouter.selectRouteInt(mRouteTypes, mRouter.getSystemAudioRoute());
            } else {
                final int N = mRouter.getRouteCount();
                for (int i = 0; i < N; i++) {
+104 −97
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
    private GroupAdapter mGroupAdapter;
    private ListView mListView;

    static final RouteComparator sComparator = new RouteComparator();
    final RouteComparator mComparator = new RouteComparator();

    public MediaRouteChooserDialogFragment() {
        setStyle(STYLE_NO_TITLE, R.style.Theme_DeviceDefault_Dialog);
@@ -100,11 +100,11 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
            mLauncherListener.onDetached(this);
        }
        if (mGroupAdapter != null) {
            mRouter.removeCallback(mGroupAdapter);
            mRouter.removeCallback(mGroupAdapter.mCallback);
            mGroupAdapter = null;
        }
        if (mAdapter != null) {
            mRouter.removeCallback(mAdapter);
            mRouter.removeCallback(mAdapter.mCallback);
            mAdapter = null;
        }
        mInflater = null;
@@ -146,14 +146,14 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
        list.setOnItemClickListener(mAdapter);

        mListView = list;
        mRouter.addCallback(mRouteTypes, mAdapter);
        mRouter.addCallback(mRouteTypes, mAdapter.mCallback);

        return layout;
    }

    void onExpandGroup(RouteGroup info) {
        mGroupAdapter = new GroupAdapter(info);
        mRouter.addCallback(mRouteTypes, mGroupAdapter);
        mRouter.addCallback(mRouteTypes, mGroupAdapter.mCallback);
        mListView.setAdapter(mGroupAdapter);
        mListView.setOnItemClickListener(mGroupAdapter);
        mListView.setItemsCanFocus(false);
@@ -172,7 +172,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
        mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        mListView.setItemChecked(mAdapter.getSelectedRoutePosition(), true);

        mRouter.removeCallback(mGroupAdapter);
        mRouter.removeCallback(mGroupAdapter.mCallback);
        mGroupAdapter = null;

        getDialog().setCanceledOnTouchOutside(true);
@@ -205,14 +205,14 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
        public int position;
    }

    private class RouteAdapter extends BaseAdapter implements MediaRouter.Callback,
            ListView.OnItemClickListener {
    private class RouteAdapter extends BaseAdapter implements ListView.OnItemClickListener {
        private static final int VIEW_TOP_HEADER = 0;
        private static final int VIEW_SECTION_HEADER = 1;
        private static final int VIEW_ROUTE = 2;

        private int mSelectedItemPosition;
        private final ArrayList<Object> mItems = new ArrayList<Object>();
        final MediaRouterCallback mCallback = new MediaRouterCallback();

        RouteAdapter() {
            update();
@@ -333,7 +333,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {

        void bindItemView(int position, ViewHolder holder) {
            RouteInfo info = (RouteInfo) mItems.get(position);
            holder.text1.setText(info.getName());
            holder.text1.setText(info.getName(getActivity()));
            final CharSequence status = info.getStatus();
            if (TextUtils.isEmpty(status)) {
                holder.text2.setVisibility(View.GONE);
@@ -363,13 +363,37 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {

        void bindHeaderView(int position, ViewHolder holder) {
            RouteCategory cat = (RouteCategory) mItems.get(position);
            holder.text1.setText(cat.getName());
            holder.text1.setText(cat.getName(getActivity()));
        }

        public int getSelectedRoutePosition() {
            return mSelectedItemPosition;
        }

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            ListView lv = (ListView) parent;
            final Object item = getItem(lv.getCheckedItemPosition());
            if (!(item instanceof RouteInfo)) {
                // Oops. Stale event running around? Skip it.
                return;
            }
            mRouter.selectRouteInt(mRouteTypes, (RouteInfo) item);
            dismiss();
        }

        class ExpandGroupListener implements View.OnClickListener {
            int position;

            @Override
            public void onClick(View v) {
                // Assumption: this is only available for the user to click if we're presenting
                // a groupable category, where every top-level route in the category is a group.
                onExpandGroup((RouteGroup) getItem(position));
            }
        }

        class MediaRouterCallback extends MediaRouter.Callback {
            @Override
            public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
                update();
@@ -405,33 +429,10 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
            public void onRouteUngrouped(MediaRouter router, RouteInfo info, RouteGroup group) {
                update();
            }

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            ListView lv = (ListView) parent;
            final Object item = getItem(lv.getCheckedItemPosition());
            if (!(item instanceof RouteInfo)) {
                // Oops. Stale event running around? Skip it.
                return;
            }
            mRouter.selectRoute(mRouteTypes, (RouteInfo) item);
            dismiss();
        }

        class ExpandGroupListener implements View.OnClickListener {
            int position;

            @Override
            public void onClick(View v) {
                // Assumption: this is only available for the user to click if we're presenting
                // a groupable category, where every top-level route in the category is a group.
                onExpandGroup((RouteGroup) getItem(position));
            }
        }
    }

    private class GroupAdapter extends BaseAdapter implements MediaRouter.Callback,
            ListView.OnItemClickListener {
    private class GroupAdapter extends BaseAdapter implements ListView.OnItemClickListener {
        private static final int VIEW_HEADER = 0;
        private static final int VIEW_ROUTE = 1;
        private static final int VIEW_DONE = 2;
@@ -442,6 +443,8 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
        private final ArrayList<RouteInfo> mFlatRoutes = new ArrayList<RouteInfo>();
        private boolean mIgnoreUpdates;
        
        final MediaRouterCallback mCallback = new MediaRouterCallback();

        public GroupAdapter(RouteGroup primary) {
            mPrimary = primary;
            mCategory = primary.getCategory();
@@ -493,7 +496,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {

            // Sort by name. This will keep the route positions relatively stable even though they
            // will be repeatedly added and removed.
            Collections.sort(mFlatRoutes, sComparator);
            Collections.sort(mFlatRoutes, mComparator);
            notifyDataSetChanged();
        }

@@ -563,7 +566,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {

        void bindItemView(int position, ViewHolder holder) {
            RouteInfo info = (RouteInfo) getItem(position);
            holder.text1.setText(info.getName());
            holder.text1.setText(info.getName(getActivity()));
            final CharSequence status = info.getStatus();
            if (TextUtils.isEmpty(status)) {
                holder.text2.setVisibility(View.GONE);
@@ -574,49 +577,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
        }

        void bindHeaderView(int position, ViewHolder holder) {
            holder.text1.setText(mCategory.getName());
        }

        @Override
        public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
        }

        @Override
        public void onRouteUnselected(MediaRouter router, int type, RouteInfo info) {
        }

        @Override
        public void onRouteAdded(MediaRouter router, RouteInfo info) {
            update();
            initCheckedItems();
        }

        @Override
        public void onRouteRemoved(MediaRouter router, RouteInfo info) {
            if (info == mPrimary) {
                // Can't keep grouping, clean it up.
                onDoneGrouping();
            } else {
                update();
                initCheckedItems();
            }
        }

        @Override
        public void onRouteChanged(MediaRouter router, RouteInfo info) {
            update();
        }

        @Override
        public void onRouteGrouped(MediaRouter router, RouteInfo info, RouteGroup group, int index) {
            update();
            initCheckedItems();
        }

        @Override
        public void onRouteUngrouped(MediaRouter router, RouteInfo info, RouteGroup group) {
            update();
            initCheckedItems();
            holder.text1.setText(mCategory.getName(getActivity()));
        }

        @Override
@@ -641,7 +602,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
                    if (mRouter.getSelectedRoute(mRouteTypes) == oldGroup) {
                        // Old group was selected but is now empty. Select the group
                        // we're manipulating since that's where the last route went.
                        mRouter.selectRoute(mRouteTypes, mPrimary);
                        mRouter.selectRouteInt(mRouteTypes, mPrimary);
                    }
                    mRouter.removeRouteInt(oldGroup);
                }
@@ -664,12 +625,58 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
            update();
            initCheckedItems();
        }

        class MediaRouterCallback extends MediaRouter.Callback {
            @Override
            public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
            }

            @Override
            public void onRouteUnselected(MediaRouter router, int type, RouteInfo info) {
            }

            @Override
            public void onRouteAdded(MediaRouter router, RouteInfo info) {
                update();
                initCheckedItems();
            }

            @Override
            public void onRouteRemoved(MediaRouter router, RouteInfo info) {
                if (info == mPrimary) {
                    // Can't keep grouping, clean it up.
                    onDoneGrouping();
                } else {
                    update();
                    initCheckedItems();
                }
            }

            @Override
            public void onRouteChanged(MediaRouter router, RouteInfo info) {
                update();
            }

            @Override
            public void onRouteGrouped(MediaRouter router, RouteInfo info, RouteGroup group,
                    int index) {
                update();
                initCheckedItems();
            }

            @Override
            public void onRouteUngrouped(MediaRouter router, RouteInfo info, RouteGroup group) {
                update();
                initCheckedItems();
            }
        }
    }

    static class RouteComparator implements Comparator<RouteInfo> {
    class RouteComparator implements Comparator<RouteInfo> {
        @Override
        public int compare(RouteInfo lhs, RouteInfo rhs) {
            return lhs.getName().toString().compareTo(rhs.getName().toString());
            return lhs.getName(getActivity()).toString()
                    .compareTo(rhs.getName(getActivity()).toString());
        }
    }

+103 −21

File changed.

Preview size limit exceeded, changes collapsed.