Как да използвате „CastCompanionLibrary-android“ с MediaRouteButton с FragmentActivity

Работя върху интегрирането на Google Chromecast в едно от моите Android приложения. За това имам предвид примери за Google Cast.

Използвам CastCompanionLibrary-android - CCL и за да разбера как да го използвам, имам предвид Cast примерни видеоклипове. Тази проба обаче показва как да използвате бутона за предаване с ActionBar.

Въпросът ми е как да използвам тази библиотека, ако трябва да използвам MediaRouteButton в персонализираното си оформление? На кои места трябва да направя промените?

Дейността ми продължава FragmentActivity.

Забележка: Прегледах pdf документа, предоставен с библиотеката, но не намерих много информация за това как да използвам библиотеката с MediaRouteButton.

Всяка помощ се оценява.

АКТУАЛИЗАЦИЯ:

Стъпка 1: Получавам екземпляр VideoCastManager.

Стъпка 2: Получавам MediaRouteButton от персонализираното си оформление и го добавям към екземпляр VideoCastManager.

Стъпка 3 : Внедряване на onCastDeviceDetected(),onCastAvailabilityChanged(),onApplicationConnected(), onApplicationDisconnected() и onDisconnected() методи на VideoCastConsumerImpl методи на слушател. След това добавяне на този слушател към VideoCastManager екземпляр.

Стъпка 4: В onApplicationConnected() извиквам loadRemoteMedia() чрез предаване на текущата позиция на лентата за търсене.

Но не работи. Видеокастингът никога не започва.

АКТУАЛИЗАЦИЯ 2:

Следват регистрационните файлове, които получавам, когато опитам URL адреса на Cast в примерното приложение за Cast video.

Състояние на приложението: Заредено. Стартирано. Готово

Брой сесии: 2

Състояние на медийния елемент: В застой

Съобщение на диспечера на приемника за предаване: Подателят е свързан: { ДРУГИ ДАННИ}

Съобщение на Media Manager: ЗАРЕДЕТЕ {ДРУГИ ДАННИ}

Медиен протокол: m3u8 // видеото ми е с разширение m3u8

Следват регистрационните файлове, които получавам, когато опитам URL адреса на Cast в моето приложение.

Състояние на приложението: Заредено. Стартирано. Готово

Брой сесии: 1

Състояние на медийния елемент:

Съобщение на диспечера на приемника за предаване: Подателят е свързан: { ДРУГИ ДАННИ}

Съобщение на Media Manager: ПОЛУЧАВАНЕ НА СТАТУС {OTHER DATA}

Медиен протокол: Неизвестен

АКТУАЛИЗАЦИЯ 3 Таг BaseCastManager:

D/ccl_BaseCastManager(2974): [v1.8] придобиване на връзка с услугите на Google Play за Chromecast (941cb5ec30f65c2082b67fd7c5df0b03)

D/ccl_BaseCastManager(2974): [v1.8] onConnected() достигна с предишно спиране: невярно

D/ccl_BaseCastManager(2974): [v1.8] launchApp() се нарича D/ccl_BaseCastManager(2974): [v1.8] Стартиране на приложение

D/ccl_BaseCastManager(2974): [v1.8] launchApplication() -› успешен резултат

D/ccl_BaseCastManager(2974): [v1.8] Успешно добавен новият слушател BaseCastConsumer om.google.sample.castcompanionlibrary.notification.VideoCastNotificationService$2@429998a8

Етикет VideoCastManager:

D/ccl_VideoCastManager(2974): [v1.8] onApplicationStatusChanged() достигна: Начален екран на Chromecast

D/ccl_VideoCastManager(2974): [v1.8] onVolumeChanged() достигна

D/ccl_VideoCastManager(2974): [v1.8] onApplicationStatusChanged() достигна: нула

D/ccl_VideoCastManager(2974): [v1.8] onApplicationConnected() достигна със sessionId: B71F7618-1516-5F6C-D795-EF32FD0BF5E2 и mReconnectionStatus=INACTIVE

D/ccl_VideoCastManager(2974): [v1.8] startNotificationService()

D/ccl_VideoCastManager(2974): [v1.8] attachMedia()

D/ccl_VideoCastManager(2974): [v1.8] Регистриране на пространство от имена на MediaChannel

D/ccl_VideoCastManager(2974): [v1.8] onApplicationStatusChanged() достигнат: Готов за игра

D/ccl_VideoCastManager(2974): [v1.8] Успешно добавен новият слушател CastConsumer om.google.sample.castcompanionlibrary.notification.VideoCastNotificationService$2@429998a8

