Loading api/system-current.txt +36 −0 Original line number Diff line number Diff line Loading @@ -5054,6 +5054,40 @@ package android.telephony { field public static final int WWAN = 1; // 0x1 } public class CallAttributes implements android.os.Parcelable { ctor public CallAttributes(android.telephony.PreciseCallState, int, android.telephony.CallQuality); method public int describeContents(); method public android.telephony.CallQuality getCallQuality(); method public int getNetworkType(); method public android.telephony.PreciseCallState getPreciseCallState(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telephony.CallAttributes> CREATOR; } public final class CallQuality implements android.os.Parcelable { ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int); method public int describeContents(); method public int getAverageRelativeJitter(); method public int getAverageRoundTripTime(); method public int getCallDuration(); method public int getCodecType(); method public int getDownlinkCallQualityLevel(); method public int getMaxRelativeJitter(); method public int getNumRtpPacketsNotReceived(); method public int getNumRtpPacketsReceived(); method public int getNumRtpPacketsTransmitted(); method public int getNumRtpPacketsTransmittedLost(); method public int getUplinkCallQualityLevel(); method public void writeToParcel(android.os.Parcel, int); field public static final int CALL_QUALITY_BAD = 4; // 0x4 field public static final int CALL_QUALITY_EXCELLENT = 0; // 0x0 field public static final int CALL_QUALITY_FAIR = 2; // 0x2 field public static final int CALL_QUALITY_GOOD = 1; // 0x1 field public static final int CALL_QUALITY_NOT_AVAILABLE = 5; // 0x5 field public static final int CALL_QUALITY_POOR = 3; // 0x3 field public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR; } public class CarrierConfigManager { method public static android.os.PersistableBundle getDefaultConfig(); method public void overrideConfig(int, android.os.PersistableBundle); Loading Loading @@ -5319,12 +5353,14 @@ package android.telephony { } public class PhoneStateListener { method public void onCallAttributesChanged(android.telephony.CallAttributes); method public void onCallDisconnectCauseChanged(int, int); method public void onPreciseCallStateChanged(android.telephony.PreciseCallState); method public void onPreciseDataConnectionStateChanged(android.telephony.PreciseDataConnectionState); method public void onRadioPowerStateChanged(int); method public void onSrvccStateChanged(int); method public void onVoiceActivationStateChanged(int); field public static final int LISTEN_CALL_ATTRIBUTES_CHANGED = 67108864; // 0x4000000 field public static final int LISTEN_CALL_DISCONNECT_CAUSES = 33554432; // 0x2000000 field public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800 field public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000 Loading telephony/java/android/telephony/CallAttributes.aidl 0 → 100644 +20 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.telephony; parcelable CallAttributes; telephony/java/android/telephony/CallAttributes.java 0 → 100644 +151 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.telephony; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.telephony.TelephonyManager.NetworkType; import java.util.Objects; /** * Contains information about a call's attributes as passed up from the HAL. If there are multiple * ongoing calls, the CallAttributes will pertain to the call in the foreground. * @hide */ @SystemApi public class CallAttributes implements Parcelable { private PreciseCallState mPreciseCallState; @NetworkType private int mNetworkType; // TelephonyManager.NETWORK_TYPE_* ints private CallQuality mCallQuality; public CallAttributes(PreciseCallState state, @NetworkType int networkType, CallQuality callQuality) { this.mPreciseCallState = state; this.mNetworkType = networkType; this.mCallQuality = callQuality; } @Override public String toString() { return "mPreciseCallState=" + mPreciseCallState + " mNetworkType=" + mNetworkType + " mCallQuality=" + mCallQuality; } private CallAttributes(Parcel in) { mPreciseCallState = (PreciseCallState) in.readValue(mPreciseCallState.getClass() .getClassLoader()); mNetworkType = in.readInt(); mCallQuality = (CallQuality) in.readValue(mCallQuality.getClass().getClassLoader()); } // getters /** * Returns the {@link PreciseCallState} of the call. */ public PreciseCallState getPreciseCallState() { return mPreciseCallState; } /** * Returns the {@link TelephonyManager#NetworkType} of the call. * * @see TelephonyManager#NETWORK_TYPE_UNKNOWN * @see TelephonyManager#NETWORK_TYPE_GPRS * @see TelephonyManager#NETWORK_TYPE_EDGE * @see TelephonyManager#NETWORK_TYPE_UMTS * @see TelephonyManager#NETWORK_TYPE_CDMA * @see TelephonyManager#NETWORK_TYPE_EVDO_0 * @see TelephonyManager#NETWORK_TYPE_EVDO_A * @see TelephonyManager#NETWORK_TYPE_1xRTT * @see TelephonyManager#NETWORK_TYPE_HSDPA * @see TelephonyManager#NETWORK_TYPE_HSUPA * @see TelephonyManager#NETWORK_TYPE_HSPA * @see TelephonyManager#NETWORK_TYPE_IDEN * @see TelephonyManager#NETWORK_TYPE_EVDO_B * @see TelephonyManager#NETWORK_TYPE_LTE * @see TelephonyManager#NETWORK_TYPE_EHRPD * @see TelephonyManager#NETWORK_TYPE_HSPAP * @see TelephonyManager#NETWORK_TYPE_GSM * @see TelephonyManager#NETWORK_TYPE_TD_SCDMA * @see TelephonyManager#NETWORK_TYPE_IWLAN * @see TelephonyManager#NETWORK_TYPE_LTE_CA * @see TelephonyManager#NETWORK_TYPE_NR */ @NetworkType public int getNetworkType() { return mNetworkType; } /** * Returns the {#link CallQuality} of the call. */ public CallQuality getCallQuality() { return mCallQuality; } @Override public int hashCode() { return Objects.hash(mPreciseCallState, mNetworkType, mCallQuality); } @Override public boolean equals(Object o) { if (o == null || !(o instanceof CallAttributes) || hashCode() != o.hashCode()) { return false; } if (this == o) { return true; } CallAttributes s = (CallAttributes) o; return (mPreciseCallState == s.mPreciseCallState && mNetworkType == s.mNetworkType && mCallQuality == s.mCallQuality); } /** * {@link Parcelable#describeContents} */ public @Parcelable.ContentsFlags int describeContents() { return 0; } /** * {@link Parcelable#writeToParcel} */ public void writeToParcel(Parcel dest, @Parcelable.WriteFlags int flags) { mPreciseCallState.writeToParcel(dest, flags); dest.writeInt(mNetworkType); mCallQuality.writeToParcel(dest, flags); } public static final Parcelable.Creator<CallAttributes> CREATOR = new Parcelable.Creator() { public CallAttributes createFromParcel(Parcel in) { return new CallAttributes(in); } public CallAttributes[] newArray(int size) { return new CallAttributes[size]; } }; } telephony/java/android/telephony/CallQuality.aidl 0 → 100644 +20 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.telephony; parcelable CallQuality; telephony/java/android/telephony/CallQuality.java 0 → 100644 +341 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.telephony; import android.annotation.IntDef; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Objects; /** * Parcelable object to handle call quality. * <p> * Currently this supports IMS calls. * <p> * It provides the call quality level, duration, and additional information related to RTP packets, * jitter and delay. * <p> * If there are multiple active calls, the CallQuality will pertain to the call in the foreground. * * @hide */ @SystemApi public final class CallQuality implements Parcelable { // Constants representing the call quality level (see #CallQuality); public static final int CALL_QUALITY_EXCELLENT = 0; public static final int CALL_QUALITY_GOOD = 1; public static final int CALL_QUALITY_FAIR = 2; public static final int CALL_QUALITY_POOR = 3; public static final int CALL_QUALITY_BAD = 4; public static final int CALL_QUALITY_NOT_AVAILABLE = 5; /** * Call quality * @hide */ @IntDef(prefix = { "CALL_QUALITY_" }, value = { CALL_QUALITY_EXCELLENT, CALL_QUALITY_GOOD, CALL_QUALITY_FAIR, CALL_QUALITY_POOR, CALL_QUALITY_BAD, CALL_QUALITY_NOT_AVAILABLE, }) @Retention(RetentionPolicy.SOURCE) public @interface CallQualityLevel {} @CallQualityLevel private int mDownlinkCallQualityLevel; @CallQualityLevel private int mUplinkCallQualityLevel; private int mCallDuration; private int mNumRtpPacketsTransmitted; private int mNumRtpPacketsReceived; private int mNumRtpPacketsTransmittedLost; private int mNumRtpPacketsNotReceived; private int mAverageRelativeJitter; private int mMaxRelativeJitter; private int mAverageRoundTripTime; private int mCodecType; /** @hide **/ public CallQuality(Parcel in) { mDownlinkCallQualityLevel = in.readInt(); mUplinkCallQualityLevel = in.readInt(); mCallDuration = in.readInt(); mNumRtpPacketsTransmitted = in.readInt(); mNumRtpPacketsReceived = in.readInt(); mNumRtpPacketsTransmittedLost = in.readInt(); mNumRtpPacketsNotReceived = in.readInt(); mAverageRelativeJitter = in.readInt(); mMaxRelativeJitter = in.readInt(); mAverageRoundTripTime = in.readInt(); mCodecType = in.readInt(); } /** * Constructor. * * @param callQualityLevel the call quality level (see #CallQualityLevel) * @param callDuration the call duration in milliseconds * @param numRtpPacketsTransmitted RTP packets sent to network * @param numRtpPacketsReceived RTP packets received from network * @param numRtpPacketsTransmittedLost RTP packets which were lost in network and never * transmitted * @param numRtpPacketsNotReceived RTP packets which were lost in network and never recieved * @param averageRelativeJitter average relative jitter in milliseconds * @param maxRelativeJitter maximum relative jitter in milliseconds * @param averageRoundTripTime average round trip delay in milliseconds * @param codecType the codec type */ public CallQuality( @CallQualityLevel int downlinkCallQualityLevel, @CallQualityLevel int uplinkCallQualityLevel, int callDuration, int numRtpPacketsTransmitted, int numRtpPacketsReceived, int numRtpPacketsTransmittedLost, int numRtpPacketsNotReceived, int averageRelativeJitter, int maxRelativeJitter, int averageRoundTripTime, int codecType) { this.mDownlinkCallQualityLevel = downlinkCallQualityLevel; this.mUplinkCallQualityLevel = uplinkCallQualityLevel; this.mCallDuration = callDuration; this.mNumRtpPacketsTransmitted = numRtpPacketsTransmitted; this.mNumRtpPacketsReceived = numRtpPacketsReceived; this.mNumRtpPacketsTransmittedLost = numRtpPacketsTransmittedLost; this.mNumRtpPacketsNotReceived = numRtpPacketsNotReceived; this.mAverageRelativeJitter = averageRelativeJitter; this.mMaxRelativeJitter = maxRelativeJitter; this.mAverageRoundTripTime = averageRoundTripTime; this.mCodecType = codecType; } // getters /** * Returns the downlink CallQualityLevel for a given ongoing call. */ @CallQualityLevel public int getDownlinkCallQualityLevel() { return mDownlinkCallQualityLevel; } /** * Returns the uplink CallQualityLevel for a given ongoing call. */ @CallQualityLevel public int getUplinkCallQualityLevel() { return mUplinkCallQualityLevel; } /** * Returns the duration of the call, in milliseconds. */ public int getCallDuration() { return mCallDuration; } /** * Returns the total number of RTP packets transmitted by this device for a given ongoing call. */ public int getNumRtpPacketsTransmitted() { return mNumRtpPacketsTransmitted; } /** * Returns the total number of RTP packets received by this device for a given ongoing call. */ public int getNumRtpPacketsReceived() { return mNumRtpPacketsReceived; } /** * Returns the number of RTP packets which were sent by this device but were lost in the * network before reaching the other party. */ public int getNumRtpPacketsTransmittedLost() { return mNumRtpPacketsTransmittedLost; } /** * Returns the number of RTP packets which were sent by the other party but were lost in the * network before reaching this device. */ public int getNumRtpPacketsNotReceived() { return mNumRtpPacketsNotReceived; } /** * Returns the average relative jitter in milliseconds. Jitter represents the amount of variance * in interarrival time of packets, for example, if two packets are sent 2 milliseconds apart * but received 3 milliseconds apart, the relative jitter between those packets is 1 * millisecond. * * <p>See RFC 3550 for more information on jitter calculations. */ public int getAverageRelativeJitter() { return mAverageRelativeJitter; } /** * Returns the maximum relative jitter for a given ongoing call. Jitter represents the amount of * variance in interarrival time of packets, for example, if two packets are sent 2 milliseconds * apart but received 3 milliseconds apart, the relative jitter between those packets is 1 * millisecond. * * <p>See RFC 3550 for more information on jitter calculations. */ public int getMaxRelativeJitter() { return mMaxRelativeJitter; } /** * Returns the average round trip time in milliseconds. */ public int getAverageRoundTripTime() { return mAverageRoundTripTime; } /** * Returns the codec type. This value corresponds to the AUDIO_QUALITY_* constants in * {@link ImsStreamMediaProfile}. * * @see ImsStreamMediaProfile#AUDIO_QUALITY_NONE * @see ImsStreamMediaProfile#AUDIO_QUALITY_AMR * @see ImsStreamMediaProfile#AUDIO_QUALITY_AMR_WB * @see ImsStreamMediaProfile#AUDIO_QUALITY_QCELP13K * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVRC * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVRC_B * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVRC_WB * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVRC_NW * @see ImsStreamMediaProfile#AUDIO_QUALITY_GSM_EFR * @see ImsStreamMediaProfile#AUDIO_QUALITY_GSM_FR * @see ImsStreamMediaProfile#AUDIO_QUALITY_GSM_HR * @see ImsStreamMediaProfile#AUDIO_QUALITY_G711U * @see ImsStreamMediaProfile#AUDIO_QUALITY_G723 * @see ImsStreamMediaProfile#AUDIO_QUALITY_G711A * @see ImsStreamMediaProfile#AUDIO_QUALITY_G722 * @see ImsStreamMediaProfile#AUDIO_QUALITY_G711AB * @see ImsStreamMediaProfile#AUDIO_QUALITY_G729 * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVS_NB * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVS_WB * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVS_SWB * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVS_FB */ public int getCodecType() { return mCodecType; } // Parcelable things @Override public String toString() { return "CallQuality: {downlinkCallQualityLevel=" + mDownlinkCallQualityLevel + " uplinkCallQualityLevel=" + mUplinkCallQualityLevel + " callDuration=" + mCallDuration + " numRtpPacketsTransmitted=" + mNumRtpPacketsTransmitted + " numRtpPacketsReceived=" + mNumRtpPacketsReceived + " numRtpPacketsTransmittedLost=" + mNumRtpPacketsTransmittedLost + " numRtpPacketsNotReceived=" + mNumRtpPacketsNotReceived + " averageRelativeJitter=" + mAverageRelativeJitter + " maxRelativeJitter=" + mMaxRelativeJitter + " averageRoundTripTime=" + mAverageRoundTripTime + " codecType=" + mCodecType + "}"; } @Override public int hashCode() { return Objects.hash( mDownlinkCallQualityLevel, mUplinkCallQualityLevel, mCallDuration, mNumRtpPacketsTransmitted, mNumRtpPacketsReceived, mNumRtpPacketsTransmittedLost, mNumRtpPacketsNotReceived, mAverageRelativeJitter, mMaxRelativeJitter, mAverageRoundTripTime, mCodecType); } @Override public boolean equals(Object o) { if (o == null || !(o instanceof CallQuality) || hashCode() != o.hashCode()) { return false; } if (this == o) { return true; } CallQuality s = (CallQuality) o; return (mDownlinkCallQualityLevel == s.mDownlinkCallQualityLevel && mUplinkCallQualityLevel == s.mUplinkCallQualityLevel && mCallDuration == s.mCallDuration && mNumRtpPacketsTransmitted == s.mNumRtpPacketsTransmitted && mNumRtpPacketsReceived == s.mNumRtpPacketsReceived && mNumRtpPacketsTransmittedLost == s.mNumRtpPacketsTransmittedLost && mNumRtpPacketsNotReceived == s.mNumRtpPacketsNotReceived && mAverageRelativeJitter == s.mAverageRelativeJitter && mMaxRelativeJitter == s.mMaxRelativeJitter && mAverageRoundTripTime == s.mAverageRoundTripTime && mCodecType == s.mCodecType); } /** * {@link Parcelable#describeContents} */ public @Parcelable.ContentsFlags int describeContents() { return 0; } /** * {@link Parcelable#writeToParcel} */ public void writeToParcel(Parcel dest, @Parcelable.WriteFlags int flags) { dest.writeInt(mDownlinkCallQualityLevel); dest.writeInt(mUplinkCallQualityLevel); dest.writeInt(mCallDuration); dest.writeInt(mNumRtpPacketsTransmitted); dest.writeInt(mNumRtpPacketsReceived); dest.writeInt(mNumRtpPacketsTransmittedLost); dest.writeInt(mNumRtpPacketsNotReceived); dest.writeInt(mAverageRelativeJitter); dest.writeInt(mMaxRelativeJitter); dest.writeInt(mAverageRoundTripTime); dest.writeInt(mCodecType); } public static final Parcelable.Creator<CallQuality> CREATOR = new Parcelable.Creator() { public CallQuality createFromParcel(Parcel in) { return new CallQuality(in); } public CallQuality[] newArray(int size) { return new CallQuality[size]; } }; } Loading
api/system-current.txt +36 −0 Original line number Diff line number Diff line Loading @@ -5054,6 +5054,40 @@ package android.telephony { field public static final int WWAN = 1; // 0x1 } public class CallAttributes implements android.os.Parcelable { ctor public CallAttributes(android.telephony.PreciseCallState, int, android.telephony.CallQuality); method public int describeContents(); method public android.telephony.CallQuality getCallQuality(); method public int getNetworkType(); method public android.telephony.PreciseCallState getPreciseCallState(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telephony.CallAttributes> CREATOR; } public final class CallQuality implements android.os.Parcelable { ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int); method public int describeContents(); method public int getAverageRelativeJitter(); method public int getAverageRoundTripTime(); method public int getCallDuration(); method public int getCodecType(); method public int getDownlinkCallQualityLevel(); method public int getMaxRelativeJitter(); method public int getNumRtpPacketsNotReceived(); method public int getNumRtpPacketsReceived(); method public int getNumRtpPacketsTransmitted(); method public int getNumRtpPacketsTransmittedLost(); method public int getUplinkCallQualityLevel(); method public void writeToParcel(android.os.Parcel, int); field public static final int CALL_QUALITY_BAD = 4; // 0x4 field public static final int CALL_QUALITY_EXCELLENT = 0; // 0x0 field public static final int CALL_QUALITY_FAIR = 2; // 0x2 field public static final int CALL_QUALITY_GOOD = 1; // 0x1 field public static final int CALL_QUALITY_NOT_AVAILABLE = 5; // 0x5 field public static final int CALL_QUALITY_POOR = 3; // 0x3 field public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR; } public class CarrierConfigManager { method public static android.os.PersistableBundle getDefaultConfig(); method public void overrideConfig(int, android.os.PersistableBundle); Loading Loading @@ -5319,12 +5353,14 @@ package android.telephony { } public class PhoneStateListener { method public void onCallAttributesChanged(android.telephony.CallAttributes); method public void onCallDisconnectCauseChanged(int, int); method public void onPreciseCallStateChanged(android.telephony.PreciseCallState); method public void onPreciseDataConnectionStateChanged(android.telephony.PreciseDataConnectionState); method public void onRadioPowerStateChanged(int); method public void onSrvccStateChanged(int); method public void onVoiceActivationStateChanged(int); field public static final int LISTEN_CALL_ATTRIBUTES_CHANGED = 67108864; // 0x4000000 field public static final int LISTEN_CALL_DISCONNECT_CAUSES = 33554432; // 0x2000000 field public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800 field public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000 Loading
telephony/java/android/telephony/CallAttributes.aidl 0 → 100644 +20 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.telephony; parcelable CallAttributes;
telephony/java/android/telephony/CallAttributes.java 0 → 100644 +151 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.telephony; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.telephony.TelephonyManager.NetworkType; import java.util.Objects; /** * Contains information about a call's attributes as passed up from the HAL. If there are multiple * ongoing calls, the CallAttributes will pertain to the call in the foreground. * @hide */ @SystemApi public class CallAttributes implements Parcelable { private PreciseCallState mPreciseCallState; @NetworkType private int mNetworkType; // TelephonyManager.NETWORK_TYPE_* ints private CallQuality mCallQuality; public CallAttributes(PreciseCallState state, @NetworkType int networkType, CallQuality callQuality) { this.mPreciseCallState = state; this.mNetworkType = networkType; this.mCallQuality = callQuality; } @Override public String toString() { return "mPreciseCallState=" + mPreciseCallState + " mNetworkType=" + mNetworkType + " mCallQuality=" + mCallQuality; } private CallAttributes(Parcel in) { mPreciseCallState = (PreciseCallState) in.readValue(mPreciseCallState.getClass() .getClassLoader()); mNetworkType = in.readInt(); mCallQuality = (CallQuality) in.readValue(mCallQuality.getClass().getClassLoader()); } // getters /** * Returns the {@link PreciseCallState} of the call. */ public PreciseCallState getPreciseCallState() { return mPreciseCallState; } /** * Returns the {@link TelephonyManager#NetworkType} of the call. * * @see TelephonyManager#NETWORK_TYPE_UNKNOWN * @see TelephonyManager#NETWORK_TYPE_GPRS * @see TelephonyManager#NETWORK_TYPE_EDGE * @see TelephonyManager#NETWORK_TYPE_UMTS * @see TelephonyManager#NETWORK_TYPE_CDMA * @see TelephonyManager#NETWORK_TYPE_EVDO_0 * @see TelephonyManager#NETWORK_TYPE_EVDO_A * @see TelephonyManager#NETWORK_TYPE_1xRTT * @see TelephonyManager#NETWORK_TYPE_HSDPA * @see TelephonyManager#NETWORK_TYPE_HSUPA * @see TelephonyManager#NETWORK_TYPE_HSPA * @see TelephonyManager#NETWORK_TYPE_IDEN * @see TelephonyManager#NETWORK_TYPE_EVDO_B * @see TelephonyManager#NETWORK_TYPE_LTE * @see TelephonyManager#NETWORK_TYPE_EHRPD * @see TelephonyManager#NETWORK_TYPE_HSPAP * @see TelephonyManager#NETWORK_TYPE_GSM * @see TelephonyManager#NETWORK_TYPE_TD_SCDMA * @see TelephonyManager#NETWORK_TYPE_IWLAN * @see TelephonyManager#NETWORK_TYPE_LTE_CA * @see TelephonyManager#NETWORK_TYPE_NR */ @NetworkType public int getNetworkType() { return mNetworkType; } /** * Returns the {#link CallQuality} of the call. */ public CallQuality getCallQuality() { return mCallQuality; } @Override public int hashCode() { return Objects.hash(mPreciseCallState, mNetworkType, mCallQuality); } @Override public boolean equals(Object o) { if (o == null || !(o instanceof CallAttributes) || hashCode() != o.hashCode()) { return false; } if (this == o) { return true; } CallAttributes s = (CallAttributes) o; return (mPreciseCallState == s.mPreciseCallState && mNetworkType == s.mNetworkType && mCallQuality == s.mCallQuality); } /** * {@link Parcelable#describeContents} */ public @Parcelable.ContentsFlags int describeContents() { return 0; } /** * {@link Parcelable#writeToParcel} */ public void writeToParcel(Parcel dest, @Parcelable.WriteFlags int flags) { mPreciseCallState.writeToParcel(dest, flags); dest.writeInt(mNetworkType); mCallQuality.writeToParcel(dest, flags); } public static final Parcelable.Creator<CallAttributes> CREATOR = new Parcelable.Creator() { public CallAttributes createFromParcel(Parcel in) { return new CallAttributes(in); } public CallAttributes[] newArray(int size) { return new CallAttributes[size]; } }; }
telephony/java/android/telephony/CallQuality.aidl 0 → 100644 +20 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.telephony; parcelable CallQuality;
telephony/java/android/telephony/CallQuality.java 0 → 100644 +341 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.telephony; import android.annotation.IntDef; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Objects; /** * Parcelable object to handle call quality. * <p> * Currently this supports IMS calls. * <p> * It provides the call quality level, duration, and additional information related to RTP packets, * jitter and delay. * <p> * If there are multiple active calls, the CallQuality will pertain to the call in the foreground. * * @hide */ @SystemApi public final class CallQuality implements Parcelable { // Constants representing the call quality level (see #CallQuality); public static final int CALL_QUALITY_EXCELLENT = 0; public static final int CALL_QUALITY_GOOD = 1; public static final int CALL_QUALITY_FAIR = 2; public static final int CALL_QUALITY_POOR = 3; public static final int CALL_QUALITY_BAD = 4; public static final int CALL_QUALITY_NOT_AVAILABLE = 5; /** * Call quality * @hide */ @IntDef(prefix = { "CALL_QUALITY_" }, value = { CALL_QUALITY_EXCELLENT, CALL_QUALITY_GOOD, CALL_QUALITY_FAIR, CALL_QUALITY_POOR, CALL_QUALITY_BAD, CALL_QUALITY_NOT_AVAILABLE, }) @Retention(RetentionPolicy.SOURCE) public @interface CallQualityLevel {} @CallQualityLevel private int mDownlinkCallQualityLevel; @CallQualityLevel private int mUplinkCallQualityLevel; private int mCallDuration; private int mNumRtpPacketsTransmitted; private int mNumRtpPacketsReceived; private int mNumRtpPacketsTransmittedLost; private int mNumRtpPacketsNotReceived; private int mAverageRelativeJitter; private int mMaxRelativeJitter; private int mAverageRoundTripTime; private int mCodecType; /** @hide **/ public CallQuality(Parcel in) { mDownlinkCallQualityLevel = in.readInt(); mUplinkCallQualityLevel = in.readInt(); mCallDuration = in.readInt(); mNumRtpPacketsTransmitted = in.readInt(); mNumRtpPacketsReceived = in.readInt(); mNumRtpPacketsTransmittedLost = in.readInt(); mNumRtpPacketsNotReceived = in.readInt(); mAverageRelativeJitter = in.readInt(); mMaxRelativeJitter = in.readInt(); mAverageRoundTripTime = in.readInt(); mCodecType = in.readInt(); } /** * Constructor. * * @param callQualityLevel the call quality level (see #CallQualityLevel) * @param callDuration the call duration in milliseconds * @param numRtpPacketsTransmitted RTP packets sent to network * @param numRtpPacketsReceived RTP packets received from network * @param numRtpPacketsTransmittedLost RTP packets which were lost in network and never * transmitted * @param numRtpPacketsNotReceived RTP packets which were lost in network and never recieved * @param averageRelativeJitter average relative jitter in milliseconds * @param maxRelativeJitter maximum relative jitter in milliseconds * @param averageRoundTripTime average round trip delay in milliseconds * @param codecType the codec type */ public CallQuality( @CallQualityLevel int downlinkCallQualityLevel, @CallQualityLevel int uplinkCallQualityLevel, int callDuration, int numRtpPacketsTransmitted, int numRtpPacketsReceived, int numRtpPacketsTransmittedLost, int numRtpPacketsNotReceived, int averageRelativeJitter, int maxRelativeJitter, int averageRoundTripTime, int codecType) { this.mDownlinkCallQualityLevel = downlinkCallQualityLevel; this.mUplinkCallQualityLevel = uplinkCallQualityLevel; this.mCallDuration = callDuration; this.mNumRtpPacketsTransmitted = numRtpPacketsTransmitted; this.mNumRtpPacketsReceived = numRtpPacketsReceived; this.mNumRtpPacketsTransmittedLost = numRtpPacketsTransmittedLost; this.mNumRtpPacketsNotReceived = numRtpPacketsNotReceived; this.mAverageRelativeJitter = averageRelativeJitter; this.mMaxRelativeJitter = maxRelativeJitter; this.mAverageRoundTripTime = averageRoundTripTime; this.mCodecType = codecType; } // getters /** * Returns the downlink CallQualityLevel for a given ongoing call. */ @CallQualityLevel public int getDownlinkCallQualityLevel() { return mDownlinkCallQualityLevel; } /** * Returns the uplink CallQualityLevel for a given ongoing call. */ @CallQualityLevel public int getUplinkCallQualityLevel() { return mUplinkCallQualityLevel; } /** * Returns the duration of the call, in milliseconds. */ public int getCallDuration() { return mCallDuration; } /** * Returns the total number of RTP packets transmitted by this device for a given ongoing call. */ public int getNumRtpPacketsTransmitted() { return mNumRtpPacketsTransmitted; } /** * Returns the total number of RTP packets received by this device for a given ongoing call. */ public int getNumRtpPacketsReceived() { return mNumRtpPacketsReceived; } /** * Returns the number of RTP packets which were sent by this device but were lost in the * network before reaching the other party. */ public int getNumRtpPacketsTransmittedLost() { return mNumRtpPacketsTransmittedLost; } /** * Returns the number of RTP packets which were sent by the other party but were lost in the * network before reaching this device. */ public int getNumRtpPacketsNotReceived() { return mNumRtpPacketsNotReceived; } /** * Returns the average relative jitter in milliseconds. Jitter represents the amount of variance * in interarrival time of packets, for example, if two packets are sent 2 milliseconds apart * but received 3 milliseconds apart, the relative jitter between those packets is 1 * millisecond. * * <p>See RFC 3550 for more information on jitter calculations. */ public int getAverageRelativeJitter() { return mAverageRelativeJitter; } /** * Returns the maximum relative jitter for a given ongoing call. Jitter represents the amount of * variance in interarrival time of packets, for example, if two packets are sent 2 milliseconds * apart but received 3 milliseconds apart, the relative jitter between those packets is 1 * millisecond. * * <p>See RFC 3550 for more information on jitter calculations. */ public int getMaxRelativeJitter() { return mMaxRelativeJitter; } /** * Returns the average round trip time in milliseconds. */ public int getAverageRoundTripTime() { return mAverageRoundTripTime; } /** * Returns the codec type. This value corresponds to the AUDIO_QUALITY_* constants in * {@link ImsStreamMediaProfile}. * * @see ImsStreamMediaProfile#AUDIO_QUALITY_NONE * @see ImsStreamMediaProfile#AUDIO_QUALITY_AMR * @see ImsStreamMediaProfile#AUDIO_QUALITY_AMR_WB * @see ImsStreamMediaProfile#AUDIO_QUALITY_QCELP13K * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVRC * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVRC_B * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVRC_WB * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVRC_NW * @see ImsStreamMediaProfile#AUDIO_QUALITY_GSM_EFR * @see ImsStreamMediaProfile#AUDIO_QUALITY_GSM_FR * @see ImsStreamMediaProfile#AUDIO_QUALITY_GSM_HR * @see ImsStreamMediaProfile#AUDIO_QUALITY_G711U * @see ImsStreamMediaProfile#AUDIO_QUALITY_G723 * @see ImsStreamMediaProfile#AUDIO_QUALITY_G711A * @see ImsStreamMediaProfile#AUDIO_QUALITY_G722 * @see ImsStreamMediaProfile#AUDIO_QUALITY_G711AB * @see ImsStreamMediaProfile#AUDIO_QUALITY_G729 * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVS_NB * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVS_WB * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVS_SWB * @see ImsStreamMediaProfile#AUDIO_QUALITY_EVS_FB */ public int getCodecType() { return mCodecType; } // Parcelable things @Override public String toString() { return "CallQuality: {downlinkCallQualityLevel=" + mDownlinkCallQualityLevel + " uplinkCallQualityLevel=" + mUplinkCallQualityLevel + " callDuration=" + mCallDuration + " numRtpPacketsTransmitted=" + mNumRtpPacketsTransmitted + " numRtpPacketsReceived=" + mNumRtpPacketsReceived + " numRtpPacketsTransmittedLost=" + mNumRtpPacketsTransmittedLost + " numRtpPacketsNotReceived=" + mNumRtpPacketsNotReceived + " averageRelativeJitter=" + mAverageRelativeJitter + " maxRelativeJitter=" + mMaxRelativeJitter + " averageRoundTripTime=" + mAverageRoundTripTime + " codecType=" + mCodecType + "}"; } @Override public int hashCode() { return Objects.hash( mDownlinkCallQualityLevel, mUplinkCallQualityLevel, mCallDuration, mNumRtpPacketsTransmitted, mNumRtpPacketsReceived, mNumRtpPacketsTransmittedLost, mNumRtpPacketsNotReceived, mAverageRelativeJitter, mMaxRelativeJitter, mAverageRoundTripTime, mCodecType); } @Override public boolean equals(Object o) { if (o == null || !(o instanceof CallQuality) || hashCode() != o.hashCode()) { return false; } if (this == o) { return true; } CallQuality s = (CallQuality) o; return (mDownlinkCallQualityLevel == s.mDownlinkCallQualityLevel && mUplinkCallQualityLevel == s.mUplinkCallQualityLevel && mCallDuration == s.mCallDuration && mNumRtpPacketsTransmitted == s.mNumRtpPacketsTransmitted && mNumRtpPacketsReceived == s.mNumRtpPacketsReceived && mNumRtpPacketsTransmittedLost == s.mNumRtpPacketsTransmittedLost && mNumRtpPacketsNotReceived == s.mNumRtpPacketsNotReceived && mAverageRelativeJitter == s.mAverageRelativeJitter && mMaxRelativeJitter == s.mMaxRelativeJitter && mAverageRoundTripTime == s.mAverageRoundTripTime && mCodecType == s.mCodecType); } /** * {@link Parcelable#describeContents} */ public @Parcelable.ContentsFlags int describeContents() { return 0; } /** * {@link Parcelable#writeToParcel} */ public void writeToParcel(Parcel dest, @Parcelable.WriteFlags int flags) { dest.writeInt(mDownlinkCallQualityLevel); dest.writeInt(mUplinkCallQualityLevel); dest.writeInt(mCallDuration); dest.writeInt(mNumRtpPacketsTransmitted); dest.writeInt(mNumRtpPacketsReceived); dest.writeInt(mNumRtpPacketsTransmittedLost); dest.writeInt(mNumRtpPacketsNotReceived); dest.writeInt(mAverageRelativeJitter); dest.writeInt(mMaxRelativeJitter); dest.writeInt(mAverageRoundTripTime); dest.writeInt(mCodecType); } public static final Parcelable.Creator<CallQuality> CREATOR = new Parcelable.Creator() { public CallQuality createFromParcel(Parcel in) { return new CallQuality(in); } public CallQuality[] newArray(int size) { return new CallQuality[size]; } }; }