Fix lpdk build.

Move aidl files from frameworks/opt/net/ims to frameworks/base so lpdk
compiles. The reason is lpdk doesn't have frameworks/base sources so
references to Pending and Bundle in aidl files breaks the pdk build.

I had to move all of them and the ims/*java files for dependency reasons.

Change-Id: I92452562591b157cecdfc01bcd892c4f35f5965c
This commit is contained in:
Wink Saville
2014-06-25 16:08:02 -07:00
parent 226a51958d
commit f8458ff9d9
21 changed files with 1756 additions and 0 deletions

View File

@ -336,6 +336,13 @@ LOCAL_SRC_FILES += \
telecomm/java/com/android/internal/telecomm/IInCallService.aidl \
telecomm/java/com/android/internal/telecomm/ITelecommService.aidl \
telecomm/java/com/android/internal/telecomm/RemoteServiceCallback.aidl \
telephony/java/com/android/ims/internal/IImsCallSession.aidl \
telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl \
telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl \
telephony/java/com/android/ims/internal/IImsService.aidl \
telephony/java/com/android/ims/internal/IImsStreamMediaSession.aidl \
telephony/java/com/android/ims/internal/IImsUt.aidl \
telephony/java/com/android/ims/internal/IImsUtListener.aidl \
telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl \
telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl \
telephony/java/com/android/internal/telephony/ITelephony.aidl \

View File

@ -203,6 +203,8 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framew
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/android/app/maintenance)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src/android/app/maintenance)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/services_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates)
# ******************************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST ABOVE THIS BANNER

View File

@ -0,0 +1,19 @@
/*
* 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;
parcelable ImsCallForwardInfo;

View File

@ -0,0 +1,88 @@
/*
* 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.Parcel;
import android.os.Parcelable;
/**
* Provides the call forward information for the supplementary service configuration.
*
* @hide
*/
public class ImsCallForwardInfo implements Parcelable {
// Refer to ImsUtInterface#CDIV_CF_XXX
public int mCondition;
// 0: disabled, 1: enabled
public int mStatus;
// 0x91: International, 0x81: Unknown
public int mToA;
// Number (it will not include the "sip" or "tel" URI scheme)
public String mNumber;
// No reply timer for CF
public int mTimeSeconds;
public ImsCallForwardInfo() {
}
public ImsCallForwardInfo(Parcel in) {
readFromParcel(in);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mCondition);
out.writeInt(mStatus);
out.writeInt(mToA);
out.writeString(mNumber);
out.writeInt(mTimeSeconds);
}
@Override
public String toString() {
return super.toString() + ", Condition: " + mCondition
+ ", Status: " + ((mStatus == 0) ? "disabled" : "enabled")
+ ", ToA: " + mToA + ", Number=" + mNumber
+ ", Time (seconds): " + mTimeSeconds;
}
private void readFromParcel(Parcel in) {
mCondition = in.readInt();
mStatus = in.readInt();
mToA = in.readInt();
mNumber = in.readString();
mTimeSeconds = in.readInt();
}
public static final Creator<ImsCallForwardInfo> CREATOR =
new Creator<ImsCallForwardInfo>() {
@Override
public ImsCallForwardInfo createFromParcel(Parcel in) {
return new ImsCallForwardInfo(in);
}
@Override
public ImsCallForwardInfo[] newArray(int size) {
return new ImsCallForwardInfo[size];
}
};
}

View File

