diff options
author | Martin Fietz <marf@hadiko-99-4.hadiko.uni-karlsruhe.de> | 2015-04-06 18:32:06 +0200 |
---|---|---|
committer | Martin Fietz <marf@hadiko-99-4.hadiko.uni-karlsruhe.de> | 2015-04-10 11:10:25 +0200 |
commit | fd30ec8189a1d9b47adfa31a9fe7dbc2085061f6 (patch) | |
tree | 8650b1b6263944bc1886235c155ae771c5f9d119 /app | |
parent | 76b6ae654b8b23334c977e4f56fd9157ea982585 (diff) | |
download | AntennaPod-fd30ec8189a1d9b47adfa31a9fe7dbc2085061f6.zip |
Set fast forward and rewind time
Diffstat (limited to 'app')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java | 108 | ||||
-rw-r--r-- | app/src/main/res/layout/audioplayer_activity.xml | 24 | ||||
-rw-r--r-- | app/src/main/res/xml/preferences.xml | 8 |
3 files changed, 127 insertions, 13 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index 8edd4185c..1dd535f2a 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -12,6 +12,8 @@ import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; + +import android.view.View; import android.widget.ImageButton; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; @@ -46,7 +48,9 @@ public abstract class MediaplayerActivity extends ActionBarActivity protected SeekBar sbPosition; protected ImageButton butPlay; protected ImageButton butRev; + protected TextView txtvRev; protected ImageButton butFF; + protected TextView txtvFF; private PlaybackController newPlaybackController() { return new PlaybackController(this, false) { @@ -222,7 +226,6 @@ public abstract class MediaplayerActivity extends ActionBarActivity protected void onStop() { super.onStop(); Log.d(TAG, "onStop()"); - if (controller != null) { controller.release(); } @@ -373,6 +376,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity if (controller != null) { int currentPosition = controller.getPosition(); int duration = controller.getDuration(); + Log.d(TAG, "currentPosition " + Converter + .getDurationStringLong(currentPosition)); if (currentPosition != PlaybackService.INVALID_TIME && duration != PlaybackService.INVALID_TIME && controller.getMedia() != null) { @@ -381,8 +386,7 @@ public abstract class MediaplayerActivity extends ActionBarActivity txtvLength.setText(Converter.getDurationStringLong(duration)); updateProgressbarPosition(currentPosition, duration); } else { - Log.w(TAG, - "Could not react to position observer update because of invalid time"); + Log.w(TAG, "Could not react to position observer update because of invalid time"); } } } @@ -426,7 +430,11 @@ public abstract class MediaplayerActivity extends ActionBarActivity txtvLength = (TextView) findViewById(R.id.txtvLength); butPlay = (ImageButton) findViewById(R.id.butPlay); butRev = (ImageButton) findViewById(R.id.butRev); + txtvRev = (TextView) findViewById(R.id.txtvRev); + txtvRev.setText(String.valueOf(UserPreferences.getRewindSecs())); butFF = (ImageButton) findViewById(R.id.butFF); + txtvFF = (TextView) findViewById(R.id.txtvFF); + txtvFF.setText(String.valueOf(UserPreferences.getFastFowardSecs())); // SEEKBAR SETUP @@ -437,10 +445,100 @@ public abstract class MediaplayerActivity extends ActionBarActivity butPlay.setOnClickListener(controller.newOnPlayButtonClickListener()); if (butFF != null) { - butFF.setOnClickListener(controller.newOnFFButtonClickListener()); + butFF.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int curr = controller.getPosition(); + controller.seekTo(curr + UserPreferences.getFastFowardSecs() * 1000); + } + }); + butFF.setOnLongClickListener(new View.OnLongClickListener() { + + int choice; + + @Override + public boolean onLongClick(View v) { + int checked = 0; + int rewindSecs = UserPreferences.getFastFowardSecs(); + final int[] values = getResources().getIntArray(R.array.seek_delta_values); + final String[] choices = new String[values.length]; + for(int i=0; i < values.length; i++) { + if (rewindSecs == values[i]) { + checked = i; + } + choices[i] = String.valueOf(values[i]) + " " + + getString(R.string.time_unit_seconds); + } + choice = values[checked]; + AlertDialog.Builder builder = new AlertDialog.Builder(MediaplayerActivity.this); + builder.setTitle(R.string.pref_fast_forward); + builder.setSingleChoiceItems(choices, checked, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + choice = values[which]; + } + }); + builder.setNegativeButton(R.string.cancel_label, null); + builder.setPositiveButton(R.string.confirm_label, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + UserPreferences.setPrefFastForwardSecs(choice); + txtvFF.setText(String.valueOf(choice)); + } + }); + builder.create().show(); + return true; + } + }); } if (butRev != null) { - butRev.setOnClickListener(controller.newOnRevButtonClickListener()); + butRev.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int curr = controller.getPosition(); + controller.seekTo(curr - UserPreferences.getRewindSecs() * 1000); + } + }); + butRev.setOnLongClickListener(new View.OnLongClickListener() { + + int choice; + + @Override + public boolean onLongClick(View v) { + int checked = 0; + int rewindSecs = UserPreferences.getRewindSecs(); + final int[] values = getResources().getIntArray(R.array.seek_delta_values); + final String[] choices = new String[values.length]; + for(int i=0; i < values.length; i++) { + if (rewindSecs == values[i]) { + checked = i; + } + choices[i] = String.valueOf(values[i]) + " " + + getString(R.string.time_unit_seconds); + } + choice = values[checked]; + AlertDialog.Builder builder = new AlertDialog.Builder(MediaplayerActivity.this); + builder.setTitle(R.string.pref_rewind); + builder.setSingleChoiceItems(choices, checked, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + choice = values[which]; + } + }); + builder.setNegativeButton(R.string.cancel_label, null); + builder.setPositiveButton(R.string.confirm_label, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + UserPreferences.setPrefRewindSecs(choice); + txtvRev.setText(String.valueOf(choice)); + } + }); + builder.create().show(); + return true; + } + }); } } diff --git a/app/src/main/res/layout/audioplayer_activity.xml b/app/src/main/res/layout/audioplayer_activity.xml index 644d8fe90..827e06e00 100644 --- a/app/src/main/res/layout/audioplayer_activity.xml +++ b/app/src/main/res/layout/audioplayer_activity.xml @@ -95,6 +95,18 @@ tools:src="@drawable/ic_fast_rewind_white_36dp" tools:background="@android:color/holo_blue_dark" /> + <TextView + android:id="@+id/txtvRev" + android:layout_width="wrap_content" + android:layout_height="32dp" + android:layout_alignTop="@id/butRev" + android:layout_alignLeft="@id/butRev" + android:layout_alignRight="@id/butRev" + android:gravity="center" + android:text="30" + android:textSize="8dp" + android:clickable="false"/> + <ImageButton android:id="@+id/butFF" android:layout_width="@dimen/audioplayer_playercontrols_length" @@ -106,6 +118,18 @@ tools:src="@drawable/ic_fast_forward_white_36dp" tools:background="@android:color/holo_blue_dark" /> + <TextView + android:id="@+id/txtvFF" + android:layout_width="wrap_content" + android:layout_height="32dp" + android:layout_alignTop="@id/butFF" + android:layout_alignLeft="@id/butFF" + android:layout_alignRight="@id/butFF" + android:gravity="center" + android:text="30" + android:textSize="8dp" + android:clickable="false"/> + <Button android:id="@+id/butPlaybackSpeed" android:layout_width="@dimen/audioplayer_playercontrols_length" diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index eb6a3fe1f..f06f83914 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -78,14 +78,6 @@ android:summary="@string/pref_pausePlaybackForFocusLoss_sum" android:title="@string/pref_pausePlaybackForFocusLoss_title" /> - <ListPreference - android:defaultValue="30" - android:entries="@array/seek_delta_values" - android:entryValues="@array/seek_delta_values" - android:key="prefSeekDeltaSecs" - android:summary="@string/pref_seek_delta_sum" - android:title="@string/pref_seek_delta_title" /> - </PreferenceCategory> <PreferenceCategory android:title="@string/network_pref"> <ListPreference |