fix: show album art on Chromecast by sending a fetchable cover-art URL#852
fix: show album art on Chromecast by sending a fetchable cover-art URL#852herrerad85 wants to merge 1 commit into
Conversation
Media items carry their artwork as a content:// URI served in process by AlbumArtContentProvider. That is fine for the local player but useless to a Chromecast: the receiver is a separate device and cannot open another app's content:// URI, so no album art shows while casting (the local now-playing screen is unaffected because it reads the same URI in process). CastPlayer was built with the default MediaItemConverter, which forwards the content:// URI to the receiver unchanged. Wrap it in a CastMediaItemConverter that rewrites a content:// artwork to the server cover-art URL via CustomGlideRequest.createUrl(), which already builds a fully authenticated getCoverArt URL the receiver can fetch on its own. Radio covers (rl_/ir_) are left untouched. Verified at the converter level with a new instrumented test (CastArtworkConverterTest): the default converter emits a content:// image, and CastMediaItemConverter emits the getCoverArt URL. Also confirmed on a real Chromecast: album art now shows while casting.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
I'll hook up my chromecast this weekend for a test. |
Fixes #115.
Problem
Media items carry their artwork as a
content://URI served in-process byAlbumArtContentProvider. That works for the local player, but a Chromecast receiver is a separate device and can't open another app'scontent://URI, so no album art shows while casting. The local now-playing screen is fine because it reads the same URI in-process. The reporter confirmed it as a Chromecast issue.Fix
CastPlayerwas built with the defaultMediaItemConverter, which forwards thecontent://URI to the receiver unchanged. This wraps it in aCastMediaItemConverterthat rewritescontent://artwork to the server cover-art URL viaCustomGlideRequest.createUrl(), which already builds a fully authenticatedgetCoverArtURL the receiver can fetch on its own. Radio covers (rl_/ir_) are left untouched.Testing
CastArtworkConverterTest: the default converter emits acontent://image, andCastMediaItemConverteremits thegetCoverArtURL.:app:assembleTempusDebugon JDK 21.