diff --git a/api/system-current.txt b/api/system-current.txt index bcb87846a3dcc..1da63fd6c6f7f 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -32891,6 +32891,8 @@ package android.telephony { method public void reloadCarrierConfigForSubId(int); method public void updateConfigForPhoneId(int, java.lang.String); field public static final java.lang.String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED"; + final java.lang.String BOOL_ALLOW_EMERGENCY_VIDEO_CALLS = "bool_allow_emergency_video_calls"; + field public static final java.lang.String BOOL_ALLOW_VIDEO_PAUSE = "bool_allow_video_pause"; field public static final java.lang.String KEY_ADDITIONAL_CALL_SETTING_BOOL = "additional_call_setting_bool"; field public static final java.lang.String KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL = "allow_emergency_numbers_in_call_log_bool"; field public static final java.lang.String KEY_ALLOW_LOCAL_DTMF_TONES_BOOL = "allow_local_dtmf_tones_bool"; diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index bb210f1746cdc..11323d15d7ac2 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -27,6 +27,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; +import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.view.Surface; @@ -442,8 +443,7 @@ public abstract class Connection extends Conferenceable { private static final int MSG_SET_PAUSE_IMAGE = 11; private static final int MSG_REMOVE_VIDEO_CALLBACK = 12; - private final VideoProvider.VideoProviderHandler - mMessageHandler = new VideoProvider.VideoProviderHandler(); + private VideoProvider.VideoProviderHandler mMessageHandler; private final VideoProvider.VideoProviderBinder mBinder; /** @@ -455,6 +455,14 @@ public abstract class Connection extends Conferenceable { * Default handler used to consolidate binder method calls onto a single thread. */ private final class VideoProviderHandler extends Handler { + public VideoProviderHandler() { + super(); + } + + public VideoProviderHandler(Looper looper) { + super(looper); + } + @Override public void handleMessage(Message msg) { switch (msg.what) { @@ -586,6 +594,18 @@ public abstract class Connection extends Conferenceable { public VideoProvider() { mBinder = new VideoProvider.VideoProviderBinder(); + mMessageHandler = new VideoProvider.VideoProviderHandler(); + } + + /** + * Creates an instance of the {@link VideoProvider}, specifying the looper to use. + * + * @param looper The looper. + * @hide + */ + public VideoProvider(Looper looper) { + mBinder = new VideoProvider.VideoProviderBinder(); + mMessageHandler = new VideoProvider.VideoProviderHandler(looper); } /** diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index ccfaca762b330..7425a6cc1a9c4 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -271,6 +271,30 @@ public class CarrierConfigManager { public static final String KEY_MMS_UA_PROF_URL_STRING = "uaProfUrl"; public static final String KEY_MMS_USER_AGENT_STRING = "userAgent"; + /** + * Flag indicating whether to allow carrier video calls to emergency numbers. + * When {@code true}, video calls to emergency numbers will be allowed. When {@code false}, + * video calls to emergency numbers will be initiated as audio-only calls instead. + * + * @hide + */ + @SystemApi + public static final String BOOL_ALLOW_EMERGENCY_VIDEO_CALLS = + "bool_allow_emergency_video_calls"; + + /** + * Flag indicating whether the carrier supports video pause signaling. When {@code true}, the + * carrier supports use of the {@link android.telecom.VideoProfile#STATE_PAUSED} video state + * to pause transmission of video when the In-Call app is sent to the background. + * When {@code false}, video pause signaling is not supported. {@code True} by default unless + * a carrier configuration overrides the default. + * + * @hide + */ + @SystemApi + public static final String BOOL_ALLOW_VIDEO_PAUSE = + "bool_allow_video_pause"; + /** The default value for every variable. */ private final static PersistableBundle sDefaults; @@ -309,6 +333,8 @@ public class CarrierConfigManager { sDefaults.putInt(KEY_VVM_PORT_NUMBER_INT, 0); sDefaults.putString(KEY_VVM_TYPE_STRING, ""); sDefaults.putString(KEY_CARRIER_VVM_PACKAGE_NAME_STRING, ""); + sDefaults.putBoolean(BOOL_ALLOW_EMERGENCY_VIDEO_CALLS, false); + sDefaults.putBoolean(BOOL_ALLOW_VIDEO_PAUSE, true); // MMS defaults sDefaults.putBoolean(KEY_MMS_ALIAS_ENABLED_BOOL, false);