summaryrefslogtreecommitdiff
path: root/java/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android')
-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;
}
}