feat: Migrate from the old exoPlayer to the new Media3#1470
Conversation
81dd46a to
7ef2289
Compare
|
7ef2289 to
bc2786e
Compare
b0a38a0 to
4e08fb9
Compare
a7c3e47 to
b8cbe3e
Compare
e9b974d to
a111513
Compare
026d15f to
d8d3b47
Compare
68b9f4c to
f415a6a
Compare
f415a6a to
860df34
Compare
860df34 to
f415a6a
Compare
|
# Conflicts: # app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewVideoFragment.kt
|
There was a problem hiding this comment.
Pull request overview
This PR migrates in-app media playback from legacy ExoPlayer (2.x) to AndroidX Media3, introducing a dedicated playback flow that supports background audio (via MediaSessionService) and video playback in a separate PIP-capable activity.
Changes:
- Replace legacy
com.google.android.exoplayer2dependencies withandroidx.media3modules (ExoPlayer/UI/OkHttp datasource/session). - Introduce
PreviewPlaybackFragment+PlaybackService/MediaSessioninfrastructure for background media controls. - Add
VideoActivityfor video playback with Picture-in-Picture support, and route preview video/audio to the new playback fragment.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| gradle/libs.versions.toml | Swap legacy ExoPlayer coordinates for Media3 artifacts in version catalog. |
| app/build.gradle.kts | Update app dependencies to Media3 modules (dash/ui/datasource/session). |
| app/src/main/AndroidManifest.xml | Declare PIP VideoActivity, Media3 PlaybackService, and media playback foreground service permission. |
| app/src/main/res/navigation/main_navigation.xml | Add Navigation destination + SafeArgs for VideoActivity with fileId. |
| app/src/main/res/layout/fragment_preview_playback.xml | Replace legacy player view with Media3 PlayerView. |
| app/src/main/res/layout/activity_video.xml | New layout for dedicated video/PIP activity using Media3 PlayerView. |
| app/src/main/java/com/infomaniak/drive/utils/Extensions.kt | Add helper to exclude activities from recents. |
| app/src/main/java/com/infomaniak/drive/ui/MainActivity.kt | Bring VideoActivity to front when returning from PIP. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewSliderAdapter.kt | Route VIDEO/AUDIO previews to the new PreviewPlaybackFragment. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewVideoFragment.kt | Remove legacy ExoPlayer video preview implementation. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewMusicFragment.kt | Remove legacy audio preview subclass. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/playback/PreviewPlaybackFragment.kt | New unified Media3 playback fragment + video handoff to VideoActivity. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/playback/VideoActivity.kt | New Media3-based video activity with PIP handling. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/playback/PlaybackUtils.kt | Centralize player/session/controller creation, media item creation, and PIP params. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/playback/PlaybackService.kt | New MediaSessionService for background playback + notification controls. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/playback/PlaybackViewModel.kt | Load file/offline state for VideoActivity playback. |
| app/src/main/java/com/infomaniak/drive/ui/fileList/preview/playback/PlayerListener.kt | Media3 player listener for analytics + error forwarding. |
| app/src/main/java/com/infomaniak/drive/ui/BasePreviewSliderFragment.kt | Track playback positions across swipes and release player resources on destroy. |
| app/src/main/java/com/infomaniak/drive/MainApplication.kt | Track whether VideoActivity is currently in PIP mode. |
| app/src/main/java/com/infomaniak/drive/data/models/File.kt | Add isVideo() helper used by the new playback flow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…null if we cannot compute the value
# Conflicts: # Core
|



depends on #1583
new_player.mp4