如何在Android版Google Cast框架中自定义Cast对话框

时间:2019-05-22 13:16:44

标签: android casting chromecast google-cast google-cast-sdk

我正在尝试自定义Google Cast SDK的“投射对话框”(当您点击“投射”按钮并显示可用设备列表时显示),但是我没有找到一种方法。

当前,它仅显示一个AlertDialog,其中包含要连接的可用设备的列表。

我想做的是打开一个活动,该活动将显示具有我自己的UI实施的设备列表。

这是我要修改的对话框:

enter image description here

我发现了有关此SDK的许多自定义方面,但与此对话框无关。

2 个答案:

答案 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)

您是否有更多最终结果的详细信息?我需要做类似的事情,但我不明白你是如何实现的