summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormdooley <mdooley@google.com>2017-09-07 16:28:09 -0700
committerEric Erfanian <erfanian@google.com>2017-09-11 13:48:07 -0700
commitb2b77b3b4154c37b5caf39990332d00c9e9122c7 (patch)
treebf52c345d5f5cd80ff5fa3b1435013cad7cec954
parent03249752afd7d870ff708bf47d687a1643367ec5 (diff)
Updating voicemail notifications for transcription, part 2
Changing voicemail notifications to match the latest mocks, (replacing the 'Voicemail' title with what was the notification content, and putting the voicemail status or transcription in the notification content). The notifications will be updated in a following cl. screen shot: https://drive.google.com/open?id=0B9o_KvtLkcuIbDdjaTNHTFFZLW9YZEo1SG5scDR6SzloaWc4 Bug: 37340510 Test: manual PiperOrigin-RevId: 167928866 Change-Id: I81492f7fbf1cc398401a948e036854d6a8ff878b
-rw-r--r--java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java30
-rw-r--r--java/com/android/dialer/app/calllog/MissedCallNotifier.java4
-rw-r--r--java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java55
-rw-r--r--java/com/android/dialer/logging/dialer_impression.proto7
4 files changed, 75 insertions, 21 deletions
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
index c749b65ba..649a6639d 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
@@ -24,7 +24,7 @@ import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
-import android.os.Build.VERSION_CODES;
+import android.os.Build;
import android.provider.CallLog.Calls;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@@ -35,14 +35,17 @@ import android.text.TextUtils;
import com.android.dialer.app.R;
import com.android.dialer.calllogutils.PhoneNumberDisplayUtil;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.android.dialer.location.GeoUtil;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.util.PermissionsUtil;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/** Helper class operating on call log notifications. */
+@TargetApi(Build.VERSION_CODES.M)
public class CallLogNotificationsQueryHelper {
private final Context mContext;
@@ -230,6 +233,7 @@ public class CallLogNotificationsQueryHelper {
public final String transcription;
public final String countryIso;
public final long dateMs;
+ public final int transcriptionState;
public NewCall(
Uri callsUri,
@@ -240,7 +244,8 @@ public class CallLogNotificationsQueryHelper {
String accountId,
String transcription,
String countryIso,
- long dateMs) {
+ long dateMs,
+ int transcriptionState) {
this.callsUri = callsUri;
this.voicemailUri = voicemailUri;
this.number = number;
@@ -250,6 +255,7 @@ public class CallLogNotificationsQueryHelper {
this.transcription = transcription;
this.countryIso = countryIso;
this.dateMs = dateMs;
+ this.transcriptionState = transcriptionState;
}
}
@@ -270,6 +276,16 @@ public class CallLogNotificationsQueryHelper {
Calls.COUNTRY_ISO,
Calls.DATE
};
+
+ private static final String[] PROJECTION_O;
+
+ static {
+ List<String> list = new ArrayList<>();
+ list.addAll(Arrays.asList(PROJECTION));
+ list.add(VoicemailCompat.TRANSCRIPTION_STATE);
+ PROJECTION_O = list.toArray(new String[list.size()]);
+ }
+
private static final int ID_COLUMN_INDEX = 0;
private static final int NUMBER_COLUMN_INDEX = 1;
private static final int VOICEMAIL_URI_COLUMN_INDEX = 2;
@@ -279,6 +295,7 @@ public class CallLogNotificationsQueryHelper {
private static final int TRANSCRIPTION_COLUMN_INDEX = 6;
private static final int COUNTRY_ISO_COLUMN_INDEX = 7;
private static final int DATE_COLUMN_INDEX = 8;
+ private static final int TRANSCRIPTION_STATE_COLUMN_INDEX = 9;
private final ContentResolver mContentResolver;
private final Context mContext;
@@ -290,7 +307,7 @@ public class CallLogNotificationsQueryHelper {
@Override
@Nullable
- @TargetApi(VERSION_CODES.M)
+ @TargetApi(Build.VERSION_CODES.M)
public List<NewCall> query(int type) {
if (!PermissionsUtil.hasPermission(mContext, Manifest.permission.READ_CALL_LOG)) {
LogUtil.w(
@@ -309,7 +326,7 @@ public class CallLogNotificationsQueryHelper {
try (Cursor cursor =
mContentResolver.query(
Calls.CONTENT_URI_WITH_VOICEMAIL,
- PROJECTION,
+ (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) ? PROJECTION_O : PROJECTION,
selection,
selectionArgs,
Calls.DEFAULT_SORT_ORDER)) {
@@ -345,7 +362,10 @@ public class CallLogNotificationsQueryHelper {
cursor.getString(PHONE_ACCOUNT_ID_COLUMN_INDEX),
cursor.getString(TRANSCRIPTION_COLUMN_INDEX),
cursor.getString(COUNTRY_ISO_COLUMN_INDEX),
- cursor.getLong(DATE_COLUMN_INDEX));
+ cursor.getLong(DATE_COLUMN_INDEX),
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
+ ? cursor.getInt(TRANSCRIPTION_STATE_COLUMN_INDEX)
+ : VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
}
}
}
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index b363b5ab6..de766191a 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -47,6 +47,7 @@ import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.android.dialer.notification.DialerNotificationManager;
import com.android.dialer.notification.NotificationChannelId;
import com.android.dialer.notification.NotificationManagerUtils;
@@ -153,7 +154,8 @@ public class MissedCallNotifier implements Worker<Pair<Integer, String>, Void> {
null,
null,
null,
- System.currentTimeMillis());
+ System.currentTimeMillis(),
+ VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
// TODO: look up caller ID that is not in contacts.
ContactInfo contactInfo =
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
index cbadfd317..27963491d 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
@@ -27,7 +27,6 @@ import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
@@ -39,6 +38,7 @@ import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
import com.android.dialer.app.contactinfo.ContactPhotoLoader;
import com.android.dialer.app.list.DialtactsPagerAdapter;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.notification.DialerNotificationManager;
@@ -84,7 +84,7 @@ final class VisualVoicemailNotifier {
.setGroupSummary(true)
.setContentIntent(newVoicemailIntent(context, null));
- if (BuildCompat.isAtLeastO()) {
+ if (VERSION.SDK_INT >= VERSION_CODES.O) {
groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN);
PhoneAccountHandle handle = getAccountForCall(context, newCalls.get(0));
groupSummary.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
@@ -136,7 +136,7 @@ final class VisualVoicemailNotifier {
.setAutoCancel(true);
}
- private static Notification createNotificationForVoicemail(
+ static Notification createNotificationForVoicemail(
@NonNull Context context,
@NonNull NewCall voicemail,
@NonNull Map<String, ContactInfo> contactInfos) {
@@ -146,10 +146,6 @@ final class VisualVoicemailNotifier {
Notification.Builder builder =
createNotificationBuilder(context)
.setContentTitle(
- context
- .getResources()
- .getQuantityString(R.plurals.notification_voicemail_title, 1, 1))
- .setContentText(
ContactDisplayUtils.getTtsSpannedPhoneNumber(
context.getResources(),
R.string.notification_new_voicemail_ticker,
@@ -158,13 +154,51 @@ final class VisualVoicemailNotifier {
.setSound(getVoicemailRingtoneUri(context, handle))
.setDefaults(getNotificationDefaultFlags(context, handle));
+ if (!TextUtils.isEmpty(voicemail.transcription)) {
+ Logger.get(context)
+ .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION);
+ builder.setContentText(voicemail.transcription);
+ } else {
+ switch (voicemail.transcriptionState) {
+ case VoicemailCompat.TRANSCRIPTION_IN_PROGRESS:
+ Logger.get(context)
+ .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_IN_PROGRESS);
+ builder.setContentText(context.getString(R.string.voicemail_transcription_in_progress));
+ break;
+ case VoicemailCompat.TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED:
+ Logger.get(context)
+ .logImpression(
+ DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
+ builder.setContentText(
+ context.getString(R.string.voicemail_transcription_failed_no_speech));
+ break;
+ case VoicemailCompat.TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED:
+ Logger.get(context)
+ .logImpression(
+ DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
+ builder.setContentText(
+ context.getString(R.string.voicemail_transcription_failed_language_not_supported));
+ break;
+ case VoicemailCompat.TRANSCRIPTION_FAILED:
+ Logger.get(context)
+ .logImpression(
+ DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
+ builder.setContentText(context.getString(R.string.voicemail_transcription_failed));
+ break;
+ default:
+ Logger.get(context)
+ .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_NO_TRANSCRIPTION);
+ break;
+ }
+ }
+
if (voicemail.voicemailUri != null) {
builder.setDeleteIntent(
CallLogNotificationsService.createMarkSingleNewVoicemailAsOldIntent(
context, voicemail.voicemailUri));
}
- if (BuildCompat.isAtLeastO()) {
+ if (VERSION.SDK_INT >= VERSION_CODES.O) {
builder.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
}
@@ -173,11 +207,6 @@ final class VisualVoicemailNotifier {
if (photoIcon != null) {
builder.setLargeIcon(photoIcon);
}
- if (!TextUtils.isEmpty(voicemail.transcription)) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION);
- builder.setStyle(new Notification.BigTextStyle().bigText(voicemail.transcription));
- }
builder.setContentIntent(newVoicemailIntent(context, voicemail));
Logger.get(context).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED);
return builder.build();
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index 94af6c3fd..154460ccb 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -532,7 +532,10 @@ message DialerImpression {
IN_CALL_DIALPAD_CLOSE_BUTTON_PRESSED = 1267;
// More voicemail transcription impressions
- VVM_TRANSCRIPTION_JOB_STOPPED = 1268;
- VVM_TRANSCRIPTION_TASK_CANCELLED = 1269;
+ VVM_NOTIFICATION_CREATED_WITH_IN_PROGRESS = 1268;
+ VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE = 1269;
+ VVM_NOTIFICATION_CREATED_WITH_NO_TRANSCRIPTION = 1270;
+ VVM_TRANSCRIPTION_JOB_STOPPED = 1271;
+ VVM_TRANSCRIPTION_TASK_CANCELLED = 1272;
}
}