@ -0,0 +1,19 @@
/*
* 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;
parcelable ImsCallProfile;

View File

@ -0,0 +1,289 @@
/*
* 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.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Parcelable object to handle IMS call profile.
* It is created from GSMA IR.92/IR.94, 3GPP TS 24.229/TS 26.114/TS26.111.
* It provides the service and call type, the additional information related to the call.
*
* @hide
*/
public class ImsCallProfile implements Parcelable {
private static final String TAG = "ImsCallProfile";
/**
* Service types
*/
/**
* It is for a special case. It helps that the application can make a call
* without IMS connection (not registered).
* In the moment of the call initiation, the device try to connect to the IMS network
* and initiates the call.
*/
public static final int SERVICE_TYPE_NONE = 0;
/**
* It is a default type and can be selected when the device is connected to the IMS network.
*/
public static final int SERVICE_TYPE_NORMAL = 1;
/**
* It is for an emergency call.
*/
public static final int SERVICE_TYPE_EMERGENCY = 2;
/**
* Call types
*/
/**
* IMSPhone to support IR.92 & IR.94 (voice + video upgrade/downgrade)
*/
public static final int CALL_TYPE_VOICE_N_VIDEO = 1;
/**
* IR.92 (Voice only)
*/
public static final int CALL_TYPE_VOICE = 2;
/**
* VT to support IR.92 & IR.94 (voice + video upgrade/downgrade)
*/
public static final int CALL_TYPE_VIDEO_N_VOICE = 3;
/**
* Video Telephony (audio / video two way)
*/
public static final int CALL_TYPE_VT = 4;
/**
* Video Telephony (audio two way / video TX one way)
*/
public static final int CALL_TYPE_VT_TX = 5;
/**
* Video Telephony (audio two way / video RX one way)
*/
public static final int CALL_TYPE_VT_RX = 6;
/**
* Video Telephony (audio two way / video inactive)
*/
public static final int CALL_TYPE_VT_NODIR = 7;
/**
* VideoShare (video two way)
*/
public static final int CALL_TYPE_VS = 8;
/**
* VideoShare (video TX one way)
*/
public static final int CALL_TYPE_VS_TX = 9;
/**
* VideoShare (video RX one way)
*/
public static final int CALL_TYPE_VS_RX = 10;
/**
* Extra properties for IMS call.
*/
/**
* Boolean extra properties - "true" / "false"
* conference : Indicates if the session is for the conference call or not.
* e_call : Indicates if the session is for the emergency call or not.
* vms : Indicates if the session is connected to the voice mail system or not.
* call_mode_changeable : Indicates if the session is able to upgrade/downgrade
* the video during voice call.
* conference_avail : Indicates if the session can be extended to the conference.
*/
public static final String EXTRA_CONFERENCE = "conference";
public static final String EXTRA_E_CALL = "e_call";
public static final String EXTRA_VMS = "vms";
public static final String EXTRA_CALL_MODE_CHANGEABLE = "call_mode_changeable";
public static final String EXTRA_CONFERENCE_AVAIL = "conference_avail";
/**
* Integer extra properties
* oir : Rule for originating identity (number) presentation, MO/MT.
* {@link ImsCallProfile#OIR_DEFAULT}
* {@link ImsCallProfile#OIR_PRESENTATION_RESTRICTED}
* {@link ImsCallProfile#OIR_PRESENTATION_NOT_RESTRICTED}
* cnap : Rule for calling name presentation
* {@link ImsCallProfile#OIR_DEFAULT}
* {@link ImsCallProfile#OIR_PRESENTATION_RESTRICTED}
* {@link ImsCallProfile#OIR_PRESENTATION_NOT_RESTRICTED}
* dialstring : To identify the Ims call type, MO
* {@link ImsCallProfile#DIALSTRING_NORMAL_CALL}
* {@link ImsCallProfile#DIALSTRING_SS_CONF}
* {@link ImsCallProfile#DIALSTRING_USSD}
*/
public static final String EXTRA_OIR = "oir";
public static final String EXTRA_CNAP = "cnap";
public static final String EXTRA_DIALSTRING = "dialstring";
/**
* Values for EXTRA_OIR / EXTRA_CNAP
*/
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;
/**
* Values for EXTRA_DIALSTRING
*/
// default (normal call)
public static final int DIALSTRING_NORMAL = 0;
// Call for SIP-based user configuration
public static final int DIALSTRING_SS_CONF = 1;
// Call for USSD message
public static final int DIALSTRING_USSD = 2;
/**
* String extra properties
* oi : Originating identity (number), MT only
* cna : Calling name
* ussd : For network-initiated USSD, MT only
* remote_uri : Connected user identity (it can be used for the conference)
*/
public static final String EXTRA_OI = "oi";
public static final String EXTRA_CNA = "cna";
public static final String EXTRA_USSD = "ussd";
public static final String EXTRA_REMOTE_URI = "remote_uri";
public int mServiceType;
public int mCallType;
public Bundle mCallExtras;
public ImsStreamMediaProfile mMediaProfile;
public ImsCallProfile(Parcel in) {
readFromParcel(in);
}
public ImsCallProfile() {
mServiceType = SERVICE_TYPE_NORMAL;
mCallType = CALL_TYPE_VOICE_N_VIDEO;
mCallExtras = new Bundle();
mMediaProfile = new ImsStreamMediaProfile();
}
public ImsCallProfile(int serviceType, int callType) {
mServiceType = serviceType;
mCallType = callType;
mCallExtras = new Bundle();
mMediaProfile = new ImsStreamMediaProfile();
}
public String getCallExtra(String name) {
return getCallExtra(name, "");
}
public String getCallExtra(String name, String defaultValue) {
if (mCallExtras == null) {
return defaultValue;
}
return mCallExtras.getString(name, defaultValue);
}
public boolean getCallExtraBoolean(String name) {
return getCallExtraBoolean(name, false);
}
public boolean getCallExtraBoolean(String name, boolean defaultValue) {
if (mCallExtras == null) {
return defaultValue;
}
return mCallExtras.getBoolean(name, defaultValue);
}
public int getCallExtraInt(String name) {
return getCallExtraInt(name, -1);
}
public int getCallExtraInt(String name, int defaultValue) {
if (mCallExtras == null) {
return defaultValue;
}
return mCallExtras.getInt(name, defaultValue);
}
public void setCallExtra(String name, String value) {
if (mCallExtras != null) {
mCallExtras.putString(name, value);
}
}
public void setCallExtraBoolean(String name, boolean value) {
if (mCallExtras != null) {
mCallExtras.putBoolean(name, value);
}
}
public void setCallExtraInt(String name, int value) {
if (mCallExtras != null) {
mCallExtras.putInt(name, value);
}
}
public void updateCallType(ImsCallProfile profile) {
mCallType = profile.mCallType;
}
public void updateCallExtras(ImsCallProfile profile) {
mCallExtras.clear();
mCallExtras = (Bundle) profile.mCallExtras.clone();
}
@Override
public String toString() {
return "{ serviceType=" + mServiceType +
", callType=" + mCallType +
", callExtras=" + mCallExtras.toString() +
", mediaProfile=" + mMediaProfile.toString() + " }";
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mServiceType);
out.writeInt(mCallType);
out.writeParcelable(mCallExtras, 0);
out.writeParcelable(mMediaProfile, 0);
}
private void readFromParcel(Parcel in) {
mServiceType = in.readInt();
mCallType = in.readInt();
mCallExtras = in.readParcelable(null);
mMediaProfile = in.readParcelable(null);
}
public static final Creator<ImsCallProfile> CREATOR = new Creator<ImsCallProfile>() {
@Override
public ImsCallProfile createFromParcel(Parcel in) {
return new ImsCallProfile(in);
}
@Override
public ImsCallProfile[] newArray(int size) {
return new ImsCallProfile[size];
}
};
}

