XilinJia / Podcini

Open source podcast instrument for Android in Kotlin with media3, supporting channels, playlists, podcasts and single media from YouTube and YT Music as well as normal podcasts.
GNU General Public License v3.0
158 stars 7 forks source link

Re-introduce tap-to-change speed selector (behind option) #25

Closed ls-2020 closed 6 months ago

ls-2020 commented 6 months ago

Checklist

App version

4.4.2

Where did you get the app from

F-Droid

Problem you may be having, or feature you want

Since Version 2.4.0 it is not longer possible to change the playback speed with a single tap, which was possible in Version 2.3.2 Switching speed with a single tap is a key feature for Users who need a simple and easy to use User Interface in certain Situations. Bringing back this option would be a good reason for Users who require this important feature to switch from Antennapod to Podcini as it seems that the Antennapod Developers will not bring back this feature even they think it is useful and easy to implement.

Suggested solution

A new setting is introduced within the group User Interface
    Type: toggle
    Title: Single tap to switch speed
    Explanation: Switch between playback speeds when tapping the speed icon in the player screen. Long-press the icon to change your presets.
    Default: disabled
If the setting is active, the old behaviour is restored:
    run through each of the set speeds on each tap
    show the bottom sheet when long-pressing

Screenshots / Drawings / Technical details

Take a look at the discussion here: Antennapod issue

XilinJia commented 6 months ago

if you mean by pressing the speed dial the speed jumps through your preset values (1.2, 1.5, 1.8 etc), the widget on the lock screen behaves like this.

But this doesn't seem very reasonable feature. The question to ask is why the need to increase speed is always there. What if one wants to decrease the speed?

Perhaps you can tell us more on the importance of this feature. What are the most applicable use cases?

ls-2020 commented 6 months ago
  1. I don't use the lock screen nor the notification - i use the app to control playback.
  2. Why this is important is very well explained in the AP issue #6019 please check it out! (as well as the discussion in the forum)

https://github.com/AntennaPod/AntennaPod/issues/6019

https://forum.antennapod.org/t/changing-playback-speed-in-version-2-4/1392

Let's say you have defined 3 speed selectors [1.0]-[0.75]-[2.0]

In AP-Version 2.3.2 it was possible to change/toggle/select speeds with one TAP at the speed selector: current speed [1.0] TAP -> speed is [0.75] TAP -> speed is [2.0] TAP -> speed is [1.0] again TAP -> speed is [0.75] ... and so on.

This way it was possible to change the speed very quickly and cycle to your presets just with single TAPs which is very easy to use. Since version 2.4.0 a small menu pops up and you have to select the speed you want thus you have to look way longer at the the screen and pay much more attention if you want to change speed which can be quite dangerous.

You advertise Podcini to provide more user-friendly features, so if you still don't understand why i request a feature where the user can choose (just add an option) how the speed selector works, then please do this: Install AP 2.3.2 and use only the speed selector to "jump over" (listening with max speed) uninteresting parts in a podcast instead of using the skip button (few taps until speed is max and then back to normal speed if it gets interesting again) and then try to do this with AP >=2.4 or Podcini and you will notice the difference and how useful this feature can be for users who are changing speed quite often - thanks!

XilinJia commented 6 months ago

That sounds an interesting usage, speeding forward to seek more interesting topics. I haven't used it that way, to quickly move forward, I always used the Forward button to jump over 30 seconds or so, but I understand speeding forward can be useful to me.

That said, tapping on the speed dial seems not the right way of operation, as people (myself included) preset multiple speeds, basically for playing different types of podcasts or during different listening conditions. For instance, I myself set 0.8 for German podcasts (I'm learning), 0.9-1.2 for French podcasts (I'm practising), 1.4-1.5 for undedicated listening (while I work on something), and 1.7-2.0 for dedicated listening. And I believe many people have similar needs like this. Cycling through the presets is weird.

But for speeding forward, I think the current Skip button (or a new button in place of the Skip button) might be a better way. So the button can be associated with a max speed (2.5 for instance), when tapped, the max speed will be used, tapped again, speed returns to the previous, and when long-pressed, the episode will be skipped. How does that sound?

