Merge cherrypicks of [9944753, 9944208, 9945193, 9945194, 9944754, 9944210, 9945365, 9945195, 9945196, 9945197, 9944756, 9945878] into qt-qpr1-release

Change-Id: Id85ca108b893cbb5af1b2d3cbbd83edff2d4c8fb
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index dcf1b27..44a3384 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -1275,16 +1275,20 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             Log.startSession("CARSM.mCR");
-            if (AudioManager.ACTION_MICROPHONE_MUTE_CHANGED.equals(intent.getAction())) {
-                if (mCallsManager.hasEmergencyCall()) {
-                    Log.i(this, "Mute was externally changed when there's an emergency call. " +
-                            "Forcing mute back off.");
-                    sendInternalMessage(MUTE_OFF);
+            try {
+                if (AudioManager.ACTION_MICROPHONE_MUTE_CHANGED.equals(intent.getAction())) {
+                    if (mCallsManager.hasEmergencyCall()) {
+                        Log.i(this, "Mute was externally changed when there's an emergency call. " +
+                                "Forcing mute back off.");
+                        sendInternalMessage(MUTE_OFF);
+                    } else {
+                        sendInternalMessage(MUTE_EXTERNALLY_CHANGED);
+                    }
                 } else {
-                    sendInternalMessage(MUTE_EXTERNALLY_CHANGED);
+                    Log.w(this, "Received non-mute-change intent");
                 }
-            } else {
-                Log.w(this, "Received non-mute-change intent");
+            } finally {
+                Log.endSession();
             }
         }
     };