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:
2026-08-20 18:35:06 +02:00
co-authored by Claude Opus 5
parent 7aa98864aa
commit 1325badf90
13 changed files with 1020 additions and 1 deletions
+85
View File
@@ -0,0 +1,85 @@
import 'package:audio_session/audio_session.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:melo/player/headphone_autoplay.dart';
void main() {
group('shouldAutoPlay', () {
test('startet bei verbundenem Bluetooth-Kopfhörer', () {
expect(
shouldAutoPlay(
added: {AudioDeviceType.bluetoothA2dp},
enabled: true,
hasQueue: true,
playing: false,
),
isTrue,
);
});
test('startet auch bei Klinken-Kopfhörern', () {
for (final type in [
AudioDeviceType.wiredHeadset,
AudioDeviceType.wiredHeadphones,
]) {
expect(
shouldAutoPlay(
added: {type},
enabled: true,
hasQueue: true,
playing: false,
),
isTrue,
reason: '$type',
);
}
});
test('ignoriert andere Geräte wie den eingebauten Lautsprecher', () {
expect(
shouldAutoPlay(
added: {AudioDeviceType.builtInSpeaker},
enabled: true,
hasQueue: true,
playing: false,
),
isFalse,
);
});
test('startet nicht, wenn die Einstellung aus ist', () {
expect(
shouldAutoPlay(
added: {AudioDeviceType.bluetoothA2dp},
enabled: false,
hasQueue: true,
playing: false,
),
isFalse,
);
});
test('startet nicht ohne Warteschlange', () {
expect(
shouldAutoPlay(
added: {AudioDeviceType.bluetoothA2dp},
enabled: true,
hasQueue: false,
playing: false,
),
isFalse,
);
});
test('unterbricht nicht die bereits laufende Wiedergabe', () {
expect(
shouldAutoPlay(
added: {AudioDeviceType.bluetoothA2dp},
enabled: true,
hasQueue: true,
playing: true,
),
isFalse,
);
});
});
}