Loading api/system-current.txt +106 −2 Original line number Diff line number Diff line Loading @@ -39334,14 +39334,16 @@ package android.telecom { } public class ParcelableCallAnalytics implements android.os.Parcelable { ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, java.lang.String, boolean); ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, java.lang.String, boolean, java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent>, java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming>); ctor public ParcelableCallAnalytics(android.os.Parcel); method public java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> analyticsEvents(); method public int describeContents(); method public long getCallDurationMillis(); method public int getCallTechnologies(); method public int getCallTerminationCode(); method public int getCallType(); method public java.lang.String getConnectionService(); method public java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming> getEventTimings(); method public long getStartTimeMillis(); method public boolean isAdditionalCall(); method public boolean isCreatedFromExistingConnection(); Loading @@ -39362,6 +39364,73 @@ package android.telecom { field public static final int THIRD_PARTY_PHONE = 16; // 0x10 } public static final class ParcelableCallAnalytics.AnalyticsEvent implements android.os.Parcelable { ctor public ParcelableCallAnalytics.AnalyticsEvent(int, long); method public int describeContents(); method public int getEventName(); method public long getTimeSinceLastEvent(); method public void writeToParcel(android.os.Parcel, int); field public static final int AUDIO_ROUTE_BT = 204; // 0xcc field public static final int AUDIO_ROUTE_EARPIECE = 205; // 0xcd field public static final int AUDIO_ROUTE_HEADSET = 206; // 0xce field public static final int AUDIO_ROUTE_SPEAKER = 207; // 0xcf field public static final int BIND_CS = 5; // 0x5 field public static final int BLOCK_CHECK_FINISHED = 105; // 0x69 field public static final int BLOCK_CHECK_INITIATED = 104; // 0x68 field public static final int CONFERENCE_WITH = 300; // 0x12c field public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> CREATOR; field public static final int CS_BOUND = 6; // 0x6 field public static final int DIRECT_TO_VM_FINISHED = 103; // 0x67 field public static final int DIRECT_TO_VM_INITIATED = 102; // 0x66 field public static final int FILTERING_COMPLETED = 107; // 0x6b field public static final int FILTERING_INITIATED = 106; // 0x6a field public static final int FILTERING_TIMED_OUT = 108; // 0x6c field public static final int MUTE = 202; // 0xca field public static final int REMOTELY_HELD = 402; // 0x192 field public static final int REMOTELY_UNHELD = 403; // 0x193 field public static final int REQUEST_ACCEPT = 7; // 0x7 field public static final int REQUEST_HOLD = 400; // 0x190 field public static final int REQUEST_PULL = 500; // 0x1f4 field public static final int REQUEST_REJECT = 8; // 0x8 field public static final int REQUEST_UNHOLD = 401; // 0x191 field public static final int SCREENING_COMPLETED = 101; // 0x65 field public static final int SCREENING_SENT = 100; // 0x64 field public static final int SET_ACTIVE = 1; // 0x1 field public static final int SET_DIALING = 4; // 0x4 field public static final int SET_DISCONNECTED = 2; // 0x2 field public static final int SET_HOLD = 404; // 0x194 field public static final int SET_PARENT = 302; // 0x12e field public static final int SET_SELECT_PHONE_ACCOUNT = 0; // 0x0 field public static final int SILENCE = 201; // 0xc9 field public static final int SKIP_RINGING = 200; // 0xc8 field public static final int SPLIT_CONFERENCE = 301; // 0x12d field public static final int START_CONNECTION = 3; // 0x3 field public static final int SWAP = 405; // 0x195 field public static final int UNMUTE = 203; // 0xcb } public static final class ParcelableCallAnalytics.EventTiming implements android.os.Parcelable { ctor public ParcelableCallAnalytics.EventTiming(int, long); method public int describeContents(); method public int getName(); method public long getTime(); method public void writeToParcel(android.os.Parcel, int); field public static final int ACCEPT_TIMING = 0; // 0x0 field public static final int BIND_CS_TIMING = 6; // 0x6 field public static final int BLOCK_CHECK_FINISHED_TIMING = 9; // 0x9 field public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.EventTiming> CREATOR; field public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; // 0x8 field public static final int DISCONNECT_TIMING = 2; // 0x2 field public static final int FILTERING_COMPLETED_TIMING = 10; // 0xa field public static final int FILTERING_TIMED_OUT_TIMING = 11; // 0xb field public static final int HOLD_TIMING = 3; // 0x3 field public static final int INVALID = 999999; // 0xf423f field public static final int OUTGOING_TIME_TO_DIALING_TIMING = 5; // 0x5 field public static final int REJECT_TIMING = 1; // 0x1 field public static final int SCREENING_COMPLETED_TIMING = 7; // 0x7 field public static final int UNHOLD_TIMING = 4; // 0x4 } public final deprecated class Phone { method public final void addListener(android.telecom.Phone.Listener); method public final boolean canAddCall(); Loading Loading @@ -39578,6 +39647,41 @@ package android.telecom { field public static final android.os.Parcelable.Creator<android.telecom.StatusHints> CREATOR; } public final class TelecomAnalytics implements android.os.Parcelable { ctor public TelecomAnalytics(java.util.List<android.telecom.TelecomAnalytics.SessionTiming>, java.util.List<android.telecom.ParcelableCallAnalytics>); method public int describeContents(); method public java.util.List<android.telecom.ParcelableCallAnalytics> getCallAnalytics(); method public java.util.List<android.telecom.TelecomAnalytics.SessionTiming> getSessionTimings(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics> CREATOR; } public static final class TelecomAnalytics.SessionTiming implements android.os.Parcelable { ctor public TelecomAnalytics.SessionTiming(int, long); method public int describeContents(); method public java.lang.Integer getKey(); method public long getTime(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics.SessionTiming> CREATOR; field public static final int CSW_ADD_CONFERENCE_CALL = 108; // 0x6c field public static final int CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; // 0x64 field public static final int CSW_REMOVE_CALL = 106; // 0x6a field public static final int CSW_SET_ACTIVE = 101; // 0x65 field public static final int CSW_SET_DIALING = 103; // 0x67 field public static final int CSW_SET_DISCONNECTED = 104; // 0x68 field public static final int CSW_SET_IS_CONFERENCED = 107; // 0x6b field public static final int CSW_SET_ON_HOLD = 105; // 0x69 field public static final int CSW_SET_RINGING = 102; // 0x66 field public static final int ICA_ANSWER_CALL = 1; // 0x1 field public static final int ICA_CONFERENCE = 8; // 0x8 field public static final int ICA_DISCONNECT_CALL = 3; // 0x3 field public static final int ICA_HOLD_CALL = 4; // 0x4 field public static final int ICA_MUTE = 6; // 0x6 field public static final int ICA_REJECT_CALL = 2; // 0x2 field public static final int ICA_SET_AUDIO_ROUTE = 7; // 0x7 field public static final int ICA_UNHOLD_CALL = 5; // 0x5 } public class TelecomManager { method public void acceptRingingCall(); method public void acceptRingingCall(int); Loading @@ -39587,7 +39691,7 @@ package android.telecom { method public deprecated void clearAccounts(); method public void clearPhoneAccounts(); method public android.content.Intent createManageBlockedNumbersIntent(); method public java.util.List<android.telecom.ParcelableCallAnalytics> dumpAnalytics(); method public android.telecom.TelecomAnalytics dumpAnalytics(); method public void enablePhoneAccount(android.telecom.PhoneAccountHandle, boolean); method public boolean endCall(); method public android.net.Uri getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle); telecomm/java/android/telecom/ParcelableCallAnalytics.java +181 −1 Original line number Diff line number Diff line Loading @@ -20,11 +20,168 @@ import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.List; /** * @hide */ @SystemApi public class ParcelableCallAnalytics implements Parcelable { public static final class AnalyticsEvent implements Parcelable { public static final int SET_SELECT_PHONE_ACCOUNT = 0; public static final int SET_ACTIVE = 1; public static final int SET_DISCONNECTED = 2; public static final int START_CONNECTION = 3; public static final int SET_DIALING = 4; public static final int BIND_CS = 5; public static final int CS_BOUND = 6; public static final int REQUEST_ACCEPT = 7; public static final int REQUEST_REJECT = 8; public static final int SCREENING_SENT = 100; public static final int SCREENING_COMPLETED = 101; public static final int DIRECT_TO_VM_INITIATED = 102; public static final int DIRECT_TO_VM_FINISHED = 103; public static final int BLOCK_CHECK_INITIATED = 104; public static final int BLOCK_CHECK_FINISHED = 105; public static final int FILTERING_INITIATED = 106; public static final int FILTERING_COMPLETED = 107; public static final int FILTERING_TIMED_OUT = 108; public static final int SKIP_RINGING = 200; public static final int SILENCE = 201; public static final int MUTE = 202; public static final int UNMUTE = 203; public static final int AUDIO_ROUTE_BT = 204; public static final int AUDIO_ROUTE_EARPIECE = 205; public static final int AUDIO_ROUTE_HEADSET = 206; public static final int AUDIO_ROUTE_SPEAKER = 207; public static final int CONFERENCE_WITH = 300; public static final int SPLIT_CONFERENCE = 301; public static final int SET_PARENT = 302; public static final int REQUEST_HOLD = 400; public static final int REQUEST_UNHOLD = 401; public static final int REMOTELY_HELD = 402; public static final int REMOTELY_UNHELD = 403; public static final int SET_HOLD = 404; public static final int SWAP = 405; public static final int REQUEST_PULL = 500; public static final Parcelable.Creator<AnalyticsEvent> CREATOR = new Parcelable.Creator<AnalyticsEvent> () { @Override public AnalyticsEvent createFromParcel(Parcel in) { return new AnalyticsEvent(in); } @Override public AnalyticsEvent[] newArray(int size) { return new AnalyticsEvent[size]; } }; private int mEventName; private long mTimeSinceLastEvent; public AnalyticsEvent(int eventName, long timestamp) { mEventName = eventName; mTimeSinceLastEvent = timestamp; } AnalyticsEvent(Parcel in) { mEventName = in.readInt(); mTimeSinceLastEvent = in.readLong(); } public int getEventName() { return mEventName; } public long getTimeSinceLastEvent() { return mTimeSinceLastEvent; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(mEventName); out.writeLong(mTimeSinceLastEvent); } } public static final class EventTiming implements Parcelable { public static final int ACCEPT_TIMING = 0; public static final int REJECT_TIMING = 1; public static final int DISCONNECT_TIMING = 2; public static final int HOLD_TIMING = 3; public static final int UNHOLD_TIMING = 4; public static final int OUTGOING_TIME_TO_DIALING_TIMING = 5; public static final int BIND_CS_TIMING = 6; public static final int SCREENING_COMPLETED_TIMING = 7; public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; public static final int BLOCK_CHECK_FINISHED_TIMING = 9; public static final int FILTERING_COMPLETED_TIMING = 10; public static final int FILTERING_TIMED_OUT_TIMING = 11; public static final int INVALID = 999999; public static final Parcelable.Creator<EventTiming> CREATOR = new Parcelable.Creator<EventTiming> () { @Override public EventTiming createFromParcel(Parcel in) { return new EventTiming(in); } @Override public EventTiming[] newArray(int size) { return new EventTiming[size]; } }; private int mName; private long mTime; public EventTiming(int name, long time) { this.mName = name; this.mTime = time; } private EventTiming(Parcel in) { mName = in.readInt(); mTime = in.readLong(); } public int getName() { return mName; } public long getTime() { return mTime; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(mName); out.writeLong(mTime); } } public static final int CALLTYPE_UNKNOWN = 0; public static final int CALLTYPE_INCOMING = 1; public static final int CALLTYPE_OUTGOING = 2; Loading Loading @@ -87,10 +244,17 @@ public class ParcelableCallAnalytics implements Parcelable { // Whether the call object was created from an existing connection. private final boolean isCreatedFromExistingConnection; // A list of events that are associated with this call private final List<AnalyticsEvent> analyticsEvents; // A map from event-pair names to their durations. private final List<EventTiming> eventTimings; public ParcelableCallAnalytics(long startTimeMillis, long callDurationMillis, int callType, boolean isAdditionalCall, boolean isInterrupted, int callTechnologies, int callTerminationCode, boolean isEmergencyCall, String connectionService, boolean isCreatedFromExistingConnection) { boolean isCreatedFromExistingConnection, List<AnalyticsEvent> analyticsEvents, List<EventTiming> eventTimings) { this.startTimeMillis = startTimeMillis; this.callDurationMillis = callDurationMillis; this.callType = callType; Loading @@ -101,6 +265,8 @@ public class ParcelableCallAnalytics implements Parcelable { this.isEmergencyCall = isEmergencyCall; this.connectionService = connectionService; this.isCreatedFromExistingConnection = isCreatedFromExistingConnection; this.analyticsEvents = analyticsEvents; this.eventTimings = eventTimings; } public ParcelableCallAnalytics(Parcel in) { Loading @@ -114,6 +280,10 @@ public class ParcelableCallAnalytics implements Parcelable { isEmergencyCall = readByteAsBoolean(in); connectionService = in.readString(); isCreatedFromExistingConnection = readByteAsBoolean(in); analyticsEvents = new ArrayList<>(); in.readTypedList(analyticsEvents, AnalyticsEvent.CREATOR); eventTimings = new ArrayList<>(); in.readTypedList(eventTimings, EventTiming.CREATOR); } public void writeToParcel(Parcel out, int flags) { Loading @@ -127,6 +297,8 @@ public class ParcelableCallAnalytics implements Parcelable { writeBooleanAsByte(out, isEmergencyCall); out.writeString(connectionService); writeBooleanAsByte(out, isCreatedFromExistingConnection); out.writeTypedList(analyticsEvents); out.writeTypedList(eventTimings); } public long getStartTimeMillis() { Loading Loading @@ -169,6 +341,14 @@ public class ParcelableCallAnalytics implements Parcelable { return isCreatedFromExistingConnection; } public List<AnalyticsEvent> analyticsEvents() { return analyticsEvents; } public List<EventTiming> getEventTimings() { return eventTimings; } @Override public int describeContents() { return 0; Loading telecomm/java/android/telecom/ParcelableCallAnalytics.aidl→telecomm/java/android/telecom/TelecomAnalytics.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -19,4 +19,4 @@ package android.telecom; /** * {@hide} */ parcelable ParcelableCallAnalytics; parcelable TelecomAnalytics; telecomm/java/android/telecom/TelecomAnalytics.java 0 → 100644 +148 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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.telecom; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.List; /** * @hide */ @SystemApi public final class TelecomAnalytics implements Parcelable { public static final Parcelable.Creator<TelecomAnalytics> CREATOR = new Parcelable.Creator<TelecomAnalytics> () { @Override public TelecomAnalytics createFromParcel(Parcel in) { return new TelecomAnalytics(in); } @Override public TelecomAnalytics[] newArray(int size) { return new TelecomAnalytics[size]; } }; public static final class SessionTiming extends TimedEvent<Integer> implements Parcelable { public static final Parcelable.Creator<SessionTiming> CREATOR = new Parcelable.Creator<SessionTiming> () { @Override public SessionTiming createFromParcel(Parcel in) { return new SessionTiming(in); } @Override public SessionTiming[] newArray(int size) { return new SessionTiming[size]; } }; public static final int ICA_ANSWER_CALL = 1; public static final int ICA_REJECT_CALL = 2; public static final int ICA_DISCONNECT_CALL = 3; public static final int ICA_HOLD_CALL = 4; public static final int ICA_UNHOLD_CALL = 5; public static final int ICA_MUTE = 6; public static final int ICA_SET_AUDIO_ROUTE = 7; public static final int ICA_CONFERENCE = 8; public static final int CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; public static final int CSW_SET_ACTIVE = 101; public static final int CSW_SET_RINGING = 102; public static final int CSW_SET_DIALING = 103; public static final int CSW_SET_DISCONNECTED = 104; public static final int CSW_SET_ON_HOLD = 105; public static final int CSW_REMOVE_CALL = 106; public static final int CSW_SET_IS_CONFERENCED = 107; public static final int CSW_ADD_CONFERENCE_CALL = 108; private int mId; private long mTime; public SessionTiming(int id, long time) { this.mId = id; this.mTime = time; } private SessionTiming(Parcel in) { mId = in.readInt(); mTime = in.readLong(); } @Override public Integer getKey() { return mId; } @Override public long getTime() { return mTime; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(mId); out.writeLong(mTime); } } private List<SessionTiming> mSessionTimings; private List<ParcelableCallAnalytics> mCallAnalytics; public TelecomAnalytics(List<SessionTiming> sessionTimings, List<ParcelableCallAnalytics> callAnalytics) { this.mSessionTimings = sessionTimings; this.mCallAnalytics = callAnalytics; } private TelecomAnalytics(Parcel in) { mSessionTimings = new ArrayList<>(); in.readTypedList(mSessionTimings, SessionTiming.CREATOR); mCallAnalytics = new ArrayList<>(); in.readTypedList(mCallAnalytics, ParcelableCallAnalytics.CREATOR); } public List<SessionTiming> getSessionTimings() { return mSessionTimings; } public List<ParcelableCallAnalytics> getCallAnalytics() { return mCallAnalytics; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeTypedList(mSessionTimings); out.writeTypedList(mCallAnalytics); } } telecomm/java/android/telecom/TelecomManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -1443,9 +1443,9 @@ public class TelecomManager { */ @SystemApi @RequiresPermission(Manifest.permission.DUMP) public List<ParcelableCallAnalytics> dumpAnalytics() { public TelecomAnalytics dumpAnalytics() { ITelecomService service = getTelecomService(); List<ParcelableCallAnalytics> result = null; TelecomAnalytics result = null; if (service != null) { try { result = service.dumpCallAnalytics(); Loading Loading
api/system-current.txt +106 −2 Original line number Diff line number Diff line Loading @@ -39334,14 +39334,16 @@ package android.telecom { } public class ParcelableCallAnalytics implements android.os.Parcelable { ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, java.lang.String, boolean); ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, java.lang.String, boolean, java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent>, java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming>); ctor public ParcelableCallAnalytics(android.os.Parcel); method public java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> analyticsEvents(); method public int describeContents(); method public long getCallDurationMillis(); method public int getCallTechnologies(); method public int getCallTerminationCode(); method public int getCallType(); method public java.lang.String getConnectionService(); method public java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming> getEventTimings(); method public long getStartTimeMillis(); method public boolean isAdditionalCall(); method public boolean isCreatedFromExistingConnection(); Loading @@ -39362,6 +39364,73 @@ package android.telecom { field public static final int THIRD_PARTY_PHONE = 16; // 0x10 } public static final class ParcelableCallAnalytics.AnalyticsEvent implements android.os.Parcelable { ctor public ParcelableCallAnalytics.AnalyticsEvent(int, long); method public int describeContents(); method public int getEventName(); method public long getTimeSinceLastEvent(); method public void writeToParcel(android.os.Parcel, int); field public static final int AUDIO_ROUTE_BT = 204; // 0xcc field public static final int AUDIO_ROUTE_EARPIECE = 205; // 0xcd field public static final int AUDIO_ROUTE_HEADSET = 206; // 0xce field public static final int AUDIO_ROUTE_SPEAKER = 207; // 0xcf field public static final int BIND_CS = 5; // 0x5 field public static final int BLOCK_CHECK_FINISHED = 105; // 0x69 field public static final int BLOCK_CHECK_INITIATED = 104; // 0x68 field public static final int CONFERENCE_WITH = 300; // 0x12c field public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> CREATOR; field public static final int CS_BOUND = 6; // 0x6 field public static final int DIRECT_TO_VM_FINISHED = 103; // 0x67 field public static final int DIRECT_TO_VM_INITIATED = 102; // 0x66 field public static final int FILTERING_COMPLETED = 107; // 0x6b field public static final int FILTERING_INITIATED = 106; // 0x6a field public static final int FILTERING_TIMED_OUT = 108; // 0x6c field public static final int MUTE = 202; // 0xca field public static final int REMOTELY_HELD = 402; // 0x192 field public static final int REMOTELY_UNHELD = 403; // 0x193 field public static final int REQUEST_ACCEPT = 7; // 0x7 field public static final int REQUEST_HOLD = 400; // 0x190 field public static final int REQUEST_PULL = 500; // 0x1f4 field public static final int REQUEST_REJECT = 8; // 0x8 field public static final int REQUEST_UNHOLD = 401; // 0x191 field public static final int SCREENING_COMPLETED = 101; // 0x65 field public static final int SCREENING_SENT = 100; // 0x64 field public static final int SET_ACTIVE = 1; // 0x1 field public static final int SET_DIALING = 4; // 0x4 field public static final int SET_DISCONNECTED = 2; // 0x2 field public static final int SET_HOLD = 404; // 0x194 field public static final int SET_PARENT = 302; // 0x12e field public static final int SET_SELECT_PHONE_ACCOUNT = 0; // 0x0 field public static final int SILENCE = 201; // 0xc9 field public static final int SKIP_RINGING = 200; // 0xc8 field public static final int SPLIT_CONFERENCE = 301; // 0x12d field public static final int START_CONNECTION = 3; // 0x3 field public static final int SWAP = 405; // 0x195 field public static final int UNMUTE = 203; // 0xcb } public static final class ParcelableCallAnalytics.EventTiming implements android.os.Parcelable { ctor public ParcelableCallAnalytics.EventTiming(int, long); method public int describeContents(); method public int getName(); method public long getTime(); method public void writeToParcel(android.os.Parcel, int); field public static final int ACCEPT_TIMING = 0; // 0x0 field public static final int BIND_CS_TIMING = 6; // 0x6 field public static final int BLOCK_CHECK_FINISHED_TIMING = 9; // 0x9 field public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.EventTiming> CREATOR; field public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; // 0x8 field public static final int DISCONNECT_TIMING = 2; // 0x2 field public static final int FILTERING_COMPLETED_TIMING = 10; // 0xa field public static final int FILTERING_TIMED_OUT_TIMING = 11; // 0xb field public static final int HOLD_TIMING = 3; // 0x3 field public static final int INVALID = 999999; // 0xf423f field public static final int OUTGOING_TIME_TO_DIALING_TIMING = 5; // 0x5 field public static final int REJECT_TIMING = 1; // 0x1 field public static final int SCREENING_COMPLETED_TIMING = 7; // 0x7 field public static final int UNHOLD_TIMING = 4; // 0x4 } public final deprecated class Phone { method public final void addListener(android.telecom.Phone.Listener); method public final boolean canAddCall(); Loading Loading @@ -39578,6 +39647,41 @@ package android.telecom { field public static final android.os.Parcelable.Creator<android.telecom.StatusHints> CREATOR; } public final class TelecomAnalytics implements android.os.Parcelable { ctor public TelecomAnalytics(java.util.List<android.telecom.TelecomAnalytics.SessionTiming>, java.util.List<android.telecom.ParcelableCallAnalytics>); method public int describeContents(); method public java.util.List<android.telecom.ParcelableCallAnalytics> getCallAnalytics(); method public java.util.List<android.telecom.TelecomAnalytics.SessionTiming> getSessionTimings(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics> CREATOR; } public static final class TelecomAnalytics.SessionTiming implements android.os.Parcelable { ctor public TelecomAnalytics.SessionTiming(int, long); method public int describeContents(); method public java.lang.Integer getKey(); method public long getTime(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics.SessionTiming> CREATOR; field public static final int CSW_ADD_CONFERENCE_CALL = 108; // 0x6c field public static final int CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; // 0x64 field public static final int CSW_REMOVE_CALL = 106; // 0x6a field public static final int CSW_SET_ACTIVE = 101; // 0x65 field public static final int CSW_SET_DIALING = 103; // 0x67 field public static final int CSW_SET_DISCONNECTED = 104; // 0x68 field public static final int CSW_SET_IS_CONFERENCED = 107; // 0x6b field public static final int CSW_SET_ON_HOLD = 105; // 0x69 field public static final int CSW_SET_RINGING = 102; // 0x66 field public static final int ICA_ANSWER_CALL = 1; // 0x1 field public static final int ICA_CONFERENCE = 8; // 0x8 field public static final int ICA_DISCONNECT_CALL = 3; // 0x3 field public static final int ICA_HOLD_CALL = 4; // 0x4 field public static final int ICA_MUTE = 6; // 0x6 field public static final int ICA_REJECT_CALL = 2; // 0x2 field public static final int ICA_SET_AUDIO_ROUTE = 7; // 0x7 field public static final int ICA_UNHOLD_CALL = 5; // 0x5 } public class TelecomManager { method public void acceptRingingCall(); method public void acceptRingingCall(int); Loading @@ -39587,7 +39691,7 @@ package android.telecom { method public deprecated void clearAccounts(); method public void clearPhoneAccounts(); method public android.content.Intent createManageBlockedNumbersIntent(); method public java.util.List<android.telecom.ParcelableCallAnalytics> dumpAnalytics(); method public android.telecom.TelecomAnalytics dumpAnalytics(); method public void enablePhoneAccount(android.telecom.PhoneAccountHandle, boolean); method public boolean endCall(); method public android.net.Uri getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle);
telecomm/java/android/telecom/ParcelableCallAnalytics.java +181 −1 Original line number Diff line number Diff line Loading @@ -20,11 +20,168 @@ import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.List; /** * @hide */ @SystemApi public class ParcelableCallAnalytics implements Parcelable { public static final class AnalyticsEvent implements Parcelable { public static final int SET_SELECT_PHONE_ACCOUNT = 0; public static final int SET_ACTIVE = 1; public static final int SET_DISCONNECTED = 2; public static final int START_CONNECTION = 3; public static final int SET_DIALING = 4; public static final int BIND_CS = 5; public static final int CS_BOUND = 6; public static final int REQUEST_ACCEPT = 7; public static final int REQUEST_REJECT = 8; public static final int SCREENING_SENT = 100; public static final int SCREENING_COMPLETED = 101; public static final int DIRECT_TO_VM_INITIATED = 102; public static final int DIRECT_TO_VM_FINISHED = 103; public static final int BLOCK_CHECK_INITIATED = 104; public static final int BLOCK_CHECK_FINISHED = 105; public static final int FILTERING_INITIATED = 106; public static final int FILTERING_COMPLETED = 107; public static final int FILTERING_TIMED_OUT = 108; public static final int SKIP_RINGING = 200; public static final int SILENCE = 201; public static final int MUTE = 202; public static final int UNMUTE = 203; public static final int AUDIO_ROUTE_BT = 204; public static final int AUDIO_ROUTE_EARPIECE = 205; public static final int AUDIO_ROUTE_HEADSET = 206; public static final int AUDIO_ROUTE_SPEAKER = 207; public static final int CONFERENCE_WITH = 300; public static final int SPLIT_CONFERENCE = 301; public static final int SET_PARENT = 302; public static final int REQUEST_HOLD = 400; public static final int REQUEST_UNHOLD = 401; public static final int REMOTELY_HELD = 402; public static final int REMOTELY_UNHELD = 403; public static final int SET_HOLD = 404; public static final int SWAP = 405; public static final int REQUEST_PULL = 500; public static final Parcelable.Creator<AnalyticsEvent> CREATOR = new Parcelable.Creator<AnalyticsEvent> () { @Override public AnalyticsEvent createFromParcel(Parcel in) { return new AnalyticsEvent(in); } @Override public AnalyticsEvent[] newArray(int size) { return new AnalyticsEvent[size]; } }; private int mEventName; private long mTimeSinceLastEvent; public AnalyticsEvent(int eventName, long timestamp) { mEventName = eventName; mTimeSinceLastEvent = timestamp; } AnalyticsEvent(Parcel in) { mEventName = in.readInt(); mTimeSinceLastEvent = in.readLong(); } public int getEventName() { return mEventName; } public long getTimeSinceLastEvent() { return mTimeSinceLastEvent; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(mEventName); out.writeLong(mTimeSinceLastEvent); } } public static final class EventTiming implements Parcelable { public static final int ACCEPT_TIMING = 0; public static final int REJECT_TIMING = 1; public static final int DISCONNECT_TIMING = 2; public static final int HOLD_TIMING = 3; public static final int UNHOLD_TIMING = 4; public static final int OUTGOING_TIME_TO_DIALING_TIMING = 5; public static final int BIND_CS_TIMING = 6; public static final int SCREENING_COMPLETED_TIMING = 7; public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; public static final int BLOCK_CHECK_FINISHED_TIMING = 9; public static final int FILTERING_COMPLETED_TIMING = 10; public static final int FILTERING_TIMED_OUT_TIMING = 11; public static final int INVALID = 999999; public static final Parcelable.Creator<EventTiming> CREATOR = new Parcelable.Creator<EventTiming> () { @Override public EventTiming createFromParcel(Parcel in) { return new EventTiming(in); } @Override public EventTiming[] newArray(int size) { return new EventTiming[size]; } }; private int mName; private long mTime; public EventTiming(int name, long time) { this.mName = name; this.mTime = time; } private EventTiming(Parcel in) { mName = in.readInt(); mTime = in.readLong(); } public int getName() { return mName; } public long getTime() { return mTime; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(mName); out.writeLong(mTime); } } public static final int CALLTYPE_UNKNOWN = 0; public static final int CALLTYPE_INCOMING = 1; public static final int CALLTYPE_OUTGOING = 2; Loading Loading @@ -87,10 +244,17 @@ public class ParcelableCallAnalytics implements Parcelable { // Whether the call object was created from an existing connection. private final boolean isCreatedFromExistingConnection; // A list of events that are associated with this call private final List<AnalyticsEvent> analyticsEvents; // A map from event-pair names to their durations. private final List<EventTiming> eventTimings; public ParcelableCallAnalytics(long startTimeMillis, long callDurationMillis, int callType, boolean isAdditionalCall, boolean isInterrupted, int callTechnologies, int callTerminationCode, boolean isEmergencyCall, String connectionService, boolean isCreatedFromExistingConnection) { boolean isCreatedFromExistingConnection, List<AnalyticsEvent> analyticsEvents, List<EventTiming> eventTimings) { this.startTimeMillis = startTimeMillis; this.callDurationMillis = callDurationMillis; this.callType = callType; Loading @@ -101,6 +265,8 @@ public class ParcelableCallAnalytics implements Parcelable { this.isEmergencyCall = isEmergencyCall; this.connectionService = connectionService; this.isCreatedFromExistingConnection = isCreatedFromExistingConnection; this.analyticsEvents = analyticsEvents; this.eventTimings = eventTimings; } public ParcelableCallAnalytics(Parcel in) { Loading @@ -114,6 +280,10 @@ public class ParcelableCallAnalytics implements Parcelable { isEmergencyCall = readByteAsBoolean(in); connectionService = in.readString(); isCreatedFromExistingConnection = readByteAsBoolean(in); analyticsEvents = new ArrayList<>(); in.readTypedList(analyticsEvents, AnalyticsEvent.CREATOR); eventTimings = new ArrayList<>(); in.readTypedList(eventTimings, EventTiming.CREATOR); } public void writeToParcel(Parcel out, int flags) { Loading @@ -127,6 +297,8 @@ public class ParcelableCallAnalytics implements Parcelable { writeBooleanAsByte(out, isEmergencyCall); out.writeString(connectionService); writeBooleanAsByte(out, isCreatedFromExistingConnection); out.writeTypedList(analyticsEvents); out.writeTypedList(eventTimings); } public long getStartTimeMillis() { Loading Loading @@ -169,6 +341,14 @@ public class ParcelableCallAnalytics implements Parcelable { return isCreatedFromExistingConnection; } public List<AnalyticsEvent> analyticsEvents() { return analyticsEvents; } public List<EventTiming> getEventTimings() { return eventTimings; } @Override public int describeContents() { return 0; Loading
telecomm/java/android/telecom/ParcelableCallAnalytics.aidl→telecomm/java/android/telecom/TelecomAnalytics.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -19,4 +19,4 @@ package android.telecom; /** * {@hide} */ parcelable ParcelableCallAnalytics; parcelable TelecomAnalytics;
telecomm/java/android/telecom/TelecomAnalytics.java 0 → 100644 +148 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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.telecom; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.List; /** * @hide */ @SystemApi public final class TelecomAnalytics implements Parcelable { public static final Parcelable.Creator<TelecomAnalytics> CREATOR = new Parcelable.Creator<TelecomAnalytics> () { @Override public TelecomAnalytics createFromParcel(Parcel in) { return new TelecomAnalytics(in); } @Override public TelecomAnalytics[] newArray(int size) { return new TelecomAnalytics[size]; } }; public static final class SessionTiming extends TimedEvent<Integer> implements Parcelable { public static final Parcelable.Creator<SessionTiming> CREATOR = new Parcelable.Creator<SessionTiming> () { @Override public SessionTiming createFromParcel(Parcel in) { return new SessionTiming(in); } @Override public SessionTiming[] newArray(int size) { return new SessionTiming[size]; } }; public static final int ICA_ANSWER_CALL = 1; public static final int ICA_REJECT_CALL = 2; public static final int ICA_DISCONNECT_CALL = 3; public static final int ICA_HOLD_CALL = 4; public static final int ICA_UNHOLD_CALL = 5; public static final int ICA_MUTE = 6; public static final int ICA_SET_AUDIO_ROUTE = 7; public static final int ICA_CONFERENCE = 8; public static final int CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; public static final int CSW_SET_ACTIVE = 101; public static final int CSW_SET_RINGING = 102; public static final int CSW_SET_DIALING = 103; public static final int CSW_SET_DISCONNECTED = 104; public static final int CSW_SET_ON_HOLD = 105; public static final int CSW_REMOVE_CALL = 106; public static final int CSW_SET_IS_CONFERENCED = 107; public static final int CSW_ADD_CONFERENCE_CALL = 108; private int mId; private long mTime; public SessionTiming(int id, long time) { this.mId = id; this.mTime = time; } private SessionTiming(Parcel in) { mId = in.readInt(); mTime = in.readLong(); } @Override public Integer getKey() { return mId; } @Override public long getTime() { return mTime; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(mId); out.writeLong(mTime); } } private List<SessionTiming> mSessionTimings; private List<ParcelableCallAnalytics> mCallAnalytics; public TelecomAnalytics(List<SessionTiming> sessionTimings, List<ParcelableCallAnalytics> callAnalytics) { this.mSessionTimings = sessionTimings; this.mCallAnalytics = callAnalytics; } private TelecomAnalytics(Parcel in) { mSessionTimings = new ArrayList<>(); in.readTypedList(mSessionTimings, SessionTiming.CREATOR); mCallAnalytics = new ArrayList<>(); in.readTypedList(mCallAnalytics, ParcelableCallAnalytics.CREATOR); } public List<SessionTiming> getSessionTimings() { return mSessionTimings; } public List<ParcelableCallAnalytics> getCallAnalytics() { return mCallAnalytics; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeTypedList(mSessionTimings); out.writeTypedList(mCallAnalytics); } }
telecomm/java/android/telecom/TelecomManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -1443,9 +1443,9 @@ public class TelecomManager { */ @SystemApi @RequiresPermission(Manifest.permission.DUMP) public List<ParcelableCallAnalytics> dumpAnalytics() { public TelecomAnalytics dumpAnalytics() { ITelecomService service = getTelecomService(); List<ParcelableCallAnalytics> result = null; TelecomAnalytics result = null; if (service != null) { try { result = service.dumpCallAnalytics(); Loading