ls-2020 commented 6 months ago

Nice, your suggested solution sounds nearly perfect and would be even better than the requested feature, but please keep this in mind:

  1. the skip buttons should not be replaced (they are very useful to skip over parts you really want to skip, like adverts!)
  2. an additional button would reduce the size of all buttons (this can be a problem) and would make the UI more "complicated" (just keep it simple and easy to use)

I think the best solution would be to add a toggle in the setting to let the user decide how the speed button functions: option 1) "as is" (short-tap at the speed button and the user can select a speed of the presets) option 2) "fast-forward" - just replace the speed button icon with fast-forward icon (and maybe inverted fast-forward icon if speed is max) and then a short-tap on fast-forward to toggle between a predefined max speed (that can be defined in the settings if this option is enabled - default 2.0) and the previously selected speed in the player. instead of skipping an episode when long-pressed the long-press in fast-forward mode should still open the menu to allow to change the default speed as in option 1). This way you could define for example 0.8 for German with a long-press as the default speed (normally you do this once if you start listening, so one long-press shouldn't be a problem) and if you decide to listen with a different default speed during listening you can still change the speed by using the long-press!

This would not break the current behavior and would not change the UI, but would offer an option to fast-forward over uninteresting parts with a single short-tap! i think this would be perfect and would be a real improvement compared to the original feature request as it would again require less taps (no cycling thru different speeds)

I really hope to see this option/feature in one of the next releases - thanks!

XilinJia commented 6 months ago

I'm more inclined to doing it with the fast forward button (instead of the skip button or the speed button). It's how the old cassette players behave. So we can give Podcini a retro fit.

So by default, the fast forward speed is not set, and the button behaves as it is now, jumps forward by number of seconds. When the user sets the fast forward speed, a tap on the button will make it play at the fast speed, tap again will resume as normal, and long-press will make it jump by the number of seconds.

ls-2020 commented 6 months ago

hmm, quite disappointing to hear that you don't understand that this would break anything and would make usage way to complicated again! Basically my request was to make the UI easier to use! Access to the skip buttons with single tap is essential - i just don't want to listen to any silly ads even not with 2.0 speed. So now i would get fast-forward with singe tap but loose skip-buttons with single tap. This would be total useless as before for my use case as access to all important (often used) buttons with a single tap is the key for my use case (everything else is just dangerous in situations where you have to concentrate on the environment and not on the screen) , so sorry for wasting your time!

It seems i will have to stick with AP 2.3.2 as it still has the best user experience/UI, if you want to avoid to look a long time at the screen.

XilinJia commented 6 months ago

Cheer up, the world is not that disappointing after all!

I meant to use the fast forward button to handle speed forward, the skip button will remain the same.

ls-2020 commented 6 months ago

i think we were talking about different buttons - sorry for the confusion. fast-forward-button = new button with defined max. speed (default 2.0) skip buttons = +#s and -#s buttons the skip buttons are essential to skip over ads that are placed in the middle of a podcast. as you never know how log these ads are sometimes many taps are required on + and then one on - to continue where the advert ends.

indeed i nearly never use the skip-episode-button. so replacing the skip-episode-button with a single-tap fast-forward-button and a long-tap on it to skip-episode would work for me as well as this button is only required once if you really want to skip to next episode, so a long-press here would be no big problem.

fine, i will wait and test it as soon as this option is available - thanks!

XilinJia commented 6 months ago

I ended up adding the function onto the skip-episode-button. Included in the coming release.

ls-2020 commented 6 months ago

Great - Thanks!

BTW: This will solve another side-effect-issue! Sometimes i hit the skip-episode-button accidentally and as i have selected "auto-delete skipped/finished episode" i had to download the episode again to continue listening! A required long-press on the new fast-forward-button to skip-episode will prevents this, so this is very useful as well!

ls-2020 commented 6 months ago

just downloaded 4.5.2(free) from github and tried the new version!

The options are nice, but:

  1. trying to set fallback speed to 2.0 does not work (Podcini seems to restart and if i go to settings it is still 0.0) (and it has a wrong caption: "edit fast forward" instead of "edit fallback")
  2. trying to set fast forward speed does not work as well (Podcini seems to restart and if i go to settings it is still 0.0)

Because of these bugs i cannot test the new features - will try next release

ls-2020 commented 6 months ago

tested again (cleared cache and data) and Podcini crashes if i try to change speed from 0.0 to 2.0 in the settings mentioned above

XilinJia commented 6 months ago
  • trying to set fallback speed to 2.0 does not work (Podcini seems to restart and if i go to settings it is still 0.0) (and it has a wrong caption: "edit fast forward" instead of "edit fallback")
  • trying to set fast forward speed does not work as well (Podcini seems to restart and if i go to settings it is still 0.0)

OK, I got that wrong caption.

Can you detail out separately how you set the two options above and at what point Podcini restarts? I can't get it to happen.

BTW, fallback speed is currently capped at 1.5, if you input 2.0, it will only set it to 1.5. And fast forward speed is capped at 10. Setting either to 0.0, simply disables the feature (the default).

ls-2020 commented 6 months ago

i just use the keyboard to edit 0.0 and change it to 2.0 and tap "OK" (both settings behave identical) after this i get either a crash (if i wipe cache and data before) or i am kicked out of the settings back to main (it seems to me that the app gets killed and restarts) if i check the settings again both options are still set to 0.0 so nothing changes. So i guess Podcini crashes at the moment it tries to save these settings. (i have no issues to change other settings except these two new ones)

XilinJia commented 6 months ago

I think it must be due to rounding number using string format in Kotlin. I changed to the math rounding now. Please test it in the test release.

ls-2020 commented 6 months ago

Thanks, now i can set fast-forward speed and button works as expected!

suggestion: I think the fast-forward-button-icon should be changed if the option (max speed) is set to anything else than 0.0! at the moment the icon looks like a normal skip-button which is irritating! i would suggest an empty circle as icon and within the circle the speed that is set on the next tap example: if default speed is 0.8 and max speed is 2.0 the icon should show (2.0) if playback is default speed and change to (0.8) after a tap if playback is max speed

bug: if i hit pause i expect that playback continues with the last speed i set! after pressing pause the speed is always set to 1.0

XilinJia commented 6 months ago

Will think about the icon change, also the play button when in fallback mode.

The fast forward is only for fast forwarding during play. when you hit pause and re-start play, it should play at the normal play speed you set, be it 0.8, 1.0 or 1.6, and not do fast forwarding.

BTW, you seem to be using an unusual Locale with the phone. This and the missing-pixel issues are all related to it. What is it?

ls-2020 commented 6 months ago

well, playback speed is always reset to 1.0 after pause! if i am in fast-forward-mode (2.0) and hit pause and continue playback: speed=1.0 if i set default playback speed to 1.5 , hit pause and and continue playback: speed=1.0 for me this is "wrong" as it does not respect the playback speed i set

locale? hmm, don't know how to check it. i have set language to english and i use LOS 20 (android 13) without google apps

XilinJia commented 6 months ago

OK, I see about your play speed issue. The speed setting from the player is changed. when you set for play speed, there are three options: current playing, podcast and global. You need to select the ones for the speed to set for. by default, current is selected for the current playing (I would like it for the current audio, so will look to change it). whenever the play button is hit, the speed of podcast (if not set to be global) takes precedence. So I guess when you set play speed, you only set for the current, and when you pause and play again, the speed used is the podcast or global speed.

ls-2020 commented 6 months ago

this sounds quite confusing to me. even if i can define global and podcast speeds (never used this) these settings should not override the current speed if i hit pause. so even if i would define 0.8 for a podcast and change speed during playback to 0.7 i would expect that after pause/continue the speed is still set to 0.7 and not reset to 0.8 (if i understand correctly)

i think pause/continue during playback should respect the last speed that was set by the user before pressing pause as the user has changed the speed for a reason (too slow, too fast), so resuming should not depend on any pre-defined speed setting.

XilinJia commented 6 months ago

Yes, "I would like current for the current audio, so will look to change it". So the current for now is the current play.

Regarding speed settings, it's quite important to separate speeds for current, podcast and global. Note that when you set speed for podcast or global, current is selected by default and is set likewise unless you uncheck "Current".