MediaRouteSelector删除或不查找路由

时间:2014-04-02 13:12:34

标签: android chromecast

突然之间,我一直遇到媒体路由器找到chromecast设备的问题,有时会找到它们,然后丢失它们并立即再次找到它们,这阻止我与接收器建立连接。

   private ChromeCastAdapter(Context activity) {
    ...
    mediaRouter = MediaRouter.getInstance(activity.getApplicationContext());
    mediaRouteSelector = new MediaRouteSelector.Builder().addControlCategory(CastMediaControlIntent.categoryForCast(APP_ID))
            .addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO).build();
    MyMediaRouterCallback mediaRouterCallback = new MyMediaRouterCallback();        
    mediaRouter.addCallback(mediaRouteSelector, mediaRouterCallback,
            MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);
    ...
  }


rivate class MyMediaRouterCallback extends MediaRouter.Callback {


    @Override
    public void onRouteAdded(MediaRouter router, MediaRouter.RouteInfo route) {
        Log.d("CASTING_ADDED", String.valueOf(route));
        selectedDevice = CastDevice.getFromBundle(route.getExtras());
        if (!route.isDefault()) {
            numRoutes++;
        }
        refreshMediaButton();
        if (state == STATE.RECONNECTING) {
            if (route.getId().equals(sharedPrefs.getString(CHROMECAST_DEVICE_ID, ""))) {
                route.select();
            }
        }
    }

    @Override
    public void onRouteRemoved(MediaRouter router, MediaRouter.RouteInfo route) {
        Log.d("CASTING_REMOVED", String.valueOf(route));
        numRoutes--;
        refreshMediaButton();
    }

    @Override
    public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo info) {
        if (!_hasCorrectGooglePlayServices() && !info.isDefault()) {
            router.selectRoute(router.getDefaultRoute());
            return;
        }

        selectedDevice = CastDevice.getFromBundle(info.getExtras());
        setSelectedDevice(selectedDevice);
        ...            
    }

    @Override
    public void onRouteUnselected(MediaRouter router, MediaRouter.RouteInfo info) {
        selectedDevice = null;
        setSelectedDevice(null);
        ...
    }
}

当我尝试恢复会话时它将连接到接收器一瞬间,然后所有路由将消失并出现,我将在logcat中收到消息。

4-02 08:59:45.670  26696-26696/? I/MediaRouter﹕ Choosing a new selected route because the current one is no longer selectable: MediaRouter.RouteInfo{ uniqueId=com.google.android.gms:b8f61f02bda1f7aa8a1d999c19ee591b, name=Dima Chromecast, description=Chromecast, enabled=true, connecting=false, playbackType=1, playbackStream=-1, volumeHandling=0, volume=0, volumeMax=20, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="Dima Chromecast" (b8f61f02bda1f7aa8a1d999c19ee591b)}], providerPackageName=com.google.android.gms }

/**
 * Either hides or shows the Media Router button depending on if there are routes available
 */
public void refreshMediaButton() {
    if (!User.getCurrentUser().isPremium() || (!sharedPrefs.getBoolean(Apiv4.ALLOW_CHROMECAST, false) && !BuildConfig.DEBUG)) {
        mediaRouteButton.setVisibility(View.GONE);
    } else {
        mediaRouteButton.setVisibility(numRoutes == 0 ? View.GONE : View.VISIBLE);
    }
}

我的网络可能成为所有这些问题的问题吗?我的同事已对此进行了测试,他们没有遇到这些问题。

0 个答案:

没有答案