Merge cherrypicks of [9944209, 9945150, 9944755, 9944211, 9945366, 9945879, 9945880, 9945881, 9944212, 9944757, 9945882] into qt-qpr1-c-release

Change-Id: I4ee8b75815c7fbf1fc52936b18747bd83e0a302d
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();
             }
         }
     };