Я разрабатываю приложение для Chromecast. Я попробовал Android-образец от https://github.com/googlecast/cast-android-sample, и он отлично работает - я могу нажать на значок Cast, выбрать устройство и начать потоковое воспроизведение. Таким образом, MediaRouter.Callback выглядит так:requestCastDeviceForRoute in onRouteAdded
private class MyMediaRouterCallback extends MediaRouter.Callback {
@Override
public void onRouteSelected(MediaRouter router, RouteInfo route) {
MediaRouteHelper.requestCastDeviceForRoute(route);
}
}
И это работает. Но я хочу начать потоковое вещание на моем устройстве без кнопки потока. Таким образом, я изменил этот обратный вызов на:
private class MyMediaRouterCallback extends MediaRouter.Callback {
@Override
public void onRouteAdded (MediaRouter router, RouteInfo route)
MediaRouteHelper.requestCastDeviceForRoute(route);
}
}
Но это не работает. Этот обратный вызов срабатывает, requestCastDeviceForRoute возвращает true с требуемым устройством (я вижу его по route.getName()), но onDeviceAvailable из CastSampleActivity никогда не вызывался. Я попробовал отложенный запрос requestCastDeviceForRoute с помощью Handler.postDelayed, и все равно ничего.
Итак, как правильно использовать requestCastDeviceForRoute для потоковой передачи на устройстве Chromecast без Media Button, сразу после того, как он будет обнаружен в MediaRouter.Callback?
Прекрасно работает! Я добавил selectRoute в onRouteAdded и теперь вызываю MediaRouteHelper.requestCastDeviceForRoute из onRouteSelected. И onDeviceAvailable называется успешно! Отличное решение, спасибо! – Nikita
Подтверждено, но нет 15 очков репутации для голосования. Сожалею. Когда я получу 15 очков, я проголосую. – Nikita