2016-11-11 35 views
0

我正在编写一款可检测DLNA和Chrome设备的Android应用程序。应用程序设计语言不支持在ActionBar上放置按钮。相反,我需要轮询DLNA和Chrome设备并显示在列表中。MediaRouter检测中的延迟

用于检测铸造设备编写的代码如下:

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); 

使用上面的代码,我有故障检测铬装置。我需要大约10分钟才能检测网络中的设备。有时需要更多时间。但在操作栏中使用CastButton时,会立即检测设备。

如何检测镀铬设备没有任何延迟?

回答

0

我建议您致电mMediaRouter.getRoutes(),然后依靠回拨来保持最新的路由来去。可能是因为MediaRouter已经发现了您的设备,并且取决于许多因素,您的回拨可能不会收到此类路由的通知。如果您发现在这些情况下mMediaRouter.getRoutes()有你想要的,那么你需要手动过滤通过该呼叫获得的路由(使用相同的选择器和RouteInfo.matchesSelector(selector)

+0

谢谢4回复。我确实使用了'mMediaRouter.getRoutes() '但它总是给我默认路由'Phone',即使在前例中,[https://github.com/googlecast/MediaRouter-Cast-Button-android] MediaRouterDiscoveryActivity.java,我也看到了相同的行为。 NexusPlayer in n/w。使用上面的代码启动应用程序不会检测到设备,如果它检测到它需要10分钟以上的时间,最初只会在回调中检测到默认路由。使用MenuItem或MediaRouteButton,我会看到NEXUS播放器没有延迟Disabe /启用WIFI,它立即在回调中被检测到,有什么建议? – oye

+0

你是否有任何其他演员(非Nexus播放器)投射设备看看是否t他也观察到同样的行为,或者只是你的Nexus Player出现这种问题? –

+0

我有nexus播放器,Nvidia屏蔽,technicolor android盒子和所有表现相同的行为 – oye