summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calllog
diff options
context:
space:
mode:
authoruabdullah <uabdullah@google.com>2018-02-02 14:29:20 -0800
committerCopybara-Service <copybara-piper@google.com>2018-02-02 16:37:24 -0800
commita4ddbac290d81e6f1b9988e084a7a9bb2254c3e8 (patch)
treef3dc9deba2708820071417dba5bad88108797b88 /java/com/android/dialer/calllog
parente885c6acb4910e45c2313c9715aff137c5ca9357 (diff)
Add Support for transcription state in the AnnotatedCallLog
Transcription state column is needed for voicemail transcriptions. This CL adds the support for it in the NUI so that it maybe used by the VM Tab. Bug: 72491920 Test: Unit Tests PiperOrigin-RevId: 184335015 Change-Id: I14a71890224216c957e0d6146af9dafaa1550865
Diffstat (limited to 'java/com/android/dialer/calllog')
-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
3 files changed, 67 insertions, 21 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,