diff options
author | Helen <helenhykim@google.com> | 2023-01-24 16:49:47 +0000 |
---|---|---|
committer | Helen <helenhykim@google.com> | 2023-01-30 11:27:42 +0000 |
commit | 1a213bf4296b300c019f9ac624294900bfc24e94 (patch) | |
tree | 3febaac5227da538e672a30c260e0fc80b9b52d4 | |
parent | f962e11d86355630768bcfca50aa2f4172cfcaa1 (diff) | |
download | ImsMedia-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
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); } |