Chromecast 用のアプリを開発しています。https://github.com/googlecast/cast-android-sampleから Android サンプルを試してみましたが、正常に動作します。キャスト アイコンをクリックし、デバイスを選択してストリーミングを開始できます。したがって、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() で確認できます) が、CastSampleActivity からの onDeviceAvailable は呼び出されませんでした。Handler.postDelayed を使用して requestCastDeviceForRoute の遅延呼び出しを試みましたが、まだ何もしていません。
では、requestCastDeviceForRoute を適切に使用して、MediaRouter.Callback で検出された直後に、メディア ボタンを使用せずに Chromecast デバイスでストリーミングする方法を教えてください。