2

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 デバイスでストリーミングする方法を教えてください。

4

3 に答える 3

3

電話してみる

mediaRouter.selectRoute(route);

MediaRouterHelper を使用する代わりに。これは、内部から呼び出すときにうまくいきましたonRouteAdded()

于 2013-10-15T21:23:10.213 に答える
0

推奨されるフローは、ユーザーが手動でデバイスを選択できるようにすることです。そのため、あなたがやろうとしていることは、フローを完全に壊してしまいます。ネットワーク上に複数の Chromecast デバイスがある場合、ユーザーはどうなると思いますか? したがって、そのルートを下らないことを強くお勧めします。

于 2013-10-15T20:29:43.257 に答える