Android 5.0+ AudioManager setMode не работает

81
7

Я работаю над AudioManager, который является Android SystemService.
с Android System 5.0+, я столкнулся с проблемой, с которой AudioManager метод setMode не работает.


i через тест,
Android M, Lollipop.. 5.0+ версия, AudioManager setMode не работает.
Пример:


public void initAudioImageIcon(boolean initLoad) {
boolean isAudioHeaderMode = IMSharedPreferences.getBooleanExtra(this, IMSPConstant.SP_NAME_MESSAGE,
IMSPConstant.SP_KEY_AUDIO_HEADER_MODE);

if (isAudioHeaderMode) {
mAudioHanderMode.setVisibility(View.VISIBLE);
// audioManager.setMode(AudioManager.MODE_IN_CALL) , but android system 5.0+ no any change, getMode() == AudioManager.MODE_NORMAL
setAudioMode(AudioManager.MODE_IN_CALL);
audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
if (!initLoad) {
showAudioModePrompt(this.getText(R.string.im_audio_in_call), 1000);
}
} else {
mAudioHanderMode.setVisibility(View.GONE);
setAudioMode(AudioManager.MODE_NORMAL);
if (!initLoad) {
showAudioModePrompt(this.getText(R.string.im_audio_in_speeker), 1000);
}
}
}


но Android 3.0 +, 4.0 + в порядке, только 5.0+.
поэтому, я не знаю, где происходят ошибки.

спросил(а) 2015-08-07T09:47:00+03:00 5 лет, 2 месяца назад
1
Решение
58

В android Lollipop setAudioMode(AudioManager.MODE_IN_CALL) ограничен. Он может использоваться только системным приложением с разрешением MODIFY_PHONE_STATE. Однако вы можете использовать MODE_IN_COMMUNICATION и MODE_NORMAL в обычных приложениях.

ответил(а) 2015-08-13T14:37:00+03:00 5 лет, 2 месяца назад
90

С аудиорежимом установлено значение:


setMode(AudioManager.MODE_IN_COMMUNICATION);
setSpeakerphoneOn(false);

в то время как мой аудиопоток настроен на STREAM_MUSIC, я могу легко направлять аудио на наушники. Я сам тестировал его в коде AOSP Lollipop.


Здесь в вопросе вы никогда не говорили о типе вашего потока. Установите поток в STREAM_MUSIC или STREAM_VOICE_CALL, и код тоже будет работать для вас.

ответил(а) 2015-08-20T12:20:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема