MediaRouter work
Fix a bug where MediaRouter would crash on creation Add click listener for app-supplied extended settings on the route selection dialog. Change-Id: I2991db1720b5c574148e250526984592f4dc3c44
This commit is contained in:
@ -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,6 +3688,7 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ public class MediaRouteActionProvider extends ActionProvider {
|
|||||||
private MediaRouteButton mView;
|
private MediaRouteButton mView;
|
||||||
private int mRouteTypes;
|
private int mRouteTypes;
|
||||||
private final RouterCallback mRouterCallback = new RouterCallback();
|
private final RouterCallback mRouterCallback = new RouterCallback();
|
||||||
|
private View.OnClickListener mExtendedSettingsListener;
|
||||||
|
|
||||||
public MediaRouteActionProvider(Context context) {
|
public MediaRouteActionProvider(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
@ -76,6 +77,7 @@ public class MediaRouteActionProvider extends ActionProvider {
|
|||||||
mView = new MediaRouteButton(mContext);
|
mView = new MediaRouteButton(mContext);
|
||||||
mMenuItem.setVisible(mRouter.getRouteCount() > 1);
|
mMenuItem.setVisible(mRouter.getRouteCount() > 1);
|
||||||
mView.setRouteTypes(mRouteTypes);
|
mView.setRouteTypes(mRouteTypes);
|
||||||
|
mView.setExtendedSettingsClickListener(mExtendedSettingsListener);
|
||||||
return mView;
|
return mView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,6 +87,13 @@ public class MediaRouteActionProvider extends ActionProvider {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setExtendedSettingsClickListener(View.OnClickListener listener) {
|
||||||
|
mExtendedSettingsListener = listener;
|
||||||
|
if (mView != null) {
|
||||||
|
mView.setExtendedSettingsClickListener(listener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class RouterCallback extends MediaRouter.SimpleCallback {
|
private class RouterCallback extends MediaRouter.SimpleCallback {
|
||||||
@Override
|
@Override
|
||||||
public void onRouteAdded(MediaRouter router, RouteInfo info) {
|
public void onRouteAdded(MediaRouter router, RouteInfo info) {
|
||||||
|
@ -43,6 +43,8 @@ public class MediaRouteButton extends View {
|
|||||||
private int mMinWidth;
|
private int mMinWidth;
|
||||||
private int mMinHeight;
|
private int mMinHeight;
|
||||||
|
|
||||||
|
private OnClickListener mExtendedSettingsClickListener;
|
||||||
|
|
||||||
private static final int[] ACTIVATED_STATE_SET = {
|
private static final int[] ACTIVATED_STATE_SET = {
|
||||||
R.attr.state_activated
|
R.attr.state_activated
|
||||||
};
|
};
|
||||||
@ -260,6 +262,11 @@ public class MediaRouteButton extends View {
|
|||||||
mRemoteIndicator.draw(canvas);
|
mRemoteIndicator.draw(canvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setExtendedSettingsClickListener(OnClickListener listener) {
|
||||||
|
// TODO: if dialog is already open, propagate so that it updates live.
|
||||||
|
mExtendedSettingsClickListener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
private class MediaRouteCallback extends MediaRouter.SimpleCallback {
|
private class MediaRouteCallback extends MediaRouter.SimpleCallback {
|
||||||
@Override
|
@Override
|
||||||
public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
|
public void onRouteSelected(MediaRouter router, int type, RouteInfo info) {
|
||||||
|
@ -45,21 +45,21 @@ public class MediaRouter {
|
|||||||
private static final String TAG = "MediaRouter";
|
private static final String TAG = "MediaRouter";
|
||||||
|
|
||||||
static class Static {
|
static class Static {
|
||||||
private final Resources mResources;
|
final Resources mResources;
|
||||||
private final AudioManager mAudioManager;
|
final AudioManager mAudioManager;
|
||||||
private final Handler mHandler;
|
final Handler mHandler;
|
||||||
private final ArrayList<CallbackInfo> mCallbacks = new ArrayList<CallbackInfo>();
|
final ArrayList<CallbackInfo> mCallbacks = new ArrayList<CallbackInfo>();
|
||||||
|
|
||||||
private final ArrayList<RouteInfo> mRoutes = new ArrayList<RouteInfo>();
|
final ArrayList<RouteInfo> mRoutes = new ArrayList<RouteInfo>();
|
||||||
private final ArrayList<RouteCategory> mCategories = new ArrayList<RouteCategory>();
|
final ArrayList<RouteCategory> mCategories = new ArrayList<RouteCategory>();
|
||||||
|
|
||||||
private final RouteCategory mSystemCategory;
|
final RouteCategory mSystemCategory;
|
||||||
private final HeadphoneChangedBroadcastReceiver mHeadphoneChangedReceiver;
|
final HeadphoneChangedBroadcastReceiver mHeadphoneChangedReceiver;
|
||||||
|
|
||||||
private RouteInfo mDefaultAudio;
|
RouteInfo mDefaultAudio;
|
||||||
private RouteInfo mBluetoothA2dpRoute;
|
RouteInfo mBluetoothA2dpRoute;
|
||||||
|
|
||||||
private RouteInfo mSelectedRoute;
|
RouteInfo mSelectedRoute;
|
||||||
|
|
||||||
Static(Context appContext) {
|
Static(Context appContext) {
|
||||||
mResources = Resources.getSystem();
|
mResources = Resources.getSystem();
|
||||||
@ -78,7 +78,10 @@ public class MediaRouter {
|
|||||||
speakerFilter.addAction(Intent.ACTION_HDMI_AUDIO_PLUG);
|
speakerFilter.addAction(Intent.ACTION_HDMI_AUDIO_PLUG);
|
||||||
mHeadphoneChangedReceiver = new HeadphoneChangedBroadcastReceiver();
|
mHeadphoneChangedReceiver = new HeadphoneChangedBroadcastReceiver();
|
||||||
appContext.registerReceiver(mHeadphoneChangedReceiver, speakerFilter);
|
appContext.registerReceiver(mHeadphoneChangedReceiver, speakerFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called after sStatic is initialized
|
||||||
|
void initDefaultRoutes() {
|
||||||
mDefaultAudio = new RouteInfo(mSystemCategory);
|
mDefaultAudio = new RouteInfo(mSystemCategory);
|
||||||
mDefaultAudio.mName = mResources.getText(
|
mDefaultAudio.mName = mResources.getText(
|
||||||
com.android.internal.R.string.default_audio_route_name);
|
com.android.internal.R.string.default_audio_route_name);
|
||||||
@ -130,6 +133,7 @@ public class MediaRouter {
|
|||||||
synchronized (Static.class) {
|
synchronized (Static.class) {
|
||||||
if (sStatic == null) {
|
if (sStatic == null) {
|
||||||
sStatic = new Static(context.getApplicationContext());
|
sStatic = new Static(context.getApplicationContext());
|
||||||
|
sStatic.initDefaultRoutes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user