From 4de457cd0207dc1fcac1487d046565df06c3d165 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Sat, 9 Oct 2021 22:08:48 +0800 Subject: Loop video option is available for autoplaying videos. --- .../infinityforreddit/AppModule.java | 7 +++-- .../customviews/LoopAvailableExoCreator.java | 35 ++++++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/video_preferences.xml | 3 +- 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/customviews/LoopAvailableExoCreator.java (limited to 'app') diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AppModule.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AppModule.java index 604aa32f..2b8351bb 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/AppModule.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AppModule.java @@ -25,6 +25,7 @@ import im.ene.toro.exoplayer.ExoCreator; import im.ene.toro.exoplayer.MediaSourceBuilder; import im.ene.toro.exoplayer.ToroExo; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; +import ml.docilealligator.infinityforreddit.customviews.LoopAvailableExoCreator; import ml.docilealligator.infinityforreddit.utils.APIUtils; import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; @@ -309,10 +310,10 @@ class AppModule { @Provides @Singleton - ExoCreator provideExoCreator(SimpleCache simpleCache) { - Config config = new Config.Builder(mApplication).setMediaSourceBuilder(MediaSourceBuilder.LOOPING).setCache(simpleCache) + ExoCreator provideExoCreator(SimpleCache simpleCache, @Named("default") SharedPreferences sharedPreferences) { + Config config = new Config.Builder(mApplication).setMediaSourceBuilder(MediaSourceBuilder.DEFAULT).setCache(simpleCache) .build(); - return ToroExo.with(mApplication).getCreator(config); + return new LoopAvailableExoCreator(ToroExo.with(mApplication), config, sharedPreferences); } @Provides diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/LoopAvailableExoCreator.java b/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/LoopAvailableExoCreator.java new file mode 100644 index 00000000..5ccda4be --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/LoopAvailableExoCreator.java @@ -0,0 +1,35 @@ +package ml.docilealligator.infinityforreddit.customviews; + +import android.content.SharedPreferences; + +import androidx.annotation.NonNull; + +import com.google.android.exoplayer2.Player; +import com.google.android.exoplayer2.SimpleExoPlayer; + +import im.ene.toro.exoplayer.Config; +import im.ene.toro.exoplayer.DefaultExoCreator; +import im.ene.toro.exoplayer.ToroExo; +import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; + +public class LoopAvailableExoCreator extends DefaultExoCreator { + private final SharedPreferences sharedPreferences; + + public LoopAvailableExoCreator(@NonNull ToroExo toro, @NonNull Config config, SharedPreferences sharedPreferences) { + super(toro, config); + this.sharedPreferences = sharedPreferences; + } + + @NonNull + @Override + public SimpleExoPlayer createPlayer() { + SimpleExoPlayer player = super.createPlayer(); + if (sharedPreferences.getBoolean(SharedPreferencesUtils.LOOP_VIDEO, true)) { + player.setRepeatMode(Player.REPEAT_MODE_ALL); + } else { + player.setRepeatMode(Player.REPEAT_MODE_OFF); + } + + return player; + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 93686697..fd09419b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -595,6 +595,7 @@ Show Only One Comment Level Indicator Switch to Landscape Orientation in Video Player Automatically Loop Video + Restart the app to apply this setting to autoplaying videos Remember Muting Option in Post Feed Post Details Separate Post And Comments in Portrait Mode diff --git a/app/src/main/res/xml/video_preferences.xml b/app/src/main/res/xml/video_preferences.xml index 7b2ebbdb..ef8d944e 100644 --- a/app/src/main/res/xml/video_preferences.xml +++ b/app/src/main/res/xml/video_preferences.xml @@ -33,7 +33,8 @@ + app:title="@string/settings_loop_video_title" + app:summary="@string/settings_loop_video_summary" /> -- cgit v1.2.3