Как отключить звук в гарнитуре, но позволить программно воспроизводить его на динамике?
Я ищу обходной путь для моей проблемы, указанной в этом вопросе:
Как программно отключить проводную гарнитуру в 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);