Files
FreeTLab bccc5c48b8
Build & Deploy PluriWave / Análisis de código (push) Successful in 38s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m30s
docs(openspec): add SDD artifact trail for recent alarm and EQ changes
Persist the exploration, proposal, spec, design, tasks, and
verify/archive reports produced during the multi-device EQ,
alarm-countdown, and notification-visual-polish SDD cycles.
2026-07-04 12:42:11 +02:00

42 lines
1.6 KiB
Markdown

# Spec: Multi-Device Equalizer
## New Capability: audio-device-detection
### Purpose
Platform channel bridge that enumerates current audio output devices and streams change events to Dart. Enables the rest of the system to react to device connect/disconnect without polling.
### Requirements
#### Requirement: Device enumeration on demand
The system MUST expose a synchronous query that returns the list of currently connected audio output devices as a typed list of device IDs.
##### Scenario: enumerate at startup — Android
- GIVEN the feature toggle is enabled
- WHEN `ServicioDispositivoAudio.dispositivosActuales()` is called on Android
- THEN it MUST return a list where each entry has a stable `deviceId` string
- AND built-in speaker MUST appear as `"builtin_speaker"`
- AND BT A2DP devices MUST appear as `"bt_a2dp:<MAC>"`
- AND USB audio MUST appear as `"usb_headset:<address>"`
- AND wired headset MUST appear as `"wired_headset"`
##### Scenario: enumerate at startup — iOS
- GIVEN the feature toggle is enabled
- WHEN `ServicioDispositivoAudio.dispositivosActuales()` is called on iOS
- THEN it MUST return at least the active route output
- AND the `deviceId` MUST be stable within the session using `portType+uid`
- AND calling it again before a route change MUST return the same IDs
##### Scenario: enumerate when toggle is disabled
- GIVEN the feature toggle is disabled
- WHEN any method of `ServicioDispositivoAudio` is called
- THEN it MUST return an empty list and an empty stream without errors
---
(See Engram observation #2186 for complete spec with all 27 requirement scenarios)