Bei einem großen Anbieter gibt es neuerdings DFPlayer mit JL Chip, die kein OnPlayFinished Callback senden. @DrChef hat dazu erste Anpassungen des TonUINO Codes vorgenommen, die den Busy Pin anstelle des Callbacks auswerten.
Es gab schon immer Probleme festzustellen, wann ein Track nun tatsächlich gestartet ist, um in der State Machine weiterzugehen oder die Behandlung von MissingOnPlayFinished zu aktivieren. Der Timer dfPlayer_timeUntilStarts dazu war sehr unzuverlässig bei langsamen Playern oder wenn die SD Karte voll war. Ich habe mir gedacht, dass man obige Idee einfach für alle Player nehmen kann. Dazu habe ich auch alle anderen Stellen im Code eliminiert, die mit dem Timeout dfPlayer_timeUntilStarts irgendwie gewartet haben.
Auf dem Branch issue_349 findet ihr die Implementation. Der Code ist mit folgenden Playern getestet:
- LKP Player
- JL Player
- GD3200B
- MH2024K24SS_MP3_TF_16P_V3_0
- YX5224SS
- JL PLayer ohne OnPlayFinished
Insgesamt muss ich sagen, dass der TonUINO damit flüssiger läuft. Insbesondere das Abspielen von Advertise Tracks ist jetzt stabil. Der eigentlich „buggy“ neue JL Player reagiert sogar am schnellsten von allen (vielleicht kein Wunder, er lässt ja auch einfach einiges weg).
Es wäre schön, wenn ihr die neue Implementation recht zahlreich testen könntet. Testet dabei auch die Adv. Tracks (z.B. Modifikationskarte).
Wenn irgendwas nicht richtig funktioniert, bitte ein Log posten mit der Beschreibung, was ihr genau gemacht habt. Auch Erfolgsmeldungen sind hier willkommen.
Viel Spaß!