Read headset state from audio manager instead of calculating ourselves.
Bug: 24067587
Change-Id: I94ff59bdf8a8440ead52cda29b378b3fccfca619
diff --git a/src/com/android/server/telecom/WiredHeadsetManager.java b/src/com/android/server/telecom/WiredHeadsetManager.java
index a61dd6e..ef5f38c 100644
--- a/src/com/android/server/telecom/WiredHeadsetManager.java
+++ b/src/com/android/server/telecom/WiredHeadsetManager.java
@@ -39,7 +39,7 @@
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
- boolean isPluggedIn = intent.getIntExtra("state", 0) == 1;
+ boolean isPluggedIn = mAudioManager.isWiredHeadsetOn();
Log.v(WiredHeadsetManager.this, "ACTION_HEADSET_PLUG event, plugged in: %b",
isPluggedIn);
onHeadsetPluggedInChanged(isPluggedIn);
@@ -48,6 +48,7 @@
}
private final WiredHeadsetBroadcastReceiver mReceiver;
+ private final AudioManager mAudioManager;
private boolean mIsPluggedIn;
/**
* ConcurrentHashMap constructor params: 8 is initial table size, 0.9f is
@@ -60,8 +61,8 @@
WiredHeadsetManager(Context context) {
mReceiver = new WiredHeadsetBroadcastReceiver();
- AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
- mIsPluggedIn = audioManager.isWiredHeadsetOn();
+ mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+ mIsPluggedIn = mAudioManager.isWiredHeadsetOn();
// Register for misc other intent broadcasts.
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);