View File

@ -0,0 +1,19 @@
/*
* 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;
parcelable ImsConferenceState;

View File

@ -0,0 +1,142 @@
/*
* 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 java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Provides the conference information (defined in RFC 4575) for IMS conference call.
*
* @hide
*/
public class ImsConferenceState implements Parcelable {
/**
* conference-info : user
*/
// user (String) : Tel or SIP URI
public static final String USER = "user";
// user > display text (String)
public static final String DISPLAY_TEXT = "display-text";
// user > endpoint (String) : URI or GRUU or Phone number
public static final String ENDPOINT = "endpoint";
// user > endpoint > status
public static final String STATUS = "status";
/**
* status-type (String) :
* "pending" : Endpoint is not yet in the session, but it is anticipated that he/she will
* join in the near future.
* "dialing-out" : Focus has dialed out to connect the endpoint to the conference,
* but the endpoint is not yet in the roster (probably being authenticated).
* "dialing-in" : Endpoint is dialing into the conference, not yet in the roster
* (probably being authenticated).
* "alerting" : PSTN alerting or SIP 180 Ringing was returned for the outbound call;
* endpoint is being alerted.
* "on-hold" : Active signaling dialog exists between an endpoint and a focus,
* but endpoint is "on-hold" for this conference, i.e., he/she is neither "hearing"
* the conference mix nor is his/her media being mixed in the conference.
* "connected" : Endpoint is a participant in the conference. Depending on the media policies,
* he/she can send and receive media to and from other participants.
* "disconnecting" : Focus is in the process of disconnecting the endpoint
* (e.g. in SIP a DISCONNECT or BYE was sent to the endpoint).
* "disconnected" : Endpoint is not a participant in the conference, and no active dialog
* exists between the endpoint and the focus.
* "muted-via-focus" : Active signaling dialog exists beween an endpoint and a focus and
* the endpoint can "listen" to the conference, but the endpoint's media is not being
* mixed into the conference.
* "connect-fail" : Endpoint fails to join the conference by rejecting the conference call.
*/
public static final String STATUS_PENDING = "pending";
public static final String STATUS_DIALING_OUT = "dialing-out";
public static final String STATUS_DIALING_IN = "dialing-in";
public static final String STATUS_ALERTING = "alerting";
public static final String STATUS_ON_HOLD = "on-hold";
public static final String STATUS_CONNECTED = "connected";
public static final String STATUS_DISCONNECTING = "disconnecting";
public static final String STATUS_DISCONNECTED = "disconnected";
public static final String STATUS_MUTED_VIA_FOCUS = "muted-via-focus";
public static final String STATUS_CONNECT_FAIL = "connect-fail";
/**
* conference-info : SIP status code (integer)
*/
public static final String SIP_STATUS_CODE = "sipstatuscode";
public HashMap<String, Bundle> mParticipants = new HashMap<String, Bundle>();
public ImsConferenceState() {
}
public ImsConferenceState(Parcel in) {
readFromParcel(in);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mParticipants.size());
if (mParticipants.size() > 0) {
Set<Entry<String, Bundle>> entries = mParticipants.entrySet();
if (entries != null) {
Iterator<Entry<String, Bundle>> iterator = entries.iterator();
while (iterator.hasNext()) {
Entry<String, Bundle> entry = iterator.next();
out.writeString(entry.getKey());
out.writeParcelable(entry.getValue(), 0);
}
}
}
}
private void readFromParcel(Parcel in) {
int size = in.readInt();
for (int i = 0; i < size; ++i) {
String user = in.readString();
Bundle state = in.readParcelable(null);
mParticipants.put(user, state);
}
}
public static final Creator<ImsConferenceState> CREATOR =
new Creator<ImsConferenceState>() {
@Override
public ImsConferenceState createFromParcel(Parcel in) {
return new ImsConferenceState(in);
}
@Override
public ImsConferenceState[] newArray(int size) {
return new ImsConferenceState[size];
}
};
}

