如何解决通过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 举报,一经查实,本站将立刻删除。