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" /> + + +