Невозможно остановить кастинг на Chromecast после прерывания Wi-Fi
Я реализую функцию Chromecast с https://github.com/googlecast/CastCompanionLibrary-android для видео приложения Android. И я обнаружил эту ошибку в финальном тесте: я не могу остановить кастинг после повторного подключения к Wi-Fi и восстановления того же сеанса.
Чтобы воспроизвести ошибку:
- сначала добавьте видео в Chromecast
- отключение от Wi-Fi -> повторное подключение к Wi-Fi (в моем случае отключение длится около 8 секунд), сессия, кажется, успешно восстановлена: мини-контроллер работает и показывает обновленную информацию для видео, и я могу приостановить / воспроизвести текущее видео с кнопками на мини-контроллере тоже.
- Но если я щелкну значок каста и выберу остановить кастинг, хотя кнопка со значком показывает, что он отключен, видео все еще воспроизводится в Chromecast.
- Странно то, что после восстановления сеанса, если я сначала нажму кнопку паузы / воспроизведения на MiniController, то остановка будет работать хорошо. Но без использования MiniController остановка произойдет сбой.
Я поставил mCastManager.reconnectSessionIfPossible(Constants.CC_RECONNECT_TIMEOUT)
в on Areate() Main Activity; И я попытался включить / отключить enabledWifiReconnection(), enableAutoReconnect()
в CastConfiguration, но эта ошибка всегда появляется.
Я пока не видел эту ошибку в образце приложения CCL.
логи после прерывания wifi прилагается как ниже.
D/ccl_BaseCastManager: [v2.8.3] Successfully removed the existing BaseCastConsumer listener com.google.android.libraries.cast.companionlibrary.cast.player.VideoCastControllerFragment$MyCastConsumer@1e5000da
D/ccl_BaseCastManager: [v2.8.3] UI is no longer visible
D/ccl_BaseCastManager: [v2.8.3] Successfully added the new BaseCastConsumer listener com.sample.MainActivity$6@259d2d91
D/ccl_VideoCastManager: [v2.8.3] Successfully added the new CastConsumer listener com.sample.MainActivity$6@259d2d91
D/ccl_BaseCastManager: [v2.8.3] UI is visible
D/ccl_BaseCastManager: [v2.8.3] onUiVisibilityChanged() addCallback called
D/ccl_BaseCastManager: [v2.8.3] reconnectSessionIfPossible(10, null)
D/ccl_VideoCastControlle: [v2.8.3] onDestroy()
D/ccl_VideoCastControlle: [v2.8.3] Stopped TrickPlay Timer
D/ccl_BaseCastManager: [v2.8.3] onConnectionSuspended() was called with cause: 2
D/ccl_BaseCastManager: [v2.8.3] UI is no longer visible
D/ccl_BaseCastManager: [v2.8.3] Successfully removed the existing BaseCastConsumer listener com.sample.MainActivity$6@259d2d91
D/ccl_BaseCastManager: [v2.8.3] onUiVisibilityChanged() removeCallback called
D/ccl_BaseCastManager: [v2.8.3] Successfully added the new BaseCastConsumer listener com.sample.MainActivity$6@259d2d91
D/ccl_VideoCastManager: [v2.8.3] Successfully added the new CastConsumer listener com.sample.MainActivity$6@259d2d91
D/ccl_BaseCastManager: [v2.8.3] UI is visible
D/ccl_BaseCastManager: [v2.8.3] onUiVisibilityChanged() addCallback called
D/ccl_BaseCastManager: [v2.8.3] reconnectSessionIfPossible(10, null)
D/ccl_BaseCastManager: [v2.8.3] Found session info in the preferences, so proceed with an attempt to reconnect if possible
D/ccl_BaseCastManager: [v2.8.3] reconnectSessionIfPossible() Retrieved from preferences: sessionId=1FEB6B9C-5044-48CA-81DA-C5A9A0E5BEF7, routeId=com.google.android.gms/.cast.media.CastMediaRouteProviderService:2e6c7705d9c05354634e102f627ef1e2
D/ccl_BaseCastManager: [v2.8.3] trying to acquire Cast Client for "Chromecast0315" (2e6c7705d9c05354634e102f627ef1e2)
32284-32459/com.sample.mobile.sample D/ccl_BaseCastManager: [v2.8.3] Reconnection: Attempt 1
D/ccl_VideoCastManager: [v2.8.3] onVolumeChanged() reached
E/ccl_VideoCastManager: [v2.8.3] Failed to get volume
com.google.android.libraries.cast.companionlibrary.cast.exceptions.TransientNetworkDisconnectionException
at com.google.android.libraries.cast.companionlibrary.cast.BaseCastManager.checkConnectivity(BaseCastManager.java:1117)
at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.getVolume(VideoCastManager.java:631)
at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.onVolumeChanged(VideoCastManager.java:857)
at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.access$1300(VideoCastManager.java:130)
at com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager$CastListener.onVolumeChanged(VideoCastManager.java:2644)
at com.google.android.gms.cast.internal.zze.zza(Unknown Source)
at com.google.android.gms.cast.internal.zze.zza(Unknown Source)
at com.google.android.gms.cast.internal.zze$zzb$2.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5297)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
D/ccl_BaseCastManager: [v2.8.3] onConnected() reached with prior suspension: true
D/ccl_VideoCastManager: [v2.8.3] Registering MediaChannel namespace
32284-32459/com.sample.mobile.sample D/ccl_BaseCastManager: [v2.8.3] Reconnection: Attempt 2
32284-32459/com.sample.mobile.sample D/ccl_BaseCastManager: [v2.8.3] Reconnection: Attempt 3
D/ccl_CastMediaRouterCal: [v2.8.3] onRouteUnselected: route=MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRouteProviderService:2e6c7705d9c05354634e102f627ef1e2, name=Chromecast0315, description=Ready to play, iconUri=null, enabled=true, connecting=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=0, volumeHandling=1, volume=20, volumeMax=20, presentationDisplayId=-1, extras=Bundle[mParcelledData.dataSize=636], settingsIntent=null, providerPackageName=com.google.android.gms }
D/ccl_BaseCastManager: [v2.8.3] disconnectDevice(true,false)
D/ccl_BaseCastManager: [v2.8.3] disconnectDevice() Disconnect Reason: Intentional disconnect
D/ccl_BaseCastManager: [v2.8.3] mConnectionSuspended: false
D/ccl_BaseCastManager: [v2.8.3] clearPersistedConnectionInfo(): Clearing persisted data for 0
D/ccl_VideoCastManager: [v2.8.3] trying to detach media channel
D/ccl_BaseCastManager: [v2.8.3] Trying to disconnect
D/ccl_BaseCastManager: [v2.8.3] onDisconnected() reached
D/ccl_VideoCastManager: [v2.8.3] updateMiniControllersVisibility() reached with visibility: false
D/ccl_VideoCastManager: [v2.8.3] clearMediaSession()
Кто-нибудь сталкивался с подобными проблемами при переподключении сессии с wifi? Или у кого-нибудь есть подсказка, в чем может быть моя проблема? Большое спасибо за любые подсказки!