diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index ed7b2c2..6c1c130 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -28,6 +28,7 @@
 import android.support.annotation.VisibleForTesting;
 import android.support.v4.os.UserManagerCompat;
 import android.telecom.Call.Details;
+import android.telecom.CallAudioState;
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
@@ -55,6 +56,7 @@
 import com.android.dialer.util.TouchPointManager;
 import com.android.incallui.InCallOrientationEventListener.ScreenOrientation;
 import com.android.incallui.answerproximitysensor.PseudoScreenState;
+import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.ExternalCallList;
@@ -83,7 +85,7 @@
  * presenters that want to listen in on the in-call state changes. TODO: This class has become more
  * of a state machine at this point. Consider renaming.
  */
-public class InCallPresenter implements CallList.Listener {
+public class InCallPresenter implements CallList.Listener, AudioModeProvider.AudioModeListener {
   private static final String PIXEL2017_SYSTEM_FEATURE =
       "com.google.android.feature.PIXEL_2017_EXPERIENCE";
   private static final String EXTRA_FIRST_TIME_SHOWN =
@@ -387,6 +389,8 @@
         .getSystemService(TelephonyManager.class)
         .listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
 
+    AudioModeProvider.getInstance().addListener(this);
+
     LogUtil.d("InCallPresenter.setUp", "Finished InCallPresenter.setUp");
     Trace.endSection();
   }
@@ -410,6 +414,7 @@
 
     attemptCleanup();
     VideoPauseController.getInstance().tearDown();
+    AudioModeProvider.getInstance().removeListener(this);
   }
 
   private void attemptFinishActivity() {
@@ -1720,6 +1725,13 @@
     }
   }
 
+  @Override
+  public void onAudioStateChanged(CallAudioState audioState) {
+    if (mStatusBarNotifier != null) {
+      mStatusBarNotifier.updateNotification();
+    }
+  }
+
   /** All the main states of InCallActivity. */
   public enum InCallState {
     // InCall Screen is off and there are no calls
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index bb3ef43..db416d8 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -94,7 +94,6 @@
 public class StatusBarNotifier
     implements InCallPresenter.InCallStateListener,
         EnrichedCallManager.StateChangedListener,
-        AudioModeProvider.AudioModeListener,
         ContactInfoCacheCallback {
 
   private static final int NOTIFICATION_ID = 1;
@@ -136,7 +135,6 @@
             new InCallTonePlayer(new ToneGeneratorFactory(), new PausableExecutorImpl()),
             CallList.getInstance());
     mCurrentNotification = NOTIFICATION_NONE;
-    AudioModeProvider.getInstance().addListener(this);
     Trace.endSection();
   }
 
@@ -1028,11 +1026,6 @@
   }
 
   @Override
-  public void onAudioStateChanged(CallAudioState audioState) {
-    updateNotification();
-  }
-
-  @Override
   @RequiresPermission(Manifest.permission.READ_PHONE_STATE)
   public void onContactInfoComplete(String callId, ContactCacheEntry entry) {
     DialerCall call = CallList.getInstance().getCallById(callId);
