2016-11-11 4 views
0

J'écris une application Android qui détecte les appareils DLNA et Chrome. Le langage de conception d'application ne prend pas en charge l'insertion du bouton Cast sur ActionBar. Au lieu de cela, j'ai besoin d'interroger les appareils DLNA et Chrome et d'afficher dans une liste.Latence dans la détection MediaRouter

Le code écrit pour détecter les dispositifs de la distribution est la suivante:

mMediaRouteSelector = new MediaRouteSelector.Builder() 
      .addControlCategory(CastMediaControlIntent.categoryForCast(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID)) 
      .build(); 


    mMediaRouterCallback = new MyMediaRouterCallback(); 
    mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback, 
      MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN); 

En utilisant le code ci-dessus, j'ai du mal à détecter les dispositifs de chrome. Je prends ~ 10 minutes pour que les périphériques du réseau soient détectés. Parfois, cela prend encore plus de temps. Mais en utilisant CastButton dans la barre d'actions, les périphériques sont immédiatement détectés.

Comment détecter les périphériques chromés sans latence?

Répondre

0

Je vous suggère d'appeler mMediaRouter.getRoutes(), puis compter sur le rappel pour rester à jour que les routes vont et viennent. Il se peut que le MediaRouter ait déjà détecté vos appareils et que, selon un certain nombre de facteurs, il se peut que votre rappel ne reçoive pas de notification pour ces itinéraires. Si vous voyez que dans les cas mMediaRouter.getRoutes() a ce que vous voulez, alors vous devrez filtrer les routes obtenues par cet appel manuellement (en utilisant le même sélecteur et RouteInfo.matchesSelector(selector).

+0

Merci 4 réponse. Je ne l'utilise 'mMediaRouter.getRoutes() '' Mais cela me donne toujours la route par défaut 'Phone'. Même dans l'ex., [Https://github.com/googlecast/MediaRouter-Cast-Button-android] MediaRouterDiscoveryActivity.java, je vois le même comportement. NexusPlayer en n/w.Lancer l'application avec le code ci-dessus ne détecte pas le périphérique.Si il détecte il prend plus de ~ 10 minutes.Seule itinéraire par défaut est détecté dans le rappel d'abord.Avec MenuItem ou MediaRouteButton, je vois le Nexus Player sans délai Disabe/activer WIFI, il est détecté immédiatement en rappel.Toutes les suggestions? – oye

+0

Avez-vous eu d'autres acteurs de fonte (non Nexus Player) cast pour voir si t Le même comportement est observé là-bas, ou c'est juste votre Nexus Player qui présente ce problème? –

+0

J'ai lecteur Nexus, bouclier Nvidia, boîte android technicolor et tous présentent le même comportement – oye