Loading core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -39102,8 +39102,10 @@ package android.telecom { field public static final int CAPABILITY_SELF_MANAGED = 2048; // 0x800 field public static final int CAPABILITY_SIM_SUBSCRIPTION = 4; // 0x4 field public static final int CAPABILITY_SUPPORTS_VIDEO_CALLING = 1024; // 0x400 field public static final int CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS = 65536; // 0x10000 field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8 field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100 field public static final int CAPABILITY_VOICE_CALLING_AVAILABLE = 131072; // 0x20000 field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR; field public static final String EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE = "android.telecom.extra.ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE"; field public static final String EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE = "android.telecom.extra.ALWAYS_USE_VOIP_AUDIO_MODE"; core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -2509,6 +2509,7 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile(); method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String); method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String); method @RequiresPermission(android.Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE) public void setVoiceServiceStateOverride(boolean); field public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; // 0xffffffff } Loading telecomm/java/android/telecom/PhoneAccount.java +47 −3 Original line number Diff line number Diff line Loading @@ -380,7 +380,45 @@ public final class PhoneAccount implements Parcelable { */ public static final int CAPABILITY_CALL_COMPOSER = 0x8000; /* NEXT CAPABILITY: 0x10000 */ /** * Flag indicating that this {@link PhoneAccount} provides SIM-based voice calls, potentially as * an over-the-top solution such as wi-fi calling. * * <p>Similar to {@link #CAPABILITY_SUPPORTS_VIDEO_CALLING}, this capability indicates this * {@link PhoneAccount} has the ability to make voice calls (but not necessarily at this time). * Whether this {@link PhoneAccount} can make a voice call is ultimately controlled by {@link * #CAPABILITY_VOICE_CALLING_AVAILABLE}, which indicates whether this {@link PhoneAccount} is * currently capable of making a voice call. Consider a case where, for example, a {@link * PhoneAccount} supports making voice calls (e.g. {@link * #CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS}), but a current lack of network connectivity * prevents voice calls from being made (e.g. {@link #CAPABILITY_VOICE_CALLING_AVAILABLE}). * * <p>In order to declare this capability, this {@link PhoneAccount} must also declare {@link * #CAPABILITY_SIM_SUBSCRIPTION} or {@link #CAPABILITY_CONNECTION_MANAGER} and satisfy the * associated requirements. * * @see #CAPABILITY_VOICE_CALLING_AVAILABLE * @see #getCapabilities */ public static final int CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS = 0x10000; /** * Flag indicating that this {@link PhoneAccount} is <em>currently</em> able to place SIM-based * voice calls, similar to {@link #CAPABILITY_VIDEO_CALLING}. * * <p>See also {@link #CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS}, which indicates whether * the {@code PhoneAccount} supports placing SIM-based voice calls or not. * * <p>In order to declare this capability, this {@link PhoneAccount} must also declare {@link * #CAPABILITY_SIM_SUBSCRIPTION} or {@link #CAPABILITY_CONNECTION_MANAGER} and satisfy the * associated requirements. * * @see #CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS * @see #getCapabilities */ public static final int CAPABILITY_VOICE_CALLING_AVAILABLE = 0x20000; /* NEXT CAPABILITY: 0x40000 */ /** * URI scheme for telephone number URIs. Loading Loading @@ -1110,6 +1148,12 @@ public final class PhoneAccount implements Parcelable { if (hasCapabilities(CAPABILITY_CALL_COMPOSER)) { sb.append("CallComposer "); } if (hasCapabilities(CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS)) { sb.append("SuppVoice "); } if (hasCapabilities(CAPABILITY_VOICE_CALLING_AVAILABLE)) { sb.append("Voice "); } return sb.toString(); } Loading telephony/java/android/telephony/TelephonyManager.java +33 −1 Original line number Diff line number Diff line Loading @@ -150,7 +150,6 @@ import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.IntStream; /** * Provides access to information about the telephony services on * the device. Applications can use the methods in this class to Loading Loading @@ -16763,4 +16762,37 @@ public class TelephonyManager { } mTelephonyRegistryMgr.removeCarrierPrivilegesCallback(callback); } /** * Sets a voice service state override from telecom based on the current {@link PhoneAccount}s * registered. See {@link PhoneAccount#CAPABILITY_VOICE_CALLING_AVAILABLE}. * * <p>Currently, this API is only called to indicate over-the-top voice calling capability of * the SIM call manager, which will get merged into {@link ServiceState#getState} and propagated * to interested callers via {@link #getServiceState} and {@link * TelephonyCallback.ServiceStateListener}. * * <p>If callers are truly interested in the actual device <-> tower connection status and not * an overall "device can make voice calls" boolean, they can use {@link * ServiceState#getNetworkRegistrationInfo} to check CS registration state. * * <p>TODO(b/215240050) In the future, this API will be removed and replaced with a new superset * API to disentangle the "true" {@link ServiceState} meaning of "this is the connection status * to the tower" from IMS registration state and over-the-top voice calling capabilities. * * @hide */ @TestApi @RequiresPermission(Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE) public void setVoiceServiceStateOverride(boolean hasService) { try { ITelephony telephony = getITelephony(); if (telephony == null) { throw new IllegalStateException("Telephony service is null"); } telephony.setVoiceServiceStateOverride(getSubId(), hasService, getOpPackageName()); } catch (RemoteException ex) { ex.rethrowAsRuntimeException(); } } } telephony/java/com/android/internal/telephony/ITelephony.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -2539,6 +2539,12 @@ interface ITelephony { */ boolean isRcsProvisioningRequiredForCapability(int subId, int capability, int tech); /** * Sets a voice service state from telecom based on the current PhoneAccounts registered. See * PhoneAccount#CAPABILITY_VOICE_CALLING_AVAILABLE. */ void setVoiceServiceStateOverride(int subId, boolean hasService, String callingPackage); /** * Returns the package name that provides the {@link CarrierService} implementation for the * specified {@code logicalSlotIndex}, or {@code null} if no package with carrier privileges Loading Loading
core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -39102,8 +39102,10 @@ package android.telecom { field public static final int CAPABILITY_SELF_MANAGED = 2048; // 0x800 field public static final int CAPABILITY_SIM_SUBSCRIPTION = 4; // 0x4 field public static final int CAPABILITY_SUPPORTS_VIDEO_CALLING = 1024; // 0x400 field public static final int CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS = 65536; // 0x10000 field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8 field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100 field public static final int CAPABILITY_VOICE_CALLING_AVAILABLE = 131072; // 0x20000 field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR; field public static final String EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE = "android.telecom.extra.ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE"; field public static final String EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE = "android.telecom.extra.ALWAYS_USE_VOIP_AUDIO_MODE";
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -2509,6 +2509,7 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile(); method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String); method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String); method @RequiresPermission(android.Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE) public void setVoiceServiceStateOverride(boolean); field public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; // 0xffffffff } Loading
telecomm/java/android/telecom/PhoneAccount.java +47 −3 Original line number Diff line number Diff line Loading @@ -380,7 +380,45 @@ public final class PhoneAccount implements Parcelable { */ public static final int CAPABILITY_CALL_COMPOSER = 0x8000; /* NEXT CAPABILITY: 0x10000 */ /** * Flag indicating that this {@link PhoneAccount} provides SIM-based voice calls, potentially as * an over-the-top solution such as wi-fi calling. * * <p>Similar to {@link #CAPABILITY_SUPPORTS_VIDEO_CALLING}, this capability indicates this * {@link PhoneAccount} has the ability to make voice calls (but not necessarily at this time). * Whether this {@link PhoneAccount} can make a voice call is ultimately controlled by {@link * #CAPABILITY_VOICE_CALLING_AVAILABLE}, which indicates whether this {@link PhoneAccount} is * currently capable of making a voice call. Consider a case where, for example, a {@link * PhoneAccount} supports making voice calls (e.g. {@link * #CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS}), but a current lack of network connectivity * prevents voice calls from being made (e.g. {@link #CAPABILITY_VOICE_CALLING_AVAILABLE}). * * <p>In order to declare this capability, this {@link PhoneAccount} must also declare {@link * #CAPABILITY_SIM_SUBSCRIPTION} or {@link #CAPABILITY_CONNECTION_MANAGER} and satisfy the * associated requirements. * * @see #CAPABILITY_VOICE_CALLING_AVAILABLE * @see #getCapabilities */ public static final int CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS = 0x10000; /** * Flag indicating that this {@link PhoneAccount} is <em>currently</em> able to place SIM-based * voice calls, similar to {@link #CAPABILITY_VIDEO_CALLING}. * * <p>See also {@link #CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS}, which indicates whether * the {@code PhoneAccount} supports placing SIM-based voice calls or not. * * <p>In order to declare this capability, this {@link PhoneAccount} must also declare {@link * #CAPABILITY_SIM_SUBSCRIPTION} or {@link #CAPABILITY_CONNECTION_MANAGER} and satisfy the * associated requirements. * * @see #CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS * @see #getCapabilities */ public static final int CAPABILITY_VOICE_CALLING_AVAILABLE = 0x20000; /* NEXT CAPABILITY: 0x40000 */ /** * URI scheme for telephone number URIs. Loading Loading @@ -1110,6 +1148,12 @@ public final class PhoneAccount implements Parcelable { if (hasCapabilities(CAPABILITY_CALL_COMPOSER)) { sb.append("CallComposer "); } if (hasCapabilities(CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS)) { sb.append("SuppVoice "); } if (hasCapabilities(CAPABILITY_VOICE_CALLING_AVAILABLE)) { sb.append("Voice "); } return sb.toString(); } Loading
telephony/java/android/telephony/TelephonyManager.java +33 −1 Original line number Diff line number Diff line Loading @@ -150,7 +150,6 @@ import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.IntStream; /** * Provides access to information about the telephony services on * the device. Applications can use the methods in this class to Loading Loading @@ -16763,4 +16762,37 @@ public class TelephonyManager { } mTelephonyRegistryMgr.removeCarrierPrivilegesCallback(callback); } /** * Sets a voice service state override from telecom based on the current {@link PhoneAccount}s * registered. See {@link PhoneAccount#CAPABILITY_VOICE_CALLING_AVAILABLE}. * * <p>Currently, this API is only called to indicate over-the-top voice calling capability of * the SIM call manager, which will get merged into {@link ServiceState#getState} and propagated * to interested callers via {@link #getServiceState} and {@link * TelephonyCallback.ServiceStateListener}. * * <p>If callers are truly interested in the actual device <-> tower connection status and not * an overall "device can make voice calls" boolean, they can use {@link * ServiceState#getNetworkRegistrationInfo} to check CS registration state. * * <p>TODO(b/215240050) In the future, this API will be removed and replaced with a new superset * API to disentangle the "true" {@link ServiceState} meaning of "this is the connection status * to the tower" from IMS registration state and over-the-top voice calling capabilities. * * @hide */ @TestApi @RequiresPermission(Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE) public void setVoiceServiceStateOverride(boolean hasService) { try { ITelephony telephony = getITelephony(); if (telephony == null) { throw new IllegalStateException("Telephony service is null"); } telephony.setVoiceServiceStateOverride(getSubId(), hasService, getOpPackageName()); } catch (RemoteException ex) { ex.rethrowAsRuntimeException(); } } }
telephony/java/com/android/internal/telephony/ITelephony.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -2539,6 +2539,12 @@ interface ITelephony { */ boolean isRcsProvisioningRequiredForCapability(int subId, int capability, int tech); /** * Sets a voice service state from telecom based on the current PhoneAccounts registered. See * PhoneAccount#CAPABILITY_VOICE_CALLING_AVAILABLE. */ void setVoiceServiceStateOverride(int subId, boolean hasService, String callingPackage); /** * Returns the package name that provides the {@link CarrierService} implementation for the * specified {@code logicalSlotIndex}, or {@code null} if no package with carrier privileges Loading