View File

@ -0,0 +1,19 @@
/*
* 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;
parcelable ImsReasonInfo;

View File

@ -0,0 +1,326 @@
/*
* 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.Parcel;
import android.os.Parcelable;
/**
* This class enables an application to get details on why a method call failed.
*
* @hide
*/
public class ImsReasonInfo implements Parcelable {
/**
* Reason types, defines the error category.
* UNSPECIFIED - unknown error reason
* LOCAL - indicates the local/device error reason
* LOCAL_TIMEOUT - indicates the local error reason when a specific timer is expired
* STATUSCODE - indicates the interworking error reason by SIP status code received
* from the network
* MEDIA - indicates the media error reason (local resource, SDP parameter, etc.)
* USER - indicates the error reason by the local or remote user
* UT - indicates the error reason for the supplementary service configuration
*/
public static final int TYPE_UNSPECIFIED = 0;
public static final int TYPE_LOCAL = 1;
public static final int TYPE_TIMEOUT = 2;
public static final int TYPE_STATUSCODE = 3;
public static final int TYPE_MEDIA = 4;
public static final int TYPE_USER = 5;
public static final int TYPE_UT = 8;
/**
* Specific code of each types
*/
public static final int CODE_UNSPECIFIED = 0;
/**
* LOCAL
*/
// IMS -> Telephony
// The passed argument is an invalid
public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101;
// The operation is invoked in invalid call state
public static final int CODE_LOCAL_ILLEGAL_STATE = 102;
// IMS service internal error
public static final int CODE_LOCAL_INTERNAL_ERROR = 103;
// IMS service goes down (service connection is lost)
public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106;
// No pending incoming call exists
public static final int CODE_LOCAL_NO_PENDING_CALL = 107;
// IMS -> Telephony
// Service unavailable; by power off
public static final int CODE_LOCAL_POWER_OFF = 111;
// Service unavailable; by low battery
public static final int CODE_LOCAL_LOW_BATTERY = 112;
// Service unavailable; by out of service (data service state)
public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121;
// Service unavailable; by no LTE coverage
// (VoLTE is not supported even though IMS is registered)
public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122;
// Service unavailable; by located in roaming area
public static final int CODE_LOCAL_NETWORK_ROAMING = 123;
// Service unavailable; by IP changed
public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124;
// Service unavailable; other
public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131;
// Service unavailable; IMS connection is lost (IMS is not registered)
public static final int CODE_LOCAL_NOT_REGISTERED = 132;
// IMS <-> Telephony
// Max call exceeded
public static final int CODE_LOCAL_CALL_EXCEEDED = 141;
// IMS <- Telephony
// Call busy
public static final int CODE_LOCAL_CALL_BUSY = 142;
// Call decline
public static final int CODE_LOCAL_CALL_DECLINE = 143;
// IMS -> Telephony
// SRVCC is in progress
public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144;
// Resource reservation is failed (QoS precondition)
public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145;
// Retry CS call; VoLTE service can't be provided by the network or remote end
// Resolve the extra code(EXTRA_CODE_CALL_RETRY_*) if the below code is set
public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146;
// Retry VoLTE call; VoLTE service can't be provided by the network temporarily
public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147;
// IMS call is already terminated (in TERMINATED state)
public static final int CODE_LOCAL_CALL_TERMINATED = 148;
/**
* TIMEOUT (IMS -> Telephony)
*/
// 1xx waiting timer is expired after sending INVITE request (MO only)
public static final int CODE_TIMEOUT_1XX_WAITING = 201;
// User no answer during call setup operation (MO/MT)
// MO : 200 OK to INVITE request is not received,
// MT : No action from user after alerting the call
public static final int CODE_TIMEOUT_NO_ANSWER = 202;
// User no answer during call update operation (MO/MT)
// MO : 200 OK to re-INVITE request is not received,
// MT : No action from user after alerting the call
public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203;
/**
* STATUSCODE (SIP response code) (IMS -> Telephony)
*/
// 3xx responses
// SIP request is redirected
public static final int CODE_SIP_REDIRECTED = 321;
// 4xx responses
// 400 : Bad Request
public static final int CODE_SIP_BAD_REQUEST = 331;
// 403 : Forbidden
public static final int CODE_SIP_FORBIDDEN = 332;
// 404 : Not Found
public static final int CODE_SIP_NOT_FOUND = 333;
// 415 : Unsupported Media Type
// 416 : Unsupported URI Scheme
// 420 : Bad Extension
public static final int CODE_SIP_NOT_SUPPORTED = 334;
// 408 : Request Timeout
public static final int CODE_SIP_REQUEST_TIMEOUT = 335;
// 480 : Temporarily Unavailable
public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336;
// 484 : Address Incomplete
public static final int CODE_SIP_BAD_ADDRESS = 337;
// 486 : Busy Here
// 600 : Busy Everywhere
public static final int CODE_SIP_BUSY = 338;
// 487 : Request Terminated
public static final int CODE_SIP_REQUEST_CANCELLED = 339;
// 406 : Not Acceptable
// 488 : Not Acceptable Here
// 606 : Not Acceptable
public static final int CODE_SIP_NOT_ACCEPTABLE = 340;
// 410 : Gone
// 604 : Does Not Exist Anywhere
public static final int CODE_SIP_NOT_REACHABLE = 341;
// Others
public static final int CODE_SIP_CLIENT_ERROR = 342;
// 5xx responses
// 501 : Server Internal Error
public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351;
// 503 : Service Unavailable
public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352;
// 504 : Server Time-out
public static final int CODE_SIP_SERVER_TIMEOUT = 353;
// Others
public static final int CODE_SIP_SERVER_ERROR = 354;
// 6xx responses
// 603 : Decline
public static final int CODE_SIP_USER_REJECTED = 361;
// Others
public static final int CODE_SIP_GLOBAL_ERROR = 362;
/**
* MEDIA (IMS -> Telephony)
*/
// Media resource initialization failed
public static final int CODE_MEDIA_INIT_FAILED = 401;
// RTP timeout (no audio / video traffic in the session)
public static final int CODE_MEDIA_NO_DATA = 402;
// Media is not supported; so dropped the call
public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403;
// Unknown media related errors
public static final int CODE_MEDIA_UNSPECIFIED = 404;
/**
* USER
*/
// Telephony -> IMS
// User triggers the call end
public static final int CODE_USER_TERMINATED = 501;
// No action while an incoming call is ringing
public static final int CODE_USER_NOANSWER = 502;
// User ignores an incoming call
public static final int CODE_USER_IGNORE = 503;
// User declines an incoming call
public static final int CODE_USER_DECLINE = 504;
// IMS -> Telephony
// The call is terminated by the network or remote user
public static final int CODE_USER_TERMINATED_BY_REMOTE = 510;
/**
* Extra codes for the specific code value
* This value can be referred when the code is CODE_LOCAL_CALL_CS_RETRY_REQUIRED.
*/
// Try to connect CS call; normal
public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1;
// Try to connect CS call without the notification to user
public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2;
// Try to connect CS call by the settings of the menu
public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3;
/**
* UT
*/
public static final int CODE_UT_NOT_SUPPORTED = 801;
public static final int CODE_UT_SERVICE_UNAVAILABLE = 802;
public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803;
public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821;
// For reason type
public int mReasonType;
// For main reason code
public int mCode;
// For the extra code value; it depends on the code value.
public int mExtraCode;
// For the additional message of the reason info.
public String mExtraMessage;
public ImsReasonInfo() {
mReasonType = TYPE_UNSPECIFIED;
mCode = CODE_UNSPECIFIED;
mExtraCode = CODE_UNSPECIFIED;
mExtraMessage = null;
}
public ImsReasonInfo(Parcel in) {
readFromParcel(in);
}
public ImsReasonInfo(int code, int extraCode) {
mReasonType = (int) (code / 100);
mCode = code;
mExtraCode = extraCode;
mExtraMessage = null;
}
public ImsReasonInfo(int code, int extraCode, String extraMessage) {
mReasonType = (int) (code / 100);
mCode = code;
mExtraCode = extraCode;
mExtraMessage = extraMessage;
}
/**
*
*/
public int getCode() {
return mCode;
}
/**
*
*/
public int getExtraCode() {
return mExtraCode;
}
/**
*
*/
public String getExtraMessage() {
return mExtraMessage;
}
/**
*
*/
public int getReasonType() {
return mReasonType;
}
/**
* Returns the string format of {@link ImsReasonInfo}
*
* @return the string format of {@link ImsReasonInfo}
*/
public String toString() {
return "ImsReasonInfo :: {" + mReasonType + ", "
+ mCode + ", " + mExtraCode + ", " + mExtraMessage + "}";
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mReasonType);
out.writeInt(mCode);
out.writeInt(mExtraCode);
out.writeString(mExtraMessage);
}
private void readFromParcel(Parcel in) {
mReasonType = in.readInt();
mCode = in.readInt();
mExtraCode = in.readInt();
mExtraMessage = in.readString();
}
public static final Creator<ImsReasonInfo> CREATOR = new Creator<ImsReasonInfo>() {
@Override
public ImsReasonInfo createFromParcel(Parcel in) {
return new ImsReasonInfo(in);
}
@Override
public ImsReasonInfo[] newArray(int size) {
return new ImsReasonInfo[size];
}
};
}

