2016-11-11 9 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

감사합니다 .MmMediaRouter.getRoutes '.하지만 항상 기본 경로 인'Phone '을 제공합니다. 예를 들어 [https://github.com/googlecast/MediaRouter-Cast-Button-android] MediaRouterDiscoveryActivity.java에서도 동일한 동작이 나타납니다. NexusPlayer (n/w) 위의 코드로 앱을 실행해도 기기가 감지되지 않으면 ~ 10 분 이상 소요됩니다. 처음에는 기본 경로 만 감지 되니 MenuItem 또는 MediaRouteButton을 사용하면 Nexus 플레이어를 지체없이 사용할 수 있습니다. WIFI를 사용 중지하거나 활성화하면 콜백에서 즉시 감지됩니다. 어떤 제안이 있습니까? – oye

+0

캐스팅 장치가 아닌 다른 캐스팅 장치를 사용하여 그 사람도 같은 행동을 보입니다. 아니면 그 문제를 전시 한 사람은 Nexus Player입니까? –

+0

넥서스 플레이어, 엔비디아 실드, 테크니컬 안드로이드 박스가 있으며 모두 동일한 동작을 나타냅니다. – oye