Как отключить звук в гарнитуре, но позволить программно воспроизводить его на динамике?

Я ищу обходной путь для моей проблемы, указанной в этом вопросе:

Как программно отключить проводную гарнитуру в Java

Как уже упоминалось, я слышу звук как в динамиках, так и в наушниках.

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

2 ответа

Решение
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_CALL);
am.setSpeakerphoneOn(true);

А затем воспроизвести звук через AudioManager.STREAM_SYSTEM поток.

Когда закончится воспроизведение звука, обязательно верните аудио менеджер в его прежнее состояние, иначе он останется на громкоговорителе!

AudioManager mAudioMgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE); mAudioMgr.setSpeakerphoneOn(истина); mAudioMgr.setMode(AudioManager.MODE_IN_COMMUNICATION);

Другие вопросы по тегам