summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormdooley <mdooley@google.com>2017-06-23 14:20:46 -0700
committerEric Erfanian <erfanian@google.com>2017-06-26 09:03:49 -0700
commit287a1838e00dd0a1d0df9f8e799bacb9b57e6c7e (patch)
tree2f98dc062610022990192a286c1974fbcd7688f8
parent268a1958d493a9c0110e2524848cd27c1929bf89 (diff)
downloadandroid_packages_apps_Dialer-287a1838e00dd0a1d0df9f8e799bacb9b57e6c7e.tar.gz
android_packages_apps_Dialer-287a1838e00dd0a1d0df9f8e799bacb9b57e6c7e.tar.bz2
android_packages_apps_Dialer-287a1838e00dd0a1d0df9f8e799bacb9b57e6c7e.zip
Adding voicemail transcription branding and progress UI
screen shot showing branding (its harder to capture the progress UI): https://drive.google.com/open?id=0B9o_KvtLkcuIdkkycVo1RFhsaENYV3J2Yi1LWnJzR0FfSHJR Bug: 62376944,62424455 Test: device testing PiperOrigin-RevId: 159993127 Change-Id: I8355164b5831e85de13915e221f6e0f0163e8c81
-rw-r--r--java/com/android/dialer/app/calllog/CallLogAdapter.java5
-rw-r--r--java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java16
-rw-r--r--java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java35
-rw-r--r--java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java5
-rw-r--r--java/com/android/dialer/app/res/layout/call_log_list_item.xml34
-rw-r--r--java/com/android/dialer/app/res/values/colors.xml2
-rw-r--r--java/com/android/dialer/app/res/values/strings.xml9
-rw-r--r--java/com/android/dialer/calllogutils/PhoneCallDetails.java3
-rw-r--r--java/com/android/dialer/phonenumbercache/CallLogQuery.java18
9 files changed, 113 insertions, 14 deletions
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 4966d7fba..b1edd064d 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -907,6 +907,10 @@ public class CallLogAdapter extends GroupingListAdapter
(VERSION.SDK_INT >= VERSION_CODES.N) ? cursor.getString(CallLogQuery.VIA_NUMBER) : "";
final int numberPresentation = cursor.getInt(CallLogQuery.NUMBER_PRESENTATION);
final ContactInfo cachedContactInfo = ContactInfoHelper.getContactInfo(cursor);
+ final int transcriptionState =
+ (VERSION.SDK_INT >= VERSION_CODES.O)
+ ? cursor.getInt(CallLogQuery.TRANSCRIPTION_STATE)
+ : PhoneCallDetailsHelper.TRANSCRIPTION_NOT_STARTED;
final PhoneCallDetails details =
new PhoneCallDetails(number, numberPresentation, postDialDigits);
details.viaNumber = viaNumber;
@@ -916,6 +920,7 @@ public class CallLogAdapter extends GroupingListAdapter
details.features = getCallFeatures(cursor, count);
details.geocode = cursor.getString(CallLogQuery.GEOCODED_LOCATION);
details.transcription = cursor.getString(CallLogQuery.TRANSCRIPTION);
+ details.transcriptionState = transcriptionState;
details.callTypes = getCallTypes(cursor, count);
details.accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 02433f5bb..5cf33cab2 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -769,12 +769,20 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return;
}
- final TextView view = phoneCallDetailsViews.voicemailTranscriptionView;
- if (!isExpanded || TextUtils.isEmpty(view.getText())) {
- view.setVisibility(View.GONE);
+ TextView transcriptView = phoneCallDetailsViews.voicemailTranscriptionView;
+ TextView transcriptBrandingView = phoneCallDetailsViews.voicemailTranscriptionBrandingView;
+ if (!isExpanded || TextUtils.isEmpty(transcriptView.getText())) {
+ Assert.checkArgument(TextUtils.isEmpty(transcriptBrandingView.getText()));
+ transcriptView.setVisibility(View.GONE);
+ transcriptBrandingView.setVisibility(View.GONE);
return;
}
- view.setVisibility(View.VISIBLE);
+ transcriptView.setVisibility(View.VISIBLE);
+ if (TextUtils.isEmpty(transcriptBrandingView.getText())) {
+ phoneCallDetailsViews.voicemailTranscriptionBrandingView.setVisibility(View.GONE);
+ } else {
+ phoneCallDetailsViews.voicemailTranscriptionBrandingView.setVisibility(View.VISIBLE);
+ }
}
public void updatePhoto() {
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index 0c720775a..6ece95ccd 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -45,6 +45,13 @@ public class PhoneCallDetailsHelper {
/** The maximum number of icons will be shown to represent the call types in a group. */
private static final int MAX_CALL_TYPE_ICONS = 3;
+ // TODO(mdooley): remove when these api's become public
+ // Copied from android.provider.VoicemailContract
+ static final int TRANSCRIPTION_NOT_STARTED = 0;
+ static final int TRANSCRIPTION_IN_PROGRESS = 1;
+ static final int TRANSCRIPTION_FAILED = 2;
+ static final int TRANSCRIPTION_AVALIABLE = 3;
+
private final Context mContext;
private final Resources mResources;
private final CallLogCache mCallLogCache;
@@ -145,14 +152,38 @@ public class PhoneCallDetailsHelper {
if (isVoicemail) {
int relevantLinkTypes = Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS | Linkify.WEB_URLS;
views.voicemailTranscriptionView.setAutoLinkMask(relevantLinkTypes);
- views.voicemailTranscriptionView.setText(
- TextUtils.isEmpty(details.transcription) ? null : details.transcription);
+ boolean showTranscriptBranding = false;
+ if (!TextUtils.isEmpty(details.transcription)) {
+ views.voicemailTranscriptionView.setText(details.transcription);
+
+ // Set the branding text if the voicemail was transcribed by google
+ // TODO(mdooley): the transcription state is only set by the google transcription code,
+ // but a better solution would be to check the SOURCE_PACKAGE
+ showTranscriptBranding = details.transcriptionState == TRANSCRIPTION_AVALIABLE;
+ } else {
+ if (details.transcriptionState == TRANSCRIPTION_IN_PROGRESS) {
+ views.voicemailTranscriptionView.setText(
+ mResources.getString(R.string.voicemail_transcription_in_progress));
+ showTranscriptBranding = true;
+ } else if (details.transcriptionState == TRANSCRIPTION_FAILED) {
+ views.voicemailTranscriptionView.setText(
+ mResources.getString(R.string.voicemail_transcription_failed));
+ }
+ }
+
+ if (showTranscriptBranding) {
+ views.voicemailTranscriptionBrandingView.setText(
+ mResources.getString(R.string.voicemail_transcription_branding_text));
+ } else {
+ views.voicemailTranscriptionBrandingView.setText("");
+ }
}
// Bold if not read
Typeface typeface = details.isRead ? Typeface.SANS_SERIF : Typeface.DEFAULT_BOLD;
views.nameView.setTypeface(typeface);
views.voicemailTranscriptionView.setTypeface(typeface);
+ views.voicemailTranscriptionBrandingView.setTypeface(typeface);
views.callLocationAndDate.setTypeface(typeface);
views.callLocationAndDate.setTextColor(
ContextCompat.getColor(
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
index e2e27a179..283603170 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
@@ -30,6 +30,7 @@ public final class PhoneCallDetailsViews {
public final CallTypeIconsView callTypeIcons;
public final TextView callLocationAndDate;
public final TextView voicemailTranscriptionView;
+ public final TextView voicemailTranscriptionBrandingView;
public final TextView callAccountLabel;
private PhoneCallDetailsViews(
@@ -38,12 +39,14 @@ public final class PhoneCallDetailsViews {
CallTypeIconsView callTypeIcons,
TextView callLocationAndDate,
TextView voicemailTranscriptionView,
+ TextView voicemailTranscriptionBrandingView,
TextView callAccountLabel) {
this.nameView = nameView;
this.callTypeView = callTypeView;
this.callTypeIcons = callTypeIcons;
this.callLocationAndDate = callLocationAndDate;
this.voicemailTranscriptionView = voicemailTranscriptionView;
+ this.voicemailTranscriptionBrandingView = voicemailTranscriptionBrandingView;
this.callAccountLabel = callAccountLabel;
}
@@ -61,6 +64,7 @@ public final class PhoneCallDetailsViews {
(CallTypeIconsView) view.findViewById(R.id.call_type_icons),
(TextView) view.findViewById(R.id.call_location_and_date),
(TextView) view.findViewById(R.id.voicemail_transcription),
+ (TextView) view.findViewById(R.id.voicemail_transcription_branding),
(TextView) view.findViewById(R.id.call_account_label));
}
@@ -71,6 +75,7 @@ public final class PhoneCallDetailsViews {
new CallTypeIconsView(context),
new TextView(context),
new TextView(context),
+ new TextView(context),
new TextView(context));
}
}
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item.xml b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
index afb50ffba..fd31fc2fc 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
@@ -148,17 +148,35 @@
android:visibility="gone"
android:singleLine="true"/>
- <TextView
- android:id="@+id/voicemail_transcription"
+ <LinearLayout
+ android:id="@+id/transcription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/call_log_icon_margin"
- android:textColor="@color/call_log_voicemail_transcript_color"
- android:textSize="@dimen/call_log_voicemail_transcription_text_size"
- android:ellipsize="marquee"
- android:visibility="gone"
- android:singleLine="false"
- android:maxLines="10"/>
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/voicemail_transcription_branding"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="@color/call_log_voicemail_transcript_branding_color"
+ android:textSize="@dimen/call_log_voicemail_transcription_text_size"
+ android:paddingBottom="2dp"
+ android:visibility="gone"
+ android:singleLine="true"/>
+
+ <TextView
+ android:id="@+id/voicemail_transcription"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="@color/call_log_voicemail_transcript_color"
+ android:textSize="@dimen/call_log_voicemail_transcription_text_size"
+ android:ellipsize="marquee"
+ android:visibility="gone"
+ android:singleLine="false"
+ android:maxLines="10"/>
+
+ </LinearLayout>
</LinearLayout>
diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml
index 2f6d87b49..b13020ecd 100644
--- a/java/com/android/dialer/app/res/values/colors.xml
+++ b/java/com/android/dialer/app/res/values/colors.xml
@@ -36,6 +36,8 @@
<color name="call_log_detail_color">#8a000000</color>
<!-- 87% black -->
<color name="call_log_voicemail_transcript_color">#de000000</color>
+ <!-- 54% black -->
+ <color name="call_log_voicemail_transcript_branding_color">#8a000000</color>
<!-- 70% black -->
<color name="call_log_action_color">#b3000000</color>
<!-- 54% black -->
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index 5549881c3..e9c1d2427 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -930,6 +930,15 @@
<!-- Label for setting that shows more information about the Phone app [CHAR LIMIT=30] -->
<string name="about_phone_label">About</string>
+ <!-- Label indicating who provided the voicemail transcription [CHAR LIMIT=30] -->
+ <string name="voicemail_transcription_branding_text">Transcribed by Google</string>
+
+ <!-- Label indicating that a voicemail transcription is in progress [CHAR LIMIT=30] -->
+ <string name="voicemail_transcription_in_progress">Google is transcribing...</string>
+
+ <!-- Label indicating that a voicemail transcription failed [CHAR LIMIT=30] -->
+ <string name="voicemail_transcription_failed">Transcript not available</string>
+
<!-- Button text to prompt a user to open an sms conversation [CHAR LIMIT=NONE] -->
<string name="view_conversation">View</string>
diff --git a/java/com/android/dialer/calllogutils/PhoneCallDetails.java b/java/com/android/dialer/calllogutils/PhoneCallDetails.java
index 13c528ad2..869a3d099 100644
--- a/java/com/android/dialer/calllogutils/PhoneCallDetails.java
+++ b/java/com/android/dialer/calllogutils/PhoneCallDetails.java
@@ -99,6 +99,9 @@ public class PhoneCallDetails {
// Voicemail transcription
public String transcription;
+ // Voicemail transcription state, ie. in-progress, failed, etc.
+ public int transcriptionState;
+
// The display string for the number.
public String displayNumber;
diff --git a/java/com/android/dialer/phonenumbercache/CallLogQuery.java b/java/com/android/dialer/phonenumbercache/CallLogQuery.java
index 6d4756927..2ebc302cf 100644
--- a/java/com/android/dialer/phonenumbercache/CallLogQuery.java
+++ b/java/com/android/dialer/phonenumbercache/CallLogQuery.java
@@ -60,6 +60,9 @@ public final class CallLogQuery {
@RequiresApi(VERSION_CODES.N)
public static final int VIA_NUMBER = 25;
+ @RequiresApi(VERSION_CODES.O)
+ public static final int TRANSCRIPTION_STATE = 26;
+
private static final String[] PROJECTION_M =
new String[] {
Calls._ID, // 0
@@ -97,8 +100,23 @@ public final class CallLogQuery {
PROJECTION_N = projectionList.toArray(new String[projectionList.size()]);
}
+ private static final String[] PROJECTION_O;
+
+ // TODO(mdooley): remove when this becomes a public api
+ // Copied from android.provider.CallLog.Calls
+ private static final String TRANSCRIPTION_STATE_COLUMN = "transcription_state";
+
+ static {
+ List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_N));
+ projectionList.add(TRANSCRIPTION_STATE_COLUMN);
+ PROJECTION_O = projectionList.toArray(new String[projectionList.size()]);
+ }
+
@NonNull
public static String[] getProjection() {
+ if (VERSION.SDK_INT >= VERSION_CODES.O) {
+ return PROJECTION_O;
+ }
if (VERSION.SDK_INT >= VERSION_CODES.N) {
return PROJECTION_N;
}