突然之间,我一直遇到媒体路由器找到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);
}
}
我的网络可能成为所有这些问题的问题吗?我的同事已对此进行了测试,他们没有遇到这些问题。