Wie es der Zufall so will bin ich gerade dabei für meine zwei Kids (4 & 6 Jahre) nach 3 Jahren neue Boxen für Weihnachten zu bauen und versuche mich gerade eben auch an der neuen TNG Software Version.
Bisher lief das bei der alten Version bei uns (3 Buttons) immer über „Zurückspulen“ mittels gedrückt halten vom Leiser / Zurück Button.
Das ist für die Kids das gewohnte und wäre unser Favorit als Lösung.
Spricht etwas dagegen das so umzusetzen?
Ich bin gerade dabei das zu testen und würde ggf. noch einen extra Thread für meine Probleme mit den neuen Boxen machen .
Für mich habe ich aktuell folgende Anpassungen vorgenommen:
downLongRepeat im ThreeButton Mode auf command:previous geändert:
#else // Three Button
/* up, */ ,{ command::next , command::bright_up , command::next , command::volume_up }
/* upLong, */ ,{ command::next10 , command::shortcut2 , command::volume_up , command::next }
/* upLongRepeat, */ ,{ command::none , command::none , command::volume_up , command::next }
/* down, */ ,{ command::previous , command::bright_down, command::previous , command::volume_down }
/* downLong, */ ,{ command::previous10, command::shortcut3 , command::volume_down, command::previous }
/* downLongRepeat, */ ,{ command::none , command::none , command::volume_down, command::previous }
/* updownLong, */ ,{ command::none , command::shortcut1 , command::none , command::none }
Den LongPressRepeat timeout auf 750ms erhöht:
inline constexpr uint32_t buttonLongPressRepeat = 750; // timeout for long press button repeat in ms
und im previousTrack war mir die Bedinung mit mp3.getCurrentTrack() > numTracksInFolder unklar und ich habe das zu > 1 angepasst:
void Tonuino::previousTrack(uint8_t tracks) {
LOG(play_log, s_info, F("previousTrack"));
if (activeModifier->handlePrevious())
return;
if (mp3.isPlayingFolder() && (myFolder->mode == pmode_t::hoerbuch || myFolder->mode == pmode_t::hoerbuch_1)) {
const uint8_t trackToSave = (mp3.getCurrentTrack() > 1) ? mp3.getCurrentTrack()-1 : 1;
settings.writeFolderSettingToFlash(myFolder->folder, trackToSave);
}
mp3.playPrevious(tracks);
}
Außerdem noch im mp3 kein Stop der Wiedergabe bei erreichen des ersten Tracks:
void Mp3::playPrevious(uint8_t tracks) {
if (playing == play_folder && (current_track > 0 || endless)) {
int current_track_tmp = static_cast<int>(current_track) - tracks;
current_track = endless ? (current_track_tmp%q.size()+q.size()) % q.size() : max(current_track_tmp, 0);
LOG(mp3_log, s_debug, F("playPrevious: "), current_track);
playCurrent();
}
else if(playing == play_folder && current_track == 0) {
}else {
LOG(mp3_log, s_debug, F("playPrevious: stop"));
clearAllQueue();
playing = play_none;
}
}
Ich bin aber erst noch am Einarbeiten in die neue Code-Basis…
Aber großes Lob für die tolle aktive Weiterentwicklung!