View File

@ -0,0 +1,19 @@
/*
* 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;
parcelable ImsSsInfo;

View File

@ -0,0 +1,76 @@
/*
* 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.Parcel;
import android.os.Parcelable;
/**
* Provides the result to the update operation for the supplementary service configuration.
*
* @hide
*/
public class ImsSsInfo implements Parcelable {
/**
* For the status of service registration or activation/deactivation.
*/
public static final int NOT_REGISTERED = (-1);
public static final int DISABLED = 0;
public static final int ENABLED = 1;
// 0: disabled, 1: enabled
public int mStatus;
public ImsSsInfo() {
}
public ImsSsInfo(Parcel in) {
readFromParcel(in);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mStatus);
}
@Override
public String toString() {
return super.toString() + ", Status: " + ((mStatus == 0) ? "disabled" : "enabled");
}
private void readFromParcel(Parcel in) {
mStatus = in.readInt();
}
public static final Creator<ImsSsInfo> CREATOR =
new Creator<ImsSsInfo>() {
@Override
public ImsSsInfo createFromParcel(Parcel in) {
return new ImsSsInfo(in);
}
@Override
public ImsSsInfo[] newArray(int size) {
return new ImsSsInfo[size];
}
};
}

View File

@ -0,0 +1,19 @@
/*
* 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;
parcelable ImsStreamMediaProfile;

View File

@ -0,0 +1,132 @@
/*
* 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.Parcel;
import android.os.Parcelable;
/**
* Parcelable object to handle IMS stream media profile.
* It provides the media direction, quality of audio and/or video.
*
* @hide
*/
public class ImsStreamMediaProfile implements Parcelable {
private static final String TAG = "ImsStreamMediaProfile";
/**
* Media directions
*/
public static final int DIRECTION_INVALID = (-1);
public static final int DIRECTION_INACTIVE = 0;
public static final int DIRECTION_RECEIVE = 1;
public static final int DIRECTION_SEND = 2;
public static final int DIRECTION_SEND_RECEIVE = 3;
/**
* Audio information
*/
public static final int AUDIO_QUALITY_NONE = 0;
public static final int AUDIO_QUALITY_AMR = (1 << 0);
public static final int AUDIO_QUALITY_AMR_WB = (1 << 1);
/**
* Video information
*/
public static final int VIDEO_QUALITY_NONE = 0;
public static final int VIDEO_QUALITY_QCIF = (1 << 0);
public static final int VIDEO_QUALITY_QVGA_LANDSCAPE = (1 << 1);
public static final int VIDEO_QUALITY_QVGA_PORTRAIT = (1 << 2);
public static final int VIDEO_QUALITY_VGA_LANDSCAPE = (1 << 3);
public static final int VIDEO_QUALITY_VGA_PORTRAIT = (1 << 4);
// Audio related information
public int mAudioQuality;
public int mAudioDirection;
// Video related information
public int mVideoQuality;
public int mVideoDirection;
public ImsStreamMediaProfile(Parcel in) {
readFromParcel(in);
}
public ImsStreamMediaProfile() {
mAudioQuality = AUDIO_QUALITY_AMR_WB;
mAudioDirection = DIRECTION_SEND_RECEIVE;
mVideoQuality = VIDEO_QUALITY_NONE;
mVideoDirection = DIRECTION_INVALID;
}
public ImsStreamMediaProfile(int audioQuality, int audioDirection,
int videoQuality, int videoDirection) {
mAudioQuality = audioQuality;
mAudioDirection = audioDirection;
mVideoQuality = videoQuality;
mVideoDirection = videoDirection;
}
public void copyFrom(ImsStreamMediaProfile profile) {
mAudioQuality = profile.mAudioQuality;
mAudioDirection = profile.mAudioDirection;
mVideoQuality = profile.mVideoQuality;
mVideoDirection = profile.mVideoDirection;
}
@Override
public String toString() {
return "{ audioQuality=" + mAudioQuality +
", audioDirection=" + mAudioDirection +
", videoQuality=" + mVideoQuality +
", videoDirection=" + mVideoDirection + " }";
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mAudioQuality);
out.writeInt(mAudioDirection);
out.writeInt(mVideoQuality);
out.writeInt(mVideoDirection);
}
private void readFromParcel(Parcel in) {
mAudioQuality = in.readInt();
mAudioDirection = in.readInt();
mVideoQuality = in.readInt();
mVideoDirection = in.readInt();
}
public static final Creator<ImsStreamMediaProfile> CREATOR =
new Creator<ImsStreamMediaProfile>() {
@Override
public ImsStreamMediaProfile createFromParcel(Parcel in) {
return new ImsStreamMediaProfile(in);
}
@Override
public ImsStreamMediaProfile[] newArray(int size) {
return new ImsStreamMediaProfile[size];
}
};
}

