androidchromecastgoogle-castandroid-cast-api

How to stop casting when another app starts casting?


I run two applications, both of which use Cast SDK v2 and the Remote Display API. I start casting from App #1, then go to App #2, press the cast button and select a route.

Expected: App #2 starts casting, App #1 stops casting.

Actual: Immediately after I select a route, App #2's MediaRouter.Callback.onRouteUnselected() is called. Neither app's content shows up on the receiver, but App #1's notification controller remains.

I haven't seen this behavior in Cast SDK v3. Is there any way in Cast SDK v2 to ensure that a prior cast session stops when another app starts casting?


Solution

  • I haven't done this yet but you can try implementing a addUpdateListener and perform session.stop when another one starts.

    addUpdateListener(listener)
    

    Adds a listener that is invoked when the Session has changed. Changes to the following properties will trigger the listener: statusText, namespaces, status, and the volume of the receiver.

    Listeners should check the status property of the Session to determine its connection status. The boolean parameter isAlive is deprecated in favor of the status Session property. The isAlive parameter is still passed in for backwards compatibility, and is true unless

    status = chrome.cast.SessionStatus.STOPPED
    

    Stop the app method:

    function stopApp() {
        session.stop(onSuccess, onError);
    }