Merge "Add CallAttributes and PhoneStateListener method"
This commit is contained in:
@@ -5054,6 +5054,40 @@ package android.telephony {
|
|||||||
field public static final int WWAN = 1; // 0x1
|
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 {
|
public class CarrierConfigManager {
|
||||||
method public static android.os.PersistableBundle getDefaultConfig();
|
method public static android.os.PersistableBundle getDefaultConfig();
|
||||||
method public void overrideConfig(int, android.os.PersistableBundle);
|
method public void overrideConfig(int, android.os.PersistableBundle);
|
||||||
@@ -5319,12 +5353,14 @@ package android.telephony {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class PhoneStateListener {
|
public class PhoneStateListener {
|
||||||
|
method public void onCallAttributesChanged(android.telephony.CallAttributes);
|
||||||
method public void onCallDisconnectCauseChanged(int, int);
|
method public void onCallDisconnectCauseChanged(int, int);
|
||||||
method public void onPreciseCallStateChanged(android.telephony.PreciseCallState);
|
method public void onPreciseCallStateChanged(android.telephony.PreciseCallState);
|
||||||
method public void onPreciseDataConnectionStateChanged(android.telephony.PreciseDataConnectionState);
|
method public void onPreciseDataConnectionStateChanged(android.telephony.PreciseDataConnectionState);
|
||||||
method public void onRadioPowerStateChanged(int);
|
method public void onRadioPowerStateChanged(int);
|
||||||
method public void onSrvccStateChanged(int);
|
method public void onSrvccStateChanged(int);
|
||||||
method public void onVoiceActivationStateChanged(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_CALL_DISCONNECT_CAUSES = 33554432; // 0x2000000
|
||||||
field public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
|
field public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
|
||||||
field public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
|
field public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
|
||||||
|
|||||||
20
telephony/java/android/telephony/CallAttributes.aidl
Normal file
20
telephony/java/android/telephony/CallAttributes.aidl
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
|
||||||
151
telephony/java/android/telephony/CallAttributes.java
Normal file
151
telephony/java/android/telephony/CallAttributes.java
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
/*
|
||||||
|
* 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];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
20
telephony/java/android/telephony/CallQuality.aidl
Normal file
20
telephony/java/android/telephony/CallQuality.aidl
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
|
||||||
341
telephony/java/android/telephony/CallQuality.java
Normal file
341
telephony/java/android/telephony/CallQuality.java
Normal file
@@ -0,0 +1,341 @@
|
|||||||
|
/*
|
||||||
|
* 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];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -335,6 +335,18 @@ public class PhoneStateListener {
|
|||||||
@SystemApi
|
@SystemApi
|
||||||
public static final int LISTEN_CALL_DISCONNECT_CAUSES = 0x02000000;
|
public static final int LISTEN_CALL_DISCONNECT_CAUSES = 0x02000000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listen for changes to the call attributes of a currently active call.
|
||||||
|
* {@more}
|
||||||
|
* Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
|
||||||
|
* READ_PRECISE_PHONE_STATE}
|
||||||
|
*
|
||||||
|
* @see #onCallAttributesChanged
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
public static final int LISTEN_CALL_ATTRIBUTES_CHANGED = 0x04000000;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Subscription used to listen to the phone state changes
|
* Subscription used to listen to the phone state changes
|
||||||
* @hide
|
* @hide
|
||||||
@@ -682,6 +694,17 @@ public class PhoneStateListener {
|
|||||||
// default implementation empty
|
// default implementation empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback invoked when the call attributes changes. Requires
|
||||||
|
* the READ_PRIVILEGED_PHONE_STATE permission.
|
||||||
|
* @param callAttributes the call attributes
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
public void onCallAttributesChanged(CallAttributes callAttributes) {
|
||||||
|
// default implementation empty
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback invoked when modem radio power state changes. Requires
|
* Callback invoked when modem radio power state changes. Requires
|
||||||
* the READ_PRIVILEGED_PHONE_STATE permission.
|
* the READ_PRIVILEGED_PHONE_STATE permission.
|
||||||
@@ -941,6 +964,14 @@ public class PhoneStateListener {
|
|||||||
() -> mExecutor.execute(() -> psl.onRadioPowerStateChanged(state)));
|
() -> mExecutor.execute(() -> psl.onRadioPowerStateChanged(state)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onCallAttributesChanged(CallAttributes callAttributes) {
|
||||||
|
PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
|
||||||
|
if (psl == null) return;
|
||||||
|
|
||||||
|
Binder.withCleanCallingIdentity(
|
||||||
|
() -> mExecutor.execute(() -> psl.onCallAttributesChanged(callAttributes)));
|
||||||
|
}
|
||||||
|
|
||||||
public void onPreferredDataSubIdChanged(int subId) {
|
public void onPreferredDataSubIdChanged(int subId) {
|
||||||
PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
|
PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
|
||||||
if (psl == null) return;
|
if (psl == null) return;
|
||||||
|
|||||||
@@ -17,14 +17,15 @@
|
|||||||
package com.android.internal.telephony;
|
package com.android.internal.telephony;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.telephony.ServiceState;
|
import android.telephony.CallAttributes;
|
||||||
import android.telephony.SignalStrength;
|
|
||||||
import android.telephony.CellInfo;
|
import android.telephony.CellInfo;
|
||||||
import android.telephony.DataConnectionRealTimeInfo;
|
import android.telephony.DataConnectionRealTimeInfo;
|
||||||
import android.telephony.PhoneCapability;
|
import android.telephony.PhoneCapability;
|
||||||
import android.telephony.PhysicalChannelConfig;
|
import android.telephony.PhysicalChannelConfig;
|
||||||
import android.telephony.PreciseCallState;
|
import android.telephony.PreciseCallState;
|
||||||
import android.telephony.PreciseDataConnectionState;
|
import android.telephony.PreciseDataConnectionState;
|
||||||
|
import android.telephony.ServiceState;
|
||||||
|
import android.telephony.SignalStrength;
|
||||||
import android.telephony.emergency.EmergencyNumber;
|
import android.telephony.emergency.EmergencyNumber;
|
||||||
|
|
||||||
oneway interface IPhoneStateListener {
|
oneway interface IPhoneStateListener {
|
||||||
@@ -54,6 +55,7 @@ oneway interface IPhoneStateListener {
|
|||||||
void onPhoneCapabilityChanged(in PhoneCapability capability);
|
void onPhoneCapabilityChanged(in PhoneCapability capability);
|
||||||
void onPreferredDataSubIdChanged(in int subId);
|
void onPreferredDataSubIdChanged(in int subId);
|
||||||
void onRadioPowerStateChanged(in int state);
|
void onRadioPowerStateChanged(in int state);
|
||||||
|
void onCallAttributesChanged(in CallAttributes callAttributes);
|
||||||
void onEmergencyNumberListChanged(in Map emergencyNumberList);
|
void onEmergencyNumberListChanged(in Map emergencyNumberList);
|
||||||
void onCallDisconnectCauseChanged(in int disconnectCause, in int preciseDisconnectCause);
|
void onCallDisconnectCauseChanged(in int disconnectCause, in int preciseDisconnectCause);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user