带有 Cast 配套库的 RemoteMediaPlayer 媒体状态为空
Posted
技术标签:
【中文标题】带有 Cast 配套库的 RemoteMediaPlayer 媒体状态为空【英文标题】:RemoteMediaPlayer media status is null with Cast companion library 【发布时间】:2014-03-26 18:28:49 【问题描述】:我正在尝试使用 Cast 配套库创建一个简单的应用,该应用在 Chromecast 上流式传输视频。
我正在做的事情非常简单。 我有以下代码的活动:
private VideoCastManager mVideoCastManager;
@Override
protected void onCreate(Bundle savedInstanceState)
mVideoCastManager = CastHelper.getVideoCastManager(this);
还有一个名为 CastHelper
的类,只有一个方法:
private static final String APPLICATION_ID = CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID;
private static VideoCastManager mCastMgr;
public static VideoCastManager getVideoCastManager(Context ctx)
if (mCastMgr == null)
mCastMgr = VideoCastManager.initialize(ctx, APPLICATION_ID, null, null);
mCastMgr.enableFeatures(VideoCastManager.FEATURE_NOTIFICATION
| VideoCastManager.FEATURE_DEBUGGING);
mCastMgr.setContext(ctx);
return mCastMgr;
当我启动应用程序时,我的操作栏中有媒体按钮,我可以选择一个设备。但是,我有一个错误:
03-26 19:18:47.890: D/ccl_VideoCastManager(9874): Registering MediaChannel namespace
03-26 19:18:47.900: D/ccl_VideoCastManager(9874): onApplicationStatusChanged() reached: Ready To Cast
03-26 19:18:50.203: D/ccl_VideoCastManager(9874): RemoteMediaPlayer::onStatusUpdated() is reached
03-26 19:18:50.203: D/ccl_VideoCastManager(9874): onRemoteMediaPlayerStatusUpdated() reached
03-26 19:18:50.203: D/ccl_VideoCastManager(9874): mApiClient or mRemoteMediaPlayer is null, so will not proceed
其实问题出在那个区块上:
if (null == mApiClient || null == mRemoteMediaPlayer ||
null == mRemoteMediaPlayer.getMediaStatus())
LOGD(TAG, "mApiClient or mRemoteMediaPlayer is null, so will not proceed");
return;
RemoteMediaPlayer 实例很好,但getMediaStatus
方法返回null。请注意,我什至还没有加载媒体。
我做错了什么?
编辑
正如 Ali Naddaf 所指出的,也许这段代码没有错,但是当我添加 VideoCastConsumerImpl
时,从未调用过 onApplicationConnected
,所以我认为这可能是原因。
IVideoCastConsumer mCastConsumer = new VideoCastConsumerImpl()
@Override
public void onConnected()
super.onConnected();
@Override
public void onApplicationConnected(ApplicationMetadata appMetadata, String sessionId, boolean wasLaunched)
super.onApplicationConnected(appMetadata, sessionId, wasLaunched);
//Trying to load a media here, but never called
;
mVideoCastManager.addBaseCastConsumer(mCastConsumer);
【问题讨论】:
【参考方案1】:将mVideoCastManager.addBaseCastConsumer(mCastConsumer);
更改为mVideoCastManager.addVideoCastConsumer(mCastConsumer);
看看是否有帮助。
【讨论】:
【参考方案2】:是什么让你觉得有些不对劲?如果您还没有加载任何媒体,那么媒体状态为空是合理的,并且使用上述转义路线的方法都是关于为各种事物更新媒体的状态,此时,它退出该方法,因为那里几乎无事可做。那么您是否认为这有问题,或者我误解了这个问题?
【讨论】:
你是对的,也许这里没有错,但是,当我添加一个 VideoCastConsumerImpl 回调时,永远不会调用 onApplicationConnected 方法。我会更新我的问题以更准确地解释。以上是关于带有 Cast 配套库的 RemoteMediaPlayer 媒体状态为空的主要内容,如果未能解决你的问题,请参考以下文章
NoClassDefFoundError java.lang.NoClassDefFoundError com.google.sample.castcompanionlibrary.cast.Vide
带有 std::any 和 std::optional 的 any_cast
EntityFramework 4.1 DbContext 选择添加带有附加字符的 CAST 列