Android AudioManager.setSpeakerphoneOn перестает работать после сна

Поэтому я пытаюсь использовать некоторый код, найденный здесь, в переполнении стека, чтобы направить звук с гарнитуры на динамики.

Что я сейчас делаю:

AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.STREAM_MUSIC);
am.setSpeakerphoneOn(true);
sleep(15000);

Что происходит, так это то, что звук направляется во время «сна», однако он возвращается в гарнитуру через 15 секунд. Если я выполню это без сна, звук очень быстро пойдет в динамик и обратно в гарнитуру.

После этого звонка моя программа умирает. Я хотел бы, чтобы это сохранялось в системе, так как приложение Переключение гарнитуры делает


person GuiFGDeo    schedule 28.09.2015    source источник
comment
Пробовал использовать AudioManager.MODE_IN_CALL, но получил те же результаты.   -  person GuiFGDeo    schedule 28.09.2015


Ответы (1)


Я не мог понять, почему мой метод не работает, но нашел обходной путь.

Что я делаю в данный момент:

Class audioSystemClass = Class.forName("android.media.AudioSystem");
Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class);
// First 1 == FOR_MEDIA, second 1 == FORCE_SPEAKER. To go back to the default
// behavior, use FORCE_NONE (0).
setForceUse.invoke(null, 1, 1);

Спасибо Майклу за эту запись.

person GuiFGDeo    schedule 29.09.2015