Skip to content

Add connectionless Cast API support (cxless_connect, cxless_set_listener) - #3781

Open
naormeit wants to merge 1 commit into
microg:masterfrom
naormeit:cast-cxless-support
Open

Add connectionless Cast API support (cxless_connect, cxless_set_listener)#3781
naormeit wants to merge 1 commit into
microg:masterfrom
naormeit:cast-cxless-support

Conversation

@naormeit

@naormeit naormeit commented Sep 5, 2026

Copy link
Copy Markdown

This PR resolves an issue where casting silently fails on modern applications (e.g., YouTube, Netflix, Prime Video). These apps utilize the connectionless Cast API path by calling connect(), setting a listener via setListener(), and waiting for an onConnectedWithResult(0) callback. This connectionless flow was previously unimplemented in microG.

Fixes #580.

Changes:

  • ICastDeviceController.aidl: Added methods connect() (16), setListener() (17), and unregisterListener() (18).

  • ICastDeviceControllerListener.aidl: Added callback onConnectedWithResult(int) (13).

  • CastDeviceControllerImpl.java: Implemented the connectionless methods and added listener lifecycle management utilizing IBinder.DeathRecipient to ensure clean disconnections upon client death.

  • CastDeviceControllerService.java: Transitioned to onPostInitCompleteWithConnectionInfo, exposing the cxless_connect and cxless_set_listener feature flags so the modern Cast SDK recognizes microG's capabilities.

  • CastContextImpl.java: Added a session provider prefix fallback and unconditional media router callback registration.

  • MediaRouterCallbackImpl.java: Added null guards and an extras fallback within onRouteSelected.

Testing:

  • Local build passes successfully.

  • Hardware testing is pending (no Chromecast device is currently available for verification).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

What's the status on Google Cast implementation?

1 participant