При запуске операции, которая имеет MediaRouteButton, реализованную в соответствии с документами CastCompanionLibrary, кнопка не отображается, даже если в сети есть устройства Chromecast. (Обратите внимание, что MediaRouteButton здесь не находится в ActionBar, в действии, о котором мы говорим, фактически нет ActionBar, но он расширяет ActionBarActivity. Другие действия в нашем приложении включают кнопку Cast, введенную в панель действий в соответствии с документами, которые ведут себя правильно, когда в сети есть устройства Chromecast.)CastCompanionLibrary, обнаруживающий присутствие устройств Chromecast в сети
Мы заметили, что onCastAvailabilityChanged (а также onCastDeviceDetected) в VideoCastConsumer не вызывался. Мы проследили код и обнаружили, что onRouteAdded в /cast/CastMediaRouterCallback.java не вызывается, когда начинается действие.
В нашей деятельности мы создаем потребителя в onResume
@Override
protected void onResume() {
mCastManager = VideoCastManager.getInstance();
if (mCastManager != null) {
mVideoCastConsumer = new VideoCastConsumerImpl() {
.....
@Override
public void onCastAvailabilityChanged(boolean castPresent) {
mMediaRouteButton.setVisibility(castPresent ? View.VISIBLE : View.GONE);
}
.....
}
mCastManager.incrementUiCounter();
mCastManager.addVideoCastConsumer(mVideoCastConsumer);
}
…..
и сделать decrementUiCounter и удалить videoCastConsumer от менеджера в OnPause, как состояние DOCS реализации.
Тем не менее мы наблюдаем, что странно, onCastAvailabilityChanged и onCastDeviceDetected обратных вызовов всегда получить запускаемые после того как мы фон и передний план приложения. Любые идеи, почему это происходит? Есть ли способ воспроизвести это поведение для загрузки активности или, по крайней мере, в onResume/onPause?
EDIT: Следует упомянуть, что мы пытались вызвать mCastManager.startCastDiscovery, но обратные вызовы не вызывались до тех пор, пока мы снова не встали на задний план/переднем плане.