Kosmetik: Windows Volume Mixer Einträge anpassen
Context
Die AudioPlaybackConnection API erstellt bei Start() zwei virtuelle Audio-Endpoints in Windows:
- Render-Endpoint (Phantom-Eintrag mit EasyBluetoothAudio-Logo) — macht nichts im Mixer
- Capture-Endpoint (Mikrofon-Icon) — steuert tatsächlich die BT-Audio-Lautstärke
Ziel: Den Mikrofon-Eintrag mit dem App-Icon ersetzen und den Phantom-Eintrag entfernen/verstecken.
Ansatz: IAudioSessionControl COM Interop
Nach erfolgreichem ConnectBluetoothAudioAsync einmalig die Audio-Sessions des eigenen Prozesses enumerieren und anpassen:
IAudioSessionManager2 vom Audio-Endpoint holen
GetSessionEnumerator() → alle Sessions des Prozesses durchgehen
- Für jede Session via
IAudioSessionControl:
SetIconPath() → App-Icon setzen (z.B. Assets/Logo.ico als absoluter Pfad)
SetDisplayName() → "Easy Bluetooth Audio" setzen
- Phantom-Session identifizieren und ggf. via
SetGroupingParam() zusammenführen oder ausblenden
Risiken
- System-managed Endpoints: Windows könnte den Zugriff auf Sessions der
AudioPlaybackConnection verweigern
- COM Interop: Einmalig nach Connect (nicht gepollt), sollte keine Mixer-Seiteneffekte verursachen wie der alte Peak Meter
- Windows-Versionsabhängig: Verhalten könnte zwischen Windows 10/11 Builds variieren
Benötigte COM Interfaces
IAudioSessionManager2 (GUID: 77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F)
IAudioSessionEnumerator
IAudioSessionControl → SetIconPath(), SetDisplayName()
IMMDeviceEnumerator + IMMDevice (bereits bekannt aus altem Peak Meter Code)
Dateien
| Datei |
Änderung |
AudioService.cs |
Neue Methode ConfigureAudioSessionAppearance() + COM Interop |
IAudioService.cs |
Ggf. Interface erweitern |
Verifikation
- App starten → verbinden → Mixer prüfen: nur ein Eintrag mit EasyBluetoothAudio-Icon
- App beenden → Mixer prüfen: Eintrag weg (OnExit Dispose)
- Verschiedene Windows 11 Builds testen
Status
Geparkt — als separater Branch umsetzen, Experiment ob Windows die Session-Anpassung erlaubt.
Kosmetik: Windows Volume Mixer Einträge anpassen
Context
Die
AudioPlaybackConnectionAPI erstellt beiStart()zwei virtuelle Audio-Endpoints in Windows:Ziel: Den Mikrofon-Eintrag mit dem App-Icon ersetzen und den Phantom-Eintrag entfernen/verstecken.
Ansatz: IAudioSessionControl COM Interop
Nach erfolgreichem
ConnectBluetoothAudioAsynceinmalig die Audio-Sessions des eigenen Prozesses enumerieren und anpassen:IAudioSessionManager2vom Audio-Endpoint holenGetSessionEnumerator()→ alle Sessions des Prozesses durchgehenIAudioSessionControl:SetIconPath()→ App-Icon setzen (z.B.Assets/Logo.icoals absoluter Pfad)SetDisplayName()→ "Easy Bluetooth Audio" setzenSetGroupingParam()zusammenführen oder ausblendenRisiken
AudioPlaybackConnectionverweigernBenötigte COM Interfaces
IAudioSessionManager2(GUID:77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F)IAudioSessionEnumeratorIAudioSessionControl→SetIconPath(),SetDisplayName()IMMDeviceEnumerator+IMMDevice(bereits bekannt aus altem Peak Meter Code)Dateien
AudioService.csConfigureAudioSessionAppearance()+ COM InteropIAudioService.csVerifikation
Status
Geparkt — als separater Branch umsetzen, Experiment ob Windows die Session-Anpassung erlaubt.