Skip to content

Commit f6452d0

Browse files
adampAndroid (Google) Code Review
authored andcommitted
Merge "More fun with MediaRouter" into jb-dev
2 parents 615fd3d + 690ffb4 commit f6452d0

32 files changed

Lines changed: 601 additions & 9 deletions

api/current.txt

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,7 @@ package android {
675675
field public static final int maxWidth = 16843039; // 0x101011f
676676
field public static final int measureAllChildren = 16843018; // 0x101010a
677677
field public static final int measureWithLargestChild = 16843476; // 0x10102d4
678+
field public static final int mediaRouteButtonStyle = 16843693; // 0x10103ad
678679
field public static final int menuCategory = 16843230; // 0x10101de
679680
field public static final int mimeType = 16842790; // 0x1010026
680681
field public static final int minDate = 16843583; // 0x101033f
@@ -1789,6 +1790,7 @@ package android {
17891790
field public static final int Widget_DeviceDefault_Light_ListPopupWindow = 16974235; // 0x103019b
17901791
field public static final int Widget_DeviceDefault_Light_ListView = 16974210; // 0x1030182
17911792
field public static final int Widget_DeviceDefault_Light_ListView_DropDown = 16974205; // 0x103017d
1793+
field public static final int Widget_DeviceDefault_Light_MediaRouteButton = 16974296; // 0x10301d8
17921794
field public static final int Widget_DeviceDefault_Light_PopupMenu = 16974236; // 0x103019c
17931795
field public static final int Widget_DeviceDefault_Light_PopupWindow = 16974211; // 0x1030183
17941796
field public static final int Widget_DeviceDefault_Light_ProgressBar = 16974212; // 0x1030184
@@ -1814,6 +1816,7 @@ package android {
18141816
field public static final int Widget_DeviceDefault_ListPopupWindow = 16974180; // 0x1030164
18151817
field public static final int Widget_DeviceDefault_ListView = 16974158; // 0x103014e
18161818
field public static final int Widget_DeviceDefault_ListView_DropDown = 16974153; // 0x1030149
1819+
field public static final int Widget_DeviceDefault_MediaRouteButton = 16974295; // 0x10301d7
18171820
field public static final int Widget_DeviceDefault_PopupMenu = 16974181; // 0x1030165
18181821
field public static final int Widget_DeviceDefault_PopupWindow = 16974159; // 0x103014f
18191822
field public static final int Widget_DeviceDefault_ProgressBar = 16974160; // 0x1030150
@@ -1905,6 +1908,7 @@ package android {
19051908
field public static final int Widget_Holo_Light_ListPopupWindow = 16974043; // 0x10300db
19061909
field public static final int Widget_Holo_Light_ListView = 16974018; // 0x10300c2
19071910
field public static final int Widget_Holo_Light_ListView_DropDown = 16974013; // 0x10300bd
1911+
field public static final int Widget_Holo_Light_MediaRouteButton = 16974294; // 0x10301d6
19081912
field public static final int Widget_Holo_Light_PopupMenu = 16974044; // 0x10300dc
19091913
field public static final int Widget_Holo_Light_PopupWindow = 16974019; // 0x10300c3
19101914
field public static final int Widget_Holo_Light_ProgressBar = 16974020; // 0x10300c4
@@ -1930,6 +1934,7 @@ package android {
19301934
field public static final int Widget_Holo_ListPopupWindow = 16973997; // 0x10300ad
19311935
field public static final int Widget_Holo_ListView = 16973975; // 0x1030097
19321936
field public static final int Widget_Holo_ListView_DropDown = 16973970; // 0x1030092
1937+
field public static final int Widget_Holo_MediaRouteButton = 16974293; // 0x10301d5
19331938
field public static final int Widget_Holo_PopupMenu = 16973998; // 0x10300ae
19341939
field public static final int Widget_Holo_PopupWindow = 16973976; // 0x1030098
19351940
field public static final int Widget_Holo_ProgressBar = 16973977; // 0x1030099
@@ -3671,6 +3676,20 @@ package android.app {
36713676
method public android.view.Window startActivity(java.lang.String, android.content.Intent);
36723677
}
36733678

3679+
public class MediaRouteActionProvider extends android.view.ActionProvider {
3680+
ctor public MediaRouteActionProvider(android.content.Context);
3681+
method public android.view.View onCreateActionView();
3682+
method public void setRouteTypes(int);
3683+
}
3684+
3685+
public class MediaRouteButton extends android.view.View {
3686+
ctor public MediaRouteButton(android.content.Context);
3687+
ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
3688+
ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
3689+
method public int getRouteTypes();
3690+
method public void setRouteTypes(int);
3691+
}
3692+
36743693
public class NativeActivity extends android.app.Activity implements android.view.InputQueue.Callback android.view.SurfaceHolder.Callback2 android.view.ViewTreeObserver.OnGlobalLayoutListener {
36753694
ctor public NativeActivity();
36763695
method public void onGlobalLayout();
@@ -11489,17 +11508,19 @@ package android.media {
1148911508
public class MediaRouter {
1149011509
method public void addCallback(int, android.media.MediaRouter.Callback);
1149111510
method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
11511+
method public void clearUserRoutes();
1149211512
method public android.media.MediaRouter.RouteCategory createRouteCategory(java.lang.CharSequence, boolean);
1149311513
method public android.media.MediaRouter.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
1149411514
method public static android.media.MediaRouter forApplication(android.content.Context);
1149511515
method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
1149611516
method public int getCategoryCount();
1149711517
method public android.media.MediaRouter.RouteInfo getRouteAt(int);
1149811518
method public int getRouteCount();
11519+
method public android.media.MediaRouter.RouteInfo getSelectedRoute(int);
1149911520
method public void removeCallback(android.media.MediaRouter.Callback);
1150011521
method public void removeUserRoute(android.media.MediaRouter.UserRouteInfo);
1150111522
method public void selectRoute(int, android.media.MediaRouter.RouteInfo);
11502-
method public void setRouteVolume(int, float);
11523+
method public void setSelectedRouteVolume(int, float);
1150311524
field public static final int ROUTE_TYPE_LIVE_AUDIO = 1; // 0x1
1150411525
field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
1150511526
}
@@ -11534,6 +11555,7 @@ package android.media {
1153411555
method public java.lang.CharSequence getName();
1153511556
method public java.lang.CharSequence getStatus();
1153611557
method public int getSupportedTypes();
11558+
method public float getVolume();
1153711559
}
1153811560

1153911561
public static class MediaRouter.SimpleCallback implements android.media.MediaRouter.Callback {
@@ -22775,7 +22797,8 @@ package android.view {
2277522797
public abstract class ActionProvider {
2277622798
ctor public ActionProvider(android.content.Context);
2277722799
method public boolean hasSubMenu();
22778-
method public abstract android.view.View onCreateActionView();
22800+
method public abstract deprecated android.view.View onCreateActionView();
22801+
method public android.view.View onCreateActionView(android.view.MenuItem);
2277922802
method public boolean onPerformDefaultAction();
2278022803
method public void onPrepareSubMenu(android.view.SubMenu);
2278122804
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
/*
2+
* Copyright (C) 2012 The Android Open Source Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package android.app;
18+
19+
import android.content.Context;
20+
import android.media.MediaRouter;
21+
import android.media.MediaRouter.RouteInfo;
22+
import android.util.Log;
23+
import android.view.ActionProvider;
24+
import android.view.MenuItem;
25+
import android.view.View;
26+
27+
public class MediaRouteActionProvider extends ActionProvider {
28+
private static final String TAG = "MediaRouteActionProvider";
29+
30+
private Context mContext;
31+
private MediaRouter mRouter;
32+
private MenuItem mMenuItem;
33+
private MediaRouteButton mView;
34+
private int mRouteTypes;
35+
private final RouterCallback mRouterCallback = new RouterCallback();
36+
37+
public MediaRouteActionProvider(Context context) {
38+
super(context);
39+
mContext = context;
40+
mRouter = MediaRouter.forApplication(context);
41+
42+
// Start with live audio by default.
43+
// TODO Update this when new route types are added; segment by API level
44+
// when different route types were added.
45+
setRouteTypes(MediaRouter.ROUTE_TYPE_LIVE_AUDIO);
46+
}
47+
48+
public void setRouteTypes(int types) {
49+
if (types == mRouteTypes) {
50+
// Already registered; nothing to do.
51+
return;
52+
}
53+
if (mRouteTypes != 0) {
54+
mRouter.removeCallback(mRouterCallback);
55+
}
56+
mRouteTypes = types;
57+
if (mView != null) {
58+
mView.setRouteTypes(mRouteTypes);
59+
}
60+
mRouter.addCallback(types, mRouterCallback);
61+
}
62+
63+
@Override
64+
public View onCreateActionView() {
65+
throw new UnsupportedOperationException("Use onCreateActionView(MenuItem) instead.");
66+
}
67+
68+
@Override
69+
public View onCreateActionView(MenuItem item) {
70+
if (mMenuItem != null || mView != null) {
71+
Log.e(TAG, "onCreateActionView: this ActionProvider is already associated " +
72+
"with a menu item. Don't reuse MediaRouteActionProvider instances! " +
73+
"Abandoning the old one...");
74+
}
75+
mMenuItem = item;
76+
mView = new MediaRouteButton(mContext);
77+
mMenuItem.setVisible(mRouter.getRouteCount() > 1);
78+
mView.setRouteTypes(mRouteTypes);
79+
return mView;
80+
}
81+
82+
@Override
83+
public boolean onPerformDefaultAction() {
84+
// Show routing dialog
85+
return true;
86+
}
87+
88+
private class RouterCallback extends MediaRouter.SimpleCallback {
89+
@Override
90+
public void onRouteAdded(int type, RouteInfo info) {
91+
mMenuItem.setVisible(mRouter.getRouteCount() > 1);
92+
}
93+
94+
@Override
95+
public void onRouteRemoved(int type, RouteInfo info) {
96+
mMenuItem.setVisible(mRouter.getRouteCount() > 1);
97+
}
98+
}
99+
}

0 commit comments

Comments
 (0)