26

ヘッドフォンが接続されているかどうかをAndroidで知る方法が見つからないようです。さまざまな解決策を見つけましたが、常にfalseを返すようです。適切に動作しているように見えるのは だけですがBroadcastReceiver、それは私が必要としているものではありません:

私はちょうどこのようなものが必要です

if(headphones plugged in) {
}

そのような機能はありますか?特別な権限が必要ですか?

4

4 に答える 4

40

このコードを使用して、ヘッドセットが接続されているかどうかを確認できます

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

(非推奨であることを心配する必要はありません。ヘッドセットが接続されているかどうかを確認するためだけに使用できます。)

そして、あなたは必要です <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

Android 2.0 以降で利用可能

于 2013-05-06T08:51:33.993 に答える
16

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;
    }
于 2018-01-19T11:43:52.747 に答える
9

このコードを使用...

AudioManager am1 = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
Log.i("WiredHeadsetOn = ", am1.isWiredHeadsetOn()+"");
Log.i("MusicActive = ", am1.isMusicActive()+"");
Log.i("SpeakerphoneOn = ", am1.isSpeakerphoneOn()+"");
于 2014-12-23T12:20:22.907 に答える