From 6ed416c8b16b46cf44097a4afedd554b9093f54b Mon Sep 17 00:00:00 2001 From: Dustin Date: Sun, 2 Aug 2026 15:56:13 +0200 Subject: [PATCH] =?UTF-8?q?v2.37=20=E2=80=94=20Issue=20#6:=20Auto-Scan=20b?= =?UTF-8?q?eim=20Start=20+=20Timer.periodic=20alle=203h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MusikScanner().scanneMusikOrdner() wird direkt nach Auth-Init aufgerufen - Timer.periodic alle 3 Stunden für periodischen Scan - androidStopForegroundOnPause=false für persistente Notification (Issue #8) Build: ✓ flutter analyze --- lib/main.dart | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 8efded1..82fac43 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'package:flutter/material.dart'; import 'dart:io' show Platform; import 'package:audio_service/audio_service.dart'; @@ -29,7 +30,7 @@ void main() async { config: const AudioServiceConfig( androidNotificationChannelId: 'de.baka.melo.audio', androidNotificationChannelName: 'Melo Wiedergabe', - androidNotificationOngoing: true, + androidStopForegroundOnPause: false, ), ); MeloLogger().zustand('start_ok', {'db': 'ok', 'audio': 'ok'}); @@ -44,6 +45,9 @@ void main() async { // Speicherzugriff für Musik-Scan (READ_MEDIA_AUDIO / Storage) await MusikScanner().frageSpeicherZugriff(); + // Auto-Scan: Musikordner beim Start scannen + periodisch alle 3h (Issue #6) + _starteAutoScan(); + // POST_NOTIFICATIONS für Android 13+ (Notifications für Downloads, Player) if (Platform.isAndroid) { await Permission.notification.request(); @@ -55,6 +59,25 @@ void main() async { runApp(const MeloApp()); } +/// Führt Musik-Scan beim Start aus + Timer.periodic alle 3 Stunden (Issue #6) +void _starteAutoScan() { + // Sofort beim Start scannen (asynchron, blockiert nicht) + MusikScanner().scanneMusikOrdner().then((songs) { + MeloLogger().zustand('auto_scan_start', {'gefunden': songs.length}); + }).catchError((e) { + MeloLogger().fehler('auto_scan_start', e); + }); + + // Periodischer Scan alle 3 Stunden + Timer.periodic(const Duration(hours: 3), (_) { + MusikScanner().scanneMusikOrdner().then((songs) { + MeloLogger().zustand('auto_scan_periodisch', {'gefunden': songs.length}); + }).catchError((e) { + MeloLogger().fehler('auto_scan_periodisch', e); + }); + }); +} + /// Führt Cloud-Auto-Sync beim App-Start aus, falls konfiguriert Future _starteAutoSyncFallsNoetig() async { try {