согласно документации, метод setCommunicationDevice должен заменить устаревший метод setSpeakerphoneOn из API 34 и выше. однако, что бы я ни пытался, я не могу программно переключить вывод звука (музыки) на другие устройства. также отмечается, что setCommunicationDevice
следует использовать для случаев использования связи, например голосовых или видеозвонков.
Итак, стоит ли мне переключать аудиовыход для музыки? Я занимаюсь этим уже несколько дней, а в документах не хватает информации, я чувствую себя тупым.
также нашел этот вопрос, который тоже задает тот же вопрос, но нет ответов (и пример там есть тоже не работает).
Итак, моя текущая цель: предполагая, что музыка воспроизводится с подключенного устройства Bluetooth, изменить вывод на локальный встроенный динамик, когда пользователь нажимает кнопку.
Код: Выделить всё
Button(
onClick = {
// failed attempts
}
) {
Text("Set Phone speaker")
}
Код: Выделить всё
val speakerDevice =
audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
.find { it.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER }
if (speakerDevice != null) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
val result = audioManager.setCommunicationDevice(speakerDevice)
if (!result) {
// result=true is true but the switch never occurs
}
}
}
Код: Выделить всё
audioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_SPEAKER, AudioManager.ROUTE_ALL);
fail 3 — setSpeakerphoneOn
взято отсюда:
Код: Выделить всё
audioManager.mode = AudioManager.MODE_NORMAL;
audioManager.stopBluetoothSco();
audioManager.setBluetoothScoOn(false);
audioManager.setSpeakerphoneOn(true);
Снова пробую телефон Google Pixel 7 с Android 13.
Итак, как я могу переключить устройство вывода звука в масштабе всей системы на любой (обычный) аудиовыход с устройства?
Подробнее здесь: https://stackoverflow.com/questions/772 ... android-13
Мобильная версия