2016-11-27 2 views
0

キャストデバイスを自動検出しようとしています。これは基本的には私がこれを行う方法で見たものですが、onRouteAddedまたはonRouteSelectedのコールバックは決して得られません。Androidキャスト - Media Routerコールバックが返されない

どのフラグを使用するかを変更しようとしましたが、異なる結果は得られませんでした。ルートが追加されることもありますが、決して選択されません。

private void startSearchForDevicesAndCast() { 
    MediaRouter router = MediaRouter.getInstance(this); 

    int count = router.getRoutes().size(); 

    List<MediaRouter.RouteInfo> j = router.getRoutes(); 
    MediaRouteSelector selector = new MediaRouteSelector.Builder().addControlCategory(
      CastMediaControlIntent.categoryForCast(getString(R.string.app_id))).build(); 

    router.addCallback(selector, new MediaRouter.Callback() { 
     @Override 
     public void onRouteAdded(MediaRouter router, MediaRouter.RouteInfo route) { 
      super.onRouteAdded(router, route); 
      Log.i(TAG, "onRouteAdded: "); 
      router.selectRoute(route); 
     } 

     @Override 
     public void onRouteChanged(MediaRouter router, MediaRouter.RouteInfo route) { 
      super.onRouteChanged(router, route); 
      Log.i(TAG, "onRouteChanged: "); 
     } 

     @Override 
     public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo route) { 
      Log.i(TAG, "onRouteSelected: "); 
      super.onRouteSelected(router, route); 
     } 
    }, MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN); 
} 
+0

あなたはonRouteSelected(呼び出されていて起こっていません)と考えていますか? –

+0

@AliNaddaf申し訳ありませんが、間違った言い方をしました。私は間違っていて、onRouteAddedまたはonRouteSelectedのコールバックを取得しません。ときどきonRouteChangedが返ってくることもありますが、これは前回のルートリストに既に入っているからだと思いますが、ルートも変更されていないようですが、コールバックが表示されます。 – Lucas

+0

もう少し時間がかかるので、私は解答ではなくコメントとして書くつもりです。 –

答えて

0

私はあなたの事を信じますが、もう少しする必要があります。アプリの設定や構造、その他の要因によっては、MediaRouterが既に発見しているルートがある可能性があります。その場合、すでにそこにあるので、onRouteAdded()を取得することはありません。これに対応するには、1つの方法は、(すでに行っているように)を呼び出した後、mMediaRouter.getRoutes()を呼び出して現在のすべてのルートのリストを取得し、興味のあるアプリケーションIDのリストをフィルタリングします定義済みでroute.matchesSelector(selector)を使用している)、それを発見されたデバイスの最初のセットとみなしてください。その時点から、onRouteAdded()onRouteRemoved()を使用してリストを更新することができます。 onRouteChanged()については、時には貴重な情報があります。たとえば、キャストデバイスが再起動されたときや、起動時に、正しい設定をしていない可能性がありますが、すぐにコンフィギュレーションを取得して特定のフィールドを更新した後、onRouteChanged()が呼び出されますが、初期セットと、追加または削除されるセットに焦点を当てます。 MediaRouterChooserDialogが内部的に行っていることに非常に近く、Media Router v7のサポートライブラリで公開されているため、これをどのように組み合わせるか見たい場合は、どのようにそれを行うことができます。

関連する問題