View File

@ -0,0 +1,219 @@
/*
* 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 com.android.ims.ImsCallProfile;
import com.android.ims.ImsStreamMediaProfile;
import com.android.ims.internal.IImsCallSessionListener;
/**
* An IMS session that is associated with a SIP dialog which is established from/to
* INVITE request or a mid-call transaction to control the session.
* {@hide}
*/
interface IImsCallSession {
/**
* Closes the object. This object is not usable after being closed.
*/
void close();
/**
* Gets the call ID of the session.
*
* @return the call ID
*/
String getCallId();
/**
* Gets the call profile that this session is associated with
*
* @return the call profile that this session is associated with
*/
ImsCallProfile getCallProfile();
/**
* Gets the local call profile that this session is associated with
*
* @return the local call profile that this session is associated with
*/
ImsCallProfile getLocalCallProfile();
/**
* Gets the value associated with the specified property of this session.
*
* @return the string value associated with the specified property
*/
String getProperty(String name);
/**
* Gets the session state. The value returned must be one of the states in
* {@link ImsCallSession#State}.
*
* @return the session state
*/
int getState();
/**
* Checks if the session is in a call.
*
* @return true if the session is in a call
*/
boolean isInCall();
/**
* Sets the listener to listen to the session events. A {@link IImsCallSession}
* 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
*/
void setListener(in IImsCallSessionListener listener);
/**
* Mutes or unmutes the mic for the active call.
*
* @param muted true if the call is muted, false otherwise
*/
void setMute(boolean muted);
/**
* 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
*/
void start(String callee, in ImsCallProfile profile);
/**
* Initiates an IMS call with the specified participants 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
*/
void startConference(in String[] participants, in ImsCallProfile profile);
/**
* 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
*/
void accept(int callType, in ImsStreamMediaProfile profile);
/**
* Rejects an incoming call or session update.
*
* @param reason reason code to reject an incoming call
* @see Listener#callSessionStartFailed
*/
void reject(int reason);
/**
* Terminates a call.
*
* @see Listener#callSessionTerminated
*/
void terminate(int reason);
/**
* 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
*/
void hold(in ImsStreamMediaProfile profile);
/**
* 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
*/
void resume(in ImsStreamMediaProfile profile);
/**
* Merges the active & hold call. When it succeeds, {@link Listener#callSessionMerged}
* is called.
*
* @see Listener#callSessionMerged, Listener#callSessionMergeFailed
*/
void merge();
/**
* 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
*/
void update(int callType, in ImsStreamMediaProfile profile);
/**
* 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
*/
void extendToConference(in String[] participants);
/**
* 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
*/
void inviteParticipants(in String[] participants);
/**
* 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
*/
void removeParticipants(in String[] participants);
/**
* 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 code the DTMF to send. Value 0 to 15 (inclusive) are valid inputs.
* @param duration the interval in milli-seconds between the DTMFs
*/
void sendDtmf(int code, int duration);
/**
* Sends an USSD message.
*
* @param ussdMessage USSD message to send
*/
void sendUssd(String ussdMessage);
}

