Аудиоменеджер Динамик не работает

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

final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(true);

Я попытался проверить после setSpeakerphoneOn() аудиоменеджера и получить, что динамик все еще не включен, задав isSpeakerphoneOn()

audioManager.isSpeakerphoneOn();

В моем журнале я вижу некоторые ошибки, которые я не могу понять:

E/AudioManager: Don't setBluetoothScoOn-PackageName: com.myapp.app  on = false
E/AudioManager: Don't setSpeakerphoneOn-PackageName: com.myapp.app  on = true

На форуме ничего про эту ошибку не нашел.

Не работает на устройствах: ZTE Z981, Huawei p9, я уже пробовал это и android.permission.MODIFY_AUDIO_SETTINGS предоставляется.


person motis10    schedule 04.04.2017    source источник


Ответы (4)


Привет, прочитай статью разработчика Android

https://developer.android.com/reference/android/media/AudioManager.html

объясни это ясно

вам нужно установить разрешение: MODIFY_AUDIO_SETTINGS в манифесте

добавить эту строку в манифест

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
person Mohammad Hossein jfp    schedule 05.04.2017
comment
Требуется разрешение: MODIFY_AUDIO_SETTINGS. - person Mohammad Hossein jfp; 05.04.2017
comment
Я читаю. У меня уже есть это разрешение. Он уже работает на всех устройствах, кроме ZTE. - person motis10; 05.04.2017
comment
Эта константа устарела на уровне API 5. Не устанавливайте маршрутизацию звука напрямую, вместо этого используйте методы setSpeakerphoneOn(), setBluetoothScoOn(). - person Mohammad Hossein jfp; 05.04.2017
comment
возможно это баг в ZTE - person Mohammad Hossein jfp; 05.04.2017
comment
Спасибо! Некоторое время пытался включить громкую связь, и это решило проблему. - person Jaswant Singh; 11.12.2020


1.setSpeakerphoneOn() работает только над setMode(AudioManager.MDOE_IN_CALL);

person zhengcheng wang    schedule 29.11.2017

Единственное, что сработало для меня, это установка

audioManager.setMode(AudioManager.MODE_RINGTONE | AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);

Без AudioManager.MODE_RINGTONE не работает..

Благодаря этому сообщению

person PaBo    schedule 10.03.2021
comment
Какое у вас устройство и версия ОС? Для меня это не работает на Galaxy S20, Android 11 - person DzungPV; 26.03.2021