diff options
author | Steven Laver <lavers@google.com> | 2019-11-05 13:42:59 -0800 |
---|---|---|
committer | Steven Laver <lavers@google.com> | 2019-11-09 01:16:30 +0000 |
commit | 7c6cc72e18cc1df5205fd2bc47664e6cc2534ad2 (patch) | |
tree | fc34e4ad6037cf231cccc3b56ccd13e82917520a /telecomm/java/android/telecom/Phone.java | |
parent | 8f4f93bf3ba75d8e83cb0a8618cb80f226ada5ac (diff) | |
parent | da5e1bd24a9a0ca24e7e49fad9e604409e573376 (diff) |
Merge RP1A.191024.001
Change-Id: I5cda3bba276e99d948b752be87d4599e9f882e0f
Diffstat (limited to 'telecomm/java/android/telecom/Phone.java')
-rw-r--r-- | telecomm/java/android/telecom/Phone.java | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/telecomm/java/android/telecom/Phone.java b/telecomm/java/android/telecom/Phone.java index 0cc052ef340d..2ecdb3035685 100644 --- a/telecomm/java/android/telecom/Phone.java +++ b/telecomm/java/android/telecom/Phone.java @@ -21,7 +21,6 @@ import android.annotation.UnsupportedAppUsage; import android.bluetooth.BluetoothDevice; import android.os.Build; import android.os.Bundle; -import android.os.RemoteException; import android.util.ArrayMap; import java.util.Collections; @@ -111,6 +110,10 @@ public final class Phone { public void onSilenceRinger(Phone phone) { } } + // TODO: replace all usages of this with the actual R constant from Build.VERSION_CODES + /** @hide */ + public static final int SDK_VERSION_R = 30; + // A Map allows us to track each Call by its Telecom-specified call ID private final Map<String, Call> mCallByTelecomCallId = new ArrayMap<>(); @@ -143,6 +146,12 @@ public final class Phone { } final void internalAddCall(ParcelableCall parcelableCall) { + if (mTargetSdkVersion < SDK_VERSION_R + && parcelableCall.getState() == Call.STATE_AUDIO_PROCESSING) { + Log.i(this, "Skipping adding audio processing call for sdk compatibility"); + return; + } + Call call = new Call(this, parcelableCall.getId(), mInCallAdapter, parcelableCall.getState(), mCallingPackage, mTargetSdkVersion); mCallByTelecomCallId.put(parcelableCall.getId(), call); @@ -150,7 +159,7 @@ public final class Phone { checkCallTree(parcelableCall); call.internalUpdate(parcelableCall, mCallByTelecomCallId); fireCallAdded(call); - } + } final void internalRemoveCall(Call call) { mCallByTelecomCallId.remove(call.internalGetCallId()); @@ -164,12 +173,28 @@ public final class Phone { } final void internalUpdateCall(ParcelableCall parcelableCall) { - Call call = mCallByTelecomCallId.get(parcelableCall.getId()); - if (call != null) { - checkCallTree(parcelableCall); - call.internalUpdate(parcelableCall, mCallByTelecomCallId); - } - } + if (mTargetSdkVersion < SDK_VERSION_R + && parcelableCall.getState() == Call.STATE_AUDIO_PROCESSING) { + Log.i(this, "removing audio processing call during update for sdk compatibility"); + Call call = mCallByTelecomCallId.get(parcelableCall.getId()); + if (call != null) { + internalRemoveCall(call); + } + return; + } + + Call call = mCallByTelecomCallId.get(parcelableCall.getId()); + if (call != null) { + checkCallTree(parcelableCall); + call.internalUpdate(parcelableCall, mCallByTelecomCallId); + } else { + // This call may have come out of audio processing. Try adding it if our target sdk + // version is low enough. + if (mTargetSdkVersion < SDK_VERSION_R) { + internalAddCall(parcelableCall); + } + } + } final void internalSetPostDialWait(String telecomId, String remaining) { Call call = mCallByTelecomCallId.get(telecomId); |