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 {