AndroidChromecastSDK(Xamarin 绑定):获取 RemoteMediaPlayer.MediaStatus 总是 return null

AndroidChromecastSDK (Xamarin Bindings) : Getting the RemoteMediaPlayer.MediaStatus always return null

我正在使用 Xamarin 在 C# 中为 chromecast 开发自定义发件人应用程序。此时,我可以将 MediaInfo 发送到接收器应用程序并在我的电视上正确播放歌曲。我遇到的问题是当我试图停止 RemoteMediaPlayer 时。

在播放器 returns 上调用 Stop() Java.Lang.IllegalStateException : No current media session 异常。这很奇怪,因为我能听到音乐在播放,所以一定有一个活动的媒体会话...

此外,我尝试像这样设置 OnStatusUpdatedListenerAndroidMediaPlayer 继承自 RemoteMediaPlayer

mediaPlayer = new AndroidMediaPlayer();
mediaPlayer.SetOnStatusUpdatedListener(new AndroidMediaPlayerOnStatusUpdated(this, mediaPlayer));

使用接口的自定义实现

internal class AndroidMediaPlayerOnStatusUpdated: Java.Lang.Object, RemoteMediaPlayer.IOnStatusUpdatedListener {
    private readonly AndroidChromecastController controller;
    private readonly RemoteMediaPlayer mediaPlayer;
    public AndroidMediaPlayerOnStatusUpdated(AndroidChromecastController aController, RemoteMediaPlayer aMediaPlayer) {
        controller = aController;
        mediaPlayer = aMediaPlayer;
    }

    public void OnStatusUpdated()
    {
        var status = mediaPlayer.MediaStatus;
        switch (status.PlayerState)
        {
            case MediaStatus.PlayerStateBuffering:
                break;
            case MediaStatus.PlayerStateIdle:
                break;
            case MediaStatus.PlayerStatePaused:
                break;
            case MediaStatus.PlayerStatePlaying:
                break;
            case MediaStatus.PlayerStateUnknown:
                break;
        }
    }
}

OnStatusUpdated 方法永远不会被调用,即使我在 RemoteMediaPlayer.

上调用 RequestStatus 方法也是如此

Xamarin 的 GooglePlayServices 绑定是否有我做错的事情或某些事情不起作用?

在此先致谢,如果需要,我可以提供说明!

对于可能遇到此问题的任何人,请注意您需要使用此行:

CastClass.CastApi.SetMessageReceivedCallbacks(googleApiClient, mediaPlayer.Namespace, mediaPlayer);

其中 mediaPlayer 是 RemoteMediaPlayer。

我的问题是我使用的是 RemoteMediaPlayer 的自定义实现,我将 Namespace get 属性覆盖为 return 我喜欢的 Namespace,这没关系与文档。看这里:

https://developer.android.com/reference/com/google/android/gms/cast/Cast.CastApi.html#setMessageReceivedCallbacks(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, com.google.android.gms.cast.Cast.MessageReceivedCallback)

(出于某种原因,link 中有一个 space(我无法删除它,因为它会破坏 link)并且它正在破坏 link本网站的方法,但是如果您复制并粘贴它,link 是正确的...抱歉)

即使我的名字space是他们想要的格式,它也行不通。但它不会抛出任何异常。