From d6b10d559f345eab2dd3dd89b07cfc3fd79c59bc Mon Sep 17 00:00:00 2001 From: wangqi Date: Thu, 12 Apr 2018 14:44:06 -0700 Subject: Add RTT transcript to call details. 1. Save RTT transcript when call is destroyed 2. Show RTT transcript link when it's available Bug: 67596257,77717594 Test: manual PiperOrigin-RevId: 192673172 Change-Id: If541ad9137c965166548d2fb449e835b95566727 --- java/com/android/dialer/rtt/RttTranscriptUtil.java | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 java/com/android/dialer/rtt/RttTranscriptUtil.java (limited to 'java/com/android/dialer/rtt/RttTranscriptUtil.java') diff --git a/java/com/android/dialer/rtt/RttTranscriptUtil.java b/java/com/android/dialer/rtt/RttTranscriptUtil.java new file mode 100644 index 000000000..e55d2ea55 --- /dev/null +++ b/java/com/android/dialer/rtt/RttTranscriptUtil.java @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.rtt; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.support.annotation.WorkerThread; +import com.android.dialer.common.Assert; +import com.android.dialer.rtt.RttTranscriptContract.RttTranscriptColumn; +import com.google.protobuf.InvalidProtocolBufferException; + +/** Util class to save and load RTT transcript. */ +public final class RttTranscriptUtil { + + private final RttTranscriptDatabaseHelper databaseHelper; + + public RttTranscriptUtil(Context context) { + databaseHelper = new RttTranscriptDatabaseHelper(context); + } + + /** @return true if there is RTT transcript available. */ + @WorkerThread + public boolean checkRttTranscriptAvailability(String transcriptId) { + Assert.isWorkerThread(); + try (Cursor cursor = + databaseHelper + .getReadableDatabase() + .query( + RttTranscriptDatabaseHelper.TABLE, + new String[] {RttTranscriptColumn.TRANSCRIPT_ID}, + RttTranscriptColumn.TRANSCRIPT_ID + " = ?", + new String[] {transcriptId}, + null, + null, + null)) { + if (cursor != null && cursor.moveToFirst()) { + return true; + } else { + return false; + } + } + } + + @WorkerThread + public RttTranscript getRttTranscript(String transcriptId) { + Assert.isWorkerThread(); + try (Cursor cursor = + databaseHelper + .getReadableDatabase() + .query( + RttTranscriptDatabaseHelper.TABLE, + new String[] {RttTranscriptColumn.TRANSCRIPT_DATA}, + RttTranscriptColumn.TRANSCRIPT_ID + " = ?", + new String[] {transcriptId}, + null, + null, + null)) { + if (cursor != null && cursor.moveToFirst()) { + try { + return RttTranscript.parseFrom(cursor.getBlob(0)); + } catch (InvalidProtocolBufferException e) { + throw new RuntimeException("Parse failed for RTT transcript", e); + } + } else { + return null; + } + } + } + + @WorkerThread + public void saveRttTranscript(RttTranscript rttTranscript) { + Assert.isWorkerThread(); + ContentValues value = new ContentValues(); + value.put(RttTranscriptColumn.TRANSCRIPT_ID, rttTranscript.getId()); + value.put(RttTranscriptColumn.TRANSCRIPT_DATA, rttTranscript.toByteArray()); + long id = + databaseHelper.getWritableDatabase().insert(RttTranscriptDatabaseHelper.TABLE, null, value); + if (id < 0) { + throw new RuntimeException("Failed to save RTT transcript"); + } + } +} -- cgit v1.2.3