通过Receiver Cast Connect App更新发件人应用程序

问题描述

我有一个使用ExoPlayer播放视频内容的发件人应用程序。当我使用认CastOptionsprovider类中appid引用的认exoplayer接收器时,我的应用程序运行良好。但是我的项目需要CastConnect应用程序,该应用程序将支持来自发件人的加载请求。问题是,当我将内容投射到接收器上时,它可以在电视上正常播放,但是CustomController中的发送器应用程序时间栏固定在00:01s,这是我看到的并且可以控制的持续时间。我可以暂停和播放视频,但是其他控件不起作用,因为我的搜索栏不同步。

Picture of sender PlayerControlView when the session is active

这是我的MediaLoadCommandCallback类

  private class MyMediaLoadCommandCallback extends MediaLoadCommandCallback {
        @Override
        public Task<MediaLoadRequestData> onLoad(String senderId,MediaLoadRequestData mediaLoadRequestData) {
            Toast.makeText(getActivity(),"onLoad()",Toast.LENGTH_SHORT).show();

            if (mediaLoadRequestData == null) {
                // Throw MediaException to indicate load failure.
                return Tasks.forException(new MediaException(
                        new MediaError.Builder()
                                .setDetailedErrorCode(MediaError.DetailedErrorCode.LOAD_Failed)
                                .setReason(MediaError.ERROR_REASON_INVALID_REQUEST)
                                .build()));
            }

            return Tasks.call(() -> {
                play(convertLoadRequestToMovie(mediaLoadRequestData));

                // Update media Metadata and state
                mediaManager = castReceiverContext.getMediaManager();
                mediaManager.setDataFromload(mediaLoadRequestData);


                // Use MediaStatusModifier to provide additional information for Cast senders.
                mediaManager.getMediaStatusModifier()
                       .setMediaCommandSupported(MediaStatus.COMMAND_QUEUE_NEXT,true)
                        .setIsPlayingAd(false);



                mediaManager.broadcastMediaStatus();

                // Return the resolved MediaLoadRequestData to indicate load success.
                return mediaLoadRequestData;
            });
        } }

这是过程意图,我不知道这是否与此有关

 public void processIntent(Intent intent) {
        mediaManager = CastReceiverContext.getInstance().getMediaManager();
        //Pass intent to Cast SDK
       if (mediaManager.onNewIntent(intent)) {
            return;
        }

       mediaManager.getMediaStatusModifier().clear();

        if (intent.hasExtra(PlaybackActivity.MOVIE)) {
            mMovie = (Movie) intent.getSerializableExtra(PlaybackActivity.MOVIE);
            play(mMovie);
        }

        PlaybackStateCompat playbackState =
                new PlaybackStateCompat.Builder()
                        .setActions(PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_SEEK_TO)
                        .setState(PlaybackStateCompat.STATE_PLAYING,PlaybackStateCompat.PLAYBACK_POSITION_UNKNowN,1)
                        .build();
        mediaSessionCompat.setPlaybackState(playbackState);
    }
    

我不确定我是否正确,但是我在Cast开发人员控制台上使用了样式接收器,在其中输入了我的ATV包名称并为发送方CastOptionsprovider类获取了应用程序ID。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)