summaryrefslogtreecommitdiffstats
path: root/src/com/android/car/stream/telecom/RecentCallStreamProducer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/car/stream/telecom/RecentCallStreamProducer.java')
-rw-r--r--src/com/android/car/stream/telecom/RecentCallStreamProducer.java135
1 files changed, 0 insertions, 135 deletions
diff --git a/src/com/android/car/stream/telecom/RecentCallStreamProducer.java b/src/com/android/car/stream/telecom/RecentCallStreamProducer.java
deleted file mode 100644
index 9581226..0000000
--- a/src/com/android/car/stream/telecom/RecentCallStreamProducer.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2016, 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.car.stream.telecom;
-
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.CallLog;
-import android.text.TextUtils;
-import android.text.format.DateUtils;
-import android.util.Log;
-import com.android.car.stream.StreamCard;
-import com.android.car.stream.StreamProducer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Loads recent calls from the call log and produces a {@link StreamCard} for each entry.
- */
-public class RecentCallStreamProducer extends StreamProducer
- implements Loader.OnLoadCompleteListener<Cursor> {
- private static final String TAG = "RecentCallProducer";
- private static final long RECENT_CALL_TIME_RANGE = 6 * DateUtils.HOUR_IN_MILLIS;
-
- /** Number of call log items to query for */
- private static final int CALL_LOG_QUERY_LIMIT = 1;
- private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
- private CursorLoader mCursorLoader;
- private StreamCard mCurrentStreamCard;
- private long mCurrentNumber;
- private RecentCallConverter mConverter = new RecentCallConverter();
-
- public RecentCallStreamProducer(Context context) {
- super(context);
- mCursorLoader = createCallLogLoader();
- }
-
- @Override
- public void start() {
- super.start();
- if (!hasReadCallLogPermission()) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Could not onStart RecentCallStreamProducer, permissions not granted");
- }
- return;
- }
-
- if (!mCursorLoader.isStarted()) {
- mCursorLoader.startLoading();
- }
- }
-
- @Override
- public void stop() {
- if (mCursorLoader.isStarted()) {
- mCursorLoader.stopLoading();
- removeCard(mCurrentStreamCard);
- mCurrentStreamCard = null;
- mCurrentNumber = 0;
- }
- super.stop();
- }
-
- @Override
- public void onLoadComplete(Loader<Cursor> loader, Cursor cursor) {
- if (cursor == null || !cursor.moveToFirst()) {
- return;
- }
-
- int column = cursor.getColumnIndex(CallLog.Calls.NUMBER);
- String number = cursor.getString(column);
- column = cursor.getColumnIndex(CallLog.Calls.DATE);
- long callTimeMs = cursor.getLong(column);
- // Display if we have a phone number, and the call was within 6hours.
- number = number.replaceAll("[^0-9]", "");
- long timestamp = System.currentTimeMillis();
- long digits = Long.parseLong(number);
-
- if (!TextUtils.isEmpty(number) &&
- (timestamp - callTimeMs) < RECENT_CALL_TIME_RANGE) {
- if (mCurrentStreamCard == null || mCurrentNumber != digits) {
- removeCard(mCurrentStreamCard);
- mCurrentStreamCard = mConverter.createStreamCard(mContext, number, timestamp);
- mCurrentNumber = digits;
- postCard(mCurrentStreamCard);
- }
- }
- }
-
- private boolean hasReadCallLogPermission() {
- return mContext.checkSelfPermission(android.Manifest.permission.READ_CALL_LOG)
- == PackageManager.PERMISSION_GRANTED;
- }
-
- /**
- * Creates a CursorLoader for Call data.
- * Note: NOT to be used with LoaderManagers.
- */
- private CursorLoader createCallLogLoader() {
- // We need to check for NULL explicitly otherwise entries with where READ is NULL
- // may not match either the query or its negation.
- // We consider the calls that are not yet consumed (i.e. IS_READ = 0) as "new".
- StringBuilder where = new StringBuilder();
- List<String> selectionArgs = new ArrayList<String>();
-
- String selection = where.length() > 0 ? where.toString() : null;
- Uri uri = CallLog.Calls.CONTENT_URI.buildUpon()
- .appendQueryParameter(CallLog.Calls.LIMIT_PARAM_KEY,
- Integer.toString(CALL_LOG_QUERY_LIMIT))
- .build();
- CursorLoader loader = new CursorLoader(mContext, uri, null, selection,
- selectionArgs.toArray(EMPTY_STRING_ARRAY), CallLog.Calls.DEFAULT_SORT_ORDER);
- loader.registerListener(0, this /* OnLoadCompleteListener */);
- return loader;
- }
-
-}