Equalizer (nativ), Dolby-Atmos-Zugang und Auto-Wiedergabe bei Kopfhoerern
- Native Bruecke AudioEffectsBridge.kt: Equalizer + BassBoost + Virtualizer auf der Audio-Session des Players, inkl. System-Klangeffekt-Panel - Dart-Seite AudioEffects: Presets, Baender, Bass/Immersiv, persistiert - EqualizerScreen nach Vorlage inkl. Drehregler (CustomPainter) - Auto-Wiedergabe bei verbundenen Kopfhoerern (Klinke + Bluetooth) - MODIFY_AUDIO_SETTINGS im Manifest - Einstellungen: neuer Bereich "Ton" Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011snPXPafPC5i87o68H14W7
This commit is contained in:
@@ -10,6 +10,7 @@ import 'library/library_service.dart';
|
||||
import 'library/my_music_screen.dart';
|
||||
import 'library/playlist_service.dart';
|
||||
import 'library/search_screen.dart';
|
||||
import 'player/audio_effects.dart';
|
||||
import 'player/audio_handler.dart';
|
||||
import 'player/mini_player.dart';
|
||||
import 'services/logger_service.dart';
|
||||
@@ -24,6 +25,7 @@ late final PlaylistService _playlists;
|
||||
late final OfflineMode _offlineMode;
|
||||
late final CategoryService _categories;
|
||||
late final AppSettings _settings;
|
||||
late final AudioEffects _effects;
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -45,6 +47,18 @@ Future<void> main() async {
|
||||
androidShowNotificationBadge: true,
|
||||
),
|
||||
);
|
||||
_effects = AudioEffects();
|
||||
await _effects.init();
|
||||
// Die Audio-Session steht erst beim Abspielen fest und kann wechseln —
|
||||
// die Klangeffekte müssen dann neu daran gehängt werden.
|
||||
_handler.androidAudioSessionIdStream.listen((id) {
|
||||
if (id != null) _effects.attach(id);
|
||||
});
|
||||
_handler.autoPlayOnHeadphones = _settings.autoPlayOnHeadphones;
|
||||
_settings.addListener(
|
||||
() => _handler.autoPlayOnHeadphones = _settings.autoPlayOnHeadphones,
|
||||
);
|
||||
|
||||
runApp(const MeloApp());
|
||||
}
|
||||
|
||||
@@ -62,6 +76,7 @@ class MeloApp extends StatelessWidget {
|
||||
ChangeNotifierProvider<OfflineMode>.value(value: _offlineMode),
|
||||
ChangeNotifierProvider<CategoryService>.value(value: _categories),
|
||||
ChangeNotifierProvider<AppSettings>.value(value: _settings),
|
||||
ChangeNotifierProvider<AudioEffects>.value(value: _effects),
|
||||
],
|
||||
child: MaterialApp(
|
||||
title: 'Melo',
|
||||
|
||||
Reference in New Issue
Block a user