Проверьте, подключены ли наушники - программирование

Проверьте, подключены ли наушники

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

Мне просто нужно что-то вроде этого

if(headphones plugged in) {
}

Есть ли такая функция? Требуются ли какие-либо специальные разрешения?

4b9b3361

Ответ 1

Вы можете использовать этот код для проверки подключения минигарнитуры в

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.isWiredHeadsetOn();

(Не беспокойтесь об устаревании, он по-прежнему используется для ТОЛЬКО проверки, подключена ли гарнитура.)

И вам нужно <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

Доступно в Android 2.0 +

Ответ 2

Используйте этот код...

AudioManager am1 = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
Log.i("WiredHeadsetOn = ", am1.isWiredHeadsetOn()+"");
Log.i("MusicActive = ", am1.isMusicActive()+"");
Log.i("SpeakerphoneOn = ", am1.isSpeakerphoneOn()+"");

Ответ 3

Использование Google Awareness API

Он очень богат в предоставлении контекстуального чувства.

Ответ 4

AudioManager.isWiredHeadsetOn() DEPRECATED. Таким образом, вместо этого вы должны использовать AudioManager.getDevices():

private boolean isHeadphonesPlugged(){
        AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
        AudioDeviceInfo[] audioDevices = audioManager.getDevices(AudioManager.GET_DEVICES_ALL);
        for(AudioDeviceInfo deviceInfo : audioDevices){
            if(deviceInfo.getType()==AudioDeviceInfo.TYPE_WIRED_HEADPHONES
                    || deviceInfo.getType()==AudioDeviceInfo.TYPE_WIRED_HEADSET){
                return true;
            }
        }
        return false;
    }