Merge "API updates for MediaRouter" into jb-dev
This commit is contained in:
20
api/16.txt
20
api/16.txt
@ -3679,6 +3679,7 @@ package android.app {
|
|||||||
public class MediaRouteActionProvider extends android.view.ActionProvider {
|
public class MediaRouteActionProvider extends android.view.ActionProvider {
|
||||||
ctor public MediaRouteActionProvider(android.content.Context);
|
ctor public MediaRouteActionProvider(android.content.Context);
|
||||||
method public android.view.View onCreateActionView();
|
method public android.view.View onCreateActionView();
|
||||||
|
method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
|
||||||
method public void setRouteTypes(int);
|
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);
|
||||||
ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
|
ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
|
||||||
method public int getRouteTypes();
|
method public int getRouteTypes();
|
||||||
|
method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
|
||||||
method public void setRouteTypes(int);
|
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 {
|
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 addUserRoute(android.media.MediaRouter.UserRouteInfo);
|
||||||
method public void clearUserRoutes();
|
method public void clearUserRoutes();
|
||||||
method public android.media.MediaRouter.RouteCategory createRouteCategory(java.lang.CharSequence, boolean);
|
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.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
|
||||||
method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
|
method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
|
||||||
method public int getCategoryCount();
|
method public int getCategoryCount();
|
||||||
@ -11524,7 +11528,8 @@ package android.media {
|
|||||||
field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
|
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 onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
|
||||||
method public abstract void onRouteChanged(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);
|
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 {
|
public static class MediaRouter.RouteCategory {
|
||||||
method public java.lang.CharSequence getName();
|
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 java.util.List<android.media.MediaRouter.RouteInfo> getRoutes(java.util.List<android.media.MediaRouter.RouteInfo>);
|
||||||
method public int getSupportedTypes();
|
method public int getSupportedTypes();
|
||||||
method public boolean isGroupable();
|
method public boolean isGroupable();
|
||||||
@ -11548,17 +11554,21 @@ package android.media {
|
|||||||
method public int getRouteCount();
|
method public int getRouteCount();
|
||||||
method public void removeRoute(android.media.MediaRouter.RouteInfo);
|
method public void removeRoute(android.media.MediaRouter.RouteInfo);
|
||||||
method public void removeRoute(int);
|
method public void removeRoute(int);
|
||||||
|
method public void setIconDrawable(android.graphics.drawable.Drawable);
|
||||||
|
method public void setIconResource(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class MediaRouter.RouteInfo {
|
public static class MediaRouter.RouteInfo {
|
||||||
method public android.media.MediaRouter.RouteCategory getCategory();
|
method public android.media.MediaRouter.RouteCategory getCategory();
|
||||||
method public android.media.MediaRouter.RouteGroup getGroup();
|
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();
|
||||||
|
method public java.lang.CharSequence getName(android.content.Context);
|
||||||
method public java.lang.CharSequence getStatus();
|
method public java.lang.CharSequence getStatus();
|
||||||
method public int getSupportedTypes();
|
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();
|
ctor public MediaRouter.SimpleCallback();
|
||||||
method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
|
method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
|
||||||
method public void onRouteChanged(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 {
|
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(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 setStatus(java.lang.CharSequence);
|
||||||
|
method public void setTag(java.lang.Object);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MediaScannerConnection implements android.content.ServiceConnection {
|
public class MediaScannerConnection implements android.content.ServiceConnection {
|
||||||
|
@ -11514,6 +11514,7 @@ package android.media {
|
|||||||
method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
|
method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
|
||||||
method public void clearUserRoutes();
|
method public void clearUserRoutes();
|
||||||
method public android.media.MediaRouter.RouteCategory createRouteCategory(java.lang.CharSequence, boolean);
|
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.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
|
||||||
method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
|
method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
|
||||||
method public int getCategoryCount();
|
method public int getCategoryCount();
|
||||||
@ -11527,7 +11528,8 @@ package android.media {
|
|||||||
field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
|
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 onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
|
||||||
method public abstract void onRouteChanged(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);
|
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 {
|
public static class MediaRouter.RouteCategory {
|
||||||
method public java.lang.CharSequence getName();
|
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 java.util.List<android.media.MediaRouter.RouteInfo> getRoutes(java.util.List<android.media.MediaRouter.RouteInfo>);
|
||||||
method public int getSupportedTypes();
|
method public int getSupportedTypes();
|
||||||
method public boolean isGroupable();
|
method public boolean isGroupable();
|
||||||
@ -11560,11 +11563,12 @@ package android.media {
|
|||||||
method public android.media.MediaRouter.RouteGroup getGroup();
|
method public android.media.MediaRouter.RouteGroup getGroup();
|
||||||
method public android.graphics.drawable.Drawable getIconDrawable();
|
method public android.graphics.drawable.Drawable getIconDrawable();
|
||||||
method public java.lang.CharSequence getName();
|
method public java.lang.CharSequence getName();
|
||||||
|
method public java.lang.CharSequence getName(android.content.Context);
|
||||||
method public java.lang.CharSequence getStatus();
|
method public java.lang.CharSequence getStatus();
|
||||||
method public int getSupportedTypes();
|
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();
|
ctor public MediaRouter.SimpleCallback();
|
||||||
method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
|
method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
|
||||||
method public void onRouteChanged(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 setIconDrawable(android.graphics.drawable.Drawable);
|
||||||
method public void setIconResource(int);
|
method public void setIconResource(int);
|
||||||
method public void setName(java.lang.CharSequence);
|
method public void setName(java.lang.CharSequence);
|
||||||
|
method public void setName(int);
|
||||||
method public void setRemoteControlClient(android.media.RemoteControlClient);
|
method public void setRemoteControlClient(android.media.RemoteControlClient);
|
||||||
method public void setStatus(java.lang.CharSequence);
|
method public void setStatus(java.lang.CharSequence);
|
||||||
method public void setTag(java.lang.Object);
|
method public void setTag(java.lang.Object);
|
||||||
|
@ -103,7 +103,7 @@ public class MediaRouteButton extends View {
|
|||||||
|
|
||||||
if (mToggleMode) {
|
if (mToggleMode) {
|
||||||
if (mRemoteActive) {
|
if (mRemoteActive) {
|
||||||
mRouter.selectRoute(mRouteTypes, mRouter.getSystemAudioRoute());
|
mRouter.selectRouteInt(mRouteTypes, mRouter.getSystemAudioRoute());
|
||||||
} else {
|
} else {
|
||||||
final int N = mRouter.getRouteCount();
|
final int N = mRouter.getRouteCount();
|
||||||
for (int i = 0; i < N; i++) {
|
for (int i = 0; i < N; i++) {
|
||||||
|
@ -77,7 +77,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
private GroupAdapter mGroupAdapter;
|
private GroupAdapter mGroupAdapter;
|
||||||
private ListView mListView;
|
private ListView mListView;
|
||||||
|
|
||||||
static final RouteComparator sComparator = new RouteComparator();
|
final RouteComparator mComparator = new RouteComparator();
|
||||||
|
|
||||||
public MediaRouteChooserDialogFragment() {
|
public MediaRouteChooserDialogFragment() {
|
||||||
setStyle(STYLE_NO_TITLE, R.style.Theme_DeviceDefault_Dialog);
|
setStyle(STYLE_NO_TITLE, R.style.Theme_DeviceDefault_Dialog);
|
||||||
@ -100,11 +100,11 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
mLauncherListener.onDetached(this);
|
mLauncherListener.onDetached(this);
|
||||||
}
|
}
|
||||||
if (mGroupAdapter != null) {
|
if (mGroupAdapter != null) {
|
||||||
mRouter.removeCallback(mGroupAdapter);
|
mRouter.removeCallback(mGroupAdapter.mCallback);
|
||||||
mGroupAdapter = null;
|
mGroupAdapter = null;
|
||||||
}
|
}
|
||||||
if (mAdapter != null) {
|
if (mAdapter != null) {
|
||||||
mRouter.removeCallback(mAdapter);
|
mRouter.removeCallback(mAdapter.mCallback);
|
||||||
mAdapter = null;
|
mAdapter = null;
|
||||||
}
|
}
|
||||||
mInflater = null;
|
mInflater = null;
|
||||||
@ -146,14 +146,14 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
list.setOnItemClickListener(mAdapter);
|
list.setOnItemClickListener(mAdapter);
|
||||||
|
|
||||||
mListView = list;
|
mListView = list;
|
||||||
mRouter.addCallback(mRouteTypes, mAdapter);
|
mRouter.addCallback(mRouteTypes, mAdapter.mCallback);
|
||||||
|
|
||||||
return layout;
|
return layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
void onExpandGroup(RouteGroup info) {
|
void onExpandGroup(RouteGroup info) {
|
||||||
mGroupAdapter = new GroupAdapter(info);
|
mGroupAdapter = new GroupAdapter(info);
|
||||||
mRouter.addCallback(mRouteTypes, mGroupAdapter);
|
mRouter.addCallback(mRouteTypes, mGroupAdapter.mCallback);
|
||||||
mListView.setAdapter(mGroupAdapter);
|
mListView.setAdapter(mGroupAdapter);
|
||||||
mListView.setOnItemClickListener(mGroupAdapter);
|
mListView.setOnItemClickListener(mGroupAdapter);
|
||||||
mListView.setItemsCanFocus(false);
|
mListView.setItemsCanFocus(false);
|
||||||
@ -172,7 +172,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
||||||
mListView.setItemChecked(mAdapter.getSelectedRoutePosition(), true);
|
mListView.setItemChecked(mAdapter.getSelectedRoutePosition(), true);
|
||||||
|
|
||||||
mRouter.removeCallback(mGroupAdapter);
|
mRouter.removeCallback(mGroupAdapter.mCallback);
|
||||||
mGroupAdapter = null;
|
mGroupAdapter = null;
|
||||||
|
|
||||||
getDialog().setCanceledOnTouchOutside(true);
|
getDialog().setCanceledOnTouchOutside(true);
|
||||||
@ -205,14 +205,14 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
public int position;
|
public int position;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class RouteAdapter extends BaseAdapter implements MediaRouter.Callback,
|
private class RouteAdapter extends BaseAdapter implements ListView.OnItemClickListener {
|
||||||
ListView.OnItemClickListener {
|
|
||||||
private static final int VIEW_TOP_HEADER = 0;
|
private static final int VIEW_TOP_HEADER = 0;
|
||||||
private static final int VIEW_SECTION_HEADER = 1;
|
private static final int VIEW_SECTION_HEADER = 1;
|
||||||
private static final int VIEW_ROUTE = 2;
|
private static final int VIEW_ROUTE = 2;
|
||||||
|
|
||||||
private int mSelectedItemPosition;
|
private int mSelectedItemPosition;
|
||||||
private final ArrayList<Object> mItems = new ArrayList<Object>();
|
private final ArrayList<Object> mItems = new ArrayList<Object>();
|
||||||
|
final MediaRouterCallback mCallback = new MediaRouterCallback();
|
||||||
|
|
||||||
RouteAdapter() {
|
RouteAdapter() {
|
||||||
update();
|
update();
|
||||||
@ -333,7 +333,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
|
|
||||||
void bindItemView(int position, ViewHolder holder) {
|
void bindItemView(int position, ViewHolder holder) {
|
||||||
RouteInfo info = (RouteInfo) mItems.get(position);
|
RouteInfo info = (RouteInfo) mItems.get(position);
|
||||||
holder.text1.setText(info.getName());
|
holder.text1.setText(info.getName(getActivity()));
|
||||||
final CharSequence status = info.getStatus();
|
final CharSequence status = info.getStatus();
|
||||||
if (TextUtils.isEmpty(status)) {
|
if (TextUtils.isEmpty(status)) {
|
||||||
holder.text2.setVisibility(View.GONE);
|
holder.text2.setVisibility(View.GONE);
|
||||||
@ -363,49 +363,13 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
|
|
||||||
void bindHeaderView(int position, ViewHolder holder) {
|
void bindHeaderView(int position, ViewHolder holder) {
|
||||||
RouteCategory cat = (RouteCategory) mItems.get(position);
|
RouteCategory cat = (RouteCategory) mItems.get(position);
|
||||||
holder.text1.setText(cat.getName());
|
holder.text1.setText(cat.getName(getActivity()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSelectedRoutePosition() {
|
public int getSelectedRoutePosition() {
|
||||||
return mSelectedItemPosition;
|
return mSelectedItemPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRouteUnselected(MediaRouter router, int type, RouteInfo info) {
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRouteAdded(MediaRouter router, RouteInfo info) {
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRouteRemoved(MediaRouter router, RouteInfo info) {
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRouteChanged(MediaRouter router, RouteInfo info) {
|
|
||||||
notifyDataSetChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRouteGrouped(MediaRouter router, RouteInfo info,
|
|
||||||
RouteGroup group, int index) {
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRouteUngrouped(MediaRouter router, RouteInfo info, RouteGroup group) {
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
ListView lv = (ListView) parent;
|
ListView lv = (ListView) parent;
|
||||||
@ -414,7 +378,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
// Oops. Stale event running around? Skip it.
|
// Oops. Stale event running around? Skip it.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mRouter.selectRoute(mRouteTypes, (RouteInfo) item);
|
mRouter.selectRouteInt(mRouteTypes, (RouteInfo) item);
|
||||||
dismiss();
|
dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -428,10 +392,47 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
onExpandGroup((RouteGroup) getItem(position));
|
onExpandGroup((RouteGroup) getItem(position));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class MediaRouterCallback extends MediaRouter.Callback {
|
||||||
|
@Override
|
||||||
|
public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRouteUnselected(MediaRouter router, int type, RouteInfo info) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRouteAdded(MediaRouter router, RouteInfo info) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRouteRemoved(MediaRouter router, RouteInfo info) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRouteChanged(MediaRouter router, RouteInfo info) {
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRouteGrouped(MediaRouter router, RouteInfo info,
|
||||||
|
RouteGroup group, int index) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRouteUngrouped(MediaRouter router, RouteInfo info, RouteGroup group) {
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class GroupAdapter extends BaseAdapter implements MediaRouter.Callback,
|
private class GroupAdapter extends BaseAdapter implements ListView.OnItemClickListener {
|
||||||
ListView.OnItemClickListener {
|
|
||||||
private static final int VIEW_HEADER = 0;
|
private static final int VIEW_HEADER = 0;
|
||||||
private static final int VIEW_ROUTE = 1;
|
private static final int VIEW_ROUTE = 1;
|
||||||
private static final int VIEW_DONE = 2;
|
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 final ArrayList<RouteInfo> mFlatRoutes = new ArrayList<RouteInfo>();
|
||||||
private boolean mIgnoreUpdates;
|
private boolean mIgnoreUpdates;
|
||||||
|
|
||||||
|
final MediaRouterCallback mCallback = new MediaRouterCallback();
|
||||||
|
|
||||||
public GroupAdapter(RouteGroup primary) {
|
public GroupAdapter(RouteGroup primary) {
|
||||||
mPrimary = primary;
|
mPrimary = primary;
|
||||||
mCategory = primary.getCategory();
|
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
|
// Sort by name. This will keep the route positions relatively stable even though they
|
||||||
// will be repeatedly added and removed.
|
// will be repeatedly added and removed.
|
||||||
Collections.sort(mFlatRoutes, sComparator);
|
Collections.sort(mFlatRoutes, mComparator);
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -563,7 +566,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
|
|
||||||
void bindItemView(int position, ViewHolder holder) {
|
void bindItemView(int position, ViewHolder holder) {
|
||||||
RouteInfo info = (RouteInfo) getItem(position);
|
RouteInfo info = (RouteInfo) getItem(position);
|
||||||
holder.text1.setText(info.getName());
|
holder.text1.setText(info.getName(getActivity()));
|
||||||
final CharSequence status = info.getStatus();
|
final CharSequence status = info.getStatus();
|
||||||
if (TextUtils.isEmpty(status)) {
|
if (TextUtils.isEmpty(status)) {
|
||||||
holder.text2.setVisibility(View.GONE);
|
holder.text2.setVisibility(View.GONE);
|
||||||
@ -574,49 +577,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void bindHeaderView(int position, ViewHolder holder) {
|
void bindHeaderView(int position, ViewHolder holder) {
|
||||||
holder.text1.setText(mCategory.getName());
|
holder.text1.setText(mCategory.getName(getActivity()));
|
||||||
}
|
|
||||||
|
|
||||||
@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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -641,7 +602,7 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
if (mRouter.getSelectedRoute(mRouteTypes) == oldGroup) {
|
if (mRouter.getSelectedRoute(mRouteTypes) == oldGroup) {
|
||||||
// Old group was selected but is now empty. Select the group
|
// Old group was selected but is now empty. Select the group
|
||||||
// we're manipulating since that's where the last route went.
|
// we're manipulating since that's where the last route went.
|
||||||
mRouter.selectRoute(mRouteTypes, mPrimary);
|
mRouter.selectRouteInt(mRouteTypes, mPrimary);
|
||||||
}
|
}
|
||||||
mRouter.removeRouteInt(oldGroup);
|
mRouter.removeRouteInt(oldGroup);
|
||||||
}
|
}
|
||||||
@ -664,12 +625,58 @@ public class MediaRouteChooserDialogFragment extends DialogFragment {
|
|||||||
update();
|
update();
|
||||||
initCheckedItems();
|
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
|
@Override
|
||||||
public int compare(RouteInfo lhs, RouteInfo rhs) {
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,8 +83,7 @@ public class MediaRouter {
|
|||||||
// Called after sStatic is initialized
|
// Called after sStatic is initialized
|
||||||
void initDefaultRoutes() {
|
void initDefaultRoutes() {
|
||||||
mDefaultAudio = new RouteInfo(mSystemCategory);
|
mDefaultAudio = new RouteInfo(mSystemCategory);
|
||||||
mDefaultAudio.mName = mResources.getText(
|
mDefaultAudio.mNameResId = com.android.internal.R.string.default_audio_route_name;
|
||||||
com.android.internal.R.string.default_audio_route_name);
|
|
||||||
mDefaultAudio.mSupportedTypes = ROUTE_TYPE_LIVE_AUDIO;
|
mDefaultAudio.mSupportedTypes = ROUTE_TYPE_LIVE_AUDIO;
|
||||||
addRoute(mDefaultAudio);
|
addRoute(mDefaultAudio);
|
||||||
}
|
}
|
||||||
@ -156,10 +155,15 @@ public class MediaRouter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void onHeadphonesPlugged(boolean headphonesPresent, String headphonesName) {
|
static void onHeadphonesPlugged(boolean headphonesPresent, String headphonesName) {
|
||||||
sStatic.mDefaultAudio.mName = headphonesPresent
|
if (headphonesPresent) {
|
||||||
? headphonesName
|
sStatic.mDefaultAudio.mName = headphonesName;
|
||||||
: sStatic.mResources.getText(
|
sStatic.mDefaultAudio.mNameResId = 0;
|
||||||
com.android.internal.R.string.default_audio_route_name);
|
} else {
|
||||||
|
sStatic.mDefaultAudio.mName = null;
|
||||||
|
sStatic.mDefaultAudio.mNameResId =
|
||||||
|
com.android.internal.R.string.default_audio_route_name;
|
||||||
|
}
|
||||||
|
|
||||||
dispatchRouteChanged(sStatic.mDefaultAudio);
|
dispatchRouteChanged(sStatic.mDefaultAudio);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,11 +211,25 @@ public class MediaRouter {
|
|||||||
* @param route Route to select
|
* @param route Route to select
|
||||||
*/
|
*/
|
||||||
public void selectRoute(int types, RouteInfo route) {
|
public void selectRoute(int types, RouteInfo route) {
|
||||||
|
// Applications shouldn't programmatically change anything but user routes.
|
||||||
|
types &= ROUTE_TYPE_USER;
|
||||||
|
selectRouteStatic(types, route);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hide internal use
|
||||||
|
*/
|
||||||
|
public void selectRouteInt(int types, RouteInfo route) {
|
||||||
selectRouteStatic(types, route);
|
selectRouteStatic(types, route);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void selectRouteStatic(int types, RouteInfo route) {
|
static void selectRouteStatic(int types, RouteInfo route) {
|
||||||
if (sStatic.mSelectedRoute == route) return;
|
if (sStatic.mSelectedRoute == route) return;
|
||||||
|
if ((route.getSupportedTypes() & types) == 0) {
|
||||||
|
Log.w(TAG, "selectRoute ignored; cannot select route with supported types " +
|
||||||
|
typesToString(route.getSupportedTypes()) + " into route types " +
|
||||||
|
typesToString(types));
|
||||||
|
}
|
||||||
|
|
||||||
if (sStatic.mSelectedRoute != null) {
|
if (sStatic.mSelectedRoute != null) {
|
||||||
// TODO filter types properly
|
// TODO filter types properly
|
||||||
@ -425,6 +443,17 @@ public class MediaRouter {
|
|||||||
return new RouteCategory(name, ROUTE_TYPE_USER, isGroupable);
|
return new RouteCategory(name, ROUTE_TYPE_USER, isGroupable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new route category. Each route must belong to a category.
|
||||||
|
*
|
||||||
|
* @param nameResId Resource ID of the name of the new category
|
||||||
|
* @param isGroupable true if routes in this category may be grouped with one another
|
||||||
|
* @return the new RouteCategory
|
||||||
|
*/
|
||||||
|
public RouteCategory createRouteCategory(int nameResId, boolean isGroupable) {
|
||||||
|
return new RouteCategory(nameResId, ROUTE_TYPE_USER, isGroupable);
|
||||||
|
}
|
||||||
|
|
||||||
static void updateRoute(final RouteInfo info) {
|
static void updateRoute(final RouteInfo info) {
|
||||||
dispatchRouteChanged(info);
|
dispatchRouteChanged(info);
|
||||||
}
|
}
|
||||||
@ -501,8 +530,7 @@ public class MediaRouter {
|
|||||||
|
|
||||||
static void onA2dpDeviceConnected() {
|
static void onA2dpDeviceConnected() {
|
||||||
final RouteInfo info = new RouteInfo(sStatic.mSystemCategory);
|
final RouteInfo info = new RouteInfo(sStatic.mSystemCategory);
|
||||||
info.mName = sStatic.mResources.getString(
|
info.mNameResId = com.android.internal.R.string.bluetooth_a2dp_audio_route_name;
|
||||||
com.android.internal.R.string.bluetooth_a2dp_audio_route_name);
|
|
||||||
sStatic.mBluetoothA2dpRoute = info;
|
sStatic.mBluetoothA2dpRoute = info;
|
||||||
addRoute(sStatic.mBluetoothA2dpRoute);
|
addRoute(sStatic.mBluetoothA2dpRoute);
|
||||||
}
|
}
|
||||||
@ -517,6 +545,7 @@ public class MediaRouter {
|
|||||||
*/
|
*/
|
||||||
public static class RouteInfo {
|
public static class RouteInfo {
|
||||||
CharSequence mName;
|
CharSequence mName;
|
||||||
|
int mNameResId;
|
||||||
private CharSequence mStatus;
|
private CharSequence mStatus;
|
||||||
int mSupportedTypes;
|
int mSupportedTypes;
|
||||||
RouteGroup mGroup;
|
RouteGroup mGroup;
|
||||||
@ -532,6 +561,24 @@ public class MediaRouter {
|
|||||||
* to users who may select this as the active route.
|
* to users who may select this as the active route.
|
||||||
*/
|
*/
|
||||||
public CharSequence getName() {
|
public CharSequence getName() {
|
||||||
|
return getName(sStatic.mResources);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the properly localized/resource selected name of this route.
|
||||||
|
*
|
||||||
|
* @param context Context used to resolve the correct configuration to load
|
||||||
|
* @return The user-friendly name of the media route. This is the string presented
|
||||||
|
* to users who may select this as the active route.
|
||||||
|
*/
|
||||||
|
public CharSequence getName(Context context) {
|
||||||
|
return getName(context.getResources());
|
||||||
|
}
|
||||||
|
|
||||||
|
CharSequence getName(Resources res) {
|
||||||
|
if (mNameResId != 0) {
|
||||||
|
return mName = res.getText(mNameResId);
|
||||||
|
}
|
||||||
return mName;
|
return mName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -621,6 +668,16 @@ public class MediaRouter {
|
|||||||
routeUpdated();
|
routeUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the user-visible name of this route.
|
||||||
|
* @param resId Resource ID of the name to display to the user to describe this route
|
||||||
|
*/
|
||||||
|
public void setName(int resId) {
|
||||||
|
mNameResId = resId;
|
||||||
|
mName = null;
|
||||||
|
routeUpdated();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the current user-visible status for this route.
|
* Set the current user-visible status for this route.
|
||||||
* @param status Status to display to the user to describe what the endpoint
|
* @param status Status to display to the user to describe what the endpoint
|
||||||
@ -700,9 +757,9 @@ public class MediaRouter {
|
|||||||
mGroup = this;
|
mGroup = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence getName() {
|
CharSequence getName(Resources res) {
|
||||||
if (mUpdateName) updateName();
|
if (mUpdateName) updateName();
|
||||||
return super.getName();
|
return super.getName(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -870,6 +927,7 @@ public class MediaRouter {
|
|||||||
*/
|
*/
|
||||||
public static class RouteCategory {
|
public static class RouteCategory {
|
||||||
CharSequence mName;
|
CharSequence mName;
|
||||||
|
int mNameResId;
|
||||||
int mTypes;
|
int mTypes;
|
||||||
final boolean mGroupable;
|
final boolean mGroupable;
|
||||||
|
|
||||||
@ -879,10 +937,33 @@ public class MediaRouter {
|
|||||||
mGroupable = groupable;
|
mGroupable = groupable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RouteCategory(int nameResId, int types, boolean groupable) {
|
||||||
|
mNameResId = nameResId;
|
||||||
|
mTypes = types;
|
||||||
|
mGroupable = groupable;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the name of this route category
|
* @return the name of this route category
|
||||||
*/
|
*/
|
||||||
public CharSequence getName() {
|
public CharSequence getName() {
|
||||||
|
return getName(sStatic.mResources);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the properly localized/configuration dependent name of this RouteCategory.
|
||||||
|
*
|
||||||
|
* @param context Context to resolve name resources
|
||||||
|
* @return the name of this route category
|
||||||
|
*/
|
||||||
|
public CharSequence getName(Context context) {
|
||||||
|
return getName(context.getResources());
|
||||||
|
}
|
||||||
|
|
||||||
|
CharSequence getName(Resources res) {
|
||||||
|
if (mNameResId != 0) {
|
||||||
|
return res.getText(mNameResId);
|
||||||
|
}
|
||||||
return mName;
|
return mName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -963,7 +1044,7 @@ public class MediaRouter {
|
|||||||
* @see MediaRouter#addCallback(int, Callback)
|
* @see MediaRouter#addCallback(int, Callback)
|
||||||
* @see MediaRouter#removeCallback(Callback)
|
* @see MediaRouter#removeCallback(Callback)
|
||||||
*/
|
*/
|
||||||
public interface Callback {
|
public static abstract class Callback {
|
||||||
/**
|
/**
|
||||||
* Called when the supplied route becomes selected as the active route
|
* Called when the supplied route becomes selected as the active route
|
||||||
* for the given route type.
|
* for the given route type.
|
||||||
@ -972,7 +1053,7 @@ public class MediaRouter {
|
|||||||
* @param type Type flag set indicating the routes that have been selected
|
* @param type Type flag set indicating the routes that have been selected
|
||||||
* @param info Route that has been selected for the given route types
|
* @param info Route that has been selected for the given route types
|
||||||
*/
|
*/
|
||||||
public void onRouteSelected(MediaRouter router, int type, RouteInfo info);
|
public abstract void onRouteSelected(MediaRouter router, int type, RouteInfo info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the supplied route becomes unselected as the active route
|
* Called when the supplied route becomes unselected as the active route
|
||||||
@ -982,7 +1063,7 @@ public class MediaRouter {
|
|||||||
* @param type Type flag set indicating the routes that have been unselected
|
* @param type Type flag set indicating the routes that have been unselected
|
||||||
* @param info Route that has been unselected for the given route types
|
* @param info Route that has been unselected for the given route types
|
||||||
*/
|
*/
|
||||||
public void onRouteUnselected(MediaRouter router, int type, RouteInfo info);
|
public abstract void onRouteUnselected(MediaRouter router, int type, RouteInfo info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a route for the specified type was added.
|
* Called when a route for the specified type was added.
|
||||||
@ -990,7 +1071,7 @@ public class MediaRouter {
|
|||||||
* @param router the MediaRouter reporting the event
|
* @param router the MediaRouter reporting the event
|
||||||
* @param info Route that has become available for use
|
* @param info Route that has become available for use
|
||||||
*/
|
*/
|
||||||
public void onRouteAdded(MediaRouter router, RouteInfo info);
|
public abstract void onRouteAdded(MediaRouter router, RouteInfo info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a route for the specified type was removed.
|
* Called when a route for the specified type was removed.
|
||||||
@ -998,7 +1079,7 @@ public class MediaRouter {
|
|||||||
* @param router the MediaRouter reporting the event
|
* @param router the MediaRouter reporting the event
|
||||||
* @param info Route that has been removed from availability
|
* @param info Route that has been removed from availability
|
||||||
*/
|
*/
|
||||||
public void onRouteRemoved(MediaRouter router, RouteInfo info);
|
public abstract void onRouteRemoved(MediaRouter router, RouteInfo info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when an aspect of the indicated route has changed.
|
* Called when an aspect of the indicated route has changed.
|
||||||
@ -1009,7 +1090,7 @@ public class MediaRouter {
|
|||||||
* @param router the MediaRouter reporting the event
|
* @param router the MediaRouter reporting the event
|
||||||
* @param info The route that was changed
|
* @param info The route that was changed
|
||||||
*/
|
*/
|
||||||
public void onRouteChanged(MediaRouter router, RouteInfo info);
|
public abstract void onRouteChanged(MediaRouter router, RouteInfo info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a route is added to a group.
|
* Called when a route is added to a group.
|
||||||
@ -1019,7 +1100,8 @@ public class MediaRouter {
|
|||||||
* @param group The group the route was added to
|
* @param group The group the route was added to
|
||||||
* @param index The route index within group that info was added at
|
* @param index The route index within group that info was added at
|
||||||
*/
|
*/
|
||||||
public void onRouteGrouped(MediaRouter router, RouteInfo info, RouteGroup group, int index);
|
public abstract void onRouteGrouped(MediaRouter router, RouteInfo info, RouteGroup group,
|
||||||
|
int index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a route is removed from a group.
|
* Called when a route is removed from a group.
|
||||||
@ -1028,15 +1110,15 @@ public class MediaRouter {
|
|||||||
* @param info The route that was removed
|
* @param info The route that was removed
|
||||||
* @param group The group the route was removed from
|
* @param group The group the route was removed from
|
||||||
*/
|
*/
|
||||||
public void onRouteUngrouped(MediaRouter router, RouteInfo info, RouteGroup group);
|
public abstract void onRouteUngrouped(MediaRouter router, RouteInfo info, RouteGroup group);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stub implementation of the {@link MediaRouter.Callback} interface.
|
* Stub implementation of {@link MediaRouter.Callback}.
|
||||||
* Each interface method is defined as a no-op. Override just the ones
|
* Each abstract method is defined as a no-op. Override just the ones
|
||||||
* you need.
|
* you need.
|
||||||
*/
|
*/
|
||||||
public static class SimpleCallback implements Callback {
|
public static class SimpleCallback extends Callback {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
|
public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
|
||||||
|
Reference in New Issue
Block a user