Как заставить звуковой файл воспроизводиться только в наушниках в Android

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

audioManager.setMode(AudioManager.STREAM_MUSIC);
                    if(mPrefs.getBoolean("flow_recording", false)){
                        audioManager.setWiredHeadsetOn(true);
                        audioManager.setSpeakerphoneOn(false);
                    }
                    else{
                        audioManager.setWiredHeadsetOn(false);
                        audioManager.setSpeakerphoneOn(true);
                    }
                    mPlayer.start();

но он все еще воспроизводит звук через динамики, когда я отключаю наушники.

Пожалуйста, помогите мне достичь этого.


person Himanshu Rathore    schedule 27.08.2015    source источник
comment
вы подключаете наушники после воспроизведения аудио?   -  person Murtaza Khursheed Hussain    schedule 27.08.2015
comment
нет, я играю с наушниками и без. В обоих случаях он играет, но я хочу, чтобы он играл только в наушниках.   -  person Himanshu Rathore    schedule 27.08.2015
comment
Вы должны проверить, подключены ли наушники или нет. Воспроизведение звука, если наушники подключены. См. здесь, stackoverflow.com/questions/16395054/   -  person Jibяaᴎ Khaᴎ    schedule 27.08.2015
comment
Это означает, что вы не хотите играть, если наушники не подключены?   -  person Murtaza Khursheed Hussain    schedule 27.08.2015
comment
@MurtazaKhursheedHussain Да, я хочу, чтобы он воспроизводился только с наушниками, когда условие mPrefs.getBoolean(flow_recording, false) истинно.   -  person Himanshu Rathore    schedule 27.08.2015
comment
откуда mPrefs.getBoolean("flow_recording", false) берется этот преф? Вы сами его устанавливаете? если да на каком основании?   -  person Murtaza Khursheed Hussain    schedule 27.08.2015


Ответы (1)


Хорошо, я решил эту проблему с помощью этой ссылки

Ниже мой рабочий код: -

audioManager.setMode(AudioManager.STREAM_MUSIC);
            if(mPrefs.getBoolean("flow_recording", false)){
                /*audioManager.setWiredHeadsetOn(true);
                audioManager.setSpeakerphoneOn(false);*/
                if(audioManager.isWiredHeadsetOn() && mPlayer != null){
                    Log.e("HeadPhone", "Playing via headphone");
                    mPlayer.start();
                }
            }
            else{
                if(audioManager.isSpeakerphoneOn() && mPlayer != null){
                    Log.e("Speaker", "Playing via speaker");
                    mPlayer.start();
                }
                /*audioManager.setWiredHeadsetOn(false);
                audioManager.setSpeakerphoneOn(true);*/
            }
person Himanshu Rathore    schedule 27.08.2015