Microfoon-doorvoer tijdens presenteren (live monitoring) #2158
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#2158
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gebruikersscenario
Ik sluit een Bluetooth-microfoon aan op mijn computer. Tijdens een presentatie wil ik in de instellingen van de presentatie kunnen kiezen dat de inkomende audio meteen ook als uitvoer wordt gebruikt — de laptop + aangesloten speakers/beamer werken dan als een kleine versterker voor mijn stem. In beeld zoiets als een microfoon-icoon dat je aanklikt.
Gewenst gedrag
Icons.mic/Icons.mic_off-knop in de bedieningsbalk (_buildPresenterControlsinlib/widgets/presentation/parts/presenter_overlays.dart), naast de bestaande knoppen (navigatie, overzicht, schermwissel). Tooltip, toetsenbordbereikbaar (commandopalet/sneltoets, bijv.M), en de toestand is altijd zichtbaar — een lopende doorvoer mag nooit stil aan staan.allowRemoteMedia): de eerste keer aanzetten vraagt de OS-microfoontoestemming; daarna is het één klik.Instelling
De vraag noemt "bij de instellingen van de presentatie". Kleinste eerlijke vorm: een schakelaar "Microfoon-doorvoer" in de cockpit én — als gewenst — een bewaarde voorkeur, zodat wie altijd met mic presenteert die niet per sessie hoeft aan te klikken. Waar die voorkeur woont is een ontwerpkeuze:
AppSettings(app-breed, naastallowRemoteMedia) past beter dan de deck-eigenschappen (PresentationInfoDialog), want dit is hardwaregedrag van de presentator, geen eigenschap van het deck — een deck dat iemand anders opent hoort niet stil zijn mic aan te zetten.Technische aanknopingspunten
pubspec.yaml.flutter_webrtcis er al wel (voorWebrtcMediaCoreinlib/meetings/):getUserMediakan de mic pakken, maar lokale monitoring (mic → eigen speakers) is met WebRTC niet triviaal — dat vraagt een loopback-peer of een andere route. Alternatieven om af te wegen:flutter_sound(full-duplex stream), een dunne platform channel (AVAudioEngine / WASAPI / PulseAudio doen dit in een paar regels), of op web WebAudio (MediaStreamSource → destination, triviaal via de al aanwezigeweb-dep). Kies de lichtste route die desktop dekt.NSMicrophoneUsageDescriptionontbreekt inmacos/Runner/Info.plist— zonder die key crasht de app bij mic-toegang, ook al staat de sandbox uit (Release.entitlements:app-sandbox = false). Toevoegen met een tekst die eerlijk zegt wat er gebeurt.echoCancellation/noiseSuppressionaan, en bij het aanzetten op luidspreker-uitvoer een hint tonen ("tip: koptelefoon of losse speaker voorkomt rondzingen"). Geen bevestigingsdialoog — een hint volstaat, de actie is met één klik terug te draaien.AudienceControlsBar): die is bewust kaal (#864/#607). De knop hoort in de privé-cockpit.WebrtcMediaCore, dat inuncoveredBaselinestaat). Zelfde patroon: een dunne seam-interface (MicMonitoroid) met de echte binding in de baseline, alle logica (toestand, foutpaden, gating) erachter en getest met een fake.Acceptatiecriteria
NSMicrophoneUsageDescriptionstaat in de macOS Info.plist; Windows/Linux vereisen geen manifest.Buiten scope
video_player).