MWI,phantom call,Suppl services, error codes
1. IMS MWI Feature
- Add new API to update waiting
voice message count, for UI
propagation based on RFC 3842
2. phantom call support
Supplementary services
3. IMS : Incoming Call Barring
- Modified existing API to support
request like registration,activation,
deactivation,erasure,interogation.
4.Unsol supplementary service notification
- send unsol supplementary notification to UI
- add call history info
Miscellaneous
5. Ims: Originate conference call in DIALING state
6. IMS: Addition of Extras to ImsCallProfile
- Add EXTRA string definitions to ImsCallProfile
7. IMS: Definition of error code
- answered elsewhere
- FDN call failure
8.
- Propagate IMS supplementary services to telephony framework
- Introduce call forwarding history info.
Bug: 21725750
Squash of 2 earlier CLs:
Change-Id: I52a64e9a5df3479189f62921a01655a50fb386fc
Change-Id: Idc3a433785e84a3d683cbcfc7fb90f0b89dced12
Change-Id: I428ce3c6a043e43b86dea41622e0a828d8b45e53
This commit is contained in:
committed by
Etan Cohen
parent
b304fc0aaf
commit
ddf570e822
@@ -968,7 +968,6 @@ public final class Call {
|
||||
unregisterCallback(listener);
|
||||
}
|
||||
|
||||
|
||||
/** {@hide} */
|
||||
Call(Phone phone, String telecomCallId, InCallAdapter inCallAdapter) {
|
||||
mPhone = phone;
|
||||
@@ -977,6 +976,14 @@ public final class Call {
|
||||
mState = STATE_NEW;
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
Call(Phone phone, String telecomCallId, InCallAdapter inCallAdapter, int state) {
|
||||
mPhone = phone;
|
||||
mTelecomCallId = telecomCallId;
|
||||
mInCallAdapter = inCallAdapter;
|
||||
mState = state;
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
final String internalGetCallId() {
|
||||
return mTelecomCallId;
|
||||
|
||||
@@ -252,6 +252,13 @@ public abstract class Connection extends Conferenceable {
|
||||
// Next CAPABILITY value: 0x00400000
|
||||
//**********************************************************************************************
|
||||
|
||||
/**
|
||||
* Call extras key to pack/unpack call history info.
|
||||
* The value for this key should be an ArrayList of Strings.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_CALL_HISTORY_INFO = "EXTRA_CALL_HISTORY_INFO";
|
||||
|
||||
// Flag controlling whether PII is emitted into the logs
|
||||
private static final boolean PII_DEBUG = Log.isLoggable(android.util.Log.DEBUG);
|
||||
|
||||
|
||||
@@ -122,7 +122,8 @@ public final class Phone {
|
||||
}
|
||||
|
||||
final void internalAddCall(ParcelableCall parcelableCall) {
|
||||
Call call = new Call(this, parcelableCall.getId(), mInCallAdapter);
|
||||
Call call = new Call(this, parcelableCall.getId(), mInCallAdapter,
|
||||
parcelableCall.getState());
|
||||
mCallByTelecomCallId.put(parcelableCall.getId(), call);
|
||||
mCalls.add(call);
|
||||
checkCallTree(parcelableCall);
|
||||
|
||||
@@ -174,11 +174,19 @@ public class ImsCallProfile implements Parcelable {
|
||||
* cna : Calling name
|
||||
* ussd : For network-initiated USSD, MT only
|
||||
* remote_uri : Connected user identity (it can be used for the conference)
|
||||
* ChildNum: Child number info.
|
||||
* Codec: Codec info.
|
||||
* DisplayText: Display text for the call.
|
||||
* AdditionalCallInfo: Additional call info.
|
||||
*/
|
||||
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 static final String EXTRA_CHILD_NUMBER = "ChildNum";
|
||||
public static final String EXTRA_CODEC = "Codec";
|
||||
public static final String EXTRA_DISPLAY_TEXT = "DisplayText";
|
||||
public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
|
||||
|
||||
public int mServiceType;
|
||||
public int mCallType;
|
||||
|
||||
@@ -99,6 +99,9 @@ public class ImsReasonInfo implements Parcelable {
|
||||
// MT : No action from user after alerting the call
|
||||
public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203;
|
||||
|
||||
//Call failures for FDN
|
||||
public static final int CODE_FDN_BLOCKED = 241;
|
||||
|
||||
/**
|
||||
* STATUSCODE (SIP response code) (IMS -> Telephony)
|
||||
*/
|
||||
@@ -226,6 +229,12 @@ public class ImsReasonInfo implements Parcelable {
|
||||
*/
|
||||
public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100;
|
||||
|
||||
/**
|
||||
* MT call has ended due to a release from the network
|
||||
* because the call was answered elsewhere
|
||||
*/
|
||||
public static final int CODE_ANSWERED_ELSEWHERE = 1014;
|
||||
|
||||
/**
|
||||
* Network string error messages.
|
||||
* mExtraMessage may have these values.
|
||||
|
||||
@@ -34,6 +34,7 @@ public class ImsSsInfo implements Parcelable {
|
||||
|
||||
// 0: disabled, 1: enabled
|
||||
public int mStatus;
|
||||
public String mIcbNum;
|
||||
|
||||
public ImsSsInfo() {
|
||||
}
|
||||
@@ -50,6 +51,7 @@ public class ImsSsInfo implements Parcelable {
|
||||
@Override
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
out.writeInt(mStatus);
|
||||
out.writeString(mIcbNum);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,6 +61,7 @@ public class ImsSsInfo implements Parcelable {
|
||||
|
||||
private void readFromParcel(Parcel in) {
|
||||
mStatus = in.readInt();
|
||||
mIcbNum = in.readString();
|
||||
}
|
||||
|
||||
public static final Creator<ImsSsInfo> CREATOR =
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* 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 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 ImsSuppServiceNotification;
|
||||
101
telephony/java/com/android/ims/ImsSuppServiceNotification.java
Normal file
101
telephony/java/com/android/ims/ImsSuppServiceNotification.java
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* 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 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;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
|
||||
/**
|
||||
* Parcelable object to handle IMS supplementary service notifications.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class ImsSuppServiceNotification implements Parcelable {
|
||||
private static final String TAG = "ImsSuppServiceNotification";
|
||||
|
||||
/** Type of notification: 0 = MO; 1 = MT */
|
||||
public int notificationType;
|
||||
/** TS 27.007 7.17 "code1" or "code2" */
|
||||
public int code;
|
||||
/** TS 27.007 7.17 "index" - Not used currently*/
|
||||
public int index;
|
||||
/** TS 27.007 7.17 "type" (MT only) - Not used currently */
|
||||
public int type;
|
||||
/** TS 27.007 7.17 "number" (MT only) */
|
||||
public String number;
|
||||
/** List of forwarded numbers, if any */
|
||||
public String[] history;
|
||||
|
||||
public ImsSuppServiceNotification() {
|
||||
}
|
||||
|
||||
public ImsSuppServiceNotification(Parcel in) {
|
||||
readFromParcel(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "{ notificationType=" + notificationType +
|
||||
", code=" + code +
|
||||
", index=" + index +
|
||||
", type=" + type +
|
||||
", number=" + number +
|
||||
", history=" + Arrays.toString(history) +
|
||||
" }";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
out.writeInt(notificationType);
|
||||
out.writeInt(code);
|
||||
out.writeInt(index);
|
||||
out.writeInt(type);
|
||||
out.writeString(number);
|
||||
out.writeStringArray(history);
|
||||
}
|
||||
|
||||
private void readFromParcel(Parcel in) {
|
||||
notificationType = in.readInt();
|
||||
code = in.readInt();
|
||||
index = in.readInt();
|
||||
type = in.readInt();
|
||||
number = in.readString();
|
||||
history = in.createStringArray();
|
||||
}
|
||||
|
||||
public static final Creator<ImsSuppServiceNotification> CREATOR =
|
||||
new Creator<ImsSuppServiceNotification>() {
|
||||
@Override
|
||||
public ImsSuppServiceNotification createFromParcel(Parcel in) {
|
||||
return new ImsSuppServiceNotification(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImsSuppServiceNotification[] newArray(int size) {
|
||||
return new ImsSuppServiceNotification[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.android.ims.ImsCallProfile;
|
||||
import com.android.ims.ImsReasonInfo;
|
||||
import com.android.ims.ImsConferenceState;
|
||||
import com.android.ims.internal.IImsCallSession;
|
||||
import com.android.ims.ImsSuppServiceNotification;
|
||||
|
||||
/**
|
||||
* A listener type for receiving notification on IMS call session events.
|
||||
@@ -123,4 +124,10 @@ interface IImsCallSessionListener {
|
||||
* @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise.
|
||||
*/
|
||||
void callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty);
|
||||
|
||||
/**
|
||||
* Notifies the supplementary service information for the current session.
|
||||
*/
|
||||
void callSessionSuppServiceReceived(in IImsCallSession session,
|
||||
in ImsSuppServiceNotification suppSrvNotification);
|
||||
}
|
||||
|
||||
@@ -72,4 +72,10 @@ interface IImsRegistrationListener {
|
||||
*/
|
||||
void registrationFeatureCapabilityChanged(int serviceClass,
|
||||
out int[] enabledFeatures, out int[] disabledFeatures);
|
||||
|
||||
/**
|
||||
* Updates the application with the waiting voice message count.
|
||||
* @param count The number of waiting voice messages.
|
||||
*/
|
||||
void voiceMessageCountUpdate(int count);
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ interface IImsUt {
|
||||
/**
|
||||
* Updates the configuration of the call barring.
|
||||
*/
|
||||
int updateCallBarring(int cbType, boolean enable, in String[] barrList);
|
||||
int updateCallBarring(int cbType, int action, in String[] barrList);
|
||||
|
||||
/**
|
||||
* Updates the configuration of the call forward.
|
||||
|
||||
Reference in New Issue
Block a user