diff --git a/Screenshot1.png b/Screenshot1.png
new file mode 100644
index 0000000..a962100
Binary files /dev/null and b/Screenshot1.png differ
diff --git a/Screenshot2.jpg b/Screenshot2.jpg
new file mode 100644
index 0000000..841a96b
Binary files /dev/null and b/Screenshot2.jpg differ
diff --git a/app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java b/app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java
index eabde7c..0cb0211 100644
--- a/app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java
+++ b/app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java
@@ -23,6 +23,8 @@ import static net.schueller.peertube.helper.Constants.THEME_PREF_KEY;
public class SettingsActivity extends AppCompatPreferenceActivity {
+ private static String previousThemeColorValue = "";
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
@@ -33,6 +35,21 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
return super.onOptionsItemSelected(item);
}
+ private static String getSelectedColor(Context context, String colorId){
+
+ String res = "Color not found";
+ String [ ] themeArray = context.getResources().getStringArray(R.array.themeValues);
+ String [ ] colorArray = context.getResources().getStringArray(R.array.themeArray);
+
+ for (int i = 0 ; i < themeArray.length ; i++){
+ if (themeArray[i].equals(colorId)){
+ res = colorArray[i];
+ break;
+ }
+ }
+ return res;
+ }
+
/**
* A preference value change listener that updates the preference's summary
* to reflect its new value.
@@ -45,6 +62,19 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
Toast.makeText(preference.getContext(), R.string.invalid_url, Toast.LENGTH_LONG).show();
return false;
}
+ // Check if Theme color has change & Provide selected color
+ else if (preference.getKey().equals("pref_theme")) {
+
+ stringValue = getSelectedColor(preference.getContext(), stringValue);
+
+ if (!previousThemeColorValue.equals("") && !previousThemeColorValue.equals(stringValue)) {
+ Toast.makeText(preference.getContext(), R.string.pref_description_app_theme, Toast.LENGTH_LONG).show();
+ }
+
+ previousThemeColorValue = stringValue;
+ preference.setSummary(stringValue);
+ return true;
+ }
preference.setSummary(stringValue);
@@ -96,7 +126,6 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
setupActionBar();
getFragmentManager().beginTransaction().replace(android.R.id.content, new GeneralPreferenceFragment()).commit();
-
}
/**
@@ -153,6 +182,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
// updated to reflect the new value, per the Android Design
// guidelines.
bindPreferenceSummaryToValue(findPreference("pref_api_base"));
+ bindPreferenceSummaryToValue(findPreference("pref_theme"));
}
@Override
diff --git a/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java b/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java
index ddb5f88..5c563a9 100644
--- a/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java
+++ b/app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.java
@@ -20,6 +20,7 @@ import android.view.Surface;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
+import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
@@ -244,6 +245,12 @@ public class VideoPlayActivity extends AppCompatActivity implements VideoRendere
ImageButton moreButton = findViewById(R.id.moreButton);
ImageButton videoOptions = findViewById(R.id.exo_more);
+ //Playback speed buttons
+ Button speed05 = findViewById(R.id.speed05);
+ Button speed10 = findViewById(R.id.speed10);
+ Button speed15 = findViewById(R.id.speed15);
+ Button speed20 = findViewById(R.id.speed20);
+
Video video = response.body();
mService.setCurrentVideo(video);
@@ -299,6 +306,41 @@ public class VideoPlayActivity extends AppCompatActivity implements VideoRendere
mService.setCurrentStreamUrl(video.getFiles().get(0).getFileUrl());
+ //Playback speed controls
+ speed05.setOnClickListener(view -> {
+ mService.setPlayBackSpeed(0.5f);
+ speed05.setTextColor(getResources().getColor(R.color.primaryColorRed));
+
+ speed10.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ speed15.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ speed20.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+
+ });
+ speed10.setOnClickListener(view -> {
+ mService.setPlayBackSpeed(1.0f);
+ speed10.setTextColor(getResources().getColor(R.color.primaryColorRed));
+
+ speed05.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ speed15.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ speed20.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ });
+ speed15.setOnClickListener(view -> {
+ mService.setPlayBackSpeed(1.5f);
+ speed15.setTextColor(getResources().getColor(R.color.primaryColorRed));
+
+ speed05.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ speed10.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ speed20.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ });
+ speed20.setOnClickListener(view -> {
+ mService.setPlayBackSpeed(2.0f);
+ speed20.setTextColor(getResources().getColor(R.color.primaryColorRed));
+
+ speed05.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ speed10.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ speed15.setTextColor(getResources().getColor(R.color.secondaryTextColorRed));
+ });
+
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if (sharedPref.getBoolean("pref_torrent_player", false)) {
diff --git a/app/src/main/java/net/schueller/peertube/service/VideoPlayerService.java b/app/src/main/java/net/schueller/peertube/service/VideoPlayerService.java
index 3b9611e..063bde0 100644
--- a/app/src/main/java/net/schueller/peertube/service/VideoPlayerService.java
+++ b/app/src/main/java/net/schueller/peertube/service/VideoPlayerService.java
@@ -16,6 +16,7 @@ import androidx.annotation.Nullable;
import android.util.Log;
import com.google.android.exoplayer2.ExoPlayerFactory;
+import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
@@ -123,8 +124,14 @@ public class VideoPlayerService extends Service {
currentStreamUrl = streamUrl;
}
- public void playVideo()
- {
+ //Playback speed control
+ public void setPlayBackSpeed(float speed) {
+
+ Log.v("VideoPlayerService", "setPlayBackSpeed...");
+ player.setPlaybackParameters(new PlaybackParameters(speed));
+ }
+
+ public void playVideo() {
Context context = this;
Log.v("VideoPlayerService", "playVideo...");
@@ -143,6 +150,9 @@ public class VideoPlayerService extends Service {
// Auto play
player.setPlayWhenReady(true);
+ //reset playback speed
+ this.setPlayBackSpeed(1.0f);
+
playerNotificationManager = PlayerNotificationManager.createWithNotificationChannel(
context, PLAYBACK_CHANNEL_ID, R.string.playback_channel_name,
PLAYBACK_NOTIFICATION_ID,
diff --git a/app/src/main/res/layout/activity_video_play.xml b/app/src/main/res/layout/activity_video_play.xml
index 85bf81d..0bb4c66 100644
--- a/app/src/main/res/layout/activity_video_play.xml
+++ b/app/src/main/res/layout/activity_video_play.xml
@@ -109,6 +109,51 @@
android:layout_marginEnd="12dp"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Body1" />
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml
index 3e6af98..9a964c2 100644
--- a/app/src/main/res/xml/pref_general.xml
+++ b/app/src/main/res/xml/pref_general.xml
@@ -20,7 +20,7 @@
android:title="@string/pref_title_app_theme"
android:summary="@string/pref_description_app_theme"
android:key="pref_theme"
- android:defaultValue="1"
+ android:defaultValue="AppTheme.ORANGE"
android:entries="@array/themeArray"
android:entryValues="@array/themeValues" />