Как программно переключить аудиовыход в Android 10 или выше?

У меня есть приложение для Android, в котором я хочу настроить вывод мультимедиа на определенное устройство, в моем случае на внутренние динамики телефона, при подключении к устройству Bluetooth. Для ясности я не хочу, чтобы только мое приложение воспроизводило определенный вывод. Я хочу, чтобы системный медиа-выход изменился.

Да, я видел: как программно переключить аудиовыход в Android 10? . Но использование этого метода не работает.

Я пытаюсь использовать аудиоменеджер для установки внутреннего динамика для мультимедиа:

AudioManager am = (AudioManager)GetSystemService(AudioService);
am.Mode = Mode.Normal;
am.StopBluetoothSco();
am.BluetoothScoOn = false;
am.SpeakerphoneOn = true;

В манифесте я также поставил

Когда код запускается, что подтверждается журналом в Visual Studio, он просто не работает. На панели мультимедиа мое устройство Bluetooth по-прежнему выбрано. Я также проверил, может ли он перенаправлять звук, не показывая его, но он просто воспроизводился на устройстве Bluetooth.

Я что-то не так делаю или такое вообще возможно? Или я должен использовать что-то совершенно другое?

Если полезно, мое устройство — Samsung A41 с Android 11. Использование Visual Studio Xamarin Android.


person P. Hermens    schedule 18.05.2021    source источник