D/ccl_VideoCastManager(2974): [v1.8] RemoteMediaPlayer::onStatusUpdated() е достигнат

D/ccl_VideoCastManager(2974): [v1.8] onRemoteMediaPlayerStatusUpdated() достигна

D/ccl_VideoCastManager(2974): [v1.8] mApiClient или mRemoteMediaPlayer е null, така че няма › да продължи

D/ccl_VideoCastManager(2974): [v1.8] RemoteMediaPlayer::onMetadataUpdated() е достигнат

D/ccl_VideoCastManager(2974): [v1.8] onRemoteMediaPlayerMetadataUpdated() достигна


person Ritesh Gune    schedule 16.09.2014    source източник


Отговори (1)


Ако вече сте свързани и сте стартирали приложението успешно (предполагам, че виждате приложението си на телевизора), тогава фактът, че използвате MediaRouteButton вместо доставчик на действие, е без значение; двете алтернативи (бутон срещу доставчик на действие) ви дават маршрут и сте преминали този етап, така че не се фокусирайте върху това, ако се опитвате да разрешите текущия си проблем.

Предполагам също, че сте имали предвид loadMedia(), а не loadRemoteMedia(). Какво получавате като резултат от операцията, когато наречете това? Трябва да предоставите повече информация на този фронт (определено включете регистрационни файлове).

person Ali Naddaf    schedule 16.09.2014
comment
Али, благодаря за отговора. Четох вашите отговори на различни въпроси относно интегрирането на Chromecast. Бихте ли ми казали по-конкретно какво точно имате предвид под „повече информация“, за да мога да я предоставя. - person Ritesh Gune; 16.09.2014
comment
Нека ви кажа някои от моите наблюдения, след като щракна върху иконата на chromecast, тя не става жълта (избрано състояние), videoCastControllerActivity не стартира, получавам неизвестна стойност за Media protocol. - person Ritesh Gune; 16.09.2014
comment
Неща, които трябва да отстраните от ваша страна: (1) Получавате ли устройство/маршрут или не? (2) Ако го направите, когато се опитате да се свържете чрез извикване на mApi.connect(), извиква ли се обратното извикване onConnected() (т.е. наистина ли се свързвате с услугата?) Нека първо да установим отговора на тези въпроси - person Ali Naddaf; 16.09.2014
comment
Да, получавам маршрута на устройството и RouteInfo в onCastDeviceDetected(), в моя случай също се извиква onApplicationConnected(), в който извиквам loadRemoteMedia(seekbar position). Никъде в примерното приложение не открих, че извикването на mApi.connect() или onConnected() е заменено навсякъде. - person Ritesh Gune; 17.09.2014
comment
Продължавате да се позовавате на loadRemoteMedia (позиция на лентата за търсене), какво е това? Дневникът, който показахте, е конзолен, какво ще кажете за регистрационния файл на подателя? Опитвате ли се да пуснете HLS медия? Всички извиквания в SDK са асинхронни и всички те връщат някакъв резултат асинхронно, трябва да проверите тези резултати, за да видите кой е неуспешен; без истинска информация няма какво да ви помогне - person Ali Naddaf; 17.09.2014
comment
loadRemoteMedia методът може да бъде намерен на ред номер 326. Имам предвид образец на Cast видео. - person Ritesh Gune; 17.09.2014
comment
Приложението ви зарежда ли се на телевизора или не? - person Ali Naddaf; 18.09.2014
comment
Ако имате време, бих искал да ви поканя в chat.stackoverflow.com/rooms/61458/chromecast-room - person Ritesh Gune; 18.09.2014
comment
Нека продължим тази дискусия в чата. - person Ritesh Gune; 18.09.2014
comment
Въпросът ми беше дали приложението ви се зарежда или не, без да пита дали видеото се възпроизвежда или не. Опитайте да използвате приложението CastVideos-android и го вземете като отправна точка и постепенно го променяйте, за да отговаря на вашите нужди, и тествайте всяка промяна, която правите, за да сте сигурни, че ще улавяте бързо всички проблеми. - person Ali Naddaf; 18.09.2014
comment
Вижте, при избиране на устройството за предаване моето приложение се стартира. Просто ви предоставях повече информация, че видеото не стартира и получавам горните регистрационни файлове на конзолата. - person Ritesh Gune; 18.09.2014
comment
(1) Актуализирайте вашия CCL до най-новата версия, която е 1.10; използвате 1.8 (2) Следвайте моята препоръка да започнете от CastVideos-android и да продължите пътя си оттам към собственото си приложение - person Ali Naddaf; 18.09.2014