Turn off mWasOnSpeaker if user explicitly leaves speakerphone

Bug: 28300938
Change-Id: Iab8663b97d236946183270c4d33e63d6de1c224a
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index 5234a82..af728c9 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -778,24 +778,30 @@
                 return HANDLED;
             }
             switch(msg.what) {
-                case SWITCH_EARPIECE:
                 case USER_SWITCH_EARPIECE:
+                    mWasOnSpeaker = false;
+                    // fall through
+                case SWITCH_EARPIECE:
                     if ((mAvailableRoutes & ROUTE_EARPIECE) != 0) {
                         transitionTo(mActiveEarpieceRoute);
                     } else {
                         Log.w(this, "Ignoring switch to earpiece command. Not available.");
                     }
                     return HANDLED;
-                case SWITCH_BLUETOOTH:
                 case USER_SWITCH_BLUETOOTH:
+                    mWasOnSpeaker = false;
+                    // fall through
+                case SWITCH_BLUETOOTH:
                     if ((mAvailableRoutes & ROUTE_BLUETOOTH) != 0) {
                         transitionTo(mActiveBluetoothRoute);
                     } else {
                         Log.w(this, "Ignoring switch to bluetooth command. Not available.");
                     }
                     return HANDLED;
-                case SWITCH_HEADSET:
                 case USER_SWITCH_HEADSET:
+                    mWasOnSpeaker = false;
+                    // fall through
+                case SWITCH_HEADSET:
                     if ((mAvailableRoutes & ROUTE_WIRED_HEADSET) != 0) {
                         transitionTo(mActiveHeadsetRoute);
                     } else {