Я пытаюсь создать простое приложение, которое транслирует видео на Chromecast, используя библиотеку Cast Castanion.Состояние медиафайла RemoteMediaPlayer равно null с библиотекой сопутствующих лиц
То, что я делаю, довольно просто. У меня есть деятельность со следующим кодом:
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;
}
Когда я запустить приложение, у меня есть кнопки медиа в ActionBar, и Я могу выбрать устройство. Тем не менее, у меня есть ошибка:
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
возвращает нуль. Заметьте, что я даже не загружаю носители.
Что я делаю неправильно?
EDIT Как отметил Али 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);
В этом была проблема. Он работает сейчас. Благодаря! – Aerilys