Hörbuch (endlos) - Kleiner Bug?

Software läuft hier schon richtig rund, Danke! Ein kleiner Bug ist mir noch aufgefallen:

Ich verwende für die Steuerung nur den Drehenkoder. Auf den Taster habe ich CMD_NEXTTRACK gelegt um den nächsten Titel abzuspielen. Drücke ich beim letzten Track auf den Taster passiert aber nichts, er springt nicht auf den 1.Track zurück (Modus Hörbuch - endlos).
Wird das Lied bis zum Ende abspielt startet Track 1 aber ganz normal (Endloswiedergabe). Also nur der Taster funktioniert nicht wie gewünscht. Habe jetzt noch nicht die Stelle gefunden wo man das fixen kann…

In diesem Falle tatsächlich kein Bug, sondern das habe ich so gewollt :slight_smile:. Halt einfach um zu sagen: So, hier ist das Hörspiel jetzt zu Ende. Weiß nicht, ob Kinder das verstehen, wenn das dann plötzlich wieder vorne beginnt.

Die Stelle ist hier:

Funktionsweise:
Die If-Clause simuliert gewissermaßen, ob das Drücken von NEXT eine gültige Aktion darstellte. Wenn ja, dann wird es akzeptiert und wenn nein, dann halt abgelehnt. Könnte man funktionell natürlich einfach umbauen, indem man sagt (ungetestet):

if (gPlayProperties.currentTrackNumber + 1 == gPlayProperties.numberOfTracks)
dann wird die Aktion FIRSTTRACK ausgelöst. Hier lauert wieder die Falle, dass numberOfTracks die tatsächliche Anzahl speichert, während das Array, welches man mit currentTrackNumber ansteuert, bei 0 beginnt. Aber das kennst du ja :smiley:.

Vielleicht gibt es ja noch ein paar Meinungen dazu, was das gewünschte Verhalten wäre.

Was aber glaube ich tatsächlich ein Bug ist:

Das ist eine Convenience-Funktion, damit Play automatisch wieder anfängt, wenn man im Pause-Modus ist und dann NEXT drückt. Denke aber die Aktion (welche absolut Sinn macht aus meiner Sicht) sollte nur dann ausgeführt werden, wenn NEXT auch akzeptiert wurde.
Bei PREVIOUSTRACK das Gleiche.

Habe mir schon gedacht das es ein „Feature“ ist :wink:
Finde aber das beim Modus endlos auch wieder von vorn begonnen werden sollte. Das macht es ja auch ohne Tastendruck. Wenn ich das nicht möchte würde ich den einfachen Hörspiel-Modus wählen. Oder?

Ok, stimmt. Aus der endlos-Perspektive habe ich das noch nicht gesehen.
Akzeptiert!

Integriere in den Else-Zweig (Zeile 409) mal zum Test ganz oben:

if (gPlayProperties.repeatPlaylist) {   // In loop-mode jump to first track if end was reached
    AudioPlayer_TrackControlToQueueSender(FIRSTTRACK);
    continue;
}

Ist ungetestet.

Super, teste ich heute Abend und gebe Dir Feedback.

Klappt so nicht. Melde mich :slight_smile:

Meh. Ich habe einen Commit gemacht, der aber kacke ist. Das muss ich rückgängig machen.

EDIT: Da muss ich mir nochmal mehr Zeit für nehmen. Kümmere mich drum.

So, ich hoffe mal, dass es im zweiten Anlauf jetzt passt. Folgendes ist neu/anders:

  • Befindet man sich im ersten Titel und springt zurück, so schaut ESPuino, ob bereits mindestens fünf Sekunden gespielt sind. Wenn ja, so springt er an den Anfang des Titels zurück. Wenn nein, so schaut er, ob ein Loop-Modus aktiv ist. Ist das nicht der Fall, so springt er ebenfalls an den Anfang zurück. Wenn ja, so springt er an den Anfang des letzten Titels der Playlist zurück.
  • Die o.g. Regel mit mind. 5s gespielt gilt immer, wenn man zurückspringen möchte - ungeachtet dessen, ob es der erste oder n-te Titel ist.
  • Befindet man sich im letzten Titel und springt nach vorne, so wird geschaut, ob ein Loop-Modus aktiv ist. Wenn ja, so springt ESPuino zum ersten Titel zurück. Wenn nein, so zeigt er eine Fehlermeldung an, dass bereits der letzte Titel gespielt wird.

Kurz gesagt: Im Loop-Modus wird jetzt „missachtet“, ob der letzte/erste Titel gespielt wird und es wird an das jeweilige andere Ende der Playlist gesprungen.

Testet das bitte mal, ob das so passt.

1 „Gefällt mir“

Das passt ganz hervorragend, Vielen Dank für den Fix!