IMS: Notify about change of TTY mode of other call participants

Pass notification to Phone app

Bug: 18247323
Change-Id: I428f8df60ebada280c6aa16debf1ff44246533bd
diff --git a/src/java/com/android/ims/ImsCall.java b/src/java/com/android/ims/ImsCall.java
index 0a98d8e..ee8ec11 100755
--- a/src/java/com/android/ims/ImsCall.java
+++ b/src/java/com/android/ims/ImsCall.java
@@ -408,6 +408,16 @@
         public void onCallHandoverFailed(ImsCall imsCall, int srcAccessTech, int targetAccessTech,
             ImsReasonInfo reasonInfo) {
         }
+
+        /*
+         * Called when TTY mode of remote party changed
+         *
+         * @param call the call object that carries out the IMS call
+         * @param mode TTY mode of remote party
+         */
+        public void onCallSessionTtyModeReceived(ImsCall call, int mode) {
+            // no-op
+        }
     }
 
 
@@ -2949,29 +2959,17 @@
                         + ", mode=" + mode);
             }
 
-            int settingsTtyMode = Settings.Secure.getInt(
-                    mContext.getContentResolver(),
-                    Settings.Secure.PREFERRED_TTY_MODE,
-                    TelecomManager.TTY_MODE_OFF);
-            if (settingsTtyMode == TelecomManager.TTY_MODE_OFF) {
-                // Notify the user that TTY mode changed in the far device
-                int resId = 0;
-                switch (mode) {
-                    case TelecomManager.TTY_MODE_FULL:
-                        resId = com.android.internal.R.string.peerTtyModeFull;
-                        break;
-                    case TelecomManager.TTY_MODE_HCO:
-                        resId = com.android.internal.R.string.peerTtyModeHco;
-                        break;
-                    case TelecomManager.TTY_MODE_VCO:
-                        resId = com.android.internal.R.string.peerTtyModeVco;
-                        break;
-                    case TelecomManager.TTY_MODE_OFF:
-                        resId = com.android.internal.R.string.peerTtyModeOff;
-                        break;
-                }
-                if (resId != 0) {
-                    Toast.makeText(mContext, resId, Toast.LENGTH_SHORT).show();
+            ImsCall.Listener listener;
+
+            synchronized(ImsCall.this) {
+                listener = mListener;
+            }
+
+            if (listener != null) {
+                try {
+                    listener.onCallSessionTtyModeReceived(ImsCall.this, mode);
+                } catch (Throwable t) {
+                    loge("callSessionTtyModeReceived :: ", t);
                 }
             }
         }