Я разрабатываю приложение для Chromecast. Я попробовал образец Android из https://github.com/googlecast/cast-android-sample, и он работает нормально - я могу щелкнуть значок Cast, выбрать устройство и начать потоковую передачу. Итак, MediaRouter.Callback выглядит так:
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, сразу после того, как он будет обнаружен в MediaRouter.Callback?