migrated to media3, dependency update
This commit is contained in:
parent
ea8b0ca764
commit
9c02e04e9f
|
@ -42,9 +42,6 @@ android {
|
|||
|
||||
dependencies {
|
||||
implementation 'com.google.android.material:material:1.9.0'
|
||||
implementation 'com.google.android.exoplayer:exoplayer-ui:2.19.0'
|
||||
implementation 'com.google.android.exoplayer:exoplayer-core:2.19.0'
|
||||
implementation 'com.google.android.exoplayer:extension-okhttp:2.19.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.3.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
|
@ -52,7 +49,7 @@ dependencies {
|
|||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||
implementation 'org.jsoup:jsoup:1.15.4'
|
||||
//noinspection GradleDependency
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.11.0'
|
||||
//noinspection GradleDependency
|
||||
implementation 'com.squareup.picasso:picasso:2.8'
|
||||
implementation 'jp.wasabeef:picasso-transformations:2.4.0'
|
||||
|
@ -62,4 +59,7 @@ dependencies {
|
|||
implementation 'com.github.nuclearfog:LinkAndScrollMovement:1.4.1'
|
||||
implementation 'com.github.kyleduo:SwitchButton:2.0.3-SNAPSHOT'
|
||||
implementation 'com.github.UnifiedPush:android-connector:2.1.1'
|
||||
implementation 'androidx.media3:media3-exoplayer:1.1.0'
|
||||
implementation 'androidx.media3:media3-ui:1.1.0'
|
||||
implementation 'androidx.media3:media3-datasource-okhttp:1.1.0'
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package org.nuclearfog.twidda.ui.activities;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
|
@ -17,26 +18,25 @@ import androidx.annotation.NonNull;
|
|||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
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.Renderer;
|
||||
import com.google.android.exoplayer2.RenderersFactory;
|
||||
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
||||
import com.google.android.exoplayer2.audio.MediaCodecAudioRenderer;
|
||||
import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource;
|
||||
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
|
||||
import com.google.android.exoplayer2.mediacodec.MediaCodecSelector;
|
||||
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
||||
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
|
||||
import com.google.android.exoplayer2.text.TextOutput;
|
||||
import com.google.android.exoplayer2.ui.StyledPlayerView;
|
||||
import com.google.android.exoplayer2.upstream.ContentDataSource;
|
||||
import com.google.android.exoplayer2.upstream.DataSource;
|
||||
import com.google.android.exoplayer2.video.MediaCodecVideoRenderer;
|
||||
import com.google.android.exoplayer2.video.VideoRendererEventListener;
|
||||
import androidx.media3.common.MediaItem;
|
||||
import androidx.media3.common.PlaybackException;
|
||||
import androidx.media3.common.Player;
|
||||
import androidx.media3.datasource.ContentDataSource;
|
||||
import androidx.media3.ui.PlayerView;
|
||||
import androidx.media3.datasource.DataSource;
|
||||
import androidx.media3.datasource.okhttp.OkHttpDataSource;
|
||||
import androidx.media3.exoplayer.ExoPlayer;
|
||||
import androidx.media3.exoplayer.Renderer;
|
||||
import androidx.media3.exoplayer.RenderersFactory;
|
||||
import androidx.media3.exoplayer.audio.AudioRendererEventListener;
|
||||
import androidx.media3.exoplayer.audio.MediaCodecAudioRenderer;
|
||||
import androidx.media3.exoplayer.mediacodec.MediaCodecSelector;
|
||||
import androidx.media3.exoplayer.metadata.MetadataOutput;
|
||||
import androidx.media3.exoplayer.source.ProgressiveMediaSource;
|
||||
import androidx.media3.exoplayer.text.TextOutput;
|
||||
import androidx.media3.exoplayer.video.MediaCodecVideoRenderer;
|
||||
import androidx.media3.exoplayer.video.VideoRendererEventListener;
|
||||
import androidx.media3.extractor.DefaultExtractorsFactory;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.helper.MediaStatus;
|
||||
|
@ -52,11 +52,13 @@ import java.io.Serializable;
|
|||
|
||||
import okhttp3.Call;
|
||||
|
||||
|
||||
/**
|
||||
* video player activity to show local and online videos/animations
|
||||
*
|
||||
* @author nuclearfog
|
||||
*/
|
||||
@SuppressLint("UnsafeOptInUsageError")
|
||||
public class VideoViewer extends AppCompatActivity implements Player.Listener, DescriptionCallback, RenderersFactory {
|
||||
|
||||
/**
|
||||
|
@ -78,7 +80,7 @@ public class VideoViewer extends AppCompatActivity implements Player.Listener, D
|
|||
@Nullable
|
||||
private DescriptionView descriptionView; // only used in portrait layout
|
||||
private Toolbar toolbar;
|
||||
private StyledPlayerView playerView;
|
||||
private PlayerView playerView;
|
||||
|
||||
private DescriptionDialog descriptionDialog;
|
||||
|
||||
|
@ -277,9 +279,11 @@ public class VideoViewer extends AppCompatActivity implements Player.Listener, D
|
|||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Renderer[] createRenderers(Handler eventHandler, VideoRendererEventListener videoRendererEventListener, AudioRendererEventListener audioRendererEventListener,
|
||||
TextOutput textRendererOutput, MetadataOutput metadataRendererOutput) {
|
||||
public Renderer[] createRenderers(@NonNull Handler eventHandler, @NonNull VideoRendererEventListener videoRendererEventListener,
|
||||
@NonNull AudioRendererEventListener audioRendererEventListener, @NonNull TextOutput textRendererOutput,
|
||||
@NonNull MetadataOutput metadataRendererOutput) {
|
||||
return new Renderer[]{
|
||||
new MediaCodecVideoRenderer(getApplicationContext(), MediaCodecSelector.DEFAULT, 0L, eventHandler, videoRendererEventListener, 4),
|
||||
new MediaCodecAudioRenderer(getApplicationContext(), MediaCodecSelector.DEFAULT, eventHandler, audioRendererEventListener)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package org.nuclearfog.twidda.ui.dialogs;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
@ -12,24 +12,23 @@ import android.widget.TextView;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.google.android.exoplayer2.ExoPlayer;
|
||||
import com.google.android.exoplayer2.MediaItem;
|
||||
import com.google.android.exoplayer2.Renderer;
|
||||
import com.google.android.exoplayer2.RenderersFactory;
|
||||
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
||||
import com.google.android.exoplayer2.audio.MediaCodecAudioRenderer;
|
||||
import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource;
|
||||
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
|
||||
import com.google.android.exoplayer2.mediacodec.MediaCodecSelector;
|
||||
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
||||
import com.google.android.exoplayer2.source.MediaSource;
|
||||
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
|
||||
import com.google.android.exoplayer2.text.TextOutput;
|
||||
import com.google.android.exoplayer2.ui.PlayerControlView;
|
||||
import com.google.android.exoplayer2.upstream.ContentDataSource;
|
||||
import com.google.android.exoplayer2.upstream.DataSource;
|
||||
import com.google.android.exoplayer2.video.VideoRendererEventListener;
|
||||
import androidx.media3.common.MediaItem;
|
||||
import androidx.media3.datasource.ContentDataSource;
|
||||
import androidx.media3.datasource.DataSource;
|
||||
import androidx.media3.datasource.okhttp.OkHttpDataSource;
|
||||
import androidx.media3.exoplayer.ExoPlayer;
|
||||
import androidx.media3.exoplayer.Renderer;
|
||||
import androidx.media3.exoplayer.RenderersFactory;
|
||||
import androidx.media3.exoplayer.audio.AudioRendererEventListener;
|
||||
import androidx.media3.exoplayer.audio.MediaCodecAudioRenderer;
|
||||
import androidx.media3.exoplayer.mediacodec.MediaCodecSelector;
|
||||
import androidx.media3.exoplayer.metadata.MetadataOutput;
|
||||
import androidx.media3.exoplayer.source.MediaSource;
|
||||
import androidx.media3.exoplayer.source.ProgressiveMediaSource;
|
||||
import androidx.media3.exoplayer.text.TextOutput;
|
||||
import androidx.media3.exoplayer.video.VideoRendererEventListener;
|
||||
import androidx.media3.extractor.DefaultExtractorsFactory;
|
||||
import androidx.media3.ui.PlayerControlView;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.utils.ConnectionBuilder;
|
||||
|
@ -44,7 +43,8 @@ import okhttp3.Call;
|
|||
*
|
||||
* @author nuclearfog
|
||||
*/
|
||||
public class AudioPlayerDialog extends Dialog implements OnClickListener, Closeable {
|
||||
@SuppressLint("UnsafeOptInUsageError")
|
||||
public class AudioPlayerDialog extends Dialog implements OnClickListener, RenderersFactory, Closeable {
|
||||
|
||||
private PlayerControlView controls;
|
||||
private TextView mediaLink;
|
||||
|
@ -59,7 +59,7 @@ public class AudioPlayerDialog extends Dialog implements OnClickListener, Closea
|
|||
*/
|
||||
public AudioPlayerDialog(Activity activity) {
|
||||
super(activity, R.style.AudioDialog);
|
||||
player = new ExoPlayer.Builder(activity.getApplicationContext(), createRenderer(activity.getApplicationContext())).build();
|
||||
player = new ExoPlayer.Builder(activity.getApplicationContext(), this).build();
|
||||
}
|
||||
|
||||
|
||||
|
@ -70,11 +70,7 @@ public class AudioPlayerDialog extends Dialog implements OnClickListener, Closea
|
|||
mediaLink = findViewById(R.id.dialog_audio_player_share);
|
||||
controls = findViewById(R.id.dialog_audio_player_controls);
|
||||
|
||||
controls.setShowNextButton(false);
|
||||
controls.setShowPreviousButton(false);
|
||||
controls.setPlayer(player);
|
||||
controls.setShowTimeoutMs(-1);
|
||||
|
||||
mediaLink.setOnClickListener(this);
|
||||
}
|
||||
|
||||
|
@ -154,6 +150,17 @@ public class AudioPlayerDialog extends Dialog implements OnClickListener, Closea
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Renderer[] createRenderers(@NonNull Handler eventHandler, @NonNull VideoRendererEventListener videoRendererEventListener,
|
||||
@NonNull AudioRendererEventListener audioRendererEventListener, @NonNull TextOutput textRendererOutput,
|
||||
@NonNull MetadataOutput metadataRendererOutput) {
|
||||
return new Renderer[]{
|
||||
new MediaCodecAudioRenderer(getContext(), MediaCodecSelector.DEFAULT, eventHandler, audioRendererEventListener)
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* show dialog and play audio
|
||||
*
|
||||
|
@ -165,19 +172,4 @@ public class AudioPlayerDialog extends Dialog implements OnClickListener, Closea
|
|||
super.show();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private RenderersFactory createRenderer(Context context) {
|
||||
return new RenderersFactory() {
|
||||
@Override
|
||||
public Renderer[] createRenderers(Handler eventHandler, VideoRendererEventListener videoRendererEventListener, AudioRendererEventListener audioRendererEventListener,
|
||||
TextOutput textRendererOutput, MetadataOutput metadataRendererOutput) {
|
||||
return new Renderer[]{
|
||||
new MediaCodecAudioRenderer(context, MediaCodecSelector.DEFAULT, eventHandler, audioRendererEventListener)
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -14,7 +14,7 @@
|
|||
android:layout_height="@dimen/page_status_toolbar_height"
|
||||
android:visibility="gone" />
|
||||
|
||||
<com.google.android.exoplayer2.ui.StyledPlayerView
|
||||
<androidx.media3.ui.PlayerView
|
||||
android:id="@+id/page_video_player"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
|
|
|
@ -6,11 +6,16 @@
|
|||
android:orientation="vertical"
|
||||
android:padding="@dimen/dialog_audio_player_layout_padding">
|
||||
|
||||
<com.google.android.exoplayer2.ui.PlayerControlView
|
||||
<androidx.media3.ui.PlayerControlView
|
||||
android:id="@+id/dialog_audio_player_controls"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/dialog_audio_player_layout_margin" />
|
||||
android:minHeight="@dimen/dialog_audio_player_height"
|
||||
android:layout_margin="@dimen/dialog_audio_player_layout_margin"
|
||||
app:show_shuffle_button="false"
|
||||
app:show_previous_button="false"
|
||||
app:show_next_button="false"
|
||||
app:show_timeout="-1"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/dialog_audio_player_share"
|
||||
|
@ -19,6 +24,7 @@
|
|||
android:drawablePadding="@dimen/dialog_audio_player_drawable_padding"
|
||||
android:lines="1"
|
||||
android:text="@string/button_share"
|
||||
android:layout_margin="@dimen/dialog_audio_player_layout_margin"
|
||||
app:drawableStartCompat="@drawable/share" />
|
||||
|
||||
</LinearLayout>
|
|
@ -18,7 +18,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<com.google.android.exoplayer2.ui.StyledPlayerView
|
||||
<androidx.media3.ui.PlayerView
|
||||
android:id="@+id/page_video_player"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
|
|
|
@ -305,6 +305,7 @@
|
|||
<dimen name="dialog_status_dropdown_height">28sp</dimen>
|
||||
|
||||
<!--dimens of dialog_audio_player.xml-->
|
||||
<dimen name="dialog_audio_player_height">200sp</dimen>
|
||||
<dimen name="dialog_audio_player_drawable_padding">5dp</dimen>
|
||||
<dimen name="dialog_audio_player_layout_padding">5dp</dimen>
|
||||
<dimen name="dialog_audio_player_layout_margin">5dp</dimen>
|
||||
|
|
Loading…
Reference in New Issue