View File

@ -0,0 +1,99 @@
/*
* 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 com.android.ims.ImsStreamMediaProfile;
import com.android.ims.ImsCallProfile;
import com.android.ims.ImsReasonInfo;
import com.android.ims.ImsConferenceState;
import com.android.ims.internal.IImsCallSession;
/**
* 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}.
* {@hide}
*/
interface IImsCallSessionListener {
/**
* Notifies the result of the basic session operation (setup / terminate).
*/
void callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile);
void callSessionStarted(in IImsCallSession session, in ImsCallProfile profile);
void callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
void callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo);
/**
* Notifies the result of the call hold/resume operation.
*/
void callSessionHeld(in IImsCallSession session, in ImsCallProfile profile);
void callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
void callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile);
void callSessionResumed(in IImsCallSession session, in ImsCallProfile profile);
void callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
void callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile);
/**
* Notifiies the result of call merge operation.
*/
void callSessionMerged(in IImsCallSession session,
in IImsCallSession newSession, in ImsCallProfile profile);
void callSessionMergeFailed(in IImsCallSession session,
in ImsReasonInfo reasonInfo);
/**
* Notifies the result of call upgrade / downgrade or any other call updates.
*/
void callSessionUpdated(in IImsCallSession session,
in ImsCallProfile profile);
void callSessionUpdateFailed(in IImsCallSession session,
in ImsReasonInfo reasonInfo);
void callSessionUpdateReceived(in IImsCallSession session,
in ImsCallProfile profile);
/**
* Notifies the result of conference extension.
*/
void callSessionConferenceExtended(in IImsCallSession session,
in IImsCallSession newSession, in ImsCallProfile profile);
void callSessionConferenceExtendFailed(in IImsCallSession session,
in ImsReasonInfo reasonInfo);
void callSessionConferenceExtendReceived(in IImsCallSession session,
in IImsCallSession newSession, in ImsCallProfile profile);
/**
* Notifies the result of the participant invitation / removal to/from the conference session.
*/
void callSessionInviteParticipantsRequestDelivered(in IImsCallSession session);
void callSessionInviteParticipantsRequestFailed(in IImsCallSession session,
in ImsReasonInfo reasonInfo);
void callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session);
void callSessionRemoveParticipantsRequestFailed(in IImsCallSession session,
in ImsReasonInfo reasonInfo);
/**
* Notifies the changes of the conference info. in the conference session.
*/
void callSessionConferenceStateUpdated(in IImsCallSession session,
in ImsConferenceState state);
/**
* Notifies the incoming USSD message.
*/
void callSessionUssdMessageReceived(in IImsCallSession session,
int mode, String ussdMessage);
}

