2016-11-27 6 views
0

전송 기기를 자동 검색하려고합니다. 이것은 기본적으로 축약 된 방법이지만, onRouteAdded 또는 onRouteSelected에 대한 콜백을 결코 얻지 못합니다.Android Cast - 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

Ok, 단계를 기록해 둡니다. 조금 더 길기 때문에 나는 대답이 아닌 주석으로 쓰려고한다. –

답변

0

나는 귀하가 더 믿어야한다고 생각합니다. 앱의 설정과 구조 및 기타 요인에 따라 예상 경로가 MediaRouter에서 이미 발견되었을 수 있습니다. 이 경우 이미 있으므로 onRouteAdded() 얻을지 않습니다. 이 문제를 해결하기위한 한 가지 방법은 (이미 수행 중임)을 호출 한 후 mMediaRouter.getRoutes()을 호출하여 현재의 모든 경로 목록을 가져온 다음 관심있는 앱 ID에 대한 목록을 필터링하는 것입니다. 정의 및 사용 route.matchesSelector(selector)) 발견 된 장치의 초기 집합으로 간주하십시오. 이 시점부터 onRouteAdded()onRouteRemoved()을 사용하여 목록을 업데이트 할 수 있습니다. onRouteChanged()에는 때때로 중요한 정보가 있습니다. 예를 들어 캐스트 장치가 재부팅 될 때 그리고 처음 시작될 때 올바른 구성을 갖지 않을 수도 있지만 구성을 가져 와서 특정 필드를 업데이트 한 후 onRouteChanged()이 호출되는 즉시 발생하지만 대부분의 경우 무시할 수 있습니다 초기 집합과 추가되거나 제거되는 집합에만 초점을 맞 춥니 다. 위의 내용은 MediaRouterChooserDialog가 내부적으로 수행하는 작업과 매우 비슷하며 Media Router v7 지원 라이브러리에서 소스를 공개적으로 사용할 수 있기 때문에이를 살펴보고 볼 수 있습니다. 그것이 어떻게 행해질 수 있는지.