How pierfrancescosoffritti/android-youtube-player works
android-youtube-player provides an Android YouTube player backed by YouTube’s IFrame Player API in a WebView, plus an optional Chromecast sender/receiver extension and customizable controls. The main workflow is app integration → player setup and video commands → iframe playback and callbacks; casting adds session setup, message exchange, receiver playback, and remote callbacks. The README documents options, lifecycle handling, tracking, network events, and UI customization; some of those implementations were not sampled, so their internal wiring is omitted.
Main entry points: DefaultPlayerUiController.kt Default Player UI · WebViewYouTubePlayer.kt WebView Player · main.js Receiver Entry · ChromecastYouTubeIOChannel.kt Sender Channel
Components 29
Core Playback
- Player View
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/views/YouTubePlayerView.kt - WebView Player
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/views/WebViewYouTubePlayer.kt - Player API
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/YouTubePlayer.kt - Player Bridge
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/YouTubePlayerBridge.kt - Player Callbacks
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/YouTubePlayerCallbacks.kt - Player Listeners
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/listeners/YouTubePlayerListener.kt - Iframe Options
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/options/IFramePlayerOptions.kt - Playback Tracker
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/utils/YouTubePlayerTracker.kt - Playback Resumer
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/utils/PlaybackResumer.kt - Network Observer
core/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/player/utils/NetworkObserver.kt
Player UI
- UI Controller API
custom-ui/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/customui/PlayerUiController.kt - Default Player UI
custom-ui/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/customui/DefaultPlayerUiController.kt - Seek Bar
custom-ui/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/customui/views/YouTubePlayerSeekBar.kt - Player Menu
custom-ui/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/core/customui/menu/defaultMenu/DefaultYouTubePlayerMenu.kt
Cast Sender
- Cast Player
chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/ChromecastYouTubePlayer.kt - Player Context
chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/ChromecastYouTubePlayerContext.kt - Session Manager
chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/io/infrastructure/ChromecastManager.kt - Sender Channel
chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/io/youtube/ChromecastYouTubeIOChannel.kt - Sender Dispatcher
chromecast-sender/src/main/java/com/pierfrancescosoffritti/androidyoutubeplayer/chromecast/chromecastsender/io/youtube/ChromecastYouTubeMessageDispatcher.kt
Cast Receiver
- Receiver Entry
chromecast-receiver/js/main.js - Receiver Dispatcher
chromecast-receiver/js/io/SenderMessagesDispatcher.js - Receiver Channel
chromecast-receiver/js/io/ChromecastCommunicationChannel.js - Remote Player
chromecast-receiver/js/YouTubePlayer.js - Remote Bridge
chromecast-receiver/js/io/YouTubePlayerRemoteBridge.js - Message Format
chromecast-receiver/js/io/YouTubeMessage.js
Other components
- Android App
- YouTube IFrame API
- Casting App
- Chromecast Device
Connections 30
- Android App → Player View: embeds
- Player View → WebView Player: hosts
- WebView Player → YouTube IFrame API: loads iframe
- Player API → Player Bridge: sends commands
- Player Bridge → WebView Player: executes in
- WebView Player → Player Callbacks: receives events
- Player Callbacks → Player Listeners: notifies
- Android App → Iframe Options: configures
- Player API → Playback Tracker: tracks playback
- Network Observer → Playback Resumer: supports recovery
- Android App → UI Controller API: customizes controls
- UI Controller API → Default Player UI: implemented by
- Default Player UI → Player API: controls playback
- Default Player UI → Seek Bar: uses
- Default Player UI → Player Menu: opens
- Casting App → Cast Player: creates
- Cast Player → Player Context: uses context
- Player Context → Session Manager: manages sessions
- Session Manager → Sender Channel: sends init
- Sender Channel → Chromecast Device: transfers messages
- Chromecast Device → Receiver Channel: delivers messages
- Receiver Entry → Receiver Channel: creates
- Receiver Entry → Remote Player: initializes
- Receiver Entry → Receiver Dispatcher: registers handler
- Receiver Dispatcher → Remote Player: dispatches actions
- Remote Player → Remote Bridge: controls player
- Remote Bridge → YouTube IFrame API: loads iframe
- Receiver Channel → Chromecast Device: sends responses
- Sender Channel → Sender Dispatcher: forwards messages
- Sender Dispatcher → Cast Player: delivers callbacks