我正在尝试自定义Google Cast SDK的“投射对话框”(当您点击“投射”按钮并显示可用设备列表时显示),但是我没有找到一种方法。
当前,它仅显示一个AlertDialog,其中包含要连接的可用设备的列表。
我想做的是打开一个活动,该活动将显示具有我自己的UI实施的设备列表。
这是我要修改的对话框:
我发现了有关此SDK的许多自定义方面,但与此对话框无关。
答案 0 :(得分:0)
所以我想出了一种方法来实现这一目标, 首先,我创建了一个覆盖 MediaRouteActionProvider 的类(这是控制该按钮功能的主要类)
public class CustomMediaRouteActionProvider extends androidx.mediarouter.app.MediaRouteActionProvider {
public CustomMediaRouteActionProvider(Context context) {
super(context);
}
@Override
public MediaRouteButton onCreateMediaRouteButton() {
return new CastButton(getContext());
}
}
然后您将需要使用自己的按钮功能来替代它,在我的情况下,我将打开一个新活动。
public class CastButton extends MediaRouteButton {
public CastButton(Context context) {
this(context, null);
}
public CastButton(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.mediaRouteButtonStyle);
}
public CastButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean performClick() {
Intent i = new Intent(getContext(), RemoteDevicesActivity.class);
getContext().startActivity(i);
return true;
}
}
最后,您需要修改包含此按钮的xml(我假设您已经实现了此部分)
使用您的自定义类(在本例中为CustomMediaRouteActionProvider)更改字段 app:actionProviderClass ,您就可以完成。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/connect_to"
android:id="@+id/cast"
app:actionProviderClass="CustomMediaRouteActionProvider"
app:showAsAction="ifRoom" />
</menu>
答案 1 :(得分:0)
您是否有更多最终结果的详细信息?我需要做类似的事情,但我不明白你是如何实现的