From f38be7b2b0bf06a59b3997dfa6ae26b1ec3677f0 Mon Sep 17 00:00:00 2001 From: Tyler Gunn Date: Fri, 22 May 2015 15:43:28 -0700 Subject: [PATCH 1/2] Add support for specifying looper on VideoProviders. Added constructor for VideoProviders to allow creating instances where the Looper is specified. This is required for creating VideoProviderProxy instances within Telecom. Bug: 20232310 Change-Id: Ieb31e499caca9d65ff4b52c287e030c0ceeeb6ee --- telecomm/java/android/telecom/Connection.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index ecee0c60c04f7..581306959202d 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -24,6 +24,7 @@ import android.annotation.SystemApi; import android.net.Uri; import android.os.Handler; import android.os.IBinder; +import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.view.Surface; @@ -410,8 +411,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; /** @@ -423,6 +423,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) { @@ -554,6 +562,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); } /** From abfdaead4c3a11b2a9997bf3ebe252ed975d2b28 Mon Sep 17 00:00:00 2001 From: Tyler Gunn Date: Thu, 28 May 2015 15:09:10 -0700 Subject: [PATCH 2/2] Add new carrier config settings. 1. Add new carrier config setting for "bool_allow_emergency_video_calls". This allows us to control on a per-carrier basis whether emergency video calls are allowed. 2. Add carrier config setting "bool_allow_video_pause", which was previously in overlay files in packages/services/Telephony (Figured I would clean this up while I'm here). Bug: 20089489 Change-Id: I97e0983b4a7c8e8086ab58e7e839011e62fabcaf --- api/system-current.txt | 2 ++ .../telephony/CarrierConfigManager.java | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/api/system-current.txt b/api/system-current.txt index 904c2493072b2..cda99238af5a6 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -30822,6 +30822,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.intent.action.carrier_config_changed"; + field public static 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 BOOL_CARRIER_VOLTE_AVAILABLE = "bool_carrier_volte_available"; field public static final java.lang.String BOOL_CARRIER_VOLTE_PROVISIONED = "bool_carrier_volte_provisioned"; field public static final java.lang.String BOOL_CARRIER_VOLTE_TTY_SUPPORTED = "bool_carrier_volte_tty_supported"; diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index b6f6888eebe74..116cf1bcffb9c 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -109,6 +109,30 @@ public class CarrierConfigManager { @SystemApi public static final String VVM_TYPE_OMTP = "vvm_type_omtp"; + /** + * 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"; + private final static String TAG = "CarrierConfigManager"; /** The default value for every variable. */ @@ -120,6 +144,8 @@ public class CarrierConfigManager { sDefaults.putBoolean(BOOL_CARRIER_VOLTE_PROVISIONED, false); sDefaults.putBoolean(BOOL_CARRIER_VOLTE_TTY_SUPPORTED, true); sDefaults.putBoolean(BOOL_SHOW_APN_SETTING_CDMA, false); + sDefaults.putBoolean(BOOL_ALLOW_EMERGENCY_VIDEO_CALLS, false); + sDefaults.putBoolean(BOOL_ALLOW_VIDEO_PAUSE, true); sDefaults.putInt(INT_VOLTE_REPLACEMENT_RAT, 0); }