Проверьте, подключены ли наушники
Я не могу найти способ узнать об андроиде, если подключены наушники. Я нашел различные решения, но они всегда возвращают false.
Единственное, что работает нормально, это BroadcastReceiver
, но это не то, что мне нужно:
Мне просто нужно что-то вроде этого
if(headphones plugged in) {
}
Есть ли такая функция? Требуются ли какие-либо специальные разрешения?
Ответы
Ответ 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;
}