8
8
9
9
import androidx .preference .PreferenceManager ;
10
10
11
+ import com .google .android .exoplayer2 .PlaybackParameters ;
11
12
import com .google .android .exoplayer2 .Player .EventListener ;
12
13
import com .google .android .exoplayer2 .SeekParameters ;
13
14
import com .google .android .exoplayer2 .SimpleExoPlayer ;
14
15
import com .google .android .exoplayer2 .source .MediaSource ;
15
16
import com .google .android .exoplayer2 .source .ProgressiveMediaSource ;
16
17
import com .google .android .exoplayer2 .upstream .DefaultDataSourceFactory ;
17
18
18
- import org .schabi .newpipe .App ;
19
19
import org .schabi .newpipe .DownloaderImpl ;
20
20
import org .schabi .newpipe .R ;
21
21
import org .schabi .newpipe .player .helper .PlayerHelper ;
@@ -48,7 +48,7 @@ public class LocalPlayer implements EventListener {
48
48
49
49
public LocalPlayer (final Context context ) {
50
50
this .context = context ;
51
- this .mPrefs = PreferenceManager .getDefaultSharedPreferences (App . getApp () );
51
+ this .mPrefs = PreferenceManager .getDefaultSharedPreferences (context );
52
52
}
53
53
54
54
public void initialize (final String uri , final VideoSegment [] segments ) {
@@ -62,6 +62,16 @@ public void initialize(final String uri, final VideoSegment[] segments) {
62
62
simpleExoPlayer .setSeekParameters (PlayerHelper .getSeekParameters (context ));
63
63
simpleExoPlayer .setHandleAudioBecomingNoisy (true );
64
64
65
+ final PlaybackParameters playbackParameters = simpleExoPlayer .getPlaybackParameters ();
66
+ final float speed = mPrefs .getFloat (context .getString (
67
+ R .string .playback_speed_key ), playbackParameters .speed );
68
+ final float pitch = mPrefs .getFloat (context .getString (
69
+ R .string .playback_pitch_key ), playbackParameters .pitch );
70
+ final boolean skipSilence = mPrefs .getBoolean (context .getString (
71
+ R .string .playback_skip_silence_key ), playbackParameters .skipSilence );
72
+
73
+ setPlaybackParameters (speed , pitch , skipSilence );
74
+
65
75
final String autoPlayStr =
66
76
mPrefs .getString (context .getString (R .string .autoplay_key ), "" );
67
77
final boolean autoPlay =
@@ -94,6 +104,20 @@ public void destroy() {
94
104
progressUpdateReactor .set (null );
95
105
}
96
106
107
+ public void setPlaybackParameters (final float speed , final float pitch ,
108
+ final boolean skipSilence ) {
109
+ final float roundedSpeed = Math .round (speed * 100.0f ) / 100.0f ;
110
+ final float roundedPitch = Math .round (pitch * 100.0f ) / 100.0f ;
111
+
112
+ mPrefs .edit ()
113
+ .putFloat (context .getString (R .string .playback_speed_key ), speed )
114
+ .putFloat (context .getString (R .string .playback_pitch_key ), pitch )
115
+ .putBoolean (context .getString (R .string .playback_skip_silence_key ), skipSilence )
116
+ .apply ();
117
+ simpleExoPlayer .setPlaybackParameters (
118
+ new PlaybackParameters (roundedSpeed , roundedPitch , skipSilence ));
119
+ }
120
+
97
121
@ Override
98
122
public void onPlayerStateChanged (final boolean playWhenReady , final int playbackState ) {
99
123
switch (playbackState ) {
0 commit comments