Merge changes from topic 'merge-dr1-063015' into mnc-dr-dev

* changes:
  Added support for mid-call enabled SRVCC conference call
  MWI,phantom call,Suppl services, error codes
  Rename VoLTE/WFC enable API to available - add VT available API.
This commit is contained in:
Etan Cohen
2015-07-06 22:09:51 +00:00
committed by Android (Google) Code Review
14 changed files with 220 additions and 21 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -655,6 +655,9 @@ public abstract class ConnectionService extends Service {
connection.getDisconnectCause(),
createIdList(connection.getConferenceables()),
connection.getExtras()));
if (isUnknown) {
triggerConferenceRecalculate();
}
}
private void abort(String callId) {
@@ -1013,6 +1016,16 @@ public abstract class ConnectionService extends Service {
return null;
}
/**
* Trigger recalculate functinality for conference calls. This is used when a Telephony
* Connection is part of a conference controller but is not yet added to Connection
* Service and hence cannot be added to the conference call.
*
* @hide
*/
public void triggerConferenceRecalculate() {
}
/**
* Create a {@code Connection} given an outgoing request. This is used to initiate new
* outgoing calls.

View File

@@ -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);

View File

@@ -4285,13 +4285,13 @@ public class TelephonyManager {
}
}
/**
* Returns the Status of Volte
*@hide
*/
public boolean isVolteEnabled() {
/**
* Returns the Status of Volte
* @hide
*/
public boolean isVolteAvailable() {
try {
return getITelephony().isVolteEnabled();
return getITelephony().isVolteAvailable();
} catch (RemoteException ex) {
return false;
} catch (NullPointerException ex) {
@@ -4299,13 +4299,27 @@ public class TelephonyManager {
}
}
/**
* Returns the Status of Wi-Fi Calling
*@hide
*/
public boolean isWifiCallingEnabled() {
/**
* Returns the Status of video telephony (VT)
* @hide
*/
public boolean isVideoTelephonyAvailable() {
try {
return getITelephony().isVideoTelephonyAvailable();
} catch (RemoteException ex) {
return false;
} catch (NullPointerException ex) {
return false;
}
}
/**
* Returns the Status of Wi-Fi Calling
* @hide
*/
public boolean isWifiCallingAvailable() {
try {
return getITelephony().isWifiCallingEnabled();
return getITelephony().isWifiCallingAvailable();
} catch (RemoteException ex) {
return false;
} catch (NullPointerException ex) {

View File

@@ -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;

View File

@@ -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.

View File

@@ -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 =

View File

@@ -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;

View 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];
}
};
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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.

View File

@@ -936,6 +936,7 @@ interface ITelephony {
* @return {@code true} if the device supports hearing aid compatibility.
*/
boolean isHearingAidCompatibilitySupported();
/**
* Get IMS Registration Status
*/
@@ -943,15 +944,18 @@ interface ITelephony {
/**
* Returns the Status of Wi-Fi Calling
*@hide
*/
boolean isWifiCallingEnabled();
boolean isWifiCallingAvailable();
/**
* Returns the Status of Volte
*/
boolean isVolteAvailable();
/**
* Returns the Status of Volte
*@hide
* Returns the Status of VT (video telephony)
*/
boolean isVolteEnabled();
boolean isVideoTelephonyAvailable();
/**
* Returns the unique device ID of phone, for example, the IMEI for
@@ -980,7 +984,6 @@ interface ITelephony {
/**
* Return the modem activity info.
*@hide
*/
ModemActivityInfo getModemActivityInfo();
}