检查耳机是否已插入

问题描述 投票:18回答:4

我似乎无法找到一种方法来了解Android是否插入了耳机。我发现了各种解决方案,但它们似乎总是返回假。唯一似乎正常工作的是BroadcastReceiver,但这不是我需要的:

我只需要这样的东西

if(headphones plugged in) {
}

有这样的功能吗?它需要一些特殊权限吗?

android audio headphones
4个回答
34
投票

您可以使用此代码检查耳机是否已插入

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

(不要担心弃用,它仍可用于仅检查耳机是否已插入。)

你需要<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

适用于Android 2.0 +


8
投票

使用此代码......

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

4
投票

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

0
投票

使用Google Awareness API

它提供了语境感,非常丰富。

© www.soinside.com 2019 - 2024. All rights reserved.