web-dev-qa-db-ja.com

ヘッドフォンが接続されているかどうかを確認します

Androidで知る方法を見つけることができないようです。さまざまな解決策を見つけましたが、常にfalseを返しているようです。正しく動作しているように見えるのは、 BroadcastReceiver、しかしそれは私が必要とするものではありません:

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

if(headphones plugged in) {
}

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

22
dosse91214

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

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

(廃止予定については心配しないでください[〜#〜] only [〜#〜]ヘッドセットが接続されているかどうかの確認にはまだ使用できます。)

そして、あなたは<uses-permission Android:name="Android.permission.MODIFY_AUDIO_SETTINGS" />

Android 2.0 +

37
Naskov

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;
    }
9
valerybodak

このコードを使用...

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

Google Awareness API を使用します

文脈的な感覚を提供することで非常に豊富です。

0