View File

@ -0,0 +1,58 @@
/*
* 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;
/**
* A listener type for receiving notifications about the changes to
* the IMS connection(registration).
*
* {@hide}
*/
interface IImsRegistrationListener {
/**
* Notifies the application when the device is connected to the IMS network.
*/
void registrationConnected();
/**
* Notifies the application when the device is disconnected from the IMS network.
*/
void registrationDisconnected();
/**
* Notifies the application when its suspended IMS connection is resumed,
* meaning the connection now allows throughput.
*/
void registrationResumed();
/**
* Notifies the application when its current IMS connection is suspended,
* meaning there is no data throughput.
*/
void registrationSuspended();
/**
* Notifies the application when its current IMS connection is updated
* since the service setting is changed or the service is added/removed.
*
* @param serviceClass a service class specified in {@link ImsServiceClass}
* @param event an event type when this callback is called
* If {@code event} is 0, meaning the specified service is removed from the IMS connection.
* Else ({@code event} is 1), meaning the specified service is added to the IMS connection.
*/
void registrationServiceCapabilityChanged(int serviceClass, int event);
}

View File

@ -0,0 +1,48 @@
/*
* 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.app.PendingIntent;
import com.android.ims.ImsCallProfile;
import com.android.ims.internal.IImsRegistrationListener;
import com.android.ims.internal.IImsCallSession;
import com.android.ims.internal.IImsCallSessionListener;
import com.android.ims.internal.IImsUt;
/**
* {@hide}
*/
interface IImsService {
int open(int serviceClass, in PendingIntent incomingCallIntent,
in IImsRegistrationListener listener);
void close(int serviceId);
boolean isConnected(int serviceId, int serviceType, int callType);
boolean isOpened(int serviceId);
void setRegistrationListener(int serviceId, in IImsRegistrationListener listener);
ImsCallProfile createCallProfile(int serviceId, int serviceType, int callType);
IImsCallSession createCallSession(int serviceId, in ImsCallProfile profile,
in IImsCallSessionListener listener);
IImsCallSession getPendingCallSession(int serviceId, String callId);
/**
* Ut interface for the supplementary service configuration.
*/
IImsUt getUtInterface(int serviceId);
}

View File

@ -0,0 +1,25 @@
/*
* 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;
/**
*
* {@hide}
*/
interface IImsStreamMediaSession {
void close();
}

View File

@ -0,0 +1,73 @@
/*
* 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.Bundle;
import com.android.ims.internal.IImsUtListener;
/**
* Provides the Ut interface interworking to get/set the supplementary service configuration.
*
* {@hide}
*/
interface IImsUt {
/**
* Closes the object. This object is not usable after being closed.
*/
void close();
/**
* Retrieves the configuration of the call barring.
*/
int queryCallBarring(int cbType);
/**
* Retrieves the configuration of the call forward.
*/
int queryCallForward(int condition, String number);
/**
* Retrieves the configuration of the call waiting.
*/
int queryCallWaiting();
/**
* Updates or retrieves the supplementary service configuration.
*/
int transact(in Bundle ssInfo);
/**
* Updates the configuration of the call barring.
*/
int updateCallBarring(int cbType, boolean enable);
/**
* Updates the configuration of the call forward.
*/
int updateCallForward(int action, int condition, String number, int timeSeconds);
/**
* Updates the configuration of the call waiting.
*/
int updateCallWaiting(boolean enable);
/**
* Sets the listener.
*/
void setListener(in IImsUtListener listener);
}

View File

@ -0,0 +1,58 @@
/*
* 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.Bundle;
import com.android.ims.ImsCallForwardInfo;
import com.android.ims.ImsSsInfo;
import com.android.ims.internal.IImsUt;
/**
* {@hide}
*/
interface IImsUtListener {
/**
* Notifies the result of the supplementary service configuration udpate.
*/
void utConfigurationUpdated(in IImsUt ut, int id);
void utConfigurationUpdateFailed(in IImsUt ut, int id, int errorCode);
/**
* Notifies the result of the supplementary service configuration query.
*/
void utConfigurationQueried(in IImsUt ut, int id, in Bundle ssInfo);
void utConfigurationQueryFailed(in IImsUt ut, int id, int errorCode);
/**
* Notifies the status of the call barring supplementary service.
*/
void utConfigurationCallBarringQueried(in IImsUt ut,
int id, in ImsSsInfo[] cbInfo);
/**
* Notifies the status of the call forwarding supplementary service.
*/
void utConfigurationCallForwardQueried(in IImsUt ut,
int id, in ImsCallForwardInfo[] cfInfo);
/**
* Notifies the status of the call waiting supplementary service.
*/
void utConfigurationCallWaitingQueried(in IImsUt ut,
int id, in ImsSsInfo[] cwInfo);
}