dos*_*214 22 audio android headphones
我似乎无法找到一种方法来了解Android是否插入了耳机.我发现了各种解决方案,但它们似乎总是返回假.唯一似乎正常工作的是a BroadcastReceiver,但这不是我需要的:
我只需要这样的东西
if(headphones plugged in) {
}
Run Code Online (Sandbox Code Playgroud)
有这样的功能吗?它需要一些特殊权限吗?
Nas*_*kov 37
您可以使用此代码检查耳机是否已插入
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.isWiredHeadsetOn();
Run Code Online (Sandbox Code Playgroud)
(不要担心弃用,它仍可用于仅检查耳机是否已插入.)
你需要
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
适用于Android 2.0 +
使用此代码......
AudioManager am1 = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
Log.i("WiredHeadsetOn = ", am1.isWiredHeadsetOn()+"");
Log.i("MusicActive = ", am1.isMusicActive()+"");
Log.i("SpeakerphoneOn = ", am1.isSpeakerphoneOn()+"");
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18394 次 |
| 最近记录: |