summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java3
-rw-r--r--java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java11
-rw-r--r--java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java74
-rw-r--r--java/com/android/dialer/compat/android/provider/VoicemailCompat.java6
-rw-r--r--java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java3
-rw-r--r--java/com/android/dialer/voicemail/model/VoicemailEntry.java9
6 files changed, 80 insertions, 26 deletions
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
index fea3e91e8..c8387377b 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -55,7 +55,8 @@ class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper {
+ (AnnotatedCallLog.TRANSCRIPTION + " integer, ")
+ (AnnotatedCallLog.VOICEMAIL_URI + " text, ")
+ (AnnotatedCallLog.CALL_TYPE + " integer not null, ")
- + (AnnotatedCallLog.NUMBER_ATTRIBUTES + " blob")
+ + (AnnotatedCallLog.NUMBER_ATTRIBUTES + " blob, ")
+ + (AnnotatedCallLog.TRANSCRIPTION_STATE + " integer")
+ ");";
/**
diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
index 4fee4e558..c181d7573 100644
--- a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
+++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
@@ -17,7 +17,9 @@
package com.android.dialer.calllog.database.contract;
import android.net.Uri;
+import android.os.Build;
import android.provider.BaseColumns;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.android.dialer.constants.Constants;
import java.util.Arrays;
@@ -200,6 +202,15 @@ public class AnnotatedCallLogContract {
public static final String TRANSCRIPTION = "transcription";
/**
+ * See {@link VoicemailCompat.TRANSCRIPTION_STATE}
+ *
+ * <p>Only populated in {@link Build.VERSION_CODES.O} and above
+ *
+ * <p>TYPE: INTEGER
+ */
+ public static final String TRANSCRIPTION_STATE = "transcription_state";
+
+ /**
* See {@link android.provider.CallLog.Calls#VOICEMAIL_URI}.
*
* <p>TYPE: TEXT
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index 24410ee30..ee484d95e 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -24,6 +24,8 @@ import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
import android.os.Handler;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
@@ -32,6 +34,7 @@ import android.provider.VoicemailContract.Voicemails;
import android.support.annotation.ColorInt;
import android.support.annotation.MainThread;
import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.WorkerThread;
import android.telecom.PhoneAccount;
@@ -49,6 +52,7 @@ import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
import com.android.dialer.storage.StorageComponent;
import com.android.dialer.telecom.TelecomUtil;
@@ -58,6 +62,7 @@ import com.google.common.collect.Iterables;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
@@ -235,26 +240,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
.getContentResolver()
.query(
Calls.CONTENT_URI_WITH_VOICEMAIL,
- new String[] {
- Calls._ID,
- Calls.DATE,
- Calls.LAST_MODIFIED, // TODO(a bug): Not available in M
- Calls.NUMBER,
- Calls.NUMBER_PRESENTATION,
- Calls.TYPE,
- Calls.COUNTRY_ISO,
- Calls.DURATION,
- Calls.DATA_USAGE,
- Calls.TRANSCRIPTION,
- Calls.VOICEMAIL_URI,
- Calls.IS_READ,
- Calls.NEW,
- Calls.GEOCODED_LOCATION,
- Calls.PHONE_ACCOUNT_COMPONENT_NAME,
- Calls.PHONE_ACCOUNT_ID,
- Calls.FEATURES,
- Calls.POST_DIAL_DIGITS // TODO(a bug): Not available in M
- },
+ getProjection(),
// TODO(a bug): LAST_MODIFIED not available on M
Calls.LAST_MODIFIED + " > ? AND " + Voicemails.DELETED + " = 0",
new String[] {String.valueOf(previousTimestampProcessed)},
@@ -358,6 +344,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
contentValues.put(AnnotatedCallLog.DATA_USAGE, dataUsage);
contentValues.put(AnnotatedCallLog.TRANSCRIPTION, transcription);
contentValues.put(AnnotatedCallLog.VOICEMAIL_URI, voicemailUri);
+ setTranscriptionState(cursor, contentValues);
if (existingAnnotatedCallLogIds.contains(id)) {
mutations.update(id, contentValues);
@@ -369,6 +356,53 @@ public class SystemCallLogDataSource implements CallLogDataSource {
}
}
+ private void setTranscriptionState(Cursor cursor, ContentValues contentValues) {
+ if (VERSION.SDK_INT >= VERSION_CODES.O) {
+ int transcriptionStateColumn =
+ cursor.getColumnIndexOrThrow(VoicemailCompat.TRANSCRIPTION_STATE);
+ int transcriptionState = cursor.getInt(transcriptionStateColumn);
+ contentValues.put(VoicemailCompat.TRANSCRIPTION_STATE, transcriptionState);
+ }
+ }
+
+ private static final String[] PROJECTION_PRE_O =
+ new String[] {
+ Calls._ID,
+ Calls.DATE,
+ Calls.LAST_MODIFIED, // TODO(a bug): Not available in M
+ Calls.NUMBER,
+ Calls.NUMBER_PRESENTATION,
+ Calls.TYPE,
+ Calls.COUNTRY_ISO,
+ Calls.DURATION,
+ Calls.DATA_USAGE,
+ Calls.TRANSCRIPTION,
+ Calls.VOICEMAIL_URI,
+ Calls.IS_READ,
+ Calls.NEW,
+ Calls.GEOCODED_LOCATION,
+ Calls.PHONE_ACCOUNT_COMPONENT_NAME,
+ Calls.PHONE_ACCOUNT_ID,
+ Calls.FEATURES,
+ Calls.POST_DIAL_DIGITS // TODO(a bug): Not available in M
+ };
+
+ @RequiresApi(VERSION_CODES.O)
+ private static final String[] PROJECTION_O_AND_LATER;
+
+ static {
+ List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_PRE_O));
+ projectionList.add(VoicemailCompat.TRANSCRIPTION_STATE);
+ PROJECTION_O_AND_LATER = projectionList.toArray(new String[projectionList.size()]);
+ }
+
+ private String[] getProjection() {
+ if (VERSION.SDK_INT >= VERSION_CODES.O) {
+ return PROJECTION_O_AND_LATER;
+ }
+ return PROJECTION_PRE_O;
+ }
+
private void populatePhoneAccountLabelAndColor(
Context appContext,
ContentValues contentValues,
diff --git a/java/com/android/dialer/compat/android/provider/VoicemailCompat.java b/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
index 02eebb32c..35e0ea58f 100644
--- a/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
+++ b/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
@@ -16,10 +16,10 @@
package com.android.dialer.compat.android.provider;
/**
- * Provide access to new API constants before they're publicly available
+ * Provide access to Voicemail Transcription API constants as they won't be publicly available.
*
- * <p>Copied from android.provider.VoicemailContract.Voicemails. These should become public in O-MR1
- * and these constants can be removed then.
+ * <p>Copied from android.provider.VoicemailContract.Voicemails. These do not plan to become public
+ * in O-MR1 or in the near future.
*/
public class VoicemailCompat {
diff --git a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
index 74d1b6162..11e788840 100644
--- a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
+++ b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
@@ -45,6 +45,7 @@ final class VoicemailCursorLoader extends CursorLoader {
AnnotatedCallLog.VOICEMAIL_URI,
AnnotatedCallLog.IS_READ,
AnnotatedCallLog.NUMBER_ATTRIBUTES,
+ AnnotatedCallLog.TRANSCRIPTION_STATE
};
// Indexes for VOICEMAIL_COLUMNS
@@ -59,6 +60,7 @@ final class VoicemailCursorLoader extends CursorLoader {
private static final int VOICEMAIL_URI = 8;
private static final int IS_READ = 9;
private static final int NUMBER_ATTRIBUTES = 10;
+ private static final int TRANSCRIPTION_STATE = 11;
// TODO(zachh): Optimize indexes
VoicemailCursorLoader(Context context) {
@@ -105,6 +107,7 @@ final class VoicemailCursorLoader extends CursorLoader {
.setCallType(cursor.getInt(CALL_TYPE))
.setIsRead(cursor.getInt(IS_READ))
.setNumberAttributes(numberAttributes)
+ .setTranscriptionState(cursor.getInt(TRANSCRIPTION_STATE))
.build();
}
diff --git a/java/com/android/dialer/voicemail/model/VoicemailEntry.java b/java/com/android/dialer/voicemail/model/VoicemailEntry.java
index f17a23e54..5830fb17e 100644
--- a/java/com/android/dialer/voicemail/model/VoicemailEntry.java
+++ b/java/com/android/dialer/voicemail/model/VoicemailEntry.java
@@ -20,6 +20,7 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.android.dialer.DialerPhoneNumber;
import com.android.dialer.NumberAttributes;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.google.auto.value.AutoValue;
/** Data class containing the contents of a voicemail entry from the AnnotatedCallLog. */
@@ -34,7 +35,8 @@ public abstract class VoicemailEntry {
.setNumberAttributes(NumberAttributes.getDefaultInstance())
.setDuration(0)
.setCallType(0)
- .setIsRead(0);
+ .setIsRead(0)
+ .setTranscriptionState(VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
}
public abstract int id();
@@ -44,7 +46,6 @@ public abstract class VoicemailEntry {
@NonNull
public abstract DialerPhoneNumber number();
-
@Nullable
public abstract String formattedNumber();
@@ -65,6 +66,8 @@ public abstract class VoicemailEntry {
public abstract NumberAttributes numberAttributes();
+ public abstract int transcriptionState();
+
/** Builder for {@link VoicemailEntry}. */
@AutoValue.Builder
public abstract static class Builder {
@@ -91,6 +94,8 @@ public abstract class VoicemailEntry {
public abstract Builder setNumberAttributes(NumberAttributes numberAttributes);
+ public abstract Builder setTranscriptionState(int transcriptionState);
+
public abstract VoicemailEntry build();
}
}