diff options
author | Thomas <tschneider.ac@gmail.com> | 2024-01-20 18:10:05 +0100 |
---|---|---|
committer | Thomas <tschneider.ac@gmail.com> | 2024-01-20 18:10:05 +0100 |
commit | c778c71306a474a340d56c29de0296e3e2e20d76 (patch) | |
tree | fd37e8b500755b5e557bf2cb0db8744594bd43b7 /app | |
parent | 596c546cce0947169154070e464dbbad173e7856 (diff) |
Prepare Media3
Diffstat (limited to 'app')
10 files changed, 79 insertions, 73 deletions
diff --git a/app/build.gradle b/app/build.gradle index 268a76383..4917a13eb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -132,14 +132,18 @@ dependencies { implementation project(path: ':sparkbutton') implementation project(path: ':colorPicker') implementation project(path: ':mathjaxandroid') - + implementation project(path: ':doubletapplayerview') implementation 'com.burhanrashid52:photoeditor:1.5.1' implementation("com.vanniktech:android-image-cropper:4.3.3") annotationProcessor "com.github.bumptech.glide:compiler:4.12.0" implementation 'jp.wasabeef:glide-transformations:4.3.0' implementation 'com.github.penfeizhou.android.animation:glide-plugin:2.23.0' - implementation 'com.google.android.exoplayer:exoplayer:2.19.1' + implementation "androidx.media3:media3-exoplayer:1.2.1" + implementation "androidx.media3:media3-exoplayer-dash:1.2.1" + implementation "androidx.media3:media3-ui:1.2.1" + + implementation "androidx.viewpager2:viewpager2:1.0.0" implementation 'com.github.piasy:rxandroidaudio:1.7.0' implementation 'com.github.piasy:AudioProcessor:1.7.0' @@ -177,14 +181,13 @@ dependencies { implementation 'androidx.browser:browser:1.7.0' implementation 'androidx.documentfile:documentfile:1.0.1' implementation 'com.github.amoskorir:avatarimagegenerator:1.5.0' - implementation 'com.google.android.exoplayer:extension-mediasession:2.19.1' + implementation "com.github.mabbas007:TagsEditText:1.0.5" implementation "net.gotev:uploadservice:4.9.2" implementation "net.gotev:uploadservice-okhttp:4.9.2" implementation 'androidx.media:media:1.7.0' implementation 'com.github.mancj:MaterialSearchBar:0.8.5' - implementation 'com.github.vkay94:DoubleTapPlayerView:1.0.0' implementation 'io.noties.markwon:core:4.6.2' diff --git a/app/src/fdroid/java/app/fedilab/android/activities/BasePeertubeActivity.java b/app/src/fdroid/java/app/fedilab/android/activities/BasePeertubeActivity.java index 1edddce2f..d190f88fa 100644 --- a/app/src/fdroid/java/app/fedilab/android/activities/BasePeertubeActivity.java +++ b/app/src/fdroid/java/app/fedilab/android/activities/BasePeertubeActivity.java @@ -28,9 +28,9 @@ import android.view.View; import android.webkit.MimeTypeMap; import androidx.appcompat.app.AlertDialog; +import androidx.media3.common.Player; -import com.google.android.exoplayer2.ExoPlayer; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import org.jetbrains.annotations.NotNull; @@ -53,7 +53,7 @@ public class BasePeertubeActivity extends BaseBarActivity { protected ActivityPeertubeBinding binding; protected VideoData.Video peertube; - protected ExoPlayer player; + protected Player player; protected String videoURL; protected String subtitlesStr; diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/CacheDataSourceFactory.java b/app/src/main/java/app/fedilab/android/mastodon/helper/CacheDataSourceFactory.java index 3f74b906d..ddfceadfd 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/CacheDataSourceFactory.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/CacheDataSourceFactory.java @@ -18,24 +18,24 @@ import android.content.Context; import android.content.SharedPreferences; import androidx.annotation.NonNull; +import androidx.media3.database.ExoDatabaseProvider; +import androidx.media3.exoplayer.upstream.DefaultBandwidthMeter; import androidx.preference.PreferenceManager; -import com.google.android.exoplayer2.database.ExoDatabaseProvider; -import com.google.android.exoplayer2.upstream.DataSource; -import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; -import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; -import com.google.android.exoplayer2.upstream.DefaultHttpDataSource; -import com.google.android.exoplayer2.upstream.FileDataSource; -import com.google.android.exoplayer2.upstream.cache.CacheDataSink; -import com.google.android.exoplayer2.upstream.cache.CacheDataSource; -import com.google.android.exoplayer2.upstream.cache.LeastRecentlyUsedCacheEvictor; -import com.google.android.exoplayer2.upstream.cache.SimpleCache; +import androidx.media3.datasource.DataSource; +import androidx.media3.datasource.DefaultDataSourceFactory; +import androidx.media3.datasource.DefaultHttpDataSource; +import androidx.media3.datasource.FileDataSource; +import androidx.media3.datasource.cache.CacheDataSink; +import androidx.media3.datasource.cache.CacheDataSource; +import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor; +import androidx.media3.datasource.cache.SimpleCache; import java.io.File; import app.fedilab.android.R; - +@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class) public class CacheDataSourceFactory implements DataSource.Factory { private static SimpleCache sDownloadCache; diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java index 465ebae8f..d9203d93e 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java @@ -76,6 +76,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.OptIn; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.LinearLayoutCompat; @@ -88,6 +89,14 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelStoreOwner; +import androidx.media3.common.MediaItem; +import androidx.media3.common.Player; +import androidx.media3.common.util.UnstableApi; +import androidx.media3.datasource.DataSource; +import androidx.media3.datasource.DefaultDataSource; +import androidx.media3.exoplayer.ExoPlayer; +import androidx.media3.exoplayer.source.ProgressiveMediaSource; +import androidx.media3.ui.PlayerView; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -97,13 +106,6 @@ import com.bumptech.glide.ListPreloader; import com.bumptech.glide.RequestBuilder; import com.bumptech.glide.request.RequestOptions; import com.github.stom79.mytransl.MyTransL; -import com.google.android.exoplayer2.ExoPlayer; -import com.google.android.exoplayer2.MediaItem; -import com.google.android.exoplayer2.Player; -import com.google.android.exoplayer2.source.ProgressiveMediaSource; -import com.google.android.exoplayer2.ui.PlayerView; -import com.google.android.exoplayer2.upstream.DataSource; -import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.smarteist.autoimageslider.SliderAnimations; import com.smarteist.autoimageslider.SliderView; @@ -390,6 +392,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> * @param status {@link Status} */ @SuppressLint("ClickableViewAccessibility") + @androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class) public static void statusManagement(Context context, StatusesVM statusesVM, SearchVM searchVM, diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java index 7407e84ab..d96d4d429 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java @@ -49,17 +49,18 @@ import androidx.core.content.ContextCompat; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelStoreOwner; +import androidx.media3.common.MediaItem; +import androidx.media3.common.Player; +import androidx.media3.datasource.DataSource; +import androidx.media3.datasource.DefaultDataSource; +import androidx.media3.exoplayer.ExoPlayer; +import androidx.media3.exoplayer.source.ProgressiveMediaSource; +import androidx.media3.ui.PlayerView; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.RequestBuilder; -import com.google.android.exoplayer2.ExoPlayer; -import com.google.android.exoplayer2.MediaItem; -import com.google.android.exoplayer2.Player; -import com.google.android.exoplayer2.source.ProgressiveMediaSource; -import com.google.android.exoplayer2.ui.PlayerView; -import com.google.android.exoplayer2.upstream.DataSource; -import com.google.android.exoplayer2.upstream.DefaultDataSource; + import org.jetbrains.annotations.NotNull; diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java index 6740a6d8e..030efd46d 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMedia.java @@ -33,18 +33,18 @@ import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.MediaItem; +import androidx.media3.common.PlaybackException; +import androidx.media3.common.Player; +import androidx.media3.datasource.DataSource; +import androidx.media3.datasource.DefaultDataSource; +import androidx.media3.exoplayer.ExoPlayer; +import androidx.media3.exoplayer.source.ProgressiveMediaSource; import androidx.preference.PreferenceManager; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; -import com.google.android.exoplayer2.ExoPlayer; -import com.google.android.exoplayer2.MediaItem; -import com.google.android.exoplayer2.PlaybackException; -import com.google.android.exoplayer2.Player; -import com.google.android.exoplayer2.source.ProgressiveMediaSource; -import com.google.android.exoplayer2.upstream.DataSource; -import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.r0adkll.slidr.Slidr; import com.r0adkll.slidr.model.SlidrConfig; import com.r0adkll.slidr.model.SlidrInterface; @@ -248,7 +248,7 @@ public class FragmentMedia extends Fragment { } } - + @androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class) private void loadVideo(String url, String type) { if (binding == null || !isAdded() || getActivity() == null || url == null) { return; diff --git a/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java b/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java index 0fd8dd487..66034c619 100644 --- a/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java +++ b/app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java @@ -14,7 +14,8 @@ package app.fedilab.android.peertube.activities; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ -import static com.google.android.exoplayer2.Player.MEDIA_ITEM_TRANSITION_REASON_AUTO; + +import static androidx.media3.common.Player.MEDIA_ITEM_TRANSITION_REASON_AUTO; import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.BaseMainActivity.currentInstance; import static app.fedilab.android.BaseMainActivity.currentToken; @@ -85,34 +86,30 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.Format; +import androidx.media3.common.MediaItem; +import androidx.media3.common.MimeTypes; +import androidx.media3.common.PlaybackException; +import androidx.media3.common.PlaybackParameters; +import androidx.media3.common.Player; +import androidx.media3.common.VideoSize; +import androidx.media3.datasource.DataSource; +import androidx.media3.datasource.DefaultDataSource; +import androidx.media3.exoplayer.ExoPlayer; +import androidx.media3.exoplayer.source.MergingMediaSource; +import androidx.media3.exoplayer.source.ProgressiveMediaSource; +import androidx.media3.exoplayer.source.SingleSampleMediaSource; +import androidx.media3.exoplayer.trackselection.AdaptiveTrackSelection; +import androidx.media3.exoplayer.trackselection.DefaultTrackSelector; +import androidx.media3.exoplayer.trackselection.TrackSelector; +import androidx.media3.ui.AspectRatioFrameLayout; +import androidx.media3.ui.PlayerControlView; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.github.vkay94.dtpv.youtube.YouTubeOverlay; -import com.google.android.exoplayer2.C; -import com.google.android.exoplayer2.ExoPlayer; -import com.google.android.exoplayer2.Format; -import com.google.android.exoplayer2.MediaItem; -import com.google.android.exoplayer2.PlaybackException; -import com.google.android.exoplayer2.PlaybackParameters; -import com.google.android.exoplayer2.Player; -import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector; -import com.google.android.exoplayer2.source.MergingMediaSource; -import com.google.android.exoplayer2.source.ProgressiveMediaSource; -import com.google.android.exoplayer2.source.SingleSampleMediaSource; -import com.google.android.exoplayer2.source.hls.HlsMediaSource; -import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection; -import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; -import com.google.android.exoplayer2.trackselection.TrackSelector; -import com.google.android.exoplayer2.ui.AspectRatioFrameLayout; -import com.google.android.exoplayer2.ui.DefaultTimeBar; -import com.google.android.exoplayer2.ui.PlayerControlView; -import com.google.android.exoplayer2.upstream.DataSource; -import com.google.android.exoplayer2.upstream.DefaultDataSource; -import com.google.android.exoplayer2.util.MimeTypes; -import com.google.android.exoplayer2.video.VideoSize; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.snackbar.Snackbar; @@ -168,7 +165,7 @@ import app.fedilab.android.peertube.webview.MastalabWebChromeClient; import app.fedilab.android.peertube.webview.MastalabWebViewClient; import es.dmoral.toasty.Toasty; - +@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class) public class PeertubeActivity extends BasePeertubeActivity implements CommentListAdapter.AllCommentRemoved, MenuAdapter.ItemClicked, MenuItemAdapter.ItemAction, Player.Listener { public static String video_id; diff --git a/app/src/main/java/app/fedilab/android/peertube/helper/TrackSelectionDialog.java b/app/src/main/java/app/fedilab/android/peertube/helper/TrackSelectionDialog.java index eb7e2e2e2..6090d123c 100644 --- a/app/src/main/java/app/fedilab/android/peertube/helper/TrackSelectionDialog.java +++ b/app/src/main/java/app/fedilab/android/peertube/helper/TrackSelectionDialog.java @@ -14,14 +14,14 @@ import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; +import androidx.media3.common.C; +import androidx.media3.common.Player; +import androidx.media3.common.TrackGroup; +import androidx.media3.common.TrackSelectionOverride; +import androidx.media3.common.TrackSelectionParameters; +import androidx.media3.common.Tracks; +import androidx.media3.ui.TrackSelectionView; -import com.google.android.exoplayer2.C; -import com.google.android.exoplayer2.Player; -import com.google.android.exoplayer2.Tracks; -import com.google.android.exoplayer2.source.TrackGroup; -import com.google.android.exoplayer2.trackselection.TrackSelectionOverride; -import com.google.android.exoplayer2.trackselection.TrackSelectionParameters; -import com.google.android.exoplayer2.ui.TrackSelectionView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.common.collect.ImmutableList; @@ -31,12 +31,14 @@ import java.util.HashMap; import java.util.List; import java.util.Map; + import app.fedilab.android.R; import app.fedilab.android.databinding.TrackSelectionDialogBinding; /** * Dialog to select tracks. */ +@androidx.annotation.OptIn(markerClass = androidx.media3.common.util.UnstableApi.class) public final class TrackSelectionDialog extends DialogFragment { public static final ImmutableList<Integer> SUPPORTED_TRACK_TYPES = diff --git a/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml b/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml index 2fc855328..d9dc542ab 100644 --- a/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml +++ b/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml @@ -65,14 +65,14 @@ android:layout_height="match_parent" android:visibility="gone"> - <com.google.android.exoplayer2.ui.PlayerView + <androidx.media3.ui.PlayerView android:id="@+id/media_video" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" app:use_controller="false" /> - <com.google.android.exoplayer2.ui.PlayerControlView + <androidx.media3.ui.PlayerControlView android:id="@+id/controls" android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/app/src/main/res/layouts/mastodon/layout/layout_media.xml b/app/src/main/res/layouts/mastodon/layout/layout_media.xml index 78d8a8484..f340763ac 100644 --- a/app/src/main/res/layouts/mastodon/layout/layout_media.xml +++ b/app/src/main/res/layouts/mastodon/layout/layout_media.xml @@ -18,7 +18,7 @@ app:layout_constraintTop_toTopOf="parent" tools:ignore="ContentDescription" /> - <com.google.android.exoplayer2.ui.PlayerView + <androidx.media3.ui.PlayerView android:id="@+id/media_video" app:shutter_background_color="@color/transparent" app:surface_type="texture_view" |