Merge "Add setCallAudioHandler api for dynamic audio switching feature"

This commit is contained in:
TreeHugger Robot
2022-12-13 17:12:10 +00:00
committed by Android (Google) Code Review
3 changed files with 60 additions and 0 deletions

View File

@@ -15737,9 +15737,12 @@ package android.telephony.ims.feature {
method public void onFeatureRemoved();
method public boolean queryCapabilityConfiguration(int, int);
method @NonNull public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
method public final void setCallAudioHandler(int);
method public void setTerminalBasedCallWaitingStatus(boolean);
method public void setUiTtyMode(int, @Nullable android.os.Message);
method public int shouldProcessCall(@NonNull String[]);
field public static final int AUDIO_HANDLER_ANDROID = 0; // 0x0
field public static final int AUDIO_HANDLER_BASEBAND = 1; // 0x1
field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
field public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD";
field public static final int PROCESS_CALL_CSFB = 1; // 0x1

View File

@@ -34,4 +34,5 @@ interface IImsMmTelListener {
void onIncomingCall(IImsCallSession c, in Bundle extras);
void onRejectedCall(in ImsCallProfile callProfile, in ImsReasonInfo reason);
oneway void onVoiceMessageCountUpdate(int count);
oneway void onAudioModeIsVoipChanged(int imsAudioHandler);
}

View File

@@ -579,6 +579,17 @@ public class MmTelFeature extends ImsFeature {
public void onVoiceMessageCountUpdate(int count) {
}
/**
* Called to set the audio handler for this connection.
* @param imsAudioHandler an {@link ImsAudioHandler} used to handle the audio
* for this IMS call.
* @hide
*/
@Override
public void onAudioModeIsVoipChanged(int imsAudioHandler) {
}
}
/**
@@ -628,6 +639,29 @@ public class MmTelFeature extends ImsFeature {
public static final String EXTRA_IS_UNKNOWN_CALL =
"android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
/** @hide */
@IntDef(flag = true,
value = {
AUDIO_HANDLER_ANDROID,
AUDIO_HANDLER_BASEBAND
})
@Retention(RetentionPolicy.SOURCE)
public @interface ImsAudioHandler {}
/**
* Audio Handler - Android
* @hide
*/
@SystemApi
public static final int AUDIO_HANDLER_ANDROID = 0;
/**
* Audio Handler - Baseband
* @hide
*/
@SystemApi
public static final int AUDIO_HANDLER_BASEBAND = 1;
private IImsMmTelListener mListener;
/**
@@ -773,6 +807,28 @@ public class MmTelFeature extends ImsFeature {
}
}
/**
* Sets the audio handler for this connection. The vendor IMS stack will invoke this API
* to inform Telephony/Telecom layers about which audio handlers i.e. either Android or Modem
* shall be used for handling the IMS call audio.
*
* @param imsAudioHandler {@link MmTelFeature#ImsAudioHandler} used to handle the audio
* for this IMS call.
* @hide
*/
@SystemApi
public final void setCallAudioHandler(@ImsAudioHandler int imsAudioHandler) {
IImsMmTelListener listener = getListener();
if (listener == null) {
throw new IllegalStateException("Session is not available.");
}
try {
listener.onAudioModeIsVoipChanged(imsAudioHandler);
} catch (RemoteException e) {
throw new RuntimeException(e);
}
}
/**
* Provides the MmTelFeature with the ability to return the framework Capability Configuration
* for a provided Capability. If the framework calls {@link #changeEnabledCapabilities} and