1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.dialer;
import com.android.contacts.common.ContactsUtils.UserType;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.dialer.calllog.PhoneNumberDisplayUtil;
import android.content.Context;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
/**
* The details of a phone call to be shown in the UI.
*/
public class PhoneCallDetails {
// The number of the other party involved in the call.
public CharSequence number;
// Post-dial digits associated with the outgoing call.
public String postDialDigits;
// The number presenting rules set by the network, e.g., {@link Calls#PRESENTATION_ALLOWED}
public int numberPresentation;
// The formatted version of {@link #number}.
public CharSequence formattedNumber;
// The country corresponding with the phone number.
public String countryIso;
// The geocoded location for the phone number.
public String geocode;
/**
* The type of calls, as defined in the call log table, e.g., {@link Calls#INCOMING_TYPE}.
* <p>
* There might be multiple types if this represents a set of entries grouped together.
*/
public int[] callTypes;
// The date of the call, in milliseconds since the epoch.
public long date;
// The duration of the call in milliseconds, or 0 for missed calls.
public long duration;
// The name of the contact, or the empty string.
public CharSequence namePrimary;
// The alternative name of the contact, e.g. last name first, or the empty string
public CharSequence nameAlternative;
/**
* The user's preference on name display order, last name first or first time first.
* {@see ContactsPreferences}
*/
public int nameDisplayOrder;
// The type of phone, e.g., {@link Phone#TYPE_HOME}, 0 if not available.
public int numberType;
// The custom label associated with the phone number in the contact, or the empty string.
public CharSequence numberLabel;
// The URI of the contact associated with this phone call.
public Uri contactUri;
/**
* The photo URI of the picture of the contact that is associated with this phone call or
* null if there is none.
* <p>
* This is meant to store the high-res photo only.
*/
public Uri photoUri;
// The source type of the contact associated with this call.
public int sourceType;
// The object id type of the contact associated with this call.
public String objectId;
// The unique identifier for the account associated with the call.
public PhoneAccountHandle accountHandle;
// Features applicable to this call.
public int features;
// Total data usage for this call.
public Long dataUsage;
// Voicemail transcription
public String transcription;
// The display string for the number.
public String displayNumber;
// Whether the contact number is a voicemail number.
public boolean isVoicemail;
/** The {@link UserType} of the contact */
public @UserType long contactUserType;
/**
* If this is a voicemail, whether the message is read. For other types of calls, this defaults
* to {@code true}.
*/
public boolean isRead = true;
// If this call is a spam number.
public boolean isSpam = false;
/**
* Constructor with required fields for the details of a call with a number associated with a
* contact.
*/
public PhoneCallDetails(
Context context,
CharSequence number,
int numberPresentation,
CharSequence formattedNumber,
CharSequence postDialDigits,
boolean isVoicemail) {
this.number = number;
this.numberPresentation = numberPresentation;
this.formattedNumber = formattedNumber;
this.isVoicemail = isVoicemail;
this.postDialDigits = postDialDigits.toString();
this.displayNumber = PhoneNumberDisplayUtil.getDisplayNumber(
context,
this.number,
this.numberPresentation,
this.formattedNumber,
this.postDialDigits,
this.isVoicemail).toString();
}
/**
* Returns the preferred name for the call details as specified by the
* {@link #nameDisplayOrder}
*
* @return the preferred name
*/
public CharSequence getPreferredName() {
if (nameDisplayOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY
|| TextUtils.isEmpty(nameAlternative)) {
return namePrimary;
}
return nameAlternative;
}
}
|