IMS: start and stop dtmf tones.
Uma Maheswari Ramalingam [Sat, 6 Dec 2014 00:40:46 +0000 (16:40 -0800)]
Support of start and stop dtmf tones in Imsphone

Bug: 18371919
Change-Id: I04f5d6f88088e5b77d314d4db9271fd49abf5dca
CRs-Fixed: 751797

src/java/com/android/ims/ImsCall.java
src/java/com/android/ims/internal/ImsCallSession.java

index 48e923c..fd927d8 100644 (file)
@@ -1307,6 +1307,40 @@ public class ImsCall implements ICall {
     }
 
     /**
+     * Start a DTMF code. According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833</a>,
+     * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15,
+     * and event flash to 16. Currently, event flash is not supported.
+     *
+     * @param c that represents the DTMF to send. '0' ~ '9', 'A' ~ 'D', '*', '#' are valid inputs.
+     */
+    public void startDtmf(char c) {
+        if (DBG) {
+            log("startDtmf :: session=" + mSession + ", code=" + c);
+        }
+
+        synchronized(mLockObj) {
+            if (mSession != null) {
+                mSession.startDtmf(c);
+            }
+        }
+    }
+
+    /**
+     * Stop a DTMF code.
+     */
+    public void stopDtmf() {
+        if (DBG) {
+            log("stopDtmf :: session=" + mSession);
+        }
+
+        synchronized(mLockObj) {
+            if (mSession != null) {
+                mSession.stopDtmf();
+            }
+        }
+    }
+
+    /**
      * Sends an USSD message.
      *
      * @param ussdMessage USSD message to send
index 2acc433..153fe3f 100644 (file)
@@ -825,6 +825,38 @@ public class ImsCallSession {
     }
 
     /**
+     * Starts a DTMF code. According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833</a>,
+     * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15,
+     * and event flash to 16. Currently, event flash is not supported.
+     *
+     * @param c the DTMF to send. '0' ~ '9', 'A' ~ 'D', '*', '#' are valid inputs.
+     */
+    public void startDtmf(char c) {
+        if (mClosed) {
+            return;
+        }
+
+        try {
+            miSession.startDtmf(c);
+        } catch (RemoteException e) {
+        }
+    }
+
+    /**
+     * Stops a DTMF code.
+     */
+    public void stopDtmf() {
+        if (mClosed) {
+            return;
+        }
+
+        try {
+            miSession.stopDtmf();
+        } catch (RemoteException e) {
+        }
+    }
+
+    /**
      * Sends an USSD message.
      *
      * @param ussdMessage USSD message to send