summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelen <helenhykim@google.com>2023-01-24 16:49:47 +0000
committerHelen <helenhykim@google.com>2023-01-30 11:27:42 +0000
commit1a213bf4296b300c019f9ac624294900bfc24e94 (patch)
tree3febaac5227da538e672a30c260e0fc80b9b52d4
parentf962e11d86355630768bcfca50aa2f4172cfcaa1 (diff)
downloadImsMedia-1a213bf4296b300c019f9ac624294900bfc24e94.tar.gz
[ImsMedia] Add the duration value for the received DTMF as per updated imsmedia design
Bug: 265610926 Test: build (mm && m -j64) and atest ImsMediaJavaUnitTests Change-Id: I8f4c7953e845c43c0e8509a85d312706139d2051
-rw-r--r--framework/src/android/telephony/imsmedia/AudioSessionCallback.java7
-rw-r--r--framework/src/android/telephony/imsmedia/IImsAudioSessionCallback.aidl2
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioListener.java3
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioOffloadListener.java4
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioSession.java6
-rw-r--r--test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java4
-rw-r--r--test/imsmediahal/src/com/android/telephony/testimsmediahal/AudioListenerProxy.java3
-rw-r--r--tests/unit/src/com/android/telephony/imsmedia/AudioListenerTest.java11
-rw-r--r--tests/unit/src/com/android/telephony/imsmedia/AudioOffloadTest.java4
-rw-r--r--tests/unit/src/com/android/telephony/imsmedia/AudioSessionTest.java4
10 files changed, 28 insertions, 20 deletions
diff --git a/framework/src/android/telephony/imsmedia/AudioSessionCallback.java b/framework/src/android/telephony/imsmedia/AudioSessionCallback.java
index 4881b735..d23dd837 100644
--- a/framework/src/android/telephony/imsmedia/AudioSessionCallback.java
+++ b/framework/src/android/telephony/imsmedia/AudioSessionCallback.java
@@ -216,12 +216,12 @@ public class AudioSessionCallback extends ImsMediaManager.SessionCallback {
}
@Override
- public void onDtmfReceived(final char dtmfDigit) {
+ public void onDtmfReceived(final char dtmfDigit, final int durationMs) {
if (mLocalCallback == null) return;
final long callingIdentity = Binder.clearCallingIdentity();
try {
- mExecutor.execute(() -> mLocalCallback.onDtmfReceived(dtmfDigit));
+ mExecutor.execute(() -> mLocalCallback.onDtmfReceived(dtmfDigit, durationMs));
} finally {
restoreCallingIdentity(callingIdentity);
}
@@ -345,8 +345,9 @@ public class AudioSessionCallback extends ImsMediaManager.SessionCallback {
* Notifies received DTMF digit to play the tone
*
* @param dtmfDigit single char having one of 12 values: 0-9, *, #
+ * @param durationMs The duration to play the tone in milliseconds unit
*/
- public void onDtmfReceived(final char dtmfDigit) {
+ public void onDtmfReceived(final char dtmfDigit, final int durationMs) {
// Base Implementation
}
}
diff --git a/framework/src/android/telephony/imsmedia/IImsAudioSessionCallback.aidl b/framework/src/android/telephony/imsmedia/IImsAudioSessionCallback.aidl
index 0d2b7bd8..7b0d22d1 100644
--- a/framework/src/android/telephony/imsmedia/IImsAudioSessionCallback.aidl
+++ b/framework/src/android/telephony/imsmedia/IImsAudioSessionCallback.aidl
@@ -40,5 +40,5 @@ oneway interface IImsAudioSessionCallback {
void notifyJitter(int jitter);
void onCallQualityChanged(in CallQuality callQuality);
void triggerAnbrQuery(in AudioConfig config);
- void onDtmfReceived(in char dtmfDigit);
+ void onDtmfReceived(in char dtmfDigit, int durationMs);
}
diff --git a/service/src/com/android/telephony/imsmedia/AudioListener.java b/service/src/com/android/telephony/imsmedia/AudioListener.java
index 4f11e65b..cbdc84e4 100644
--- a/service/src/com/android/telephony/imsmedia/AudioListener.java
+++ b/service/src/com/android/telephony/imsmedia/AudioListener.java
@@ -103,7 +103,8 @@ public class AudioListener implements JNIImsMediaListener {
break;
case AudioSession.EVENT_DTMF_RECEIVED_IND:
final char dtmfDigit = (char) parcel.readByte();
- Utils.sendMessage(mHandler, event, dtmfDigit);
+ final int durationMs = parcel.readInt();
+ Utils.sendMessage(mHandler, event, dtmfDigit, durationMs);
break;
case AudioSession.EVENT_CALL_QUALITY_CHANGE_IND:
Utils.sendMessage(mHandler, event, CallQuality.CREATOR.createFromParcel(parcel));
diff --git a/service/src/com/android/telephony/imsmedia/AudioOffloadListener.java b/service/src/com/android/telephony/imsmedia/AudioOffloadListener.java
index 378fc50f..62a32eae 100644
--- a/service/src/com/android/telephony/imsmedia/AudioOffloadListener.java
+++ b/service/src/com/android/telephony/imsmedia/AudioOffloadListener.java
@@ -85,8 +85,8 @@ final class AudioOffloadListener extends IImsMediaSessionListener.Stub {
}
@Override
- public void onDtmfReceived(char dtmfDigit) {
- Utils.sendMessage(handler, AudioSession.EVENT_DTMF_RECEIVED_IND, dtmfDigit);
+ public void onDtmfReceived(char dtmfDigit, int durationMs) {
+ Utils.sendMessage(handler, AudioSession.EVENT_DTMF_RECEIVED_IND, dtmfDigit, durationMs);
}
@Override
diff --git a/service/src/com/android/telephony/imsmedia/AudioSession.java b/service/src/com/android/telephony/imsmedia/AudioSession.java
index 0a06e4d3..78ab75d4 100644
--- a/service/src/com/android/telephony/imsmedia/AudioSession.java
+++ b/service/src/com/android/telephony/imsmedia/AudioSession.java
@@ -309,7 +309,7 @@ public final class AudioSession extends IImsAudioSession.Stub implements IMediaS
handleTriggerAnbrQuery((AudioConfig) msg.obj);
break;
case EVENT_DTMF_RECEIVED_IND:
- handleDtmfReceived((char) msg.obj);
+ handleDtmfReceived((char) msg.arg1, msg.arg2);
break;
case EVENT_CALL_QUALITY_CHANGE_IND:
handleCallQualityChangeInd((CallQuality) msg.obj);
@@ -542,9 +542,9 @@ public final class AudioSession extends IImsAudioSession.Stub implements IMediaS
}
}
- private void handleDtmfReceived(char dtmfDigit) {
+ private void handleDtmfReceived(char dtmfDigit, int durationMs) {
try {
- mCallback.onDtmfReceived(dtmfDigit);
+ mCallback.onDtmfReceived(dtmfDigit, durationMs);
} catch (RemoteException e) {
Log.e(TAG, "Failed to Dtmf received: " + e);
}
diff --git a/test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java b/test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java
index 09cce2bb..fe628254 100644
--- a/test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java
+++ b/test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java
@@ -751,8 +751,8 @@ public class MainActivity extends AppCompatActivity {
}
@Override
- public void onDtmfReceived(char dtmfDigit) {
- Log.d(TAG, "onDtmfReceived");
+ public void onDtmfReceived(char dtmfDigit, int durationMs) {
+ Log.d(TAG, "onDtmfReceived digit: " + dtmfDigit + " duration: " + durationMs);
}
@Override
diff --git a/test/imsmediahal/src/com/android/telephony/testimsmediahal/AudioListenerProxy.java b/test/imsmediahal/src/com/android/telephony/testimsmediahal/AudioListenerProxy.java
index a4bbf714..1d817158 100644
--- a/test/imsmediahal/src/com/android/telephony/testimsmediahal/AudioListenerProxy.java
+++ b/test/imsmediahal/src/com/android/telephony/testimsmediahal/AudioListenerProxy.java
@@ -176,9 +176,10 @@ class AudioListenerProxy implements JNIImsMediaListener {
break;
case AudioSession.EVENT_DTMF_RECEIVED_IND:
final char dtmfDigit = (char) parcel.readByte();
+ final int durationMs = parcel.readInt();
try {
- mMediaSessionListener.onDtmfReceived(dtmfDigit);
+ mMediaSessionListener.onDtmfReceived(dtmfDigit, durationMs);
} catch (RemoteException e) {
Log.e(TAG, "Failed to DTMF received: " + e);
}
diff --git a/tests/unit/src/com/android/telephony/imsmedia/AudioListenerTest.java b/tests/unit/src/com/android/telephony/imsmedia/AudioListenerTest.java
index f594095d..79838f2b 100644
--- a/tests/unit/src/com/android/telephony/imsmedia/AudioListenerTest.java
+++ b/tests/unit/src/com/android/telephony/imsmedia/AudioListenerTest.java
@@ -42,6 +42,7 @@ import org.mockito.MockitoAnnotations;
public class AudioListenerTest {
private static final int SESSION_ID = 1;
private static final char DTMF_DIGIT = '7';
+ private static final int DTMF_DURATION = 120;
private AudioListener mAudioListener;
@Mock
private AudioService mAudioService;
@@ -206,11 +207,15 @@ public class AudioListenerTest {
@Test
public void testEventDtmfReceivedInd() throws RemoteException {
- mAudioListener.onMessage(createParcel(AudioSession.EVENT_DTMF_RECEIVED_IND, DTMF_DIGIT,
- mAudioConfig));
+ Parcel parcel = Parcel.obtain();
+ parcel.writeInt(AudioSession.EVENT_DTMF_RECEIVED_IND);
+ parcel.writeByte((byte) DTMF_DIGIT);
+ parcel.writeInt(DTMF_DURATION);
+ parcel.setDataPosition(0);
+ mAudioListener.onMessage(parcel);
processAllMessages();
verify(mMockIImsAudioSessionCallback,
- times(1)).onDtmfReceived(eq(DTMF_DIGIT));
+ times(1)).onDtmfReceived(eq(DTMF_DIGIT), eq(DTMF_DURATION));
}
@Test
diff --git a/tests/unit/src/com/android/telephony/imsmedia/AudioOffloadTest.java b/tests/unit/src/com/android/telephony/imsmedia/AudioOffloadTest.java
index 5071135c..527029a7 100644
--- a/tests/unit/src/com/android/telephony/imsmedia/AudioOffloadTest.java
+++ b/tests/unit/src/com/android/telephony/imsmedia/AudioOffloadTest.java
@@ -404,10 +404,10 @@ public class AudioOffloadTest {
@Test
public void testDtmfReceived() {
// Receive DTMF Received
- offloadListener.onDtmfReceived(DTMF_DIGIT);
+ offloadListener.onDtmfReceived(DTMF_DIGIT, DTMF_DURATION);
processAllMessages();
try {
- verify(callback, times(1)).onDtmfReceived(eq(DTMF_DIGIT));
+ verify(callback, times(1)).onDtmfReceived(eq(DTMF_DIGIT), eq(DTMF_DURATION));
} catch (RemoteException e) {
fail("Failed to notify onDtmfReceived: " + e);
}
diff --git a/tests/unit/src/com/android/telephony/imsmedia/AudioSessionTest.java b/tests/unit/src/com/android/telephony/imsmedia/AudioSessionTest.java
index fb1354a8..54ac51a4 100644
--- a/tests/unit/src/com/android/telephony/imsmedia/AudioSessionTest.java
+++ b/tests/unit/src/com/android/telephony/imsmedia/AudioSessionTest.java
@@ -353,10 +353,10 @@ public class AudioSessionTest {
@Test
public void testDtmfReceived() {
// Receive onDtmfReceived
- Utils.sendMessage(handler, AudioSession.EVENT_DTMF_RECEIVED_IND, DTMF_DIGIT);
+ Utils.sendMessage(handler, AudioSession.EVENT_DTMF_RECEIVED_IND, DTMF_DIGIT, DTMF_DURATION);
processAllMessages();
try {
- verify(callback, times(1)).onDtmfReceived(eq(DTMF_DIGIT));
+ verify(callback, times(1)).onDtmfReceived(eq(DTMF_DIGIT), eq(DTMF_DURATION));
} catch (RemoteException e) {
fail("Failed to notify onDtmfReceived: " + e);
}