diff options
author | Brad Ebinger <breadley@google.com> | 2017-02-23 20:10:37 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-02-23 20:10:37 +0000 |
commit | 0f92c09a64af8a148f42c27ddbf96a4b7c762a82 (patch) | |
tree | c591f3e6ccfdd180a531a48185ae72c684b768ef | |
parent | 8dcc70a6a7d8a6454ea2484d792cac0aa37892d8 (diff) | |
parent | ffc69362848f85ddebcbb3368af5c3fed0019a8b (diff) | |
download | ims-0f92c09a64af8a148f42c27ddbf96a4b7c762a82.tar.gz |
Moving classes that must be used by an ImsService to base/
am: ffc6936284
Change-Id: I48ce41a34770aec3bcb3ba18f8bd236f46191dbe
-rw-r--r-- | src/java/com/android/ims/ImsCallSessionListenerBase.java | 243 | ||||
-rw-r--r-- | src/java/com/android/ims/ImsConfig.java | 695 | ||||
-rw-r--r-- | src/java/com/android/ims/ImsException.java | 52 | ||||
-rw-r--r-- | src/java/com/android/ims/ImsServiceClass.java | 1 | ||||
-rw-r--r-- | src/java/com/android/ims/ImsUtInterface.java | 179 | ||||
-rw-r--r-- | src/java/com/android/ims/internal/ImsCallSession.java | 1288 | ||||
-rw-r--r-- | src/java/com/android/ims/internal/ImsVideoCallProvider.java | 291 |
7 files changed, 1 insertions, 2748 deletions
diff --git a/src/java/com/android/ims/ImsCallSessionListenerBase.java b/src/java/com/android/ims/ImsCallSessionListenerBase.java deleted file mode 100644 index e2ad6ccd..00000000 --- a/src/java/com/android/ims/ImsCallSessionListenerBase.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except compliance with the License. - * You may obtaa copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ims; - -import com.android.ims.internal.IImsCallSession; -import com.android.ims.internal.IImsCallSessionListener; - -/* - * Stub for IImsCallSessionListener interface. To enable forward compatibility during - * development - empty APIs should not be deployed. To be used in vendor code - not in - * framework code (since framework should be updated whenever interface is updated). - * - * @hide - */ -public abstract class ImsCallSessionListenerBase extends IImsCallSessionListener.Stub { - /** - * Notifies the result of the basic session operation (setup / terminate). - */ - @Override - public void callSessionProgressing(IImsCallSession session, ImsStreamMediaProfile profile) { - // no-op - } - - @Override - public void callSessionStarted(IImsCallSession session, ImsCallProfile profile) { - // no-op - } - - @Override - public void callSessionStartFailed(IImsCallSession session, ImsReasonInfo reasonInfo) { - // no-op - } - - @Override - public void callSessionTerminated(IImsCallSession session, ImsReasonInfo reasonInfo) { - // no-op - } - - /** - * Notifies the result of the call hold/resume operation. - */ - @Override - public void callSessionHeld(IImsCallSession session, ImsCallProfile profile) { - // no-op - } - - @Override - public void callSessionHoldFailed(IImsCallSession session, ImsReasonInfo reasonInfo) { - // no-op - } - - @Override - public void callSessionHoldReceived(IImsCallSession session, ImsCallProfile profile) { - // no-op - } - - @Override - public void callSessionResumed(IImsCallSession session, ImsCallProfile profile) { - // no-op - } - - @Override - public void callSessionResumeFailed(IImsCallSession session, ImsReasonInfo reasonInfo) { - // no-op - } - - @Override - public void callSessionResumeReceived(IImsCallSession session, ImsCallProfile profile) { - // no-op - } - - /** - * Notifies the result of call merge operation. - */ - @Override - public void callSessionMergeStarted(IImsCallSession session, IImsCallSession newSession, - ImsCallProfile profile) { - // no-op - } - - @Override - public void callSessionMergeComplete(IImsCallSession session) { - // no-op - } - - @Override - public void callSessionMergeFailed(IImsCallSession session, ImsReasonInfo reasonInfo) { - // no-op - } - - /** - * Notifies the result of call upgrade / downgrade or any other call - * updates. - */ - @Override - public void callSessionUpdated(IImsCallSession session, ImsCallProfile profile) { - // no-op - } - - @Override - public void callSessionUpdateFailed(IImsCallSession session, ImsReasonInfo reasonInfo) { - // no-op - } - - @Override - public void callSessionUpdateReceived(IImsCallSession session, ImsCallProfile profile) { - // no-op - } - - /** - * Notifies the result of conference extension. - */ - @Override - public void callSessionConferenceExtended(IImsCallSession session, IImsCallSession newSession, - ImsCallProfile profile) { - // no-op - } - - @Override - public void callSessionConferenceExtendFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - // no-op - } - - @Override - public void callSessionConferenceExtendReceived(IImsCallSession session, - IImsCallSession newSession, - ImsCallProfile profile) { - // no-op - } - - /** - * Notifies the result of the participant invitation / removal to/from the - * conference session. - */ - @Override - public void callSessionInviteParticipantsRequestDelivered(IImsCallSession session) { - // no-op - } - - @Override - public void callSessionInviteParticipantsRequestFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - // no-op - } - - @Override - public void callSessionRemoveParticipantsRequestDelivered(IImsCallSession session) { - // no-op - } - - @Override - public void callSessionRemoveParticipantsRequestFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - // no-op - } - - /** - * Notifies the changes of the conference info. the conference session. - */ - @Override - public void callSessionConferenceStateUpdated(IImsCallSession session, - ImsConferenceState state) { - // no-op - } - - /** - * Notifies the incoming USSD message. - */ - @Override - public void callSessionUssdMessageReceived(IImsCallSession session, int mode, - String ussdMessage) { - // no-op - } - - /** - * Notifies of handover information for this call - */ - @Override - public void callSessionHandover(IImsCallSession session, int srcAccessTech, - int targetAccessTech, - ImsReasonInfo reasonInfo) { - // no-op - } - - @Override - public void callSessionHandoverFailed(IImsCallSession session, int srcAccessTech, - int targetAccessTech, - ImsReasonInfo reasonInfo) { - // no-op - } - - /** - * Notifies the TTY mode change by remote party. - * - * @param mode one of the following: - - * {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} - - * {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} - - * {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} - - * {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} - */ - @Override - public void callSessionTtyModeReceived(IImsCallSession session, int mode) { - // no-op - } - - /** - * Notifies of a change to the multiparty state for this - * {@code ImsCallSession}. - * - * @param session The call session. - * @param isMultiParty {@code true} if the session became multiparty, - * {@code false} otherwise. - */ - @Override - public void callSessionMultipartyStateChanged(IImsCallSession session, boolean isMultiParty) { - // no-op - } - - /** - * Notifies the supplementary service information for the current session. - */ - @Override - public void callSessionSuppServiceReceived(IImsCallSession session, - ImsSuppServiceNotification suppSrvNotification) { - // no-op - } -} - diff --git a/src/java/com/android/ims/ImsConfig.java b/src/java/com/android/ims/ImsConfig.java deleted file mode 100644 index b572b18b..00000000 --- a/src/java/com/android/ims/ImsConfig.java +++ /dev/null @@ -1,695 +0,0 @@ -/* - * Copyright (c) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ims; - -import android.content.Context; -import android.os.RemoteException; -import android.telephony.Rlog; - -import com.android.ims.ImsConfigListener; -import com.android.ims.ImsReasonInfo; -import com.android.ims.internal.IImsConfig; - -/** - * Provides APIs to get/set the IMS service feature/capability/parameters. - * The config items include: - * 1) Items provisioned by the operator. - * 2) Items configured by user. Mainly service feature class. - * - * @hide - */ -public class ImsConfig { - private static final String TAG = "ImsConfig"; - private boolean DBG = true; - private final IImsConfig miConfig; - private Context mContext; - - /** - * Broadcast action: the feature enable status was changed - * - * @hide - */ - public static final String ACTION_IMS_FEATURE_CHANGED = - "com.android.intent.action.IMS_FEATURE_CHANGED"; - - /** - * Broadcast action: the configuration was changed - * - * @hide - */ - public static final String ACTION_IMS_CONFIG_CHANGED = - "com.android.intent.action.IMS_CONFIG_CHANGED"; - - /** - * Extra parameter "item" of intent ACTION_IMS_FEATURE_CHANGED and ACTION_IMS_CONFIG_CHANGED. - * It is the value of FeatureConstants or ConfigConstants. - * - * @hide - */ - public static final String EXTRA_CHANGED_ITEM = "item"; - - /** - * Extra parameter "value" of intent ACTION_IMS_FEATURE_CHANGED and ACTION_IMS_CONFIG_CHANGED. - * It is the new value of "item". - * - * @hide - */ - public static final String EXTRA_NEW_VALUE = "value"; - - /** - * Defines IMS service/capability feature constants. - */ - public static class FeatureConstants { - public static final int FEATURE_TYPE_UNKNOWN = -1; - - /** - * FEATURE_TYPE_VOLTE supports features defined in 3GPP and - * GSMA IR.92 over LTE. - */ - public static final int FEATURE_TYPE_VOICE_OVER_LTE = 0; - - /** - * FEATURE_TYPE_LVC supports features defined in 3GPP and - * GSMA IR.94 over LTE. - */ - public static final int FEATURE_TYPE_VIDEO_OVER_LTE = 1; - - /** - * FEATURE_TYPE_VOICE_OVER_WIFI supports features defined in 3GPP and - * GSMA IR.92 over WiFi. - */ - public static final int FEATURE_TYPE_VOICE_OVER_WIFI = 2; - - /** - * FEATURE_TYPE_VIDEO_OVER_WIFI supports features defined in 3GPP and - * GSMA IR.94 over WiFi. - */ - public static final int FEATURE_TYPE_VIDEO_OVER_WIFI = 3; - - /** - * FEATURE_TYPE_UT supports features defined in 3GPP and - * GSMA IR.92 over LTE. - */ - public static final int FEATURE_TYPE_UT_OVER_LTE = 4; - - /** - * FEATURE_TYPE_UT_OVER_WIFI supports features defined in 3GPP and - * GSMA IR.92 over WiFi. - */ - public static final int FEATURE_TYPE_UT_OVER_WIFI = 5; - } - - /** - * Defines IMS service/capability parameters. - */ - public static class ConfigConstants { - - // Define IMS config items - public static final int CONFIG_START = 0; - - // Define operator provisioned config items - public static final int PROVISIONED_CONFIG_START = CONFIG_START; - - /** - * AMR CODEC Mode Value set, 0-7 in comma separated sequence. - * Value is in String format. - */ - public static final int VOCODER_AMRMODESET = CONFIG_START; - - /** - * Wide Band AMR CODEC Mode Value set,0-7 in comma separated sequence. - * Value is in String format. - */ - public static final int VOCODER_AMRWBMODESET = 1; - - /** - * SIP Session Timer value (seconds). - * Value is in Integer format. - */ - public static final int SIP_SESSION_TIMER = 2; - - /** - * Minimum SIP Session Expiration Timer in (seconds). - * Value is in Integer format. - */ - public static final int MIN_SE = 3; - - /** - * SIP_INVITE cancellation time out value (in milliseconds). Integer format. - * Value is in Integer format. - */ - public static final int CANCELLATION_TIMER = 4; - - /** - * Delay time when an iRAT transition from eHRPD/HRPD/1xRTT to LTE. - * Value is in Integer format. - */ - public static final int TDELAY = 5; - - /** - * Silent redial status of Enabled (True), or Disabled (False). - * Value is in Integer format. - */ - public static final int SILENT_REDIAL_ENABLE = 6; - - /** - * SIP T1 timer value in milliseconds. See RFC 3261 for define. - * Value is in Integer format. - */ - public static final int SIP_T1_TIMER = 7; - - /** - * SIP T2 timer value in milliseconds. See RFC 3261 for define. - * Value is in Integer format. - */ - public static final int SIP_T2_TIMER = 8; - - /** - * SIP TF timer value in milliseconds. See RFC 3261 for define. - * Value is in Integer format. - */ - public static final int SIP_TF_TIMER = 9; - - /** - * VoLTE status for VLT/s status of Enabled (1), or Disabled (0). - * Value is in Integer format. - */ - public static final int VLT_SETTING_ENABLED = 10; - - /** - * VoLTE status for LVC/s status of Enabled (1), or Disabled (0). - * Value is in Integer format. - */ - public static final int LVC_SETTING_ENABLED = 11; - /** - * Domain Name for the device to populate the request URI for REGISTRATION. - * Value is in String format. - */ - public static final int DOMAIN_NAME = 12; - /** - * Device Outgoing SMS based on either 3GPP or 3GPP2 standards. - * Value is in Integer format. 3GPP2(0), 3GPP(1) - */ - public static final int SMS_FORMAT = 13; - /** - * Turns IMS ON/OFF on the device. - * Value is in Integer format. ON (1), OFF(0). - */ - public static final int SMS_OVER_IP = 14; - /** - * Requested expiration for Published Online availability. - * Value is in Integer format. - */ - public static final int PUBLISH_TIMER = 15; - /** - * Requested expiration for Published Offline availability. - * Value is in Integer format. - */ - public static final int PUBLISH_TIMER_EXTENDED = 16; - /** - * - * Value is in Integer format. - */ - public static final int CAPABILITY_DISCOVERY_ENABLED = 17; - /** - * Period of time the capability information of the contact is cached on handset. - * Value is in Integer format. - */ - public static final int CAPABILITIES_CACHE_EXPIRATION = 18; - /** - * Peiod of time the availability information of a contact is cached on device. - * Value is in Integer format. - */ - public static final int AVAILABILITY_CACHE_EXPIRATION = 19; - /** - * Interval between successive capabilities polling. - * Value is in Integer format. - */ - public static final int CAPABILITIES_POLL_INTERVAL = 20; - /** - * Minimum time between two published messages from the device. - * Value is in Integer format. - */ - public static final int SOURCE_THROTTLE_PUBLISH = 21; - /** - * The Maximum number of MDNs contained in one Request Contained List. - * Value is in Integer format. - */ - public static final int MAX_NUMENTRIES_IN_RCL = 22; - /** - * Expiration timer for subscription of a Request Contained List, used in capability polling. - * Value is in Integer format. - */ - public static final int CAPAB_POLL_LIST_SUB_EXP = 23; - /** - * Applies compression to LIST Subscription. - * Value is in Integer format. Enable (1), Disable(0). - */ - public static final int GZIP_FLAG = 24; - /** - * VOLTE Status for EAB/s status of Enabled (1), or Disabled (0). - * Value is in Integer format. - */ - public static final int EAB_SETTING_ENABLED = 25; - /** - * Wi-Fi calling roaming status. - * Value is in Integer format. ON (1), OFF(0). - */ - public static final int VOICE_OVER_WIFI_ROAMING = 26; - /** - * Wi-Fi calling modem - WfcModeFeatureValueConstants. - * Value is in Integer format. - */ - public static final int VOICE_OVER_WIFI_MODE = 27; - /** - * VOLTE Status for voice over wifi status of Enabled (1), or Disabled (0). - * Value is in Integer format. - */ - public static final int VOICE_OVER_WIFI_SETTING_ENABLED = 28; - /** - * Mobile data enabled. - * Value is in Integer format. On (1), OFF(0). - */ - public static final int MOBILE_DATA_ENABLED = 29; - /** - * VoLTE user opted in status. - * Value is in Integer format. Opted-in (1) Opted-out (0). - */ - public static final int VOLTE_USER_OPT_IN_STATUS = 30; - /** - * Proxy for Call Session Control Function(P-CSCF) address for Local-BreakOut(LBO). - * Value is in String format. - */ - public static final int LBO_PCSCF_ADDRESS = 31; - /** - * Keep Alive Enabled for SIP. - * Value is in Integer format. On(1), OFF(0). - */ - public static final int KEEP_ALIVE_ENABLED = 32; - /** - * Registration retry Base Time value in seconds. - * Value is in Integer format. - */ - public static final int REGISTRATION_RETRY_BASE_TIME_SEC = 33; - /** - * Registration retry Max Time value in seconds. - * Value is in Integer format. - */ - public static final int REGISTRATION_RETRY_MAX_TIME_SEC = 34; - /** - * Smallest RTP port for speech codec. - * Value is in integer format. - */ - public static final int SPEECH_START_PORT = 35; - /** - * Largest RTP port for speech code. - * Value is in Integer format. - */ - public static final int SPEECH_END_PORT = 36; - /** - * SIP Timer A's value in milliseconds. Timer A is the INVITE request - * retransmit interval, for UDP only. - * Value is in Integer format. - */ - public static final int SIP_INVITE_REQ_RETX_INTERVAL_MSEC = 37; - /** - * SIP Timer B's value in milliseconds. Timer B is the wait time for - * INVITE message to be acknowledged. - * Value is in Integer format. - */ - public static final int SIP_INVITE_RSP_WAIT_TIME_MSEC = 38; - /** - * SIP Timer D's value in milliseconds. Timer D is the wait time for - * response retransmits of the invite client transactions. - * Value is in Integer format. - */ - public static final int SIP_INVITE_RSP_RETX_WAIT_TIME_MSEC = 39; - /** - * SIP Timer E's value in milliseconds. Timer E is the value Non-INVITE - * request retransmit interval, for UDP only. - * Value is in Integer format. - */ - public static final int SIP_NON_INVITE_REQ_RETX_INTERVAL_MSEC = 40; - /** - * SIP Timer F's value in milliseconds. Timer F is the Non-INVITE transaction - * timeout timer. - * Value is in Integer format. - */ - public static final int SIP_NON_INVITE_TXN_TIMEOUT_TIMER_MSEC = 41; - /** - * SIP Timer G's value in milliseconds. Timer G is the value of INVITE response - * retransmit interval. - * Value is in Integer format. - */ - public static final int SIP_INVITE_RSP_RETX_INTERVAL_MSEC = 42; - /** - * SIP Timer H's value in milliseconds. Timer H is the value of wait time for - * ACK receipt. - * Value is in Integer format. - */ - public static final int SIP_ACK_RECEIPT_WAIT_TIME_MSEC = 43; - /** - * SIP Timer I's value in milliseconds. Timer I is the value of wait time for - * ACK retransmits. - * Value is in Integer format. - */ - public static final int SIP_ACK_RETX_WAIT_TIME_MSEC = 44; - /** - * SIP Timer J's value in milliseconds. Timer J is the value of wait time for - * non-invite request retransmission. - * Value is in Integer format. - */ - public static final int SIP_NON_INVITE_REQ_RETX_WAIT_TIME_MSEC = 45; - /** - * SIP Timer K's value in milliseconds. Timer K is the value of wait time for - * non-invite response retransmits. - * Value is in Integer format. - */ - public static final int SIP_NON_INVITE_RSP_RETX_WAIT_TIME_MSEC = 46; - /** - * AMR WB octet aligned dynamic payload type. - * Value is in Integer format. - */ - public static final int AMR_WB_OCTET_ALIGNED_PT = 47; - /** - * AMR WB bandwidth efficient payload type. - * Value is in Integer format. - */ - public static final int AMR_WB_BANDWIDTH_EFFICIENT_PT = 48; - /** - * AMR octet aligned dynamic payload type. - * Value is in Integer format. - */ - public static final int AMR_OCTET_ALIGNED_PT = 49; - /** - * AMR bandwidth efficient payload type. - * Value is in Integer format. - */ - public static final int AMR_BANDWIDTH_EFFICIENT_PT = 50; - /** - * DTMF WB payload type. - * Value is in Integer format. - */ - public static final int DTMF_WB_PT = 51; - /** - * DTMF NB payload type. - * Value is in Integer format. - */ - public static final int DTMF_NB_PT = 52; - /** - * AMR Default encoding mode. - * Value is in Integer format. - */ - public static final int AMR_DEFAULT_MODE = 53; - /** - * SMS Public Service Identity. - * Value is in String format. - */ - public static final int SMS_PSI = 54; - /** - * Video Quality - VideoQualityFeatureValuesConstants. - * Value is in Integer format. - */ - public static final int VIDEO_QUALITY = 55; - /** - * LTE threshold. - * Handover from LTE to WiFi if LTE < THLTE1 and WiFi >= VOWT_A. - */ - public static final int TH_LTE1 = 56; - /** - * LTE threshold. - * Handover from WiFi to LTE if LTE >= THLTE3 or (WiFi < VOWT_B and LTE >= THLTE2). - */ - public static final int TH_LTE2 = 57; - /** - * LTE threshold. - * Handover from WiFi to LTE if LTE >= THLTE3 or (WiFi < VOWT_B and LTE >= THLTE2). - */ - public static final int TH_LTE3 = 58; - /** - * 1x threshold. - * Handover from 1x to WiFi if 1x < TH1x - */ - public static final int TH_1x = 59; - /** - * WiFi threshold. - * Handover from LTE to WiFi if LTE < THLTE1 and WiFi >= VOWT_A. - */ - public static final int VOWT_A = 60; - /** - * WiFi threshold. - * Handover from WiFi to LTE if LTE >= THLTE3 or (WiFi < VOWT_B and LTE >= THLTE2). - */ - public static final int VOWT_B = 61; - /** - * LTE ePDG timer. - * Device shall not handover back to LTE until the T_ePDG_LTE timer expires. - */ - public static final int T_EPDG_LTE = 62; - /** - * WiFi ePDG timer. - * Device shall not handover back to WiFi until the T_ePDG_WiFi timer expires. - */ - public static final int T_EPDG_WIFI = 63; - /** - * 1x ePDG timer. - * Device shall not re-register on 1x until the T_ePDG_1x timer expires. - */ - public static final int T_EPDG_1X = 64; - /** - * MultiEndpoint status: Enabled (1), or Disabled (0). - * Value is in Integer format. - */ - public static final int VICE_SETTING_ENABLED = 65; - - // Expand the operator config items as needed here, need to change - // PROVISIONED_CONFIG_END after that. - public static final int PROVISIONED_CONFIG_END = VICE_SETTING_ENABLED; - - // Expand the operator config items as needed here. - } - - /** - * Defines IMS set operation status. - */ - public static class OperationStatusConstants { - public static final int UNKNOWN = -1; - public static final int SUCCESS = 0; - public static final int FAILED = 1; - public static final int UNSUPPORTED_CAUSE_NONE = 2; - public static final int UNSUPPORTED_CAUSE_RAT = 3; - public static final int UNSUPPORTED_CAUSE_DISABLED = 4; - } - - /** - * Defines IMS get operation values. - */ - public static class OperationValuesConstants { - /** - * Values related to Video Quality - */ - public static final int VIDEO_QUALITY_UNKNOWN = -1; - public static final int VIDEO_QUALITY_LOW = 0; - public static final int VIDEO_QUALITY_HIGH = 1; - } - - /** - * Defines IMS video quality feature value. - */ - public static class VideoQualityFeatureValuesConstants { - public static final int LOW = 0; - public static final int HIGH = 1; - } - - /** - * Defines IMS feature value. - */ - public static class FeatureValueConstants { - public static final int OFF = 0; - public static final int ON = 1; - } - - /** - * Defines IMS feature value. - */ - public static class WfcModeFeatureValueConstants { - public static final int WIFI_ONLY = 0; - public static final int CELLULAR_PREFERRED = 1; - public static final int WIFI_PREFERRED = 2; - } - - public ImsConfig(IImsConfig iconfig, Context context) { - if (DBG) Rlog.d(TAG, "ImsConfig creates"); - miConfig = iconfig; - mContext = context; - } - - /** - * Gets the provisioned value for IMS service/capabilities parameters used by IMS stack. - * This function should not be called from the mainthread as it could block the - * mainthread. - * - * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. - * @return the value in Integer format. - * - * @throws ImsException if calling the IMS service results in an error. - */ - public int getProvisionedValue(int item) throws ImsException { - int ret = 0; - try { - ret = miConfig.getProvisionedValue(item); - } catch (RemoteException e) { - throw new ImsException("getValue()", e, - ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); - } - if (DBG) Rlog.d(TAG, "getProvisionedValue(): item = " + item + ", ret =" + ret); - - return ret; - } - - /** - * Gets the provisioned value for IMS service/capabilities parameters used by IMS stack. - * This function should not be called from the mainthread as it could block the - * mainthread. - * - * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. - * @return value in String format. - * - * @throws ImsException if calling the IMS service results in an error. - */ - public String getProvisionedStringValue(int item) throws ImsException { - String ret = "Unknown"; - try { - ret = miConfig.getProvisionedStringValue(item); - } catch (RemoteException e) { - throw new ImsException("getProvisionedStringValue()", e, - ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); - } - if (DBG) Rlog.d(TAG, "getProvisionedStringValue(): item = " + item + ", ret =" + ret); - - return ret; - } - - /** - * Sets the value for IMS service/capabilities parameters by - * the operator device management entity. - * This function should not be called from main thread as it could block - * mainthread. - * - * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. - * @param value in Integer format. - * @return as defined in com.android.ims.ImsConfig#OperationStatusConstants - * - * @throws ImsException if calling the IMS service results in an error. - */ - public int setProvisionedValue(int item, int value) - throws ImsException { - int ret = ImsConfig.OperationStatusConstants.UNKNOWN; - if (DBG) { - Rlog.d(TAG, "setProvisionedValue(): item = " + item + - "value = " + value); - } - try { - ret = miConfig.setProvisionedValue(item, value); - } catch (RemoteException e) { - throw new ImsException("setProvisionedValue()", e, - ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); - } - if (DBG) { - Rlog.d(TAG, "setProvisionedValue(): item = " + item + - " value = " + value + " ret = " + ret); - } - return ret; - } - - /** - * Sets the value for IMS service/capabilities parameters by - * the operator device management entity. - * This function should not be called from main thread as it could block - * mainthread. - * - * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. - * @param value in String format. - * @return as defined in com.android.ims.ImsConfig#OperationStatusConstants - * - * @throws ImsException if calling the IMS service results in an error. - */ - public int setProvisionedStringValue(int item, String value) - throws ImsException { - int ret = ImsConfig.OperationStatusConstants.UNKNOWN; - try { - ret = miConfig.setProvisionedStringValue(item, value); - } catch (RemoteException e) { - throw new ImsException("setProvisionedStringValue()", e, - ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); - } - if (DBG) { - Rlog.d(TAG, "setProvisionedStringValue(): item = " + item + - ", value =" + value); - } - return ret; - } - - /** - * Gets the value for IMS feature item for specified network type. - * - * @param feature, defined as in FeatureConstants. - * @param network, defined as in android.telephony.TelephonyManager#NETWORK_TYPE_XXX. - * @param listener, provided to be notified for the feature on/off status. - * @return void - * - * @throws ImsException if calling the IMS service results in an error. - */ - public void getFeatureValue(int feature, int network, - ImsConfigListener listener) throws ImsException { - if (DBG) { - Rlog.d(TAG, "getFeatureValue: feature = " + feature + ", network =" + network + - ", listener =" + listener); - } - try { - miConfig.getFeatureValue(feature, network, listener); - } catch (RemoteException e) { - throw new ImsException("getFeatureValue()", e, - ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); - } - } - - /** - * Sets the value for IMS feature item for specified network type. - * - * @param feature, as defined in FeatureConstants. - * @param network, as defined in android.telephony.TelephonyManager#NETWORK_TYPE_XXX. - * @param value, as defined in FeatureValueConstants. - * @param listener, provided if caller needs to be notified for set result. - * @return void - * - * @throws ImsException if calling the IMS service results in an error. - */ - public void setFeatureValue(int feature, int network, int value, - ImsConfigListener listener) throws ImsException { - if (DBG) { - Rlog.d(TAG, "setFeatureValue: feature = " + feature + ", network =" + network + - ", value =" + value + ", listener =" + listener); - } - try { - miConfig.setFeatureValue(feature, network, value, listener); - } catch (RemoteException e) { - throw new ImsException("setFeatureValue()", e, - ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); - } - } -} diff --git a/src/java/com/android/ims/ImsException.java b/src/java/com/android/ims/ImsException.java deleted file mode 100644 index 74b20f47..00000000 --- a/src/java/com/android/ims/ImsException.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ims; - -/** - * This class defines a general IMS-related exception. - * - * @hide - */ -public class ImsException extends Exception { - - /** - * Refer to CODE_LOCAL_* in {@link ImsReasonInfo} - */ - private int mCode; - - public ImsException() { - } - - public ImsException(String message, int code) { - super(message + ", code = " + code); - mCode = code; - } - - public ImsException(String message, Throwable cause, int code) { - super(message, cause); - mCode = code; - } - - /** - * Gets the detailed exception code when ImsException is throwed - * - * @return the exception code in {@link ImsReasonInfo} - */ - public int getCode() { - return mCode; - } -} diff --git a/src/java/com/android/ims/ImsServiceClass.java b/src/java/com/android/ims/ImsServiceClass.java index 478dcb72..8677b9d9 100644 --- a/src/java/com/android/ims/ImsServiceClass.java +++ b/src/java/com/android/ims/ImsServiceClass.java @@ -19,6 +19,7 @@ package com.android.ims; /** * This class defines an identifier for each IMS service category. * + * @deprecated Use {@link android.telephony.ims.feature.ImsFeature} definitions instead. * @hide */ public class ImsServiceClass { diff --git a/src/java/com/android/ims/ImsUtInterface.java b/src/java/com/android/ims/ImsUtInterface.java deleted file mode 100644 index 5984e789..00000000 --- a/src/java/com/android/ims/ImsUtInterface.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ims; - -import android.os.Message; - -/** - * Provides APIs for the supplementary service settings using IMS (Ut interface). - * It is created from 3GPP TS 24.623 (XCAP(XML Configuration Access Protocol) - * over the Ut interface for manipulating supplementary services). - * - * @hide - */ -public interface ImsUtInterface { - /** - * Actions - * @hide - */ - public static final int ACTION_DEACTIVATION = 0; - public static final int ACTION_ACTIVATION = 1; - public static final int ACTION_REGISTRATION = 3; - public static final int ACTION_ERASURE = 4; - public static final int ACTION_INTERROGATION = 5; - - /** - * OIR (Originating Identification Restriction, 3GPP TS 24.607) - * OIP (Originating Identification Presentation, 3GPP TS 24.607) - * TIR (Terminating Identification Restriction, 3GPP TS 24.608) - * TIP (Terminating Identification Presentation, 3GPP TS 24.608) - */ - public static final int OIR_DEFAULT = 0; // "user subscription default value" - public static final int OIR_PRESENTATION_RESTRICTED = 1; - public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2; - - /** - * CW (Communication Waiting, 3GPP TS 24.615) - */ - - /** - * CDIV (Communication Diversion, 3GPP TS 24.604) - * actions: target, no reply timer - */ - public static final int CDIV_CF_UNCONDITIONAL = 0; - public static final int CDIV_CF_BUSY = 1; - public static final int CDIV_CF_NO_REPLY = 2; - public static final int CDIV_CF_NOT_REACHABLE = 3; - // For CS service code: 002 - public static final int CDIV_CF_ALL = 4; - // For CS service code: 004 - public static final int CDIV_CF_ALL_CONDITIONAL = 5; - // It's only supported in the IMS service (CS does not define it). - // IR.92 recommends that an UE activates both the CFNRc and the CFNL - // (CDIV using condition not-registered) to the same target. - public static final int CDIV_CF_NOT_LOGGED_IN = 6; - - /** - * CB (Communication Barring, 3GPP TS 24.611) - */ - // Barring of All Incoming Calls - public static final int CB_BAIC = 1; - // Barring of All Outgoing Calls - public static final int CB_BAOC = 2; - // Barring of Outgoing International Calls - public static final int CB_BOIC = 3; - // Barring of Outgoing International Calls - excluding Home Country - public static final int CB_BOIC_EXHC = 4; - // Barring of Incoming Calls - when roaming - public static final int CB_BIC_WR = 5; - // Barring of Anonymous Communication Rejection (ACR) - a particular case of ICB service - public static final int CB_BIC_ACR = 6; - // Barring of All Calls - public static final int CB_BA_ALL = 7; - // Barring of Outgoing Services (Service Code 333 - 3GPP TS 22.030 Table B-1) - public static final int CB_BA_MO = 8; - // Barring of Incoming Services (Service Code 353 - 3GPP TS 22.030 Table B-1) - public static final int CB_BA_MT = 9; - // Barring of Specific Incoming calls - public static final int CB_BS_MT = 10; - - /** - * Invalid result value. - */ - public static final int INVALID = (-1); - - - - /** - * Operations for the supplementary service configuration - */ - - /** - * Retrieves the configuration of the call barring. - * The return value of ((AsyncResult)result.obj) is an array of {@link ImsSsInfo}. - */ - public void queryCallBarring(int cbType, Message result); - - /** - * Retrieves the configuration of the call forward. - * The return value of ((AsyncResult)result.obj) is an array of {@link ImsCallForwardInfo}. - */ - public void queryCallForward(int condition, String number, Message result); - - /** - * Retrieves the configuration of the call waiting. - * The return value of ((AsyncResult)result.obj) is an array of {@link ImsSsInfo}. - */ - public void queryCallWaiting(Message result); - - /** - * Retrieves the default CLIR setting. - */ - public void queryCLIR(Message result); - - /** - * Retrieves the CLIP call setting. - */ - public void queryCLIP(Message result); - - /** - * Retrieves the COLR call setting. - */ - public void queryCOLR(Message result); - - /** - * Retrieves the COLP call setting. - */ - public void queryCOLP(Message result); - - /** - * Modifies the configuration of the call barring. - */ - public void updateCallBarring(int cbType, int action, - Message result, String[] barrList); - - /** - * Modifies the configuration of the call forward. - */ - public void updateCallForward(int action, int condition, String number, - int serviceClass, int timeSeconds, Message result); - - /** - * Modifies the configuration of the call waiting. - */ - public void updateCallWaiting(boolean enable, int serviceClass, Message result); - - /** - * Updates the configuration of the CLIR supplementary service. - */ - public void updateCLIR(int clirMode, Message result); - - /** - * Updates the configuration of the CLIP supplementary service. - */ - public void updateCLIP(boolean enable, Message result); - - /** - * Updates the configuration of the COLR supplementary service. - */ - public void updateCOLR(int presentation, Message result); - - /** - * Updates the configuration of the COLP supplementary service. - */ - public void updateCOLP(boolean enable, Message result); -} diff --git a/src/java/com/android/ims/internal/ImsCallSession.java b/src/java/com/android/ims/internal/ImsCallSession.java deleted file mode 100644 index d8614e3c..00000000 --- a/src/java/com/android/ims/internal/ImsCallSession.java +++ /dev/null @@ -1,1288 +0,0 @@ -/* - * Copyright (c) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ims.internal; - -import android.os.Message; -import android.os.RemoteException; -import android.telecom.Connection; - -import java.util.Objects; -import android.util.Log; -import com.android.ims.ImsCallProfile; -import com.android.ims.ImsConferenceState; -import com.android.ims.ImsReasonInfo; -import com.android.ims.ImsStreamMediaProfile; -import com.android.ims.ImsSuppServiceNotification; - -/** - * Provides the call initiation/termination, and media exchange between two IMS endpoints. - * It directly communicates with IMS service which implements the IMS protocol behavior. - * - * @hide - */ -public class ImsCallSession { - private static final String TAG = "ImsCallSession"; - - /** - * Defines IMS call session state. - */ - public static class State { - public static final int IDLE = 0; - public static final int INITIATED = 1; - public static final int NEGOTIATING = 2; - public static final int ESTABLISHING = 3; - public static final int ESTABLISHED = 4; - - public static final int RENEGOTIATING = 5; - public static final int REESTABLISHING = 6; - - public static final int TERMINATING = 7; - public static final int TERMINATED = 8; - - public static final int INVALID = (-1); - - /** - * Converts the state to string. - */ - public static String toString(int state) { - switch (state) { - case IDLE: - return "IDLE"; - case INITIATED: - return "INITIATED"; - case NEGOTIATING: - return "NEGOTIATING"; - case ESTABLISHING: - return "ESTABLISHING"; - case ESTABLISHED: - return "ESTABLISHED"; - case RENEGOTIATING: - return "RENEGOTIATING"; - case REESTABLISHING: - return "REESTABLISHING"; - case TERMINATING: - return "TERMINATING"; - case TERMINATED: - return "TERMINATED"; - default: - return "UNKNOWN"; - } - } - - private State() { - } - } - - /** - * Listener for events relating to an IMS session, such as when a session is being - * recieved ("on ringing") or a call is outgoing ("on calling"). - * <p>Many of these events are also received by {@link ImsCall.Listener}.</p> - */ - public static class Listener { - /** - * Called when a request is sent out to initiate a new session - * and 1xx response is received from the network. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionProgressing(ImsCallSession session, - ImsStreamMediaProfile profile) { - // no-op - } - - /** - * Called when the session is established. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionStarted(ImsCallSession session, - ImsCallProfile profile) { - // no-op - } - - /** - * Called when the session establishment is failed. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the session establishment failure - */ - public void callSessionStartFailed(ImsCallSession session, - ImsReasonInfo reasonInfo) { - } - - /** - * Called when the session is terminated. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the session termination - */ - public void callSessionTerminated(ImsCallSession session, - ImsReasonInfo reasonInfo) { - } - - /** - * Called when the session is in hold. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionHeld(ImsCallSession session, - ImsCallProfile profile) { - } - - /** - * Called when the session hold is failed. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the session hold failure - */ - public void callSessionHoldFailed(ImsCallSession session, - ImsReasonInfo reasonInfo) { - } - - /** - * Called when the session hold is received from the remote user. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionHoldReceived(ImsCallSession session, - ImsCallProfile profile) { - } - - /** - * Called when the session resume is done. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionResumed(ImsCallSession session, - ImsCallProfile profile) { - } - - /** - * Called when the session resume is failed. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the session resume failure - */ - public void callSessionResumeFailed(ImsCallSession session, - ImsReasonInfo reasonInfo) { - } - - /** - * Called when the session resume is received from the remote user. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionResumeReceived(ImsCallSession session, - ImsCallProfile profile) { - } - - /** - * Called when the session merge has been started. At this point, the {@code newSession} - * represents the session which has been initiated to the IMS conference server for the - * new merged conference. - * - * @param session the session object that carries out the IMS session - * @param newSession the session object that is merged with an active & hold session - */ - public void callSessionMergeStarted(ImsCallSession session, - ImsCallSession newSession, ImsCallProfile profile) { - } - - /** - * Called when the session merge is successful and the merged session is active. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionMergeComplete(ImsCallSession session) { - } - - /** - * Called when the session merge has failed. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the call merge failure - */ - public void callSessionMergeFailed(ImsCallSession session, - ImsReasonInfo reasonInfo) { - } - - /** - * Called when the session is updated (except for hold/unhold). - * - * @param call the call object that carries out the IMS call - */ - public void callSessionUpdated(ImsCallSession session, - ImsCallProfile profile) { - } - - /** - * Called when the session update is failed. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the session update failure - */ - public void callSessionUpdateFailed(ImsCallSession session, - ImsReasonInfo reasonInfo) { - } - - /** - * Called when the session update is received from the remote user. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionUpdateReceived(ImsCallSession session, - ImsCallProfile profile) { - // no-op - } - - /** - * Called when the session is extended to the conference session. - * - * @param session the session object that carries out the IMS session - * @param newSession the session object that is extended to the conference - * from the active session - */ - public void callSessionConferenceExtended(ImsCallSession session, - ImsCallSession newSession, ImsCallProfile profile) { - } - - /** - * Called when the conference extension is failed. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the conference extension failure - */ - public void callSessionConferenceExtendFailed(ImsCallSession session, - ImsReasonInfo reasonInfo) { - } - - /** - * Called when the conference extension is received from the remote user. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionConferenceExtendReceived(ImsCallSession session, - ImsCallSession newSession, ImsCallProfile profile) { - // no-op - } - - /** - * Called when the invitation request of the participants is delivered to the conference - * server. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionInviteParticipantsRequestDelivered(ImsCallSession session) { - // no-op - } - - /** - * Called when the invitation request of the participants is failed. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the conference invitation failure - */ - public void callSessionInviteParticipantsRequestFailed(ImsCallSession session, - ImsReasonInfo reasonInfo) { - // no-op - } - - /** - * Called when the removal request of the participants is delivered to the conference - * server. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionRemoveParticipantsRequestDelivered(ImsCallSession session) { - // no-op - } - - /** - * Called when the removal request of the participants is failed. - * - * @param session the session object that carries out the IMS session - * @param reasonInfo detailed reason of the conference removal failure - */ - public void callSessionRemoveParticipantsRequestFailed(ImsCallSession session, - ImsReasonInfo reasonInfo) { - // no-op - } - - /** - * Called when the conference state is updated. - * - * @param session the session object that carries out the IMS session - */ - public void callSessionConferenceStateUpdated(ImsCallSession session, - ImsConferenceState state) { - // no-op - } - - /** - * Called when the USSD message is received from the network. - * - * @param mode mode of the USSD message (REQUEST / NOTIFY) - * @param ussdMessage USSD message - */ - public void callSessionUssdMessageReceived(ImsCallSession session, - int mode, String ussdMessage) { - // no-op - } - - /** - * Called when session access technology changes - * - * @param session IMS session object - * @param srcAccessTech original access technology - * @param targetAccessTech new access technology - * @param reasonInfo - */ - public void callSessionHandover(ImsCallSession session, - int srcAccessTech, int targetAccessTech, - ImsReasonInfo reasonInfo) { - // no-op - } - - /** - * Called when session access technology change fails - * - * @param session IMS session object - * @param srcAccessTech original access technology - * @param targetAccessTech new access technology - * @param reasonInfo handover failure reason - */ - public void callSessionHandoverFailed(ImsCallSession session, - int srcAccessTech, int targetAccessTech, - ImsReasonInfo reasonInfo) { - // no-op - } - - /** - * Called when TTY mode of remote party changed - * - * @param session IMS session object - * @param mode TTY mode of remote party - */ - public void callSessionTtyModeReceived(ImsCallSession session, - int mode) { - // no-op - } - - /** - * Notifies of a change to the multiparty state for this {@code ImsCallSession}. - * - * @param session The call session. - * @param isMultiParty {@code true} if the session became multiparty, {@code false} - * otherwise. - */ - public void callSessionMultipartyStateChanged(ImsCallSession session, - boolean isMultiParty) { - // no-op - } - - /** - * Called when the session supplementary service is received - * - * @param session the session object that carries out the IMS session - */ - public void callSessionSuppServiceReceived(ImsCallSession session, - ImsSuppServiceNotification suppServiceInfo) { - } - } - - private final IImsCallSession miSession; - private boolean mClosed = false; - private Listener mListener; - - public ImsCallSession(IImsCallSession iSession) { - miSession = iSession; - - if (iSession != null) { - try { - iSession.setListener(new IImsCallSessionListenerProxy()); - } catch (RemoteException e) { - } - } else { - mClosed = true; - } - } - - public ImsCallSession(IImsCallSession iSession, Listener listener) { - this(iSession); - setListener(listener); - } - - /** - * Closes this object. This object is not usable after being closed. - */ - public synchronized void close() { - if (mClosed) { - return; - } - - try { - miSession.close(); - mClosed = true; - } catch (RemoteException e) { - } - } - - /** - * Gets the call ID of the session. - * - * @return the call ID - */ - public String getCallId() { - if (mClosed) { - return null; - } - - try { - return miSession.getCallId(); - } catch (RemoteException e) { - return null; - } - } - - /** - * Gets the call profile that this session is associated with - * - * @return the call profile that this session is associated with - */ - public ImsCallProfile getCallProfile() { - if (mClosed) { - return null; - } - - try { - return miSession.getCallProfile(); - } catch (RemoteException e) { - return null; - } - } - - /** - * Gets the local call profile that this session is associated with - * - * @return the local call profile that this session is associated with - */ - public ImsCallProfile getLocalCallProfile() { - if (mClosed) { - return null; - } - - try { - return miSession.getLocalCallProfile(); - } catch (RemoteException e) { - return null; - } - } - - /** - * Gets the remote call profile that this session is associated with - * - * @return the remote call profile that this session is associated with - */ - public ImsCallProfile getRemoteCallProfile() { - if (mClosed) { - return null; - } - - try { - return miSession.getRemoteCallProfile(); - } catch (RemoteException e) { - return null; - } - } - - /** - * Gets the video call provider for the session. - * - * @return The video call provider. - */ - public IImsVideoCallProvider getVideoCallProvider() { - if (mClosed) { - return null; - } - - try { - return miSession.getVideoCallProvider(); - } catch (RemoteException e) { - return null; - } - } - - /** - * Gets the value associated with the specified property of this session. - * - * @return the string value associated with the specified property - */ - public String getProperty(String name) { - if (mClosed) { - return null; - } - - try { - return miSession.getProperty(name); - } catch (RemoteException e) { - return null; - } - } - - /** - * Gets the session state. - * The value returned must be one of the states in {@link State}. - * - * @return the session state - */ - public int getState() { - if (mClosed) { - return State.INVALID; - } - - try { - return miSession.getState(); - } catch (RemoteException e) { - return State.INVALID; - } - } - - /** - * Determines if the {@link ImsCallSession} is currently alive (e.g. not in a terminated or - * closed state). - * - * @return {@code True} if the session is alive. - */ - public boolean isAlive() { - if (mClosed) { - return false; - } - - int state = getState(); - switch (state) { - case State.IDLE: - case State.INITIATED: - case State.NEGOTIATING: - case State.ESTABLISHING: - case State.ESTABLISHED: - case State.RENEGOTIATING: - case State.REESTABLISHING: - return true; - default: - return false; - } - } - - /** - * Gets the native IMS call session. - * @hide - */ - public IImsCallSession getSession() { - return miSession; - } - - /** - * Checks if the session is in call. - * - * @return true if the session is in call - */ - public boolean isInCall() { - if (mClosed) { - return false; - } - - try { - return miSession.isInCall(); - } catch (RemoteException e) { - return false; - } - } - - /** - * Sets the listener to listen to the session events. A {@link ImsCallSession} - * can only hold one listener at a time. Subsequent calls to this method - * override the previous listener. - * - * @param listener to listen to the session events of this object - */ - public void setListener(Listener listener) { - mListener = listener; - } - - /** - * Mutes or unmutes the mic for the active call. - * - * @param muted true if the call is muted, false otherwise - */ - public void setMute(boolean muted) { - if (mClosed) { - return; - } - - try { - miSession.setMute(muted); - } catch (RemoteException e) { - } - } - - /** - * Initiates an IMS call with the specified target and call profile. - * The session listener is called back upon defined session events. - * The method is only valid to call when the session state is in - * {@link ImsCallSession#State#IDLE}. - * - * @param callee dialed string to make the call to - * @param profile call profile to make the call with the specified service type, - * call type and media information - * @see Listener#callSessionStarted, Listener#callSessionStartFailed - */ - public void start(String callee, ImsCallProfile profile) { - if (mClosed) { - return; - } - - try { - miSession.start(callee, profile); - } catch (RemoteException e) { - } - } - - /** - * Initiates an IMS conference call with the specified target and call profile. - * The session listener is called back upon defined session events. - * The method is only valid to call when the session state is in - * {@link ImsCallSession#State#IDLE}. - * - * @param participants participant list to initiate an IMS conference call - * @param profile call profile to make the call with the specified service type, - * call type and media information - * @see Listener#callSessionStarted, Listener#callSessionStartFailed - */ - public void start(String[] participants, ImsCallProfile profile) { - if (mClosed) { - return; - } - - try { - miSession.startConference(participants, profile); - } catch (RemoteException e) { - } - } - - /** - * Accepts an incoming call or session update. - * - * @param callType call type specified in {@link ImsCallProfile} to be answered - * @param profile stream media profile {@link ImsStreamMediaProfile} to be answered - * @see Listener#callSessionStarted - */ - public void accept(int callType, ImsStreamMediaProfile profile) { - if (mClosed) { - return; - } - - try { - miSession.accept(callType, profile); - } catch (RemoteException e) { - } - } - - /** - * Rejects an incoming call or session update. - * - * @param reason reason code to reject an incoming call - * @see Listener#callSessionStartFailed - */ - public void reject(int reason) { - if (mClosed) { - return; - } - - try { - miSession.reject(reason); - } catch (RemoteException e) { - } - } - - /** - * Terminates a call. - * - * @see Listener#callSessionTerminated - */ - public void terminate(int reason) { - if (mClosed) { - return; - } - - try { - miSession.terminate(reason); - } catch (RemoteException e) { - } - } - - /** - * Puts a call on hold. When it succeeds, {@link Listener#callSessionHeld} is called. - * - * @param profile stream media profile {@link ImsStreamMediaProfile} to hold the call - * @see Listener#callSessionHeld, Listener#callSessionHoldFailed - */ - public void hold(ImsStreamMediaProfile profile) { - if (mClosed) { - return; - } - - try { - miSession.hold(profile); - } catch (RemoteException e) { - } - } - - /** - * Continues a call that's on hold. When it succeeds, - * {@link Listener#callSessionResumed} is called. - * - * @param profile stream media profile {@link ImsStreamMediaProfile} to resume the call - * @see Listener#callSessionResumed, Listener#callSessionResumeFailed - */ - public void resume(ImsStreamMediaProfile profile) { - if (mClosed) { - return; - } - - try { - miSession.resume(profile); - } catch (RemoteException e) { - } - } - - /** - * Merges the active & hold call. When it succeeds, - * {@link Listener#callSessionMergeStarted} is called. - * - * @see Listener#callSessionMergeStarted , Listener#callSessionMergeFailed - */ - public void merge() { - if (mClosed) { - return; - } - - try { - miSession.merge(); - } catch (RemoteException e) { - } - } - - /** - * Updates the current call's properties (ex. call mode change: video upgrade / downgrade). - * - * @param callType call type specified in {@link ImsCallProfile} to be updated - * @param profile stream media profile {@link ImsStreamMediaProfile} to be updated - * @see Listener#callSessionUpdated, Listener#callSessionUpdateFailed - */ - public void update(int callType, ImsStreamMediaProfile profile) { - if (mClosed) { - return; - } - - try { - miSession.update(callType, profile); - } catch (RemoteException e) { - } - } - - /** - * Extends this call to the conference call with the specified recipients. - * - * @participants participant list to be invited to the conference call after extending the call - * @see Listener#sessionConferenceExtened, Listener#sessionConferenceExtendFailed - */ - public void extendToConference(String[] participants) { - if (mClosed) { - return; - } - - try { - miSession.extendToConference(participants); - } catch (RemoteException e) { - } - } - - /** - * Requests the conference server to invite an additional participants to the conference. - * - * @participants participant list to be invited to the conference call - * @see Listener#sessionInviteParticipantsRequestDelivered, - * Listener#sessionInviteParticipantsRequestFailed - */ - public void inviteParticipants(String[] participants) { - if (mClosed) { - return; - } - - try { - miSession.inviteParticipants(participants); - } catch (RemoteException e) { - } - } - - /** - * Requests the conference server to remove the specified participants from the conference. - * - * @param participants participant list to be removed from the conference call - * @see Listener#sessionRemoveParticipantsRequestDelivered, - * Listener#sessionRemoveParticipantsRequestFailed - */ - public void removeParticipants(String[] participants) { - if (mClosed) { - return; - } - - try { - miSession.removeParticipants(participants); - } catch (RemoteException e) { - } - } - - - /** - * Sends a DTMF code. According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833</a>, - * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15, - * and event flash to 16. Currently, event flash is not supported. - * - * @param c the DTMF to send. '0' ~ '9', 'A' ~ 'D', '*', '#' are valid inputs. - */ - public void sendDtmf(char c, Message result) { - if (mClosed) { - return; - } - - try { - miSession.sendDtmf(c, result); - } catch (RemoteException e) { - } - } - - /** - * Starts a DTMF code. According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833</a>, - * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15, - * and event flash to 16. Currently, event flash is not supported. - * - * @param c the DTMF to send. '0' ~ '9', 'A' ~ 'D', '*', '#' are valid inputs. - */ - public void startDtmf(char c) { - if (mClosed) { - return; - } - - try { - miSession.startDtmf(c); - } catch (RemoteException e) { - } - } - - /** - * Stops a DTMF code. - */ - public void stopDtmf() { - if (mClosed) { - return; - } - - try { - miSession.stopDtmf(); - } catch (RemoteException e) { - } - } - - /** - * Sends an USSD message. - * - * @param ussdMessage USSD message to send - */ - public void sendUssd(String ussdMessage) { - if (mClosed) { - return; - } - - try { - miSession.sendUssd(ussdMessage); - } catch (RemoteException e) { - } - } - - /** - * Determines if the session is multiparty. - * - * @return {@code True} if the session is multiparty. - */ - public boolean isMultiparty() { - if (mClosed) { - return false; - } - - try { - return miSession.isMultiparty(); - } catch (RemoteException e) { - return false; - } - } - - /** - * A listener type for receiving notification on IMS call session events. - * When an event is generated for an {@link IImsCallSession}, - * the application is notified by having one of the methods called on - * the {@link IImsCallSessionListener}. - */ - private class IImsCallSessionListenerProxy extends IImsCallSessionListener.Stub { - /** - * Notifies the result of the basic session operation (setup / terminate). - */ - @Override - public void callSessionProgressing(IImsCallSession session, - ImsStreamMediaProfile profile) { - if (mListener != null) { - mListener.callSessionProgressing(ImsCallSession.this, profile); - } - } - - @Override - public void callSessionStarted(IImsCallSession session, - ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionStarted(ImsCallSession.this, profile); - } - } - - @Override - public void callSessionStartFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionStartFailed(ImsCallSession.this, reasonInfo); - } - } - - @Override - public void callSessionTerminated(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionTerminated(ImsCallSession.this, reasonInfo); - } - } - - /** - * Notifies the result of the call hold/resume operation. - */ - @Override - public void callSessionHeld(IImsCallSession session, - ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionHeld(ImsCallSession.this, profile); - } - } - - @Override - public void callSessionHoldFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionHoldFailed(ImsCallSession.this, reasonInfo); - } - } - - @Override - public void callSessionHoldReceived(IImsCallSession session, - ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionHoldReceived(ImsCallSession.this, profile); - } - } - - @Override - public void callSessionResumed(IImsCallSession session, - ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionResumed(ImsCallSession.this, profile); - } - } - - @Override - public void callSessionResumeFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionResumeFailed(ImsCallSession.this, reasonInfo); - } - } - - @Override - public void callSessionResumeReceived(IImsCallSession session, - ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionResumeReceived(ImsCallSession.this, profile); - } - } - - /** - * Notifies the start of a call merge operation. - * - * @param session The call session. - * @param newSession The merged call session. - * @param profile The call profile. - */ - @Override - public void callSessionMergeStarted(IImsCallSession session, - IImsCallSession newSession, ImsCallProfile profile) { - // This callback can be used for future use to add additional - // functionality that may be needed between conference start and complete - Log.d(TAG, "callSessionMergeStarted"); - } - - /** - * Notifies the successful completion of a call merge operation. - * - * @param session The call session. - */ - @Override - public void callSessionMergeComplete(IImsCallSession newSession) { - if (mListener != null) { - if (newSession != null) { - // Check if the active session is the same session that was - // active before the merge request was sent. - ImsCallSession validActiveSession = ImsCallSession.this; - try { - if (!Objects.equals(miSession.getCallId(), newSession.getCallId())) { - // New session created after conference - validActiveSession = new ImsCallSession(newSession); - } - } catch (RemoteException rex) { - Log.e(TAG, "callSessionMergeComplete: exception for getCallId!"); - } - mListener.callSessionMergeComplete(validActiveSession); - } else { - // Session already exists. Hence no need to pass - mListener.callSessionMergeComplete(null); - } - } - } - - /** - * Notifies of a failure to perform a call merge operation. - * - * @param session The call session. - * @param reasonInfo The merge failure reason. - */ - @Override - public void callSessionMergeFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionMergeFailed(ImsCallSession.this, reasonInfo); - } - } - - /** - * Notifies the result of call upgrade / downgrade or any other call updates. - */ - @Override - public void callSessionUpdated(IImsCallSession session, - ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionUpdated(ImsCallSession.this, profile); - } - } - - @Override - public void callSessionUpdateFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionUpdateFailed(ImsCallSession.this, reasonInfo); - } - } - - @Override - public void callSessionUpdateReceived(IImsCallSession session, - ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionUpdateReceived(ImsCallSession.this, profile); - } - } - - /** - * Notifies the result of conference extension. - */ - @Override - public void callSessionConferenceExtended(IImsCallSession session, - IImsCallSession newSession, ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionConferenceExtended(ImsCallSession.this, - new ImsCallSession(newSession), profile); - } - } - - @Override - public void callSessionConferenceExtendFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionConferenceExtendFailed(ImsCallSession.this, reasonInfo); - } - } - - @Override - public void callSessionConferenceExtendReceived(IImsCallSession session, - IImsCallSession newSession, ImsCallProfile profile) { - if (mListener != null) { - mListener.callSessionConferenceExtendReceived(ImsCallSession.this, - new ImsCallSession(newSession), profile); - } - } - - /** - * Notifies the result of the participant invitation / removal to/from - * the conference session. - */ - @Override - public void callSessionInviteParticipantsRequestDelivered(IImsCallSession session) { - if (mListener != null) { - mListener.callSessionInviteParticipantsRequestDelivered(ImsCallSession.this); - } - } - - @Override - public void callSessionInviteParticipantsRequestFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionInviteParticipantsRequestFailed(ImsCallSession.this, - reasonInfo); - } - } - - @Override - public void callSessionRemoveParticipantsRequestDelivered(IImsCallSession session) { - if (mListener != null) { - mListener.callSessionRemoveParticipantsRequestDelivered(ImsCallSession.this); - } - } - - @Override - public void callSessionRemoveParticipantsRequestFailed(IImsCallSession session, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionRemoveParticipantsRequestFailed(ImsCallSession.this, - reasonInfo); - } - } - - /** - * Notifies the changes of the conference info. in the conference session. - */ - @Override - public void callSessionConferenceStateUpdated(IImsCallSession session, - ImsConferenceState state) { - if (mListener != null) { - mListener.callSessionConferenceStateUpdated(ImsCallSession.this, state); - } - } - - /** - * Notifies the incoming USSD message. - */ - @Override - public void callSessionUssdMessageReceived(IImsCallSession session, - int mode, String ussdMessage) { - if (mListener != null) { - mListener.callSessionUssdMessageReceived(ImsCallSession.this, mode, ussdMessage); - } - } - - /** - * Notifies of handover information for this call - */ - @Override - public void callSessionHandover(IImsCallSession session, - int srcAccessTech, int targetAccessTech, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionHandover(ImsCallSession.this, srcAccessTech, - targetAccessTech, reasonInfo); - } - } - - /** - * Notifies of handover failure info for this call - */ - @Override - public void callSessionHandoverFailed(IImsCallSession session, - int srcAccessTech, int targetAccessTech, - ImsReasonInfo reasonInfo) { - if (mListener != null) { - mListener.callSessionHandoverFailed(ImsCallSession.this, srcAccessTech, - targetAccessTech, reasonInfo); - } - } - - /** - * Notifies the TTY mode received from remote party. - */ - @Override - public void callSessionTtyModeReceived(IImsCallSession session, - int mode) { - if (mListener != null) { - mListener.callSessionTtyModeReceived(ImsCallSession.this, mode); - } - } - - /** - * Notifies of a change to the multiparty state for this {@code ImsCallSession}. - * - * @param session The call session. - * @param isMultiParty {@code true} if the session became multiparty, {@code false} - * otherwise. - */ - public void callSessionMultipartyStateChanged(IImsCallSession session, - boolean isMultiParty) { - - if (mListener != null) { - mListener.callSessionMultipartyStateChanged(ImsCallSession.this, isMultiParty); - } - } - - @Override - public void callSessionSuppServiceReceived(IImsCallSession session, - ImsSuppServiceNotification suppServiceInfo ) { - if (mListener != null) { - mListener.callSessionSuppServiceReceived(ImsCallSession.this, suppServiceInfo); - } - } - - } - - /** - * Provides a string representation of the {@link ImsCallSession}. Primarily intended for - * use in log statements. - * - * @return String representation of session. - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("[ImsCallSession objId:"); - sb.append(System.identityHashCode(this)); - sb.append(" state:"); - sb.append(State.toString(getState())); - sb.append(" callId:"); - sb.append(getCallId()); - sb.append("]"); - return sb.toString(); - } -} diff --git a/src/java/com/android/ims/internal/ImsVideoCallProvider.java b/src/java/com/android/ims/internal/ImsVideoCallProvider.java deleted file mode 100644 index 25aa6945..00000000 --- a/src/java/com/android/ims/internal/ImsVideoCallProvider.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.ims.internal; - -import com.android.internal.os.SomeArgs; - -import android.net.Uri; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.os.RemoteException; -import android.telecom.Connection; -import android.telecom.VideoProfile; -import android.telecom.VideoProfile.CameraCapabilities; -import android.view.Surface; - -public abstract class ImsVideoCallProvider { - private static final int MSG_SET_CALLBACK = 1; - private static final int MSG_SET_CAMERA = 2; - private static final int MSG_SET_PREVIEW_SURFACE = 3; - private static final int MSG_SET_DISPLAY_SURFACE = 4; - private static final int MSG_SET_DEVICE_ORIENTATION = 5; - private static final int MSG_SET_ZOOM = 6; - private static final int MSG_SEND_SESSION_MODIFY_REQUEST = 7; - private static final int MSG_SEND_SESSION_MODIFY_RESPONSE = 8; - private static final int MSG_REQUEST_CAMERA_CAPABILITIES = 9; - private static final int MSG_REQUEST_CALL_DATA_USAGE = 10; - private static final int MSG_SET_PAUSE_IMAGE = 11; - - private final ImsVideoCallProviderBinder mBinder; - - private IImsVideoCallCallback mCallback; - - /** - * Default handler used to consolidate binder method calls onto a single thread. - */ - private final Handler mProviderHandler = new Handler(Looper.getMainLooper()) { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_SET_CALLBACK: - mCallback = (IImsVideoCallCallback) msg.obj; - break; - case MSG_SET_CAMERA: - { - SomeArgs args = (SomeArgs) msg.obj; - try { - onSetCamera((String) args.arg1); - onSetCamera((String) args.arg1, args.argi1); - } finally { - args.recycle(); - } - break; - } - case MSG_SET_PREVIEW_SURFACE: - onSetPreviewSurface((Surface) msg.obj); - break; - case MSG_SET_DISPLAY_SURFACE: - onSetDisplaySurface((Surface) msg.obj); - break; - case MSG_SET_DEVICE_ORIENTATION: - onSetDeviceOrientation(msg.arg1); - break; - case MSG_SET_ZOOM: - onSetZoom((Float) msg.obj); - break; - case MSG_SEND_SESSION_MODIFY_REQUEST: { - SomeArgs args = (SomeArgs) msg.obj; - try { - VideoProfile fromProfile = (VideoProfile) args.arg1; - VideoProfile toProfile = (VideoProfile) args.arg2; - - onSendSessionModifyRequest(fromProfile, toProfile); - } finally { - args.recycle(); - } - break; - } - case MSG_SEND_SESSION_MODIFY_RESPONSE: - onSendSessionModifyResponse((VideoProfile) msg.obj); - break; - case MSG_REQUEST_CAMERA_CAPABILITIES: - onRequestCameraCapabilities(); - break; - case MSG_REQUEST_CALL_DATA_USAGE: - onRequestCallDataUsage(); - break; - case MSG_SET_PAUSE_IMAGE: - onSetPauseImage((Uri) msg.obj); - break; - default: - break; - } - } - }; - - /** - * IImsVideoCallProvider stub implementation. - */ - private final class ImsVideoCallProviderBinder extends IImsVideoCallProvider.Stub { - public void setCallback(IImsVideoCallCallback callback) { - mProviderHandler.obtainMessage(MSG_SET_CALLBACK, callback).sendToTarget(); - } - - public void setCamera(String cameraId, int uid) { - SomeArgs args = SomeArgs.obtain(); - args.arg1 = cameraId; - args.argi1 = uid; - mProviderHandler.obtainMessage(MSG_SET_CAMERA, args).sendToTarget(); - } - - public void setPreviewSurface(Surface surface) { - mProviderHandler.obtainMessage(MSG_SET_PREVIEW_SURFACE, surface).sendToTarget(); - } - - public void setDisplaySurface(Surface surface) { - mProviderHandler.obtainMessage(MSG_SET_DISPLAY_SURFACE, surface).sendToTarget(); - } - - public void setDeviceOrientation(int rotation) { - mProviderHandler.obtainMessage(MSG_SET_DEVICE_ORIENTATION, rotation, 0).sendToTarget(); - } - - public void setZoom(float value) { - mProviderHandler.obtainMessage(MSG_SET_ZOOM, value).sendToTarget(); - } - - public void sendSessionModifyRequest(VideoProfile fromProfile, VideoProfile toProfile) { - SomeArgs args = SomeArgs.obtain(); - args.arg1 = fromProfile; - args.arg2 = toProfile; - mProviderHandler.obtainMessage(MSG_SEND_SESSION_MODIFY_REQUEST, args).sendToTarget(); - } - - public void sendSessionModifyResponse(VideoProfile responseProfile) { - mProviderHandler.obtainMessage( - MSG_SEND_SESSION_MODIFY_RESPONSE, responseProfile).sendToTarget(); - } - - public void requestCameraCapabilities() { - mProviderHandler.obtainMessage(MSG_REQUEST_CAMERA_CAPABILITIES).sendToTarget(); - } - - public void requestCallDataUsage() { - mProviderHandler.obtainMessage(MSG_REQUEST_CALL_DATA_USAGE).sendToTarget(); - } - - public void setPauseImage(Uri uri) { - mProviderHandler.obtainMessage(MSG_SET_PAUSE_IMAGE, uri).sendToTarget(); - } - } - - public ImsVideoCallProvider() { - mBinder = new ImsVideoCallProviderBinder(); - } - - /** - * Returns binder object which can be used across IPC methods. - */ - public final IImsVideoCallProvider getInterface() { - return mBinder; - } - - /** @see Connection.VideoProvider#onSetCamera */ - public abstract void onSetCamera(String cameraId); - - /** - * Similar to {@link #onSetCamera(String)}, except includes the UID of the calling process which - * the IMS service uses when opening the camera. This ensures camera permissions are verified - * by the camera service. - * - * @param cameraId The id of the camera to be opened. - * @param uid The uid of the caller, used when opening the camera for permission verification. - * @see Connection.VideoProvider#onSetCamera - */ - public void onSetCamera(String cameraId, int uid) { - } - - /** @see Connection.VideoProvider#onSetPreviewSurface */ - public abstract void onSetPreviewSurface(Surface surface); - - /** @see Connection.VideoProvider#onSetDisplaySurface */ - public abstract void onSetDisplaySurface(Surface surface); - - /** @see Connection.VideoProvider#onSetDeviceOrientation */ - public abstract void onSetDeviceOrientation(int rotation); - - /** @see Connection.VideoProvider#onSetZoom */ - public abstract void onSetZoom(float value); - - /** @see Connection.VideoProvider#onSendSessionModifyRequest */ - public abstract void onSendSessionModifyRequest(VideoProfile fromProfile, - VideoProfile toProfile); - - /** @see Connection.VideoProvider#onSendSessionModifyResponse */ - public abstract void onSendSessionModifyResponse(VideoProfile responseProfile); - - /** @see Connection.VideoProvider#onRequestCameraCapabilities */ - public abstract void onRequestCameraCapabilities(); - - /** @see Connection.VideoProvider#onRequestCallDataUsage */ - public abstract void onRequestCallDataUsage(); - - /** @see Connection.VideoProvider#onSetPauseImage */ - public abstract void onSetPauseImage(Uri uri); - - /** @see Connection.VideoProvider#receiveSessionModifyRequest */ - public void receiveSessionModifyRequest(VideoProfile VideoProfile) { - if (mCallback != null) { - try { - mCallback.receiveSessionModifyRequest(VideoProfile); - } catch (RemoteException ignored) { - } - } - } - - /** @see Connection.VideoProvider#receiveSessionModifyResponse */ - public void receiveSessionModifyResponse( - int status, VideoProfile requestedProfile, VideoProfile responseProfile) { - if (mCallback != null) { - try { - mCallback.receiveSessionModifyResponse(status, requestedProfile, responseProfile); - } catch (RemoteException ignored) { - } - } - } - - /** @see Connection.VideoProvider#handleCallSessionEvent */ - public void handleCallSessionEvent(int event) { - if (mCallback != null) { - try { - mCallback.handleCallSessionEvent(event); - } catch (RemoteException ignored) { - } - } - } - - /** @see Connection.VideoProvider#changePeerDimensions */ - public void changePeerDimensions(int width, int height) { - if (mCallback != null) { - try { - mCallback.changePeerDimensions(width, height); - } catch (RemoteException ignored) { - } - } - } - - /** @see Connection.VideoProvider#changeCallDataUsage */ - public void changeCallDataUsage(long dataUsage) { - if (mCallback != null) { - try { - mCallback.changeCallDataUsage(dataUsage); - } catch (RemoteException ignored) { - } - } - } - - /** @see Connection.VideoProvider#changeCameraCapabilities */ - public void changeCameraCapabilities(CameraCapabilities CameraCapabilities) { - if (mCallback != null) { - try { - mCallback.changeCameraCapabilities(CameraCapabilities); - } catch (RemoteException ignored) { - } - } - } - - /** @see Connection.VideoProvider#changeVideoQuality */ - public void changeVideoQuality(int videoQuality) { - if (mCallback != null) { - try { - mCallback.changeVideoQuality(videoQuality); - } catch (RemoteException ignored) { - } - } - } -} |