ヘッドフォンが接続されているかどうかをAndroidで知る方法が見つからないようです。さまざまな解決策を見つけましたが、常にfalseを返すようです。適切に動作しているように見えるのは だけですがBroadcastReceiver
、それは私が必要としているものではありません:
私はちょうどこのようなものが必要です
if(headphones plugged in) {
}
そのような機能はありますか?特別な権限が必要ですか?
ヘッドフォンが接続されているかどうかをAndroidで知る方法が見つからないようです。さまざまな解決策を見つけましたが、常にfalseを返すようです。適切に動作しているように見えるのは だけですがBroadcastReceiver
、それは私が必要としているものではありません:
私はちょうどこのようなものが必要です
if(headphones plugged in) {
}
そのような機能はありますか?特別な権限が必要ですか?
このコードを使用して、ヘッドセットが接続されているかどうかを確認できます
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.isWiredHeadsetOn();
(非推奨であることを心配する必要はありません。ヘッドセットが接続されているかどうかを確認するためだけに使用できます。)
そして、あなたは必要です
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Android 2.0 以降で利用可能
AudioManager.isWiredHeadsetOn() は非推奨です。したがって、代わりに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;
}
このコードを使用...
AudioManager am1 = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
Log.i("WiredHeadsetOn = ", am1.isWiredHeadsetOn()+"");
Log.i("MusicActive = ", am1.isMusicActive()+"");
Log.i("SpeakerphoneOn = ", am1.isSpeakerphoneOn()+"");