2014-02-15 1 views
0

Документация от Google теперь дает ошибку 404, поэтому я не могу ее прочитать.Могу ли я хранить все, что хочу, в com.google.android.gms.cast.MediaMetadata?

Кажется, что я могу поместить любые строки, которые я хочу в MediaMetadata, но когда я иду, чтобы получить их из VCM (VideoCastManager), их там нет. Есть ли способ добавить пользовательские данные в MediaMetadata?

Я хочу, чтобы у меня появилась больше информации о видео, которое я воспроизвожу, когда приложение снова подключится.

Спасибо.

ответ

0

Что такое VCM? Вы можете добавить любую пару ключей/значений в MediaMetadat, использовать один из вариантов put*(), например putInt(key,value), putString(key, value) и т. Д. Затем извлеките их соответствующими методами get*(). На стороне вашего приемника у вас будет JSON с этими парами ключ/значение, чтобы вы могли легко их найти.

+0

Извините, я не должен был сокращать, VideoCastManager. Поэтому в основном я хочу помещать любые данные, которые я хочу туда, а затем хочу, чтобы их можно было восстановить при повторном подключении с конца отправителя, а не в конец приемника. – casolorz

+0

после того, что я упомянул, вы не получаете их? –

+0

Мне нужно будет снова протестировать, но в основном я могу вызвать 'putString (« test »,« test »)', затем воспроизвести файл фильма, закрыть приложение, снова открыть его, снова подключить, вызвать 'videoCastManager.getRemoteMediaInformation()' и получить метаданные, а затем сделать 'getString', и он равен нулю.В отладчике я вижу, что в метаданных есть только «com.google.android.gms.cast.metadata.TITLE», который является единственным другим значением, которое я устанавливаю. – casolorz

2

У меня была такая же проблема .... и я нашел причину того, как я создавал свой объект MediaMetaData в коде приложения моего отправителя.

Построение объекта MediaMetadata в коде приложения приемника с константой MediaMetadata.MEDIA_TYPE_MOVIE (как это сделано в примере CastCompanionLibrary) не позволит вам хранить что-либо с помощью .putString (ключ, значение), кроме как с помощью ключей MediaMetadata. KEY_TITLE и MediaMetadata.KEY_SUBTITLE.

Вот что я нашел ....

Поскольку я играю видео на Chromecast, я предположил, что лучший способ построить объект MediaMetadata, чтобы использовать константу MediaMetadata.MEDIA_TYPE_MOVIE следующим образом:

MediaMetadata castMetaData = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE); 

Затем .... Я попытался отправить следующие данные с объектом MediaMetadata:

castMetaData.putString(MediaMetadata.KEY_TITLE,"videoTitle"); 
castMetaData.putString(MediaMetadata.KEY_SUBTITLE,"videoSubTitle"); 
castMetaData.putString(MediaMetadata.KEY_ARTIST,"videoArtistName"); 

После отправки этого MediaMetadata объекта на ПРИЕМ э (обеспечение того, чтобы все три КЛЮЧЕЙ и соответствующие им значения были-тактичность) и видео начало играть, я попытался вызовом для извлечения метаданных видео-ролика от приемника с:

MediaMetadata receiverMetadata = videoCastManager.getRemoteMediaInformation().getMetaData(); 

Возвращаемых объектом MediaMetadata, но сопоставление MediaMetadata.KEY_ARTIST не было, где можно найти.

После изменения MediaMetadata построить параметр для MediaMetadata.MEDIA_TYPE_GENERIC как так что я был в состоянии послать больше метаданных в объекте MediaMetadata:

MediaMetadata castMetaData = new MediaMetadata(MediaMetadata.MEDIA_TYPE_GENERIC); 

Примечание Я не знаю, если строительство объекта MediaMetadata с MediaMetadata.MEDIA_TYPE_GENERIC в порядке, когда актуальной задачей является воспроизведение видео.

+0

Просто для подтверждения того, что 'MediaMetadata.MEDIA_TYPE_GENERIC' позволяет настраивать поля. Я пробовал «MediaMetadata.MEDIA_TYPE_USER» (пользовательские) и настраиваемые поля, которые не имеют значения. – Mudar