From 25879e337c8f53e011a4f004effe2b0272083b4e Mon Sep 17 00:00:00 2001 From: uabdullah Date: Tue, 27 Mar 2018 11:05:43 -0700 Subject: When transcription setting is enabled, retranscribe voicemails When transcription toggle is turned off, we delete all local transcriptions. However when it is turned back on, we should re-transcribe all those( previously transcribed, then deleted) voicemails again. Bug: 74033229 Test: N/A PiperOrigin-RevId: 190640972 Change-Id: Iaaf324e74c7630852daeb314f34c2c3095fe3196 --- java/com/android/voicemail/impl/VoicemailClientImpl.java | 8 ++++++++ .../voicemail/impl/settings/VisualVoicemailSettingsUtil.java | 8 ++++++-- .../voicemail/impl/transcribe/TranscriptionBackfillService.java | 7 ++++++- .../android/voicemail/impl/transcribe/TranscriptionDbHelper.java | 9 ++++++++- 4 files changed, 28 insertions(+), 4 deletions(-) (limited to 'java') diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java index b0881c9a3..187ded932 100644 --- a/java/com/android/voicemail/impl/VoicemailClientImpl.java +++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java @@ -125,6 +125,11 @@ public class VoicemailClientImpl implements VoicemailClient { @Override public boolean isVoicemailTranscriptionAvailable( Context context, PhoneAccountHandle phoneAccountHandle) { + if (phoneAccountHandle == null) { + LogUtil.i( + "VoicemailClientImpl.isVoicemailTranscriptionAvailable", "phone account handle is null"); + } + if (!BuildCompat.isAtLeastO()) { LogUtil.i( "VoicemailClientImpl.isVoicemailTranscriptionAvailable", "not running on O or later"); @@ -198,6 +203,9 @@ public class VoicemailClientImpl implements VoicemailClient { "transcription must be available before enabling/disabling it"); VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled( context, phoneAccountHandle, enabled); + if (enabled) { + TranscriptionBackfillService.scheduleTask(context, phoneAccountHandle); + } } @Override diff --git a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java index e7248c40f..3acf60d5f 100644 --- a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java +++ b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java @@ -23,9 +23,11 @@ import android.provider.VoicemailContract.Voicemails; import android.support.annotation.VisibleForTesting; import android.telecom.PhoneAccountHandle; import com.android.dialer.common.Assert; +import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.DialerExecutor.Worker; import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.common.database.Selection; +import com.android.dialer.compat.android.provider.VoicemailCompat; import com.android.voicemail.VoicemailComponent; import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper; import com.android.voicemail.impl.VisualVoicemailPreferences; @@ -130,6 +132,7 @@ public class VisualVoicemailSettingsUtil { public static boolean isEnabled(Context context, PhoneAccountHandle phoneAccount) { if (phoneAccount == null) { + LogUtil.i("VisualVoicemailSettingsUtil.isEnabled", "phone account is null"); return false; } @@ -213,9 +216,10 @@ public class VisualVoicemailSettingsUtil { @Override public Void doInBackground(Void unused) { - ContentValues contentValues = new ContentValues(); - contentValues.put(Voicemails.TRANSCRIPTION, ""); + contentValues.putNull(Voicemails.TRANSCRIPTION); + contentValues.put( + VoicemailCompat.TRANSCRIPTION_STATE, VoicemailCompat.TRANSCRIPTION_NOT_STARTED); Selection selection = Selection.builder() diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java index 8161e71f7..8fc40ee99 100644 --- a/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java +++ b/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java @@ -22,6 +22,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; +import android.os.Bundle; import android.support.annotation.WorkerThread; import android.support.v4.app.JobIntentService; import android.support.v4.os.BuildCompat; @@ -66,6 +67,10 @@ public class TranscriptionBackfillService extends JobIntentService { protected void onHandleWork(Intent intent) { LogUtil.enterBlock("TranscriptionBackfillService.onHandleWork"); + Bundle bundle = intent.getExtras(); + final PhoneAccountHandle account = + (PhoneAccountHandle) bundle.get(TranscriptionService.EXTRA_ACCOUNT_HANDLE); + TranscriptionDbHelper dbHelper = new TranscriptionDbHelper(this); List untranscribed = dbHelper.getUntranscribedVoicemails(); LogUtil.i( @@ -75,7 +80,7 @@ public class TranscriptionBackfillService extends JobIntentService { for (Uri uri : untranscribed) { ThreadUtil.postOnUiThread( () -> { - TranscriptionService.scheduleNewVoicemailTranscriptionJob(this, uri, null, false); + TranscriptionService.scheduleNewVoicemailTranscriptionJob(this, uri, account, false); }); } } diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java b/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java index 24c07cc37..6ffb8485d 100644 --- a/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java +++ b/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java @@ -87,7 +87,14 @@ public class TranscriptionDbHelper { Assert.isWorkerThread(); List untranscribed = new ArrayList<>(); String whereClause = - Voicemails.TRANSCRIPTION + " is NULL AND " + VoicemailCompat.TRANSCRIPTION_STATE + "=?"; + "(" + + Voicemails.TRANSCRIPTION + + " is NULL OR " + + Voicemails.TRANSCRIPTION + + " = '')" + + " AND " + + VoicemailCompat.TRANSCRIPTION_STATE + + "=?"; String[] whereArgs = {String.valueOf(VoicemailCompat.TRANSCRIPTION_NOT_STARTED)}; try (Cursor cursor = contentResolver.query(uri, PROJECTION, whereClause, whereArgs, null)) { if (cursor == null) { -- cgit v1.2.3