问题描述
我有一个使用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 (将#修改为@)