Rewind & Fast Forward through car input

Feature description:

I could not find a similar request.

When I push the previous/next on the car button, it detects and switches the song properly.
When I hold the previous/next on the car button, it does not rewind/fastforward.

Is this something that can be implemented?

Problem solved:

Rewind/fastforward without unlocking/touching the phone

Brought benefits:

Ability to dpo a quick rewind or a skip without touching the phone, while driving, and not needing to unlock the phone.

Other application solutions:

 
This works with VLC (not for radio stations obviously)
 

Additional description and context:

 

 

Screenshots / Mockup:

    

Provide logs when doing that to see the command the car send.

And define rewind, you mean skip back 30 ?

Yeah could also be rewinding 5 second (could make it configurable) at a time. so if you hold the button it would rewind 5 sec, another 5 sec, another 5 sec (with a short pause in between).

When I get in the car, I will try not to forget creating a debug log for it. Are there keywords I should look for in the logfile to help locate it faster?

No you provide full logs and approximate time.

Is it possible to redact stuff like hostnames/IP addresses and actual metadata like song name through Symfonium?

The logs are only seen by me and do you really think I care about those?

I deleted the logs after saving the debug.log file

What I did in a short time when debug was activated:

  • Press Previous (expectation: previous song or start of current song if nothing is before) → OK
  • Hold Previous for a few sec (expectation: rewind some time / go back in the song a bit) → Nothing happened
  • Hold Next for a few sec (expectation: skip some time / go forward in the song a bit) → Nothing happened
  • Press Next (expectation: next song) → OK

Presses:

2024-04-19 17:46:58.370 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MEDIA_PREVIOUS, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:46:58.370 Verbose/MediaSessionCallback: onSkipToPrevious
2024-04-19 17:46:58.388 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_PREVIOUS, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:46:58.465 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MEDIA_PLAY, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:46:58.485 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_PLAY, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:47:01.074 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MEDIA_REWIND, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:47:02.092 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MEDIA_REWIND, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:47:02.562 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_REWIND, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:47:04.512 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MEDIA_FAST_FORWARD, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:47:05.235 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_FAST_FORWARD, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:47:06.232 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MEDIA_NEXT, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }
2024-04-19 17:47:06.232 Verbose/MediaSessionCallback: onSkipToNext
2024-04-19 17:47:06.255 Verbose/MediaSessionCallback: onMediaButton: android.intent.action.MEDIA_BUTTON - KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_NEXT, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0, displayId=-1 }

Seems like it properly catches Previous, Rewind, FastForward and Next. And it seems to log Action_Down when I press the button and Action_Up when I release my finger. For Previous and Next it seems to understand what to do and that’s also visible in that log, whereas the other ones are registered but no action is taken.
There is also literally no other log entry between 17:46:58.465 and 17:47:06.232

Hope this sheds some light on the workings