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:
@@ -9,7 +9,9 @@ import '../services/cache_manager.dart';
|
||||
import '../services/logger_service.dart';
|
||||
import '../services/navidrome_service.dart';
|
||||
import '../services/offline_mode.dart';
|
||||
import '../player/audio_effects.dart';
|
||||
import 'app_settings.dart';
|
||||
import 'equalizer_screen.dart';
|
||||
import 'library_stats.dart';
|
||||
|
||||
/// Settings-Tab: Bibliotheks-Statistik, Berechtigungen, Navidrome, Über Melo.
|
||||
@@ -37,6 +39,21 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
if (mounted) setState(() => _cacheSize = size);
|
||||
}
|
||||
|
||||
/// Öffnet die Klangeffekt-Oberfläche des Systems (auf POCO/Xiaomi ist das
|
||||
/// Dolby Atmos). Nicht jedes Gerät bietet sie an.
|
||||
Future<void> _oeffneSystemKlangeffekte(BuildContext context) async {
|
||||
final effects = context.read<AudioEffects>();
|
||||
final messenger = ScaffoldMessenger.of(context);
|
||||
final geoeffnet = await effects.openSystemPanel();
|
||||
if (!geoeffnet) {
|
||||
messenger.showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('Dieses Gerät bietet keine System-Klangeffekte an'),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final db = context.read<MeloDb>();
|
||||
@@ -89,6 +106,34 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
},
|
||||
),
|
||||
const Divider(height: 1),
|
||||
const _SectionLabel('Ton'),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.graphic_eq),
|
||||
title: const Text('Equalizer'),
|
||||
subtitle: const Text('Klangprofile, Bass und Immersives Audio'),
|
||||
trailing: const Icon(Icons.chevron_right),
|
||||
onTap: () => Navigator.of(context).push(
|
||||
MaterialPageRoute(builder: (_) => const EqualizerScreen()),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.surround_sound),
|
||||
title: const Text('Dolby Atmos'),
|
||||
subtitle: const Text('Klangeffekte des Systems öffnen'),
|
||||
trailing: const Icon(Icons.open_in_new),
|
||||
onTap: () => _oeffneSystemKlangeffekte(context),
|
||||
),
|
||||
Consumer<AppSettings>(
|
||||
builder: (context, settings, _) => SwitchListTile(
|
||||
secondary: const Icon(Icons.headset),
|
||||
title: const Text('Automatische Wiedergabe'),
|
||||
subtitle: const Text(
|
||||
'Startet, sobald Kopfhörer verbunden werden (auch Bluetooth)'),
|
||||
value: settings.autoPlayOnHeadphones,
|
||||
onChanged: settings.setAutoPlayOnHeadphones,
|
||||
),
|
||||
),
|
||||
const Divider(height: 1),
|
||||
const _SectionLabel('Darstellung'),
|
||||
Consumer<AppSettings>(
|
||||
builder: (context, settings, _) => SwitchListTile(
|
||||
|
||||
Reference in New Issue
Block a user