query(int type) {
if (!PermissionsUtil.hasPermission(mContext, Manifest.permission.READ_CALL_LOG)) {
- LogUtil.w(TAG, "No READ_CALL_LOG permission, returning null for calls lookup.");
+ LogUtil.w(
+ "CallLogNotificationsQueryHelper.DefaultNewCallsQuery.query",
+ "no READ_CALL_LOG permission, returning null for calls lookup.");
return null;
}
final String selection = String.format("%s = 1 AND %s = ?", Calls.NEW, Calls.TYPE);
@@ -302,7 +316,9 @@ public class CallLogNotificationsQueryHelper {
}
return newCalls;
} catch (RuntimeException e) {
- LogUtil.w(TAG, "Exception when querying Contacts Provider for calls lookup");
+ LogUtil.w(
+ "CallLogNotificationsQueryHelper.DefaultNewCallsQuery.query",
+ "exception when querying Contacts Provider for calls lookup");
return null;
}
}
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
index 7dfd2cb69967548463423dd2999220f28baf9741..be1ebfb6ddc4e64f3cfdd09758808177df12fb33 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
@@ -17,12 +17,13 @@
package com.android.dialer.app.calllog;
import android.app.IntentService;
+import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
-import android.os.Handler;
-import android.os.Looper;
+import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
import com.android.dialer.common.LogUtil;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.PermissionsUtil;
@@ -43,16 +44,20 @@ import com.android.dialer.util.PermissionsUtil;
*/
public class CallLogNotificationsService extends IntentService {
- /** Action to mark all the new voicemails as old. */
- public static final String ACTION_MARK_NEW_VOICEMAILS_AS_OLD =
- "com.android.dialer.calllog.ACTION_MARK_NEW_VOICEMAILS_AS_OLD";
+ private static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
+ "com.android.dialer.calllog.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD";
- /** Action to mark all the new missed calls as old. */
- public static final String ACTION_MARK_NEW_MISSED_CALLS_AS_OLD =
- "com.android.dialer.calllog.ACTION_MARK_NEW_MISSED_CALLS_AS_OLD";
+ private static final String ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD =
+ "com.android.dialer.calllog.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD ";
- /** Action to update missed call notifications with a post call note. */
- public static final String ACTION_INCOMING_POST_CALL =
+ @VisibleForTesting
+ static final String ACTION_CANCEL_ALL_MISSED_CALLS =
+ "com.android.dialer.calllog.ACTION_CANCEL_ALL_MISSED_CALLS";
+
+ private static final String ACTION_CANCEL_SINGLE_MISSED_CALL =
+ "com.android.dialer.calllog.ACTION_CANCEL_SINGLE_MISSED_CALL";
+
+ private static final String ACTION_INCOMING_POST_CALL =
"com.android.dialer.calllog.INCOMING_POST_CALL";
/** Action to call back a missed call. */
@@ -64,7 +69,7 @@ public class CallLogNotificationsService extends IntentService {
*
* It must be a {@link String}
*/
- public static final String EXTRA_POST_CALL_NOTE = "POST_CALL_NOTE";
+ private static final String EXTRA_POST_CALL_NOTE = "POST_CALL_NOTE";
/**
* Extra to be included with {@link #ACTION_INCOMING_POST_CALL} to represent the phone number the
@@ -72,10 +77,9 @@ public class CallLogNotificationsService extends IntentService {
*
*
It must be a {@link String}
*/
- public static final String EXTRA_POST_CALL_NUMBER = "POST_CALL_NUMBER";
+ private static final String EXTRA_POST_CALL_NUMBER = "POST_CALL_NUMBER";
public static final int UNKNOWN_MISSED_CALL_COUNT = -1;
- private VoicemailQueryHandler mVoicemailQueryHandler;
public CallLogNotificationsService() {
super("CallLogNotificationsService");
@@ -89,52 +93,95 @@ public class CallLogNotificationsService extends IntentService {
context.startService(serviceIntent);
}
- public static void markNewVoicemailsAsOld(Context context, @Nullable Uri voicemailUri) {
+ public static void markAllNewVoicemailsAsOld(Context context) {
+ LogUtil.enterBlock("CallLogNotificationsService.markAllNewVoicemailsAsOld");
Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
- serviceIntent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD);
+ serviceIntent.setAction(CallLogNotificationsService.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD);
+ context.startService(serviceIntent);
+ }
+
+ public static void markSingleNewVoicemailAsOld(Context context, @Nullable Uri voicemailUri) {
+ LogUtil.enterBlock("CallLogNotificationsService.markSingleNewVoicemailAsOld");
+ Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
+ serviceIntent.setAction(CallLogNotificationsService.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD);
serviceIntent.setData(voicemailUri);
context.startService(serviceIntent);
}
- public static void markNewMissedCallsAsOld(Context context, @Nullable Uri callUri) {
+ public static PendingIntent createMarkAllNewVoicemailsAsOldIntent(@NonNull Context context) {
+ Intent intent = new Intent(context, CallLogNotificationsService.class);
+ intent.setAction(CallLogNotificationsService.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD);
+ return PendingIntent.getService(context, 0, intent, 0);
+ }
+
+ public static PendingIntent createMarkSingleNewVoicemailAsOldIntent(
+ @NonNull Context context, @Nullable Uri voicemailUri) {
+ Intent intent = new Intent(context, CallLogNotificationsService.class);
+ intent.setAction(CallLogNotificationsService.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD);
+ intent.setData(voicemailUri);
+ return PendingIntent.getService(context, 0, intent, 0);
+ }
+
+ public static void cancelAllMissedCalls(@NonNull Context context) {
+ LogUtil.enterBlock("CallLogNotificationsService.cancelAllMissedCalls");
Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
- serviceIntent.setAction(ACTION_MARK_NEW_MISSED_CALLS_AS_OLD);
- serviceIntent.setData(callUri);
+ serviceIntent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS);
context.startService(serviceIntent);
}
+ public static PendingIntent createCancelAllMissedCallsPendingIntent(@NonNull Context context) {
+ Intent intent = new Intent(context, CallLogNotificationsService.class);
+ intent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS);
+ return PendingIntent.getService(context, 0, intent, 0);
+ }
+
+ public static PendingIntent createCancelSingleMissedCallPendingIntent(
+ @NonNull Context context, @Nullable Uri callUri) {
+ Intent intent = new Intent(context, CallLogNotificationsService.class);
+ intent.setAction(ACTION_CANCEL_SINGLE_MISSED_CALL);
+ intent.setData(callUri);
+ return PendingIntent.getService(context, 0, intent, 0);
+ }
+
@Override
protected void onHandleIntent(Intent intent) {
if (intent == null) {
- LogUtil.d("CallLogNotificationsService.onHandleIntent", "could not handle null intent");
+ LogUtil.e("CallLogNotificationsService.onHandleIntent", "could not handle null intent");
return;
}
- if (!PermissionsUtil.hasPermission(this, android.Manifest.permission.READ_CALL_LOG)) {
+ if (!PermissionsUtil.hasPermission(this, android.Manifest.permission.READ_CALL_LOG)
+ || !PermissionsUtil.hasPermission(this, android.Manifest.permission.WRITE_CALL_LOG)) {
+ LogUtil.e("CallLogNotificationsService.onHandleIntent", "no READ_CALL_LOG permission");
return;
}
String action = intent.getAction();
+ LogUtil.i("CallLogNotificationsService.onHandleIntent", "action: " + action);
switch (action) {
- case ACTION_MARK_NEW_VOICEMAILS_AS_OLD:
- // VoicemailQueryHandler cannot be created on the IntentService worker thread. The completed
- // callback might happen when the thread is dead.
- Handler handler = new Handler(Looper.getMainLooper());
- handler.post(
- () -> {
- if (mVoicemailQueryHandler == null) {
- mVoicemailQueryHandler = new VoicemailQueryHandler(this, getContentResolver());
- }
- mVoicemailQueryHandler.markNewVoicemailsAsOld(intent.getData());
- });
+ case ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD:
+ VoicemailQueryHandler.markAllNewVoicemailsAsRead(this);
+ VisualVoicemailNotifier.cancelAllVoicemailNotifications(this);
+ break;
+ case ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD:
+ Uri voicemailUri = intent.getData();
+ VoicemailQueryHandler.markSingleNewVoicemailAsRead(this, voicemailUri);
+ VisualVoicemailNotifier.cancelSingleVoicemailNotification(this, voicemailUri);
break;
case ACTION_INCOMING_POST_CALL:
String note = intent.getStringExtra(EXTRA_POST_CALL_NOTE);
String phoneNumber = intent.getStringExtra(EXTRA_POST_CALL_NUMBER);
MissedCallNotifier.getIstance(this).insertPostCallNotification(phoneNumber, note);
break;
- case ACTION_MARK_NEW_MISSED_CALLS_AS_OLD:
- CallLogNotificationsQueryHelper.removeMissedCallNotifications(this, intent.getData());
+ case ACTION_CANCEL_ALL_MISSED_CALLS:
+ CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(this);
+ MissedCallNotifier.cancelAllMissedCallNotifications(this);
+ TelecomUtil.cancelMissedCallsNotification(this);
+ break;
+ case ACTION_CANCEL_SINGLE_MISSED_CALL:
+ Uri callUri = intent.getData();
+ CallLogNotificationsQueryHelper.markSingleMissedCallInCallLogAsRead(this, callUri);
+ MissedCallNotifier.cancelSingleMissedCallNotification(this, callUri);
TelecomUtil.cancelMissedCallsNotification(this);
break;
case ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION:
@@ -145,7 +192,7 @@ public class CallLogNotificationsService extends IntentService {
intent.getData());
break;
default:
- LogUtil.d("CallLogNotificationsService.onHandleIntent", "could not handle: " + intent);
+ LogUtil.e("CallLogNotificationsService.onHandleIntent", "no handler for action: " + action);
break;
}
}
diff --git a/java/com/android/dialer/app/calllog/CallLogReceiver.java b/java/com/android/dialer/app/calllog/CallLogReceiver.java
index 172d001006b7a68135c72eeb1030f91b1be41f24..ce3132d126f384d6113b1c1e6f6b35537e603c4b 100644
--- a/java/com/android/dialer/app/calllog/CallLogReceiver.java
+++ b/java/com/android/dialer/app/calllog/CallLogReceiver.java
@@ -39,10 +39,10 @@ public class CallLogReceiver extends BroadcastReceiver {
if (VoicemailContract.ACTION_NEW_VOICEMAIL.equals(intent.getAction())) {
checkVoicemailStatus(context);
PendingResult pendingResult = goAsync();
- DefaultVoicemailNotifier.updateVoicemailNotifications(context, pendingResult::finish);
+ VisualVoicemailUpdateTask.scheduleTask(context, pendingResult::finish);
} else if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
PendingResult pendingResult = goAsync();
- DefaultVoicemailNotifier.updateVoicemailNotifications(context, pendingResult::finish);
+ VisualVoicemailUpdateTask.scheduleTask(context, pendingResult::finish);
} else {
LogUtil.w("CallLogReceiver.onReceive", "could not handle: " + intent);
}
diff --git a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
index a01b895274d7187c0a43b1605d3eadd593101b94..155a9161870ff9e028c7b1c890b81efddb0bb079 100644
--- a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
+++ b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
@@ -54,7 +54,7 @@ public class ClearCallLogDialog extends DialogFragment {
ProgressDialog.show(
getActivity(), getString(R.string.clearCallLogProgress_title), "", true, false);
progressDialog.setOwnerActivity(getActivity());
- CallLogNotificationsService.markNewMissedCallsAsOld(getContext(), null);
+ CallLogNotificationsService.cancelAllMissedCalls(getContext());
final AsyncTask task =
new AsyncTask() {
@Override
diff --git a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java b/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
deleted file mode 100644
index 1f45f70863df361097a69f4f3bd9bd0598e7f1f6..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * Copyright (C) 2011 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.app.calllog;
-
-import android.annotation.TargetApi;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.os.PersistableBundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.support.v4.os.BuildCompat;
-import android.support.v4.util.Pair;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.telephony.CarrierConfigManager;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.ArrayMap;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
-import com.android.contacts.common.util.ContactDisplayUtils;
-import com.android.dialer.app.DialtactsActivity;
-import com.android.dialer.app.R;
-import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
-import com.android.dialer.app.contactinfo.ContactPhotoLoader;
-import com.android.dialer.app.list.DialtactsPagerAdapter;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.calllogutils.PhoneAccountUtils;
-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.DialerExecutors;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.notification.NotificationChannelManager.Channel;
-import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.telecom.TelecomUtil;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/** Shows a voicemail notification in the status bar. */
-public class DefaultVoicemailNotifier implements Worker {
-
- public static final String TAG = "VoicemailNotifier";
-
- /** The tag used to identify notifications from this class. */
- static final String VISUAL_VOICEMAIL_NOTIFICATION_TAG = "DefaultVoicemailNotifier";
- /** The identifier of the notification of new voicemails. */
- private static final int VISUAL_VOICEMAIL_NOTIFICATION_ID = R.id.notification_visual_voicemail;
-
- private static final int LEGACY_VOICEMAIL_NOTIFICATION_ID = R.id.notification_legacy_voicemail;
- private static final String LEGACY_VOICEMAIL_NOTIFICATION_TAG = "legacy_voicemail";
-
- private final Context context;
- private final CallLogNotificationsQueryHelper queryHelper;
- private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
-
- @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
- DefaultVoicemailNotifier(
- Context context,
- CallLogNotificationsQueryHelper queryHelper,
- FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler) {
- this.context = context;
- this.queryHelper = queryHelper;
- this.filteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler;
- }
-
- public DefaultVoicemailNotifier(Context context) {
- this(
- context,
- CallLogNotificationsQueryHelper.getInstance(context),
- new FilteredNumberAsyncQueryHandler(context));
- }
-
- @Nullable
- @Override
- public Void doInBackground(@Nullable Void input) throws Throwable {
- updateNotification();
- return null;
- }
-
- /**
- * Updates the notification and notifies of the call with the given URI.
- *
- * Clears the notification if there are no new voicemails, and notifies if the given URI
- * corresponds to a new voicemail.
- *
- *
It is not safe to call this method from the main thread.
- */
- @VisibleForTesting
- @WorkerThread
- void updateNotification() {
- Assert.isWorkerThread();
- // Lookup the list of new voicemails to include in the notification.
- final List newCalls = queryHelper.getNewVoicemails();
-
- if (newCalls == null) {
- // Query failed, just return.
- return;
- }
-
- Resources resources = context.getResources();
-
- // This represents a list of names to include in the notification.
- String callers = null;
-
- // Maps each number into a name: if a number is in the map, it has already left a more
- // recent voicemail.
- final Map contactInfos = new ArrayMap<>();
-
- // Iterate over the new voicemails to determine all the information above.
- Iterator itr = newCalls.iterator();
- while (itr.hasNext()) {
- NewCall newCall = itr.next();
-
- // Skip notifying for numbers which are blocked.
- if (!FilteredNumbersUtil.hasRecentEmergencyCall(context)
- && filteredNumberAsyncQueryHandler.getBlockedIdSynchronous(
- newCall.number, newCall.countryIso)
- != null) {
- itr.remove();
-
- if (newCall.voicemailUri != null) {
- // Delete the voicemail.
- CallLogAsyncTaskUtil.deleteVoicemailSynchronous(context, newCall.voicemailUri);
- }
- continue;
- }
-
- // Check if we already know the name associated with this number.
- ContactInfo contactInfo = contactInfos.get(newCall.number);
- if (contactInfo == null) {
- contactInfo =
- queryHelper.getContactInfo(
- newCall.number, newCall.numberPresentation, newCall.countryIso);
- contactInfos.put(newCall.number, contactInfo);
- // This is a new caller. Add it to the back of the list of callers.
- if (TextUtils.isEmpty(callers)) {
- callers = contactInfo.name;
- } else {
- callers =
- resources.getString(
- R.string.notification_voicemail_callers_list, callers, contactInfo.name);
- }
- }
- }
-
- if (newCalls.isEmpty()) {
- // No voicemails to notify about
- return;
- }
-
- Notification.Builder groupSummary =
- createNotificationBuilder()
- .setContentTitle(
- resources.getQuantityString(
- R.plurals.notification_voicemail_title, newCalls.size(), newCalls.size()))
- .setContentText(callers)
- .setDeleteIntent(createMarkNewVoicemailsAsOldIntent(null))
- .setGroupSummary(true)
- .setContentIntent(newVoicemailIntent(null));
-
- if (BuildCompat.isAtLeastO()) {
- groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN);
- }
-
- NotificationChannelManager.applyChannel(
- groupSummary,
- context,
- Channel.VOICEMAIL,
- PhoneAccountHandles.getAccount(context, newCalls.get(0)));
-
- LogUtil.i(TAG, "Creating visual voicemail notification");
- getNotificationManager()
- .notify(
- VISUAL_VOICEMAIL_NOTIFICATION_TAG,
- VISUAL_VOICEMAIL_NOTIFICATION_ID,
- groupSummary.build());
-
- for (NewCall voicemail : newCalls) {
- getNotificationManager()
- .notify(
- voicemail.callsUri.toString(),
- VISUAL_VOICEMAIL_NOTIFICATION_ID,
- createNotificationForVoicemail(voicemail, contactInfos));
- }
- }
-
- /**
- * Replicates how packages/services/Telephony/NotificationMgr.java handles legacy voicemail
- * notification. The notification will not be stackable because no information is available for
- * individual voicemails.
- */
- @TargetApi(VERSION_CODES.O)
- public void notifyLegacyVoicemail(
- @NonNull PhoneAccountHandle phoneAccountHandle,
- int count,
- String voicemailNumber,
- PendingIntent callVoicemailIntent,
- PendingIntent voicemailSettingIntent,
- boolean isRefresh) {
- Assert.isNotNull(phoneAccountHandle);
- Assert.checkArgument(BuildCompat.isAtLeastO());
- TelephonyManager telephonyManager =
- context
- .getSystemService(TelephonyManager.class)
- .createForPhoneAccountHandle(phoneAccountHandle);
- if (telephonyManager == null) {
- LogUtil.e(TAG, "invalid PhoneAccountHandle, ignoring");
- return;
- }
- LogUtil.i(TAG, "Creating legacy voicemail notification");
-
- PersistableBundle carrierConfig = telephonyManager.getCarrierConfig();
-
- String notificationTitle =
- context
- .getResources()
- .getQuantityString(R.plurals.notification_voicemail_title, count, count);
-
- TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
- PhoneAccount phoneAccount = telecomManager.getPhoneAccount(phoneAccountHandle);
-
- String notificationText;
- PendingIntent pendingIntent;
-
- if (voicemailSettingIntent != null) {
- // If the voicemail number if unknown, instead of calling voicemail, take the user
- // to the voicemail settings.
- notificationText = context.getString(R.string.notification_voicemail_no_vm_number);
- pendingIntent = voicemailSettingIntent;
- } else {
- if (PhoneAccountUtils.getSubscriptionPhoneAccounts(context).size() > 1) {
- notificationText = phoneAccount.getShortDescription().toString();
- } else {
- notificationText =
- String.format(
- context.getString(R.string.notification_voicemail_text_format),
- PhoneNumberUtils.formatNumber(voicemailNumber));
- }
- pendingIntent = callVoicemailIntent;
- }
- Notification.Builder builder = new Notification.Builder(context);
- builder
- .setSmallIcon(android.R.drawable.stat_notify_voicemail)
- .setColor(context.getColor(R.color.dialer_theme_color))
- .setWhen(System.currentTimeMillis())
- .setContentTitle(notificationTitle)
- .setContentText(notificationText)
- .setContentIntent(pendingIntent)
- .setSound(telephonyManager.getVoicemailRingtoneUri(phoneAccountHandle))
- .setOngoing(
- carrierConfig.getBoolean(
- CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL))
- .setOnlyAlertOnce(isRefresh);
-
- if (telephonyManager.isVoicemailVibrationEnabled(phoneAccountHandle)) {
- builder.setDefaults(Notification.DEFAULT_VIBRATE);
- }
-
- NotificationChannelManager.applyChannel(
- builder, context, Channel.VOICEMAIL, phoneAccountHandle);
- Notification notification = builder.build();
- getNotificationManager()
- .notify(LEGACY_VOICEMAIL_NOTIFICATION_TAG, LEGACY_VOICEMAIL_NOTIFICATION_ID, notification);
- }
-
- public void cancelLegacyNotification() {
- LogUtil.i(TAG, "Clearing legacy voicemail notification");
- getNotificationManager()
- .cancel(LEGACY_VOICEMAIL_NOTIFICATION_TAG, LEGACY_VOICEMAIL_NOTIFICATION_ID);
- }
-
- /**
- * Determines which ringtone Uri and Notification defaults to use when updating the notification
- * for the given call.
- */
- private Pair getNotificationInfo(@Nullable NewCall callToNotify) {
- LogUtil.v(TAG, "getNotificationInfo");
- if (callToNotify == null) {
- LogUtil.i(TAG, "callToNotify == null");
- return new Pair<>(null, 0);
- }
- PhoneAccountHandle accountHandle = PhoneAccountHandles.getAccount(context, callToNotify);
- if (accountHandle == null) {
- LogUtil.i(TAG, "No default phone account found, using default notification ringtone");
- return new Pair<>(null, Notification.DEFAULT_ALL);
- }
- return new Pair<>(
- TelephonyManagerCompat.getVoicemailRingtoneUri(getTelephonyManager(), accountHandle),
- getNotificationDefaults(accountHandle));
- }
-
- private int getNotificationDefaults(PhoneAccountHandle accountHandle) {
- if (VERSION.SDK_INT >= VERSION_CODES.N) {
- return TelephonyManagerCompat.isVoicemailVibrationEnabled(
- getTelephonyManager(), accountHandle)
- ? Notification.DEFAULT_VIBRATE
- : 0;
- }
- return Notification.DEFAULT_ALL;
- }
-
- /** Creates a pending intent that marks all new voicemails as old. */
- private PendingIntent createMarkNewVoicemailsAsOldIntent(@Nullable Uri voicemailUri) {
- Intent intent = new Intent(context, CallLogNotificationsService.class);
- intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD);
- intent.setData(voicemailUri);
- return PendingIntent.getService(context, 0, intent, 0);
- }
-
- private NotificationManager getNotificationManager() {
- return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- }
-
- private TelephonyManager getTelephonyManager() {
- return (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- }
-
- private Notification createNotificationForVoicemail(
- @NonNull NewCall voicemail, @NonNull Map contactInfos) {
- Pair notificationInfo = getNotificationInfo(voicemail);
- ContactInfo contactInfo = contactInfos.get(voicemail.number);
-
- Notification.Builder notificationBuilder =
- createNotificationBuilder()
- .setContentTitle(
- context
- .getResources()
- .getQuantityString(R.plurals.notification_voicemail_title, 1, 1))
- .setContentText(
- ContactDisplayUtils.getTtsSpannedPhoneNumber(
- context.getResources(),
- R.string.notification_new_voicemail_ticker,
- contactInfo.name))
- .setWhen(voicemail.dateMs)
- .setSound(notificationInfo.first)
- .setDefaults(notificationInfo.second);
-
- if (voicemail.voicemailUri != null) {
- notificationBuilder.setDeleteIntent(
- createMarkNewVoicemailsAsOldIntent(voicemail.voicemailUri));
- }
-
- NotificationChannelManager.applyChannel(
- notificationBuilder,
- context,
- Channel.VOICEMAIL,
- PhoneAccountHandles.getAccount(context, voicemail));
-
- ContactPhotoLoader loader = new ContactPhotoLoader(context, contactInfo);
- Bitmap photoIcon = loader.loadPhotoIcon();
- if (photoIcon != null) {
- notificationBuilder.setLargeIcon(photoIcon);
- }
- if (!TextUtils.isEmpty(voicemail.transcription)) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION);
- notificationBuilder.setStyle(
- new Notification.BigTextStyle().bigText(voicemail.transcription));
- }
- notificationBuilder.setContentIntent(newVoicemailIntent(voicemail));
- Logger.get(context).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED);
- return notificationBuilder.build();
- }
-
- private Notification.Builder createNotificationBuilder() {
- return new Notification.Builder(context)
- .setSmallIcon(android.R.drawable.stat_notify_voicemail)
- .setColor(context.getColor(R.color.dialer_theme_color))
- .setGroup(VISUAL_VOICEMAIL_NOTIFICATION_TAG)
- .setOnlyAlertOnce(true)
- .setAutoCancel(true);
- }
-
- private PendingIntent newVoicemailIntent(@Nullable NewCall voicemail) {
- Intent intent =
- DialtactsActivity.getShowTabIntent(context, DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
- // TODO (b/35486204): scroll to this voicemail
- if (voicemail != null) {
- intent.setData(voicemail.voicemailUri);
- }
- intent.putExtra(DialtactsActivity.EXTRA_CLEAR_NEW_VOICEMAILS, true);
- return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
- }
-
- /**
- * Updates the voicemail notifications displayed.
- *
- * @param runnable Called when the async update task completes no matter if it succeeds or fails.
- * May be null.
- */
- static void updateVoicemailNotifications(Context context, Runnable runnable) {
- if (!TelecomUtil.isDefaultDialer(context)) {
- LogUtil.i(
- "DefaultVoicemailNotifier.updateVoicemailNotifications",
- "not default dialer, not scheduling update to voicemail notifications");
- return;
- }
-
- DialerExecutors.createNonUiTaskBuilder(new DefaultVoicemailNotifier(context))
- .onSuccess(
- output -> {
- LogUtil.i(
- "DefaultVoicemailNotifier.updateVoicemailNotifications",
- "update voicemail notifications successful");
- if (runnable != null) {
- runnable.run();
- }
- })
- .onFailure(
- throwable -> {
- LogUtil.i(
- "DefaultVoicemailNotifier.updateVoicemailNotifications",
- "update voicemail notifications failed");
- if (runnable != null) {
- runnable.run();
- }
- })
- .build()
- .executeParallel(null);
- }
-}
diff --git a/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java b/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java
new file mode 100644
index 0000000000000000000000000000000000000000..a3aac41fafa2b7210e4e363396a5ca99aab76007
--- /dev/null
+++ b/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2017 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.app.calllog;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.QuickContactBadge;
+import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
+
+/** Allows us to click the contact badge for non multi select mode. */
+class DialerQuickContactBadge extends QuickContactBadge {
+
+ private View.OnClickListener mExtraOnClickListener;
+ private OnActionModeStateChangedListener onActionModeStateChangeListener;
+
+ public DialerQuickContactBadge(Context context) {
+ super(context);
+ }
+
+ public DialerQuickContactBadge(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public DialerQuickContactBadge(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (mExtraOnClickListener != null
+ && onActionModeStateChangeListener.isActionModeStateEnabled()) {
+ Logger.get(v.getContext())
+ .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_TAP_VIA_CONTACT_BADGE);
+ mExtraOnClickListener.onClick(v);
+ } else {
+ super.onClick(v);
+ }
+ }
+
+ public void setMulitSelectListeners(
+ View.OnClickListener extraOnClickListener,
+ OnActionModeStateChangedListener actionModeStateChangeListener) {
+ mExtraOnClickListener = extraOnClickListener;
+ onActionModeStateChangeListener = actionModeStateChangeListener;
+ }
+}
diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java
index 9c3c18b602f82dd86b0913c1471b32f4c3a7fd83..e1ec9f5095076a35b4b40ef5eae6d2d56af4d209 100644
--- a/java/com/android/dialer/app/calllog/IntentProvider.java
+++ b/java/com/android/dialer/app/calllog/IntentProvider.java
@@ -117,11 +117,12 @@ public abstract class IntentProvider {
* @return The call details intent provider.
*/
public static IntentProvider getCallDetailIntentProvider(
- CallDetailsEntries callDetailsEntries, DialerContact contact) {
+ CallDetailsEntries callDetailsEntries, DialerContact contact, boolean canReportCallerId) {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return CallDetailsActivity.newInstance(context, callDetailsEntries, contact);
+ return CallDetailsActivity.newInstance(
+ context, callDetailsEntries, contact, canReportCallerId);
}
};
}
diff --git a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
new file mode 100644
index 0000000000000000000000000000000000000000..428c71677cf91ad942cbbcca23959e303128d0d6
--- /dev/null
+++ b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2017 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.app.calllog;
+
+import android.annotation.TargetApi;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.os.Build.VERSION_CODES;
+import android.support.annotation.NonNull;
+import android.support.v4.os.BuildCompat;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import com.android.dialer.app.R;
+import com.android.dialer.calllogutils.PhoneAccountUtils;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.notification.NotificationChannelManager;
+
+/** Shows a notification in the status bar for legacy vociemail. */
+@TargetApi(VERSION_CODES.O)
+public final class LegacyVoicemailNotifier {
+ private static final String NOTIFICATION_TAG = "LegacyVoicemail";
+ private static final int NOTIFICATION_ID = 1;
+
+ /**
+ * Replicates how packages/services/Telephony/NotificationMgr.java handles legacy voicemail
+ * notification. The notification will not be stackable because no information is available for
+ * individual voicemails.
+ */
+ public static void showNotification(
+ @NonNull Context context,
+ @NonNull PhoneAccountHandle handle,
+ int count,
+ String voicemailNumber,
+ PendingIntent callVoicemailIntent,
+ PendingIntent voicemailSettingsIntent,
+ boolean isRefresh) {
+ LogUtil.enterBlock("LegacyVoicemailNotifier.showNotification");
+ Assert.isNotNull(handle);
+ Assert.checkArgument(BuildCompat.isAtLeastO());
+
+ TelephonyManager pinnedTelephonyManager =
+ context.getSystemService(TelephonyManager.class).createForPhoneAccountHandle(handle);
+ if (pinnedTelephonyManager == null) {
+ LogUtil.e("LegacyVoicemailNotifier.showNotification", "invalid PhoneAccountHandle");
+ return;
+ }
+
+ Notification notification =
+ createNotification(
+ context,
+ pinnedTelephonyManager,
+ handle,
+ count,
+ voicemailNumber,
+ callVoicemailIntent,
+ voicemailSettingsIntent,
+ isRefresh);
+ context
+ .getSystemService(NotificationManager.class)
+ .notify(NOTIFICATION_TAG, NOTIFICATION_ID, notification);
+ }
+
+ @NonNull
+ private static Notification createNotification(
+ @NonNull Context context,
+ @NonNull TelephonyManager pinnedTelephonyManager,
+ @NonNull PhoneAccountHandle handle,
+ int count,
+ String voicemailNumber,
+ PendingIntent callVoicemailIntent,
+ PendingIntent voicemailSettingsIntent,
+ boolean isRefresh) {
+ String notificationTitle =
+ context
+ .getResources()
+ .getQuantityString(R.plurals.notification_voicemail_title, count, count);
+ boolean isOngoing =
+ pinnedTelephonyManager
+ .getCarrierConfig()
+ .getBoolean(CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL);
+
+ String contentText;
+ PendingIntent contentIntent;
+ if (!TextUtils.isEmpty(voicemailNumber) && callVoicemailIntent != null) {
+ contentText = getNotificationText(context, handle, voicemailNumber);
+ contentIntent = callVoicemailIntent;
+ } else {
+ contentText = context.getString(R.string.notification_voicemail_no_vm_number);
+ contentIntent = voicemailSettingsIntent;
+ }
+
+ Notification.Builder builder =
+ new Notification.Builder(context)
+ .setSmallIcon(android.R.drawable.stat_notify_voicemail)
+ .setColor(context.getColor(R.color.dialer_theme_color))
+ .setWhen(System.currentTimeMillis())
+ .setContentTitle(notificationTitle)
+ .setContentText(contentText)
+ .setContentIntent(contentIntent)
+ .setSound(pinnedTelephonyManager.getVoicemailRingtoneUri(handle))
+ .setOngoing(isOngoing)
+ .setOnlyAlertOnce(isRefresh)
+ .setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+
+ if (pinnedTelephonyManager.isVoicemailVibrationEnabled(handle)) {
+ builder.setDefaults(Notification.DEFAULT_VIBRATE);
+ }
+
+ return builder.build();
+ }
+
+ @NonNull
+ private static String getNotificationText(
+ @NonNull Context context, PhoneAccountHandle handle, String voicemailNumber) {
+ if (PhoneAccountUtils.getSubscriptionPhoneAccounts(context).size() > 1) {
+ TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+ PhoneAccount phoneAccount = telecomManager.getPhoneAccount(handle);
+ return phoneAccount.getShortDescription().toString();
+ } else {
+ return String.format(
+ context.getString(R.string.notification_voicemail_text_format),
+ PhoneNumberUtils.formatNumber(voicemailNumber));
+ }
+ }
+
+ public static void cancelNotification(@NonNull Context context) {
+ LogUtil.enterBlock("LegacyVoicemailNotifier.cancelNotification");
+ Assert.checkArgument(BuildCompat.isAtLeastO());
+ NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
+ notificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID);
+ }
+
+ private LegacyVoicemailNotifier() {}
+}
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index dd13298bc3ff5cfcd3f7566aa6da60b3e5c4ddff..e0e3fdf3f61e6b97d1a5d49879c37da5a5d8acd7 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -30,11 +30,13 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.WorkerThread;
+import android.support.v4.os.BuildCompat;
import android.support.v4.os.UserManagerCompat;
import android.support.v4.util.Pair;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
+import android.util.ArraySet;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
import com.android.dialer.app.DialtactsActivity;
@@ -46,23 +48,20 @@ import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.notification.NotificationChannelManager.Channel;
+import com.android.dialer.notification.NotificationChannelId;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
-import java.util.HashSet;
import java.util.List;
import java.util.Set;
/** Creates a notification for calls that the user missed (neither answered nor rejected). */
public class MissedCallNotifier implements Worker, Void> {
- /** The tag used to identify notifications from this class. */
- static final String NOTIFICATION_TAG = "MissedCallNotifier";
- /** The identifier of the notification of new missed calls. */
- private static final int NOTIFICATION_ID = R.id.notification_missed_call;
+ static final String NOTIFICATION_TAG_PREFIX = "MissedCall_";
+ static final String NOTIFICATION_GROUP = "MissedCall";
+ private static final int NOTIFICATION_ID = 1;
private final Context context;
private final CallLogNotificationsQueryHelper callLogNotificationsQueryHelper;
@@ -104,7 +103,8 @@ public class MissedCallNotifier implements Worker, Void> {
if ((newCalls != null && newCalls.isEmpty()) || count == 0) {
// No calls to notify about: clear the notification.
- CallLogNotificationsQueryHelper.removeMissedCallNotifications(context, null);
+ CallLogNotificationsQueryHelper.markAllMissedCallsInCallLogAsRead(context);
+ cancelAllMissedCallNotifications(context);
return;
}
@@ -146,7 +146,7 @@ public class MissedCallNotifier implements Worker, Void> {
null,
System.currentTimeMillis());
- //TODO: look up caller ID that is not in contacts.
+ // TODO: look up caller ID that is not in contacts.
ContactInfo contactInfo =
callLogNotificationsQueryHelper.getContactInfo(
call.number, call.numberPresentation, call.countryIso);
@@ -181,36 +181,39 @@ public class MissedCallNotifier implements Worker, Void> {
publicSummaryBuilder
.setContentTitle(context.getText(titleResId))
.setContentIntent(createCallLogPendingIntent())
- .setDeleteIntent(createClearMissedCallsPendingIntent(null));
+ .setDeleteIntent(
+ CallLogNotificationsService.createCancelAllMissedCallsPendingIntent(context));
// Create the notification summary suitable for display when sensitive information is showing.
groupSummary
.setContentTitle(context.getText(titleResId))
.setContentText(expandedText)
.setContentIntent(createCallLogPendingIntent())
- .setDeleteIntent(createClearMissedCallsPendingIntent(null))
+ .setDeleteIntent(
+ CallLogNotificationsService.createCancelAllMissedCallsPendingIntent(context))
.setGroupSummary(useCallList)
.setOnlyAlertOnce(useCallList)
.setPublicVersion(publicSummaryBuilder.build());
-
- NotificationChannelManager.applyChannel(groupSummary, context, Channel.MISSED_CALL, null);
+ if (BuildCompat.isAtLeastO()) {
+ groupSummary.setChannelId(NotificationChannelId.MISSED_CALL);
+ }
Notification notification = groupSummary.build();
configureLedOnNotification(notification);
LogUtil.i("MissedCallNotifier.updateMissedCallNotification", "adding missed call notification");
- getNotificationMgr().notify(NOTIFICATION_TAG, NOTIFICATION_ID, notification);
+ getNotificationMgr().notify(getNotificationTagForGroupSummary(), NOTIFICATION_ID, notification);
if (useCallList) {
// Do not repost active notifications to prevent erasing post call notes.
NotificationManager manager = getNotificationMgr();
- Set activeTags = new HashSet<>();
+ Set activeTags = new ArraySet<>();
for (StatusBarNotification activeNotification : manager.getActiveNotifications()) {
activeTags.add(activeNotification.getTag());
}
for (NewCall call : newCalls) {
- String callTag = call.callsUri.toString();
+ String callTag = getNotificationTagForCall(call);
if (!activeTags.contains(callTag)) {
manager.notify(callTag, NOTIFICATION_ID, getNotificationForCall(call, null));
}
@@ -218,6 +221,59 @@ public class MissedCallNotifier implements Worker, Void> {
}
}
+ public static void cancelAllMissedCallNotifications(@NonNull Context context) {
+ NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
+ for (StatusBarNotification notification : notificationManager.getActiveNotifications()) {
+ String tag = notification.getTag();
+ if (tag != null && tag.startsWith(NOTIFICATION_TAG_PREFIX)) {
+ notificationManager.cancel(tag, notification.getId());
+ }
+ }
+ }
+
+ public static void cancelSingleMissedCallNotification(
+ @NonNull Context context, @Nullable Uri callUri) {
+ if (callUri == null) {
+ LogUtil.e(
+ "MissedCallNotifier.cancelSingleMissedCallNotification",
+ "unable to cancel notification, uri is null");
+ return;
+ }
+ NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
+ String callTag = getNotificationTagForCallUri(callUri);
+ String summaryTag = getNotificationTagForGroupSummary();
+ int notificationCount = 0;
+
+ for (StatusBarNotification notification : notificationManager.getActiveNotifications()) {
+ String currentTag = notification.getTag();
+ if (currentTag == null) {
+ continue;
+ }
+ if (currentTag.equals(callTag)) {
+ notificationManager.cancel(notification.getTag(), notification.getId());
+ } else if (currentTag.startsWith(NOTIFICATION_TAG_PREFIX) && !currentTag.equals(summaryTag)) {
+ notificationCount++;
+ }
+ }
+
+ if (notificationCount == 0) {
+ // There are no more missed call notifications. Remove the summary notification too.
+ notificationManager.cancel(summaryTag, NOTIFICATION_ID);
+ }
+ }
+
+ private static String getNotificationTagForGroupSummary() {
+ return NOTIFICATION_TAG_PREFIX + "GroupSummary";
+ }
+
+ private static String getNotificationTagForCall(@NonNull NewCall call) {
+ return getNotificationTagForCallUri(call.callsUri);
+ }
+
+ private static String getNotificationTagForCallUri(@NonNull Uri callUri) {
+ return NOTIFICATION_TAG_PREFIX + callUri;
+ }
+
public void insertPostCallNotification(@NonNull String number, @NonNull String note) {
List newCalls = callLogNotificationsQueryHelper.getNewMissedCalls();
if (newCalls != null && !newCalls.isEmpty()) {
@@ -226,7 +282,9 @@ public class MissedCallNotifier implements Worker, Void> {
// Update the first notification that matches our post call note sender.
getNotificationMgr()
.notify(
- call.callsUri.toString(), NOTIFICATION_ID, getNotificationForCall(call, note));
+ getNotificationTagForCall(call),
+ NOTIFICATION_ID,
+ getNotificationForCall(call, note));
break;
}
}
@@ -308,7 +366,7 @@ public class MissedCallNotifier implements Worker, Void> {
private Notification.Builder createNotificationBuilder() {
return new Notification.Builder(context)
- .setGroup(NOTIFICATION_TAG)
+ .setGroup(NOTIFICATION_GROUP)
.setSmallIcon(android.R.drawable.stat_notify_missed_call)
.setColor(context.getResources().getColor(R.color.dialer_theme_color, null))
.setAutoCancel(true)
@@ -321,10 +379,14 @@ public class MissedCallNotifier implements Worker, Void> {
Builder builder =
createNotificationBuilder()
.setWhen(call.dateMs)
- .setDeleteIntent(createClearMissedCallsPendingIntent(call.callsUri))
+ .setDeleteIntent(
+ CallLogNotificationsService.createCancelSingleMissedCallPendingIntent(
+ context, call.callsUri))
.setContentIntent(createCallLogPendingIntent(call.callsUri));
+ if (BuildCompat.isAtLeastO()) {
+ builder.setChannelId(NotificationChannelId.MISSED_CALL);
+ }
- NotificationChannelManager.applyChannel(builder, context, Channel.MISSED_CALL, null);
return builder;
}
@@ -332,7 +394,8 @@ public class MissedCallNotifier implements Worker, Void> {
@WorkerThread
public void callBackFromMissedCall(String number, Uri callUri) {
closeSystemDialogs(context);
- CallLogNotificationsQueryHelper.removeMissedCallNotifications(context, callUri);
+ CallLogNotificationsQueryHelper.markSingleMissedCallInCallLogAsRead(context, callUri);
+ cancelSingleMissedCallNotification(context, callUri);
DialerUtils.startActivityWithErrorToast(
context,
new CallIntentBuilder(number, CallInitiationType.Type.MISSED_CALL_NOTIFICATION)
@@ -343,7 +406,8 @@ public class MissedCallNotifier implements Worker, Void> {
/** Trigger an intent to send an sms from a missed call number. */
public void sendSmsFromMissedCall(String number, Uri callUri) {
closeSystemDialogs(context);
- CallLogNotificationsQueryHelper.removeMissedCallNotifications(context, callUri);
+ CallLogNotificationsQueryHelper.markSingleMissedCallInCallLogAsRead(context, callUri);
+ cancelSingleMissedCallNotification(context, callUri);
DialerUtils.startActivityWithErrorToast(
context, IntentUtil.getSendSmsIntent(number).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
@@ -371,14 +435,6 @@ public class MissedCallNotifier implements Worker, Void> {
return PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
- /** Creates a pending intent that marks all new missed calls as old. */
- private PendingIntent createClearMissedCallsPendingIntent(@Nullable Uri callUri) {
- Intent intent = new Intent(context, CallLogNotificationsService.class);
- intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_MISSED_CALLS_AS_OLD);
- intent.setData(callUri);
- return PendingIntent.getService(context, 0, intent, 0);
- }
-
private PendingIntent createCallBackPendingIntent(String number, @NonNull Uri callUri) {
Intent intent = new Intent(context, CallLogNotificationsService.class);
intent.setAction(CallLogNotificationsService.ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION);
diff --git a/java/com/android/dialer/app/calllog/PhoneAccountHandles.java b/java/com/android/dialer/app/calllog/PhoneAccountHandles.java
deleted file mode 100644
index acffffb1dc620877d470c4b141a5425d2d29b4a2..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/calllog/PhoneAccountHandles.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2017 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.app.calllog;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.telecom.TelecomUtil;
-import java.util.List;
-
-/** Methods to help extract {@link PhoneAccount} information from database and Telecomm sources. */
-class PhoneAccountHandles {
-
- @Nullable
- public static PhoneAccountHandle getAccount(@NonNull Context context, @Nullable NewCall call) {
- PhoneAccountHandle handle;
- if (call == null || call.accountComponentName == null || call.accountId == null) {
- LogUtil.v(
- "PhoneAccountUtils.getAccount",
- "accountComponentName == null || callToNotify.accountId == null");
- handle = TelecomUtil.getDefaultOutgoingPhoneAccount(context, PhoneAccount.SCHEME_TEL);
- if (handle == null) {
- List callCapablePhoneAccounts =
- TelecomUtil.getCallCapablePhoneAccounts(context);
- if (!callCapablePhoneAccounts.isEmpty()) {
- return callCapablePhoneAccounts.get(0);
- }
- return null;
- }
- } else {
- handle =
- new PhoneAccountHandle(
- ComponentName.unflattenFromString(call.accountComponentName), call.accountId);
- }
- if (handle.getComponentName() != null) {
- LogUtil.v(
- "PhoneAccountUtils.getAccount",
- "PhoneAccountHandle.ComponentInfo:" + handle.getComponentName());
- } else {
- LogUtil.i("PhoneAccountUtils.getAccount", "PhoneAccountHandle.ComponentInfo: null");
- }
- return handle;
- }
-}
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
new file mode 100644
index 0000000000000000000000000000000000000000..99fe466d8c5cf6cbf98a1410fb40b4a6cb8d6fe2
--- /dev/null
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
@@ -0,0 +1,291 @@
+/*
+ * Copyright (C) 2017 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.app.calllog;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.service.notification.StatusBarNotification;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.os.BuildCompat;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.app.DialtactsActivity;
+import com.android.dialer.app.R;
+import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
+import com.android.dialer.app.contactinfo.ContactPhotoLoader;
+import com.android.dialer.app.list.DialtactsPagerAdapter;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.notification.NotificationChannelManager;
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.telecom.TelecomUtil;
+import java.util.List;
+import java.util.Map;
+
+/** Shows a notification in the status bar for visual voicemail. */
+final class VisualVoicemailNotifier {
+ private static final String NOTIFICATION_TAG_PREFIX = "VisualVoicemail_";
+ private static final String NOTIFICATION_GROUP = "VisualVoicemail";
+ private static final int NOTIFICATION_ID = 1;
+
+ public static void showNotifications(
+ @NonNull Context context,
+ @NonNull List newCalls,
+ @NonNull Map contactInfos,
+ @Nullable String callers) {
+ LogUtil.enterBlock("VisualVoicemailNotifier.showNotifications");
+ PendingIntent deleteIntent =
+ CallLogNotificationsService.createMarkAllNewVoicemailsAsOldIntent(context);
+ String contentTitle =
+ context
+ .getResources()
+ .getQuantityString(
+ R.plurals.notification_voicemail_title, newCalls.size(), newCalls.size());
+ Notification.Builder groupSummary =
+ createNotificationBuilder(context)
+ .setContentTitle(contentTitle)
+ .setContentText(callers)
+ .setDeleteIntent(deleteIntent)
+ .setGroupSummary(true)
+ .setContentIntent(newVoicemailIntent(context, null));
+
+ if (BuildCompat.isAtLeastO()) {
+ groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN);
+ PhoneAccountHandle handle = getAccountForCall(context, newCalls.get(0));
+ groupSummary.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+ }
+
+ NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
+ notificationManager.notify(
+ getNotificationTagForGroupSummary(), NOTIFICATION_ID, groupSummary.build());
+
+ for (NewCall voicemail : newCalls) {
+ notificationManager.notify(
+ getNotificationTagForVoicemail(voicemail),
+ NOTIFICATION_ID,
+ createNotificationForVoicemail(context, voicemail, contactInfos));
+ }
+ }
+
+ public static void cancelAllVoicemailNotifications(@NonNull Context context) {
+ LogUtil.enterBlock("VisualVoicemailNotifier.cancelAllVoicemailNotifications");
+ NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
+ for (StatusBarNotification notification : notificationManager.getActiveNotifications()) {
+ String tag = notification.getTag();
+ if (tag != null && tag.startsWith(NOTIFICATION_TAG_PREFIX)) {
+ notificationManager.cancel(tag, notification.getId());
+ }
+ }
+ }
+
+ public static void cancelSingleVoicemailNotification(
+ @NonNull Context context, @Nullable Uri voicemailUri) {
+ LogUtil.enterBlock("VisualVoicemailNotifier.cancelSingleVoicemailNotification");
+ if (voicemailUri == null) {
+ LogUtil.e("VisualVoicemailNotifier.cancelSingleVoicemailNotification", "uri is null");
+ return;
+ }
+ NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
+ String voicemailTag = getNotificationTagForUri(voicemailUri);
+ String summaryTag = getNotificationTagForGroupSummary();
+ int notificationCount = 0;
+
+ for (StatusBarNotification notification : notificationManager.getActiveNotifications()) {
+ String currentTag = notification.getTag();
+ if (currentTag == null) {
+ continue;
+ }
+ if (currentTag.equals(voicemailTag)) {
+ notificationManager.cancel(notification.getTag(), notification.getId());
+ } else if (currentTag.startsWith(NOTIFICATION_TAG_PREFIX) && !currentTag.equals(summaryTag)) {
+ notificationCount++;
+ }
+ }
+
+ if (notificationCount == 0) {
+ // There are no more visual voicemail notifications. Remove the summary notification too.
+ notificationManager.cancel(summaryTag, NOTIFICATION_ID);
+ }
+ }
+
+ private static String getNotificationTagForVoicemail(@NonNull NewCall voicemail) {
+ return getNotificationTagForUri(voicemail.voicemailUri);
+ }
+
+ private static String getNotificationTagForUri(@NonNull Uri voicemailUri) {
+ return NOTIFICATION_TAG_PREFIX + voicemailUri;
+ }
+
+ private static String getNotificationTagForGroupSummary() {
+ return NOTIFICATION_TAG_PREFIX + "GroupSummary";
+ }
+
+ private static Notification.Builder createNotificationBuilder(@NonNull Context context) {
+ return new Notification.Builder(context)
+ .setSmallIcon(android.R.drawable.stat_notify_voicemail)
+ .setColor(context.getColor(R.color.dialer_theme_color))
+ .setGroup(NOTIFICATION_GROUP)
+ .setOnlyAlertOnce(true)
+ .setAutoCancel(true);
+ }
+
+ private static Notification createNotificationForVoicemail(
+ @NonNull Context context,
+ @NonNull NewCall voicemail,
+ @NonNull Map contactInfos) {
+ PhoneAccountHandle handle = getAccountForCall(context, voicemail);
+ ContactInfo contactInfo = contactInfos.get(voicemail.number);
+
+ Notification.Builder builder =
+ createNotificationBuilder(context)
+ .setContentTitle(
+ context
+ .getResources()
+ .getQuantityString(R.plurals.notification_voicemail_title, 1, 1))
+ .setContentText(
+ ContactDisplayUtils.getTtsSpannedPhoneNumber(
+ context.getResources(),
+ R.string.notification_new_voicemail_ticker,
+ contactInfo.name))
+ .setWhen(voicemail.dateMs)
+ .setSound(getVoicemailRingtoneUri(context, handle))
+ .setDefaults(getNotificationDefaultFlags(context, handle));
+
+ if (voicemail.voicemailUri != null) {
+ builder.setDeleteIntent(
+ CallLogNotificationsService.createMarkSingleNewVoicemailAsOldIntent(
+ context, voicemail.voicemailUri));
+ }
+
+ if (BuildCompat.isAtLeastO()) {
+ builder.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+ }
+
+ ContactPhotoLoader loader = new ContactPhotoLoader(context, contactInfo);
+ Bitmap photoIcon = loader.loadPhotoIcon();
+ if (photoIcon != null) {
+ builder.setLargeIcon(photoIcon);
+ }
+ if (!TextUtils.isEmpty(voicemail.transcription)) {
+ Logger.get(context)
+ .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION);
+ builder.setStyle(new Notification.BigTextStyle().bigText(voicemail.transcription));
+ }
+ builder.setContentIntent(newVoicemailIntent(context, voicemail));
+ Logger.get(context).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED);
+ return builder.build();
+ }
+
+ @Nullable
+ private static Uri getVoicemailRingtoneUri(
+ @NonNull Context context, @Nullable PhoneAccountHandle handle) {
+ if (VERSION.SDK_INT < VERSION_CODES.N) {
+ return null;
+ }
+ if (handle == null) {
+ LogUtil.i("VisualVoicemailNotifier.getVoicemailRingtoneUri", "null handle, getting fallback");
+ handle = getFallbackAccount(context);
+ if (handle == null) {
+ LogUtil.i(
+ "VisualVoicemailNotifier.getVoicemailRingtoneUri",
+ "no fallback handle, using null (default) ringtone");
+ return null;
+ }
+ }
+ return context.getSystemService(TelephonyManager.class).getVoicemailRingtoneUri(handle);
+ }
+
+ private static int getNotificationDefaultFlags(
+ @NonNull Context context, @Nullable PhoneAccountHandle handle) {
+ if (VERSION.SDK_INT < VERSION_CODES.N) {
+ return Notification.DEFAULT_ALL;
+ }
+ if (handle == null) {
+ LogUtil.i(
+ "VisualVoicemailNotifier.getNotificationDefaultFlags", "null handle, getting fallback");
+ handle = getFallbackAccount(context);
+ if (handle == null) {
+ LogUtil.i(
+ "VisualVoicemailNotifier.getNotificationDefaultFlags",
+ "no fallback handle, using default vibration");
+ return Notification.DEFAULT_ALL;
+ }
+ }
+ if (context.getSystemService(TelephonyManager.class).isVoicemailVibrationEnabled(handle)) {
+ return Notification.DEFAULT_VIBRATE;
+ }
+ return 0;
+ }
+
+ private static PendingIntent newVoicemailIntent(
+ @NonNull Context context, @Nullable NewCall voicemail) {
+ Intent intent =
+ DialtactsActivity.getShowTabIntent(context, DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
+ // TODO (b/35486204): scroll to this voicemail
+ if (voicemail != null) {
+ intent.setData(voicemail.voicemailUri);
+ }
+ intent.putExtra(DialtactsActivity.EXTRA_CLEAR_NEW_VOICEMAILS, true);
+ return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+ }
+
+ /**
+ * Gets a phone account for the given call entry. This could be null if SIM associated with the
+ * entry is no longer in the device or for other reasons (for example, modem reboot).
+ */
+ @Nullable
+ public static PhoneAccountHandle getAccountForCall(
+ @NonNull Context context, @Nullable NewCall call) {
+ if (call == null || call.accountComponentName == null || call.accountId == null) {
+ return null;
+ }
+ return new PhoneAccountHandle(
+ ComponentName.unflattenFromString(call.accountComponentName), call.accountId);
+ }
+
+ /**
+ * Gets any available phone account that can be used to get sound settings for voicemail. This is
+ * only called if the phone account for the voicemail entry can't be found.
+ */
+ @Nullable
+ public static PhoneAccountHandle getFallbackAccount(@NonNull Context context) {
+ PhoneAccountHandle handle =
+ TelecomUtil.getDefaultOutgoingPhoneAccount(context, PhoneAccount.SCHEME_TEL);
+ if (handle == null) {
+ List handles = TelecomUtil.getCallCapablePhoneAccounts(context);
+ if (!handles.isEmpty()) {
+ handle = handles.get(0);
+ }
+ }
+ return handle;
+ }
+
+ private VisualVoicemailNotifier() {}
+}
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6601be36d7539cb0eae94455256c3f600096b5d
--- /dev/null
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2011 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.app.calllog;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.annotation.WorkerThread;
+import android.text.TextUtils;
+import android.util.ArrayMap;
+import com.android.dialer.app.R;
+import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
+import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.blocking.FilteredNumbersUtil;
+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.DialerExecutors;
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.telecom.TelecomUtil;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/** Updates voicemail notifications in the background. */
+class VisualVoicemailUpdateTask implements Worker {
+ @Nullable
+ @Override
+ public Void doInBackground(@NonNull Input input) throws Throwable {
+ updateNotification(input.context, input.queryHelper, input.queryHandler);
+ return null;
+ }
+
+ /**
+ * Updates the notification and notifies of the call with the given URI.
+ *
+ * Clears the notification if there are no new voicemails, and notifies if the given URI
+ * corresponds to a new voicemail.
+ */
+ @WorkerThread
+ private static void updateNotification(
+ Context context,
+ CallLogNotificationsQueryHelper queryHelper,
+ FilteredNumberAsyncQueryHandler queryHandler) {
+ Assert.isWorkerThread();
+
+ List newCalls = queryHelper.getNewVoicemails();
+ if (newCalls == null) {
+ return;
+ }
+ newCalls = filterBlockedNumbers(context, queryHandler, newCalls);
+ if (newCalls.isEmpty()) {
+ return;
+ }
+
+ // This represents a list of names to include in the notification.
+ String callers = null;
+
+ // Maps each number into a name: if a number is in the map, it has already left a more
+ // recent voicemail.
+ Map contactInfos = new ArrayMap<>();
+ for (NewCall newCall : newCalls) {
+ if (!contactInfos.containsKey(newCall.number)) {
+ ContactInfo contactInfo =
+ queryHelper.getContactInfo(
+ newCall.number, newCall.numberPresentation, newCall.countryIso);
+ contactInfos.put(newCall.number, contactInfo);
+
+ // This is a new caller. Add it to the back of the list of callers.
+ if (TextUtils.isEmpty(callers)) {
+ callers = contactInfo.name;
+ } else {
+ callers =
+ context.getString(
+ R.string.notification_voicemail_callers_list, callers, contactInfo.name);
+ }
+ }
+ }
+ VisualVoicemailNotifier.showNotifications(context, newCalls, contactInfos, callers);
+ }
+
+ @WorkerThread
+ private static List filterBlockedNumbers(
+ Context context, FilteredNumberAsyncQueryHandler queryHandler, List newCalls) {
+ Assert.isWorkerThread();
+ if (FilteredNumbersUtil.hasRecentEmergencyCall(context)) {
+ LogUtil.i(
+ "VisualVoicemailUpdateTask.filterBlockedNumbers",
+ "not filtering due to recent emergency call");
+ return newCalls;
+ }
+
+ List result = new ArrayList<>();
+ for (NewCall newCall : newCalls) {
+ if (queryHandler.getBlockedIdSynchronous(newCall.number, newCall.countryIso) != null) {
+ LogUtil.i(
+ "VisualVoicemailUpdateTask.filterBlockedNumbers",
+ "found voicemail from blocked number, deleting");
+ if (newCall.voicemailUri != null) {
+ // Delete the voicemail.
+ CallLogAsyncTaskUtil.deleteVoicemailSynchronous(context, newCall.voicemailUri);
+ }
+ } else {
+ result.add(newCall);
+ }
+ }
+ return result;
+ }
+
+ /** Updates the voicemail notifications displayed. */
+ static void scheduleTask(@NonNull Context context, @NonNull Runnable callback) {
+ Assert.isNotNull(context);
+ Assert.isNotNull(callback);
+ if (!TelecomUtil.isDefaultDialer(context)) {
+ LogUtil.i("VisualVoicemailUpdateTask.scheduleTask", "not default dialer, not running");
+ callback.run();
+ return;
+ }
+
+ Input input =
+ new Input(
+ context,
+ CallLogNotificationsQueryHelper.getInstance(context),
+ new FilteredNumberAsyncQueryHandler(context));
+ DialerExecutors.createNonUiTaskBuilder(new VisualVoicemailUpdateTask())
+ .onSuccess(
+ output -> {
+ LogUtil.i("VisualVoicemailUpdateTask.scheduleTask", "update successful");
+ callback.run();
+ })
+ .onFailure(
+ throwable -> {
+ LogUtil.i("VisualVoicemailUpdateTask.scheduleTask", "update failed: " + throwable);
+ callback.run();
+ })
+ .build()
+ .executeParallel(input);
+ }
+
+ static class Input {
+ @NonNull final Context context;
+ @NonNull final CallLogNotificationsQueryHelper queryHelper;
+ @NonNull final FilteredNumberAsyncQueryHandler queryHandler;
+
+ Input(
+ Context context,
+ CallLogNotificationsQueryHelper queryHelper,
+ FilteredNumberAsyncQueryHandler queryHandler) {
+ this.context = context;
+ this.queryHelper = queryHelper;
+ this.queryHandler = queryHandler;
+ }
+ }
+}
diff --git a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
index 777f4c79f6721037a85019c3cfd0476957be526b..2fbebdd302ddff31dec38fcb77994d109ead1cd3 100644
--- a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
+++ b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
@@ -15,7 +15,6 @@
*/
package com.android.dialer.app.calllog;
-import android.app.NotificationManager;
import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.content.ContentValues;
@@ -23,30 +22,49 @@ import android.content.Context;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.support.annotation.MainThread;
+import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import com.android.dialer.app.R;
+import android.support.annotation.WorkerThread;
import com.android.dialer.common.Assert;
-import com.android.dialer.notification.GroupedNotificationUtil;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.ThreadUtil;
/** Handles asynchronous queries to the call log for voicemail. */
public class VoicemailQueryHandler extends AsyncQueryHandler {
- private static final String TAG = "VoicemailQueryHandler";
-
/** The token for the query to mark all new voicemails as old. */
private static final int UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN = 50;
- private Context mContext;
-
@MainThread
- public VoicemailQueryHandler(Context context, ContentResolver contentResolver) {
+ private VoicemailQueryHandler(ContentResolver contentResolver) {
super(contentResolver);
Assert.isMainThread();
- mContext = context;
+ }
+
+ @WorkerThread
+ public static void markAllNewVoicemailsAsRead(final @NonNull Context context) {
+ ThreadUtil.postOnUiThread(
+ () -> {
+ new VoicemailQueryHandler(context.getContentResolver()).markNewVoicemailsAsOld(null);
+ });
+ }
+
+ @WorkerThread
+ public static void markSingleNewVoicemailAsRead(
+ final @NonNull Context context, final Uri voicemailUri) {
+ if (voicemailUri == null) {
+ LogUtil.e("VoicemailQueryHandler.markSingleNewVoicemailAsRead", "voicemail URI is null");
+ return;
+ }
+ ThreadUtil.postOnUiThread(
+ () -> {
+ new VoicemailQueryHandler(context.getContentResolver())
+ .markNewVoicemailsAsOld(voicemailUri);
+ });
}
/** Updates all new voicemails to mark them as old. */
- public void markNewVoicemailsAsOld(@Nullable Uri voicemailUri) {
+ private void markNewVoicemailsAsOld(@Nullable Uri voicemailUri) {
// Mark all "new" voicemails as not new anymore.
StringBuilder where = new StringBuilder();
where.append(Calls.NEW);
@@ -70,11 +88,5 @@ public class VoicemailQueryHandler extends AsyncQueryHandler {
voicemailUri == null
? new String[] {Integer.toString(Calls.VOICEMAIL_TYPE)}
: new String[] {Integer.toString(Calls.VOICEMAIL_TYPE), voicemailUri.toString()});
-
- GroupedNotificationUtil.removeNotification(
- mContext.getSystemService(NotificationManager.class),
- voicemailUri != null ? voicemailUri.toString() : null,
- R.id.notification_visual_voicemail,
- DefaultVoicemailNotifier.VISUAL_VOICEMAIL_NOTIFICATION_TAG);
}
}
diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java
index 0399987806b1bf7f384f987c1e99390dbc0200cb..f85680649c8d95294a27068d52b7396cfc61c130 100644
--- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java
+++ b/java/com/android/dialer/app/calllog/calllogcache/CallLogCacheLollipopMr1.java
@@ -17,15 +17,11 @@
package com.android.dialer.app.calllog.calllogcache;
import android.content.Context;
-import android.support.annotation.VisibleForTesting;
import android.telecom.PhoneAccountHandle;
-import android.text.TextUtils;
import android.util.ArrayMap;
-import android.util.Pair;
import com.android.dialer.calllogutils.PhoneAccountUtils;
-import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.telecom.TelecomUtil;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
/**
* This is the CallLogCache for versions of dialer Lollipop Mr1 and above with support for multi-SIM
@@ -36,15 +32,6 @@ import java.util.concurrent.ConcurrentHashMap;
*/
class CallLogCacheLollipopMr1 extends CallLogCache {
- /*
- * Maps from a phone-account/number pair to a boolean because multiple numbers could return true
- * for the voicemail number if those numbers are not pre-normalized. Access must be synchronzied
- * as it's used in the background thread in CallLogAdapter. {@see CallLogAdapter#loadData}
- */
- @VisibleForTesting
- final Map, Boolean> mVoicemailQueryCache =
- new ConcurrentHashMap<>();
-
private final Map mPhoneAccountLabelCache = new ArrayMap<>();
private final Map mPhoneAccountColorCache = new ArrayMap<>();
private final Map mPhoneAccountCallWithNoteCache = new ArrayMap<>();
@@ -55,7 +42,6 @@ class CallLogCacheLollipopMr1 extends CallLogCache {
@Override
public void reset() {
- mVoicemailQueryCache.clear();
mPhoneAccountLabelCache.clear();
mPhoneAccountColorCache.clear();
mPhoneAccountCallWithNoteCache.clear();
@@ -65,19 +51,7 @@ class CallLogCacheLollipopMr1 extends CallLogCache {
@Override
public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) {
- if (TextUtils.isEmpty(number)) {
- return false;
- }
-
- Pair key = new Pair<>(accountHandle, number);
- Boolean value = mVoicemailQueryCache.get(key);
- if (value != null) {
- return value;
- }
- boolean isVoicemail =
- PhoneNumberHelper.isVoicemailNumber(mContext, accountHandle, number.toString());
- mVoicemailQueryCache.put(key, isVoicemail);
- return isVoicemail;
+ return TelecomUtil.isVoicemailNumber(mContext, accountHandle, number.toString());
}
@Override
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
index 32bbf06b521ee9f5867c8f2a46962ed91124e1a3..82fc229af93d090c633e4fa4b4c6d5fc89fc82fb 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
@@ -162,7 +162,7 @@ public class ContactInfoCache {
ContactInfo info;
if (request.isLocalRequest()) {
info = mContactInfoHelper.lookupNumber(request.number, request.countryIso);
- if (!info.contactExists) {
+ if (info != null && !info.contactExists) {
// TODO: Maybe skip look up if it's already available in cached number lookup
// service.
long start = SystemClock.elapsedRealtime();
diff --git a/java/com/android/dialer/app/dialpad/DialpadFragment.java b/java/com/android/dialer/app/dialpad/DialpadFragment.java
index c0b26c91ae0dc19f203716ce7a0ccce4b31e60b7..d33943773e1aacc3d1ef2275c2c50122ec771f83 100644
--- a/java/com/android/dialer/app/dialpad/DialpadFragment.java
+++ b/java/com/android/dialer/app/dialpad/DialpadFragment.java
@@ -85,7 +85,9 @@ import com.android.dialer.common.LogUtil;
import com.android.dialer.dialpadview.DialpadKeyButton;
import com.android.dialer.dialpadview.DialpadView;
import com.android.dialer.location.GeoUtil;
+import com.android.dialer.logging.UiAction;
import com.android.dialer.oem.MotorolaUtils;
+import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.proguard.UsedByReflection;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.CallUtil;
@@ -1015,6 +1017,8 @@ public class DialpadFragment extends Fragment
*/
private void handleDialButtonPressed() {
if (isDigitsEmpty()) { // No number entered.
+ // No real call made, so treat it as a click
+ PerformanceReport.recordClick(UiAction.Type.PRESS_CALL_BUTTON_WITHOUT_CALLING);
handleDialButtonClickWithEmptyDigits();
} else {
final String number = mDigits.getText().toString();
@@ -1025,6 +1029,7 @@ public class DialpadFragment extends Fragment
if (number != null
&& !TextUtils.isEmpty(mProhibitedPhoneNumberRegexp)
&& number.matches(mProhibitedPhoneNumberRegexp)) {
+ PerformanceReport.recordClick(UiAction.Type.PRESS_CALL_BUTTON_WITHOUT_CALLING);
LogUtil.i(
"DialpadFragment.handleDialButtonPressed",
"The phone number is prohibited explicitly by a rule.");
@@ -1061,6 +1066,10 @@ public class DialpadFragment extends Fragment
startActivity(newFlashIntent());
} else {
if (!TextUtils.isEmpty(mLastNumberDialed)) {
+ // Dialpad will be filled with last called number,
+ // but we don't want to record it as user action
+ PerformanceReport.setIgnoreActionOnce(UiAction.Type.TEXT_CHANGE_WITH_INPUT);
+
// Recall the last number dialed.
mDigits.setText(mLastNumberDialed);
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
index c208fd57d40d7427e230e454efb4e87a97656734..a483af9e913331ce50ad7951a276cbf776578ef4 100644
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
+++ b/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
@@ -41,6 +41,7 @@ public interface DialerLegacyBindings {
ViewGroup alertContainer,
CallLogAdapter.CallFetcher callFetcher,
CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView,
+ CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener,
CallLogCache callLogCache,
ContactInfoCache contactInfoCache,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
index 19fa1a70c6598b6225a78eef94f73a5c6eaad671..488fbad68bb3959d88d84b163127fcc7219ccedf 100644
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
+++ b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
@@ -35,6 +35,7 @@ public class DialerLegacyBindingsStub implements DialerLegacyBindings {
ViewGroup alertContainer,
CallLogAdapter.CallFetcher callFetcher,
CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView,
+ CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener,
CallLogCache callLogCache,
ContactInfoCache contactInfoCache,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
@@ -45,6 +46,7 @@ public class DialerLegacyBindingsStub implements DialerLegacyBindings {
alertContainer,
callFetcher,
multiSelectRemoveView,
+ actionModeStateChangedListener,
callLogCache,
contactInfoCache,
voicemailPlaybackPresenter,
diff --git a/java/com/android/dialer/app/list/AllContactsFragment.java b/java/com/android/dialer/app/list/AllContactsFragment.java
index f5fdb9e2dcb620d892c497d0dc4a905b9736c95f..32a99e79594a30a2e98c96411fca6d891e7777ea 100644
--- a/java/com/android/dialer/app/list/AllContactsFragment.java
+++ b/java/com/android/dialer/app/list/AllContactsFragment.java
@@ -38,6 +38,7 @@ import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.DefaultContactListAdapter;
import com.android.dialer.app.R;
+import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.CompatUtils;
import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
@@ -46,6 +47,7 @@ import com.android.dialer.util.IntentUtil;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.widget.EmptyContentView;
import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+import java.util.Arrays;
/** Fragments to show all contacts with phone numbers. */
public class AllContactsFragment extends ContactEntryListFragment
@@ -173,9 +175,15 @@ public class AllContactsFragment extends ContactEntryListFragment 0) {
+ LogUtil.i(
+ "AllContactsFragment.onEmptyViewActionButtonClicked",
+ "Requesting permissions: " + Arrays.toString(deniedPermissions));
FragmentCompat.requestPermissions(
- this, new String[] {READ_CONTACTS}, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+ this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
} else {
// Add new contact
DialerUtils.startActivityWithErrorToast(
diff --git a/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java b/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java
index 04927cf7a596ad25968b3bd37a1502b9aec11fef..fc0bd3ccff278c305ae71aa37204955d9aece8c0 100644
--- a/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java
+++ b/java/com/android/dialer/app/list/DialerPhoneNumberListAdapter.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
+import android.support.v4.content.ContextCompat;
import android.telephony.PhoneNumberUtils;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
@@ -177,33 +178,33 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
resources,
R.string.search_shortcut_call_number,
mBidiFormatter.unicodeWrap(number, TextDirectionHeuristics.LTR));
- drawable = getContext().getResources().getDrawable(R.drawable.quantum_ic_call_vd_theme_24);
+ drawable = ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_call_vd_theme_24);
break;
case SHORTCUT_CREATE_NEW_CONTACT:
text = resources.getString(R.string.search_shortcut_create_new_contact);
drawable =
- getContext().getResources().getDrawable(R.drawable.quantum_ic_person_add_vd_theme_24);
+ ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_person_add_vd_theme_24);
drawable.setAutoMirrored(true);
break;
case SHORTCUT_ADD_TO_EXISTING_CONTACT:
text = resources.getString(R.string.search_shortcut_add_to_contact);
drawable =
- getContext().getResources().getDrawable(R.drawable.quantum_ic_person_add_vd_theme_24);
+ ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_person_add_vd_theme_24);
break;
case SHORTCUT_SEND_SMS_MESSAGE:
text = resources.getString(R.string.search_shortcut_send_sms_message);
drawable =
- getContext().getResources().getDrawable(R.drawable.quantum_ic_message_vd_theme_24);
+ ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_message_vd_theme_24);
break;
case SHORTCUT_MAKE_VIDEO_CALL:
text = resources.getString(R.string.search_shortcut_make_video_call);
drawable =
- getContext().getResources().getDrawable(R.drawable.quantum_ic_videocam_vd_theme_24);
+ ContextCompat.getDrawable(getContext(), R.drawable.quantum_ic_videocam_vd_theme_24);
break;
case SHORTCUT_BLOCK_NUMBER:
text = resources.getString(R.string.search_shortcut_block_number);
drawable =
- getContext().getResources().getDrawable(R.drawable.ic_not_interested_googblue_24dp);
+ ContextCompat.getDrawable(getContext(), R.drawable.ic_not_interested_googblue_24dp);
break;
default:
throw new IllegalArgumentException("Invalid shortcut type");
diff --git a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
index dba3d3a93a4a454da82ae72f89f906ae4afa7e0f..822aa789fa91140fa381b40c0b25811aed40b655 100644
--- a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
+++ b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
@@ -28,8 +28,8 @@ import com.android.dialer.calllog.CallLogComponent;
import com.android.dialer.calllog.CallLogFramework;
import com.android.dialer.calllog.ui.NewCallLogFragment;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.contactsfragment.ContactsFragment;
import com.android.dialer.database.CallLogQueryHandler;
import com.android.dialer.speeddial.SpeedDialFragment;
@@ -78,7 +78,7 @@ public class DialtactsPagerAdapter extends FragmentPagerAdapter {
CallLogFramework callLogFramework = CallLogComponent.get(context).callLogFramework();
useNewCallLogTab = callLogFramework.isNewCallLogEnabled(context);
useNewContactsTab =
- ConfigProviderBindings.get(context).getBoolean("enable_new_contacts_tab", false);
+ ConfigProviderBindings.get(context).getBoolean("enable_new_contacts_tab", true);
this.tabTitles = tabTitles;
hasActiveVoicemailProvider = hasVoicemailProvider;
fragments.addAll(Collections.nCopies(TAB_COUNT_WITH_VOICEMAIL, null));
diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java
index 32501d556206d1be1a4c44c8cdb1c5814fe219dc..3f03db1e850e478f0ba5ee8d1a484b2c9e7f39e9 100644
--- a/java/com/android/dialer/app/list/ListsFragment.java
+++ b/java/com/android/dialer/app/list/ListsFragment.java
@@ -34,15 +34,11 @@ import android.provider.VoicemailContract;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
import com.android.contacts.common.list.ViewPagerTabs;
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.CallLogFragment;
import com.android.dialer.app.calllog.CallLogNotificationsService;
-import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
import com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler;
import com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler.Source;
import com.android.dialer.common.LogUtil;
@@ -51,6 +47,8 @@ import com.android.dialer.database.CallLogQueryHandler.Listener;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.logging.UiAction;
+import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.speeddial.SpeedDialFragment;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
@@ -64,22 +62,18 @@ import java.util.ArrayList;
* Contacts list. This will also eventually contain the logic that allows sliding the ViewPager
* containing the lists up above the search bar and pin it against the top of the screen.
*/
-public class ListsFragment extends Fragment
- implements OnPageChangeListener, Listener, OnClickListener {
+public class ListsFragment extends Fragment implements OnPageChangeListener, Listener {
private static final String TAG = "ListsFragment";
+
private DialerViewPager mViewPager;
private ViewPagerTabs mViewPagerTabs;
private DialtactsPagerAdapter mAdapter;
private RemoveView mRemoveView;
private View mRemoveViewContent;
- private View mMultiSelectSelectAllViewContent;
- private TextView mSelectUnselectAllViewText;
- private ImageView mSelectUnselectAllIcon;
private Fragment mCurrentPage;
private SharedPreferences mPrefs;
private boolean mHasFetchedVoicemailStatus;
- private boolean selectAllMode;
private boolean mShowVoicemailTabAfterVoicemailStatusIsFetched;
private VoicemailStatusHelper mVoicemailStatusHelper;
private final ArrayList mOnPageChangeListeners = new ArrayList<>();
@@ -89,6 +83,8 @@ public class ListsFragment extends Fragment
private boolean mPaused;
private CallLogQueryHandler mCallLogQueryHandler;
+ private UiAction.Type[] actionTypeList;
+
private final ContentObserver mVoicemailStatusObserver =
new ContentObserver(new Handler()) {
@Override
@@ -159,6 +155,12 @@ public class ListsFragment extends Fragment
Trace.endSection();
Trace.beginSection(TAG + " setup views");
+ actionTypeList = new UiAction.Type[TAB_COUNT_WITH_VOICEMAIL];
+ actionTypeList[TAB_INDEX_SPEED_DIAL] = UiAction.Type.CHANGE_TAB_TO_FAVORITE;
+ actionTypeList[TAB_INDEX_HISTORY] = UiAction.Type.CHANGE_TAB_TO_CALL_LOG;
+ actionTypeList[TAB_INDEX_ALL_CONTACTS] = UiAction.Type.CHANGE_TAB_TO_CONTACTS;
+ actionTypeList[TAB_INDEX_VOICEMAIL] = UiAction.Type.CHANGE_TAB_TO_VOICEMAIL;
+
String[] tabTitles = new String[TAB_COUNT_WITH_VOICEMAIL];
tabTitles[TAB_INDEX_SPEED_DIAL] = getResources().getString(R.string.tab_speed_dial);
tabTitles[TAB_INDEX_HISTORY] = getResources().getString(R.string.tab_history);
@@ -190,13 +192,6 @@ public class ListsFragment extends Fragment
addOnPageChangeListener(mViewPagerTabs);
mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
- mMultiSelectSelectAllViewContent =
- parentView.findViewById(R.id.multi_select_select_all_view_content);
- mSelectUnselectAllViewText = (TextView) parentView.findViewById(R.id.select_all_view_text);
- mSelectUnselectAllIcon = (ImageView) parentView.findViewById(R.id.select_all_view_icon);
- mMultiSelectSelectAllViewContent.setOnClickListener(null);
- mSelectUnselectAllIcon.setOnClickListener(this);
- mSelectUnselectAllViewText.setOnClickListener(this);
if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
&& PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
@@ -227,8 +222,8 @@ public class ListsFragment extends Fragment
/**
* Shows the tab with the specified index. If the voicemail tab index is specified, but the
- * voicemail status hasn't been fetched, it will try to show the tab after the voicemail status
- * has been fetched.
+ * voicemail status hasn't been fetched, it will show the speed dial tab and try to show the
+ * voicemail tab after the voicemail status has been fetched.
*/
public void showTab(int index) {
if (index == TAB_INDEX_VOICEMAIL) {
@@ -255,6 +250,8 @@ public class ListsFragment extends Fragment
@Override
public void onPageSelected(int position) {
+ PerformanceReport.recordClick(actionTypeList[position]);
+
LogUtil.i("ListsFragment.onPageSelected", "position: %d", position);
mTabIndex = mAdapter.getRtlPosition(position);
@@ -389,7 +386,7 @@ public class ListsFragment extends Fragment
public void markMissedCallsAsReadAndRemoveNotifications() {
if (mCallLogQueryHandler != null) {
mCallLogQueryHandler.markMissedCallsAsRead();
- CallLogNotificationsService.markNewMissedCallsAsOld(getContext(), null);
+ CallLogNotificationsService.cancelAllMissedCalls(getContext());
}
}
@@ -400,9 +397,7 @@ public class ListsFragment extends Fragment
}
public void showMultiSelectRemoveView(boolean show) {
- mMultiSelectSelectAllViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
- mMultiSelectSelectAllViewContent.setAlpha(show ? 0 : 1);
- mMultiSelectSelectAllViewContent.animate().alpha(show ? 1 : 0).start();
+ mViewPagerTabs.setVisibility(show ? View.GONE : View.VISIBLE);
mViewPager.setEnableSwipingPages(!show);
}
@@ -445,28 +440,4 @@ public class ListsFragment extends Fragment
}
Logger.get(getActivity()).logScreenView(screenType, getActivity());
}
-
- @Override
- public void onClick(View v) {
- updateSelectAllIcon();
- selectAllMode = !selectAllMode;
- }
-
- public void setSelectAllModeToFalse() {
- selectAllMode = false;
- mSelectUnselectAllIcon.setImageDrawable(
- getContext().getDrawable(R.drawable.ic_empty_check_mark_white_24dp));
- }
-
- private void updateSelectAllIcon() {
- if (selectAllMode) {
- mSelectUnselectAllIcon.setImageDrawable(
- getContext().getDrawable(R.drawable.ic_empty_check_mark_white_24dp));
- ((VisualVoicemailCallLogFragment) mCurrentPage).getAdapter().onAllDeselected();
- } else {
- mSelectUnselectAllIcon.setImageDrawable(
- getContext().getDrawable(R.drawable.ic_check_mark_blue_24dp));
- ((VisualVoicemailCallLogFragment) mCurrentPage).getAdapter().onAllSelected();
- }
- }
}
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
index 1ddc0f4e1d50ab0ffc01d3cbb8f2187e40429f30..05d017b2869c20629e4bd703c30f61ae24fd7285 100644
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
@@ -56,6 +56,7 @@ import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.util.ViewUtil;
import com.android.dialer.widget.EmptyContentView;
import java.util.ArrayList;
+import java.util.Arrays;
/** This fragment displays the user's favorite/frequent contacts in a grid. */
public class OldSpeedDialFragment extends Fragment
@@ -403,9 +404,15 @@ public class OldSpeedDialFragment extends Fragment
return;
}
- if (!PermissionsUtil.hasPermission(activity, READ_CONTACTS)) {
+ String[] deniedPermissions =
+ PermissionsUtil.getPermissionsCurrentlyDenied(
+ getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
+ if (deniedPermissions.length > 0) {
+ LogUtil.i(
+ "OldSpeedDialFragment.onEmptyViewActionButtonClicked",
+ "Requesting permissions: " + Arrays.toString(deniedPermissions));
FragmentCompat.requestPermissions(
- this, new String[] {READ_CONTACTS}, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+ this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
} else {
// Switch tabs
((HostInterface) activity).showAllContactsTab();
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
index 835b448bdb71bc343a6bb2426e1f72b051c9a90d..eb4f8e967221efaaa795282631b9eb8666c6a01e 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
@@ -138,6 +138,8 @@ public abstract class PhoneFavoriteTileView extends ContactTileView {
}
if (TextUtils.isEmpty(mPhoneNumberString)) {
+ // Don't set performance report now, since user may spend some time on picking a number
+
// Copy "superclass" implementation
Logger.get(getContext())
.logInteraction(InteractionEvent.Type.SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER);
diff --git a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
index ce859826143d30b5def5a25e3bccdafdd9fc3ba5..876fbf146aa674843b3124dfb17fe87656434623 100644
--- a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
+++ b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
@@ -200,7 +200,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
int multipleNumbersContactsCount = 0;
int contactsWithPhotoCount = 0;
int contactsWithNameCount = 0;
- int duoReachableContactsCount = 0;
+ int lightbringerReachableContactsCount = 0;
// The cursor should not be closed since this is invoked from a CursorLoader.
if (cursor.moveToFirst()) {
@@ -308,7 +308,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
if (contact.phoneNumber == null) {
multipleNumbersContactsCount++;
} else if (lightbringer.isReachable(mContext, contact.phoneNumber)) {
- duoReachableContactsCount++;
+ lightbringerReachableContactsCount++;
}
}
@@ -320,7 +320,7 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDrop
multipleNumbersContactsCount,
contactsWithPhotoCount,
contactsWithNameCount,
- duoReachableContactsCount);
+ lightbringerReachableContactsCount);
// Logs for manual testing
LogUtil.v("PhoneFavoritesTileAdapter.saveCursorToCache", "counter: %d", counter);
LogUtil.v(
diff --git a/java/com/android/dialer/app/list/RegularSearchFragment.java b/java/com/android/dialer/app/list/RegularSearchFragment.java
index 4f032032f1e7520acc7636452e1b4c24d0b91c05..728948bfc03800aaa3ef1ee290236628a2ac3af8 100644
--- a/java/com/android/dialer/app/list/RegularSearchFragment.java
+++ b/java/com/android/dialer/app/list/RegularSearchFragment.java
@@ -26,11 +26,13 @@ import com.android.contacts.common.list.ContactEntryListAdapter;
import com.android.contacts.common.list.PinnedHeaderListView;
import com.android.dialer.app.R;
import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.common.LogUtil;
import com.android.dialer.phonenumbercache.CachedNumberLookupService;
import com.android.dialer.phonenumbercache.PhoneNumberCache;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.widget.EmptyContentView;
import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+import java.util.Arrays;
public class RegularSearchFragment extends SearchFragment
implements OnEmptyViewActionButtonClickedListener,
@@ -114,8 +116,15 @@ public class RegularSearchFragment extends SearchFragment
}
if (READ_CONTACTS.equals(mPermissionToRequest)) {
- FragmentCompat.requestPermissions(
- this, new String[] {mPermissionToRequest}, PERMISSION_REQUEST_CODE);
+ String[] deniedPermissions =
+ PermissionsUtil.getPermissionsCurrentlyDenied(
+ getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
+ if (deniedPermissions.length > 0) {
+ LogUtil.i(
+ "RegularSearchFragment.onEmptyViewActionButtonClicked",
+ "Requesting permissions: " + Arrays.toString(deniedPermissions));
+ FragmentCompat.requestPermissions(this, deniedPermissions, PERMISSION_REQUEST_CODE);
+ }
}
}
diff --git a/java/com/android/dialer/app/list/SearchFragment.java b/java/com/android/dialer/app/list/SearchFragment.java
index 7f2d17650d654468bb7eb6b87205bce48173f560..00a2708a1ef85585399471959fd70c989822547b 100644
--- a/java/com/android/dialer/app/list/SearchFragment.java
+++ b/java/com/android/dialer/app/list/SearchFragment.java
@@ -42,6 +42,8 @@ import com.android.dialer.app.dialpad.DialpadFragment.ErrorDialogFragment;
import com.android.dialer.app.widget.DialpadSearchEmptyContentView;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
import com.android.dialer.util.PermissionsUtil;
@@ -96,9 +98,6 @@ public class SearchFragment extends PhoneNumberPickerFragment {
public void onStart() {
LogUtil.d("SearchFragment.onStart", "");
super.onStart();
- if (isSearchMode()) {
- getAdapter().setHasHeader(0, false);
- }
mActivity = (HostInterface) getActivity();
@@ -170,16 +169,6 @@ public class SearchFragment extends PhoneNumberPickerFragment {
return animator;
}
- @Override
- protected void setSearchMode(boolean flag) {
- super.setSearchMode(flag);
- // This hides the "All contacts with phone numbers" header in the search fragment
- final ContactEntryListAdapter adapter = getAdapter();
- if (adapter != null) {
- adapter.setHasHeader(0, false);
- }
- }
-
public void setAddToContactNumber(String addToContactNumber) {
mAddToContactNumber = addToContactNumber;
}
@@ -247,6 +236,10 @@ public class SearchFragment extends PhoneNumberPickerFragment {
}
break;
case DialerPhoneNumberListAdapter.SHORTCUT_CREATE_NEW_CONTACT:
+ if (this instanceof SmartDialSearchFragment) {
+ Logger.get(getContext())
+ .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_DIALPAD);
+ }
number =
TextUtils.isEmpty(mAddToContactNumber)
? adapter.getFormattedQueryString()
@@ -255,6 +248,10 @@ public class SearchFragment extends PhoneNumberPickerFragment {
DialerUtils.startActivityWithErrorToast(getActivity(), intent);
break;
case DialerPhoneNumberListAdapter.SHORTCUT_ADD_TO_EXISTING_CONTACT:
+ if (this instanceof SmartDialSearchFragment) {
+ Logger.get(getContext())
+ .logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_DIALPAD);
+ }
number =
TextUtils.isEmpty(mAddToContactNumber)
? adapter.getFormattedQueryString()
diff --git a/java/com/android/dialer/app/list/SmartDialSearchFragment.java b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
index fc21c8bc3f8be21d51061916bea92f94b5ca7733..2ebc06bc3f505a5309faaa5558134bb567a557f3 100644
--- a/java/com/android/dialer/app/list/SmartDialSearchFragment.java
+++ b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
@@ -34,6 +34,7 @@ import com.android.dialer.common.LogUtil;
import com.android.dialer.database.DialerDatabaseHelper;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.widget.EmptyContentView;
+import java.util.Arrays;
/** Implements a fragment to load and display SmartDial search results. */
public class SmartDialSearchFragment extends SearchFragment
@@ -79,6 +80,11 @@ public class SmartDialSearchFragment extends SearchFragment
}
}
+ @Override
+ public boolean getShowEmptyListForNullQuery() {
+ return true;
+ }
+
@Override
protected void setupEmptyView() {
if (mEmptyView != null && getActivity() != null) {
@@ -123,8 +129,16 @@ public class SmartDialSearchFragment extends SearchFragment
return;
}
- FragmentCompat.requestPermissions(
- this, new String[] {CALL_PHONE}, CALL_PHONE_PERMISSION_REQUEST_CODE);
+ String[] deniedPermissions =
+ PermissionsUtil.getPermissionsCurrentlyDenied(
+ getContext(), PermissionsUtil.allPhoneGroupPermissionsUsedInDialer);
+ if (deniedPermissions.length > 0) {
+ LogUtil.i(
+ "SmartDialSearchFragment.onEmptyViewActionButtonClicked",
+ "Requesting permissions: " + Arrays.toString(deniedPermissions));
+ FragmentCompat.requestPermissions(
+ this, deniedPermissions, CALL_PHONE_PERMISSION_REQUEST_CODE);
+ }
}
@Override
diff --git a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml b/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml
index 7c6df944882d69d7cbfac562604a7607bb6edb3d..0729d7293140eaeb6ec3228ecab115cf82d9d6cf 100644
--- a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml
+++ b/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml
@@ -41,6 +41,7 @@
android:resizeableActivity="true"
android:theme="@style/DialtactsActivityTheme"
android:windowSoftInputMode="stateAlwaysHidden|adjustNothing">
+
@@ -106,6 +107,7 @@
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/app/res/menu/dialtacts_options.xml b/java/com/android/dialer/app/res/menu/dialtacts_options.xml
index 25a3e181133722d40ad8f5ad2b55bb73d3cce49b..b50e6ad5ffbc807c6a7dd096c3cd38deb08bbed1 100644
--- a/java/com/android/dialer/app/res/menu/dialtacts_options.xml
+++ b/java/com/android/dialer/app/res/menu/dialtacts_options.xml
@@ -28,5 +28,8 @@
+
diff --git a/java/com/android/dialer/app/res/values-af/strings.xml b/java/com/android/dialer/app/res/values-af/strings.xml
index 4f4c65b8a99541025316b667405e434230ba5ede..40e297386afc75918be37fce9d552b19d4dd08db 100644
--- a/java/com/android/dialer/app/res/values-af/strings.xml
+++ b/java/com/android/dialer/app/res/values-af/strings.xml
@@ -80,6 +80,7 @@
"Voeg wagtyd by"
"Instellings"
"Nabootser"
+ "Skep nuwe UI-kortpad"
"Alle kontakte"
"Gebruik raak-nommerbord"
"Keer terug na oproep wat besig is"
@@ -104,12 +105,14 @@
"%s sek."
"%s min. %s sek."
"Kanselleer grootmaathandelingmodus"
- "stemboodskap"
- "stemboodskappe"
- "Ja"
- "Nee"
+ "Vee uit"
+ "Kanselleer"
"Vee geselekteerde %1$s uit?"
"%1$s gekies"
+
+ - ""Vee hierdie stemboodskappe uit? ""
+ - ""Vee hierdie stemboodskap uit? ""
+
@string/call_log_header_today
"%1$s om %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-am/strings.xml b/java/com/android/dialer/app/res/values-am/strings.xml
index 7f4a622d70dc258f0751e5b95f0ac04d9e68a932..08b52a6ee9f93ad68ad88a630b54ad2e0a5115a9 100644
--- a/java/com/android/dialer/app/res/values-am/strings.xml
+++ b/java/com/android/dialer/app/res/values-am/strings.xml
@@ -80,6 +80,7 @@
"መጠበቅ አክል"
"ቅንብሮች"
"ማስመሰያ"
+ "አዲስ የዩአይ አቋራጭ ፍጠር"
"ሁሉም እውቅያዎች"
"የድምፅ ቁልፍ ሰሌዳን ንካ"
"በመካሄድ ላይ ወዳለው ጥሪ ተመለስ"
@@ -104,12 +105,14 @@
"%s ሰከንድ"
"%s ደቂቃ %s ሴከ"
"የጅምላ እርምጃ ሁነታ ይቅር"
- "የድምፅ መልዕክት"
- "የድምፅ መልዕክቶች"
- "አዎ"
- "አይ"
+ "ሰርዝ"
+ "ይቅር"
"የተመረጠው %1$s ይሰረዝ?"
"%1$s ተመርጠዋል"
+
+ - ""እነዚህ የድምፅ መልዕክቶች ይሰረዙ? ""
+ - ""እነዚህ የድምፅ መልዕክቶች ይሰረዙ? ""
+
@string/call_log_header_today
"%1$s %2$s ላይ"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ar/strings.xml b/java/com/android/dialer/app/res/values-ar/strings.xml
index 3687d0bcb50406798a4bd06472ecba9c0b10819d..fe84a66abe131e83cc0c563f135c885401750116 100644
--- a/java/com/android/dialer/app/res/values-ar/strings.xml
+++ b/java/com/android/dialer/app/res/values-ar/strings.xml
@@ -84,6 +84,7 @@
"إضافة انتظار"
"الإعدادات"
"المحاكي"
+ "إنشاء اختصار للواجهة الجديدة"
"جميع جهات الاتصال"
"استخدام لوحة مفاتيح نغمات باللمس"
"عودة إلى المكالمة الجارية"
@@ -108,12 +109,18 @@
"%s ثانية"
"%s دقيقة %s ثانية"
"إلغاء وضع الإجراءات المجمَّع"
- "البريد الصوتي"
- "رسائل البريد الصوتي"
- "نعم"
- "لا"
+ "حذف"
+ "إلغاء"
"حذف رسائل %1$s المحددة؟"
"تم تحديد %1$s"
+
+ - ""حذف رسائل البريد الصوتي هذه؟ ""
+ - ""حذف رسالتي البريد الصوتي هاتين؟ ""
+ - ""حذف رسائل البريد الصوتي هذه؟ ""
+ - ""حذف رسائل البريد الصوتي هذه؟ ""
+ - ""حذف رسائل البريد الصوتي هذه؟ ""
+ - ""حذف رسالة البريد الصوتي هذه؟ ""
+
@string/call_log_header_today
"%1$s في %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-az/strings.xml b/java/com/android/dialer/app/res/values-az/strings.xml
index b6681c9e2ab5047b9924ebc3232e97f4700b0a97..f2b0cf35d669bdd8461dd0ede14ea5d7a6b4fd90 100644
--- a/java/com/android/dialer/app/res/values-az/strings.xml
+++ b/java/com/android/dialer/app/res/values-az/strings.xml
@@ -80,6 +80,7 @@
"Gözləmə əlavə edin"
"Ayarlar"
"Stimulyator"
+ "Yeni İİ Qısayolu yaradın"
"Bütün kontaktlar"
"Toxunma ton klaviaturasını istifadə edin"
"Davam edən zəngə qayıdın"
@@ -104,12 +105,14 @@
"%s san"
"%s dəq %s san"
"Qrup əməliyyatları rejimini ləğv edin"
- "səsli e-məktub"
- "səsli e-məktublar"
- "Bəli"
- "Xeyr"
+ "Silin"
+ "Ləğv edin"
"Seçilmiş %1$s silinsin?"
"%1$s seçilib"
+
+ - ""Bu səsli e-məktub silinsin? ""
+ - ""Bu səsli e-məktub silinsin? ""
+
@string/call_log_header_today
"%1$s tarixində %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
index 40c0886c8e7c47a18d2f37f7a8909b3635a616fd..b011f7866c80b7951f0f0fc42fe425f014b94f1f 100644
--- a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
@@ -81,6 +81,7 @@
"Dodaj čekanje"
"Podešavanja"
"Simulator"
+ "Napravite prečicu za novi UI"
"Svi kontakti"
"Upotrebite brojčanik za tonsko biranje"
"Vrati se na poziv koji je u toku"
@@ -105,12 +106,15 @@
"%s sek"
"%s min %s sek"
"Otkažite režim grupnih radnji"
- "govornu poruku"
- "govorne poruke"
- "Da"
- "Ne"
+ "Izbriši"
+ "Otkaži"
"Želite li da izbrišete izabranu(e) %1$s?"
"Izabranih: %1$s"
+
+ - ""Želite li da izbrišete ove govorne poruke? ""
+ - ""Želite li da izbrišete ove govorne poruke? ""
+ - ""Želite li da izbrišete ove govorne poruke? ""
+
@string/call_log_header_today
"%1$s u %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-be/strings.xml b/java/com/android/dialer/app/res/values-be/strings.xml
index f2ad3342b9f6bfca92c3ca4ef77242ae9f6e2abe..f9b083747e0f84a8f394c2ea0c98ad9ce40851b0 100644
--- a/java/com/android/dialer/app/res/values-be/strings.xml
+++ b/java/com/android/dialer/app/res/values-be/strings.xml
@@ -82,6 +82,7 @@
"Дадаць чаканне"
"Налады"
"Сродак мадэліравання"
+ "Ярлык новага карыст. інтэрфейсу"
"Усе кантакты"
"Выкарыстанне тонавай клавіятуры"
"Звярнуцца да бягучага выкліку"
@@ -106,12 +107,16 @@
"%s с"
"%s хв %s с"
"Скасаваць рэжым пакетных дзеянняў"
- "галасавая пошта"
- "галасавая пошта"
- "Так"
- "Не"
+ "Выдаліць"
+ "Скасаваць"
"Выдаліць вылучанае: %1$s?"
"Выбрана: %1$s"
+
+ - ""Выдаліць гэтыя паведамленні галасавой пошты? ""
+ - ""Выдаліць гэтыя паведамленні галасавой пошты? ""
+ - ""Выдаліць гэтыя паведамленні галасавой пошты? ""
+ - ""Выдаліць гэтыя паведамленні галасавой пошты? ""
+
@string/call_log_header_today
"%1$s у %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-bg/strings.xml b/java/com/android/dialer/app/res/values-bg/strings.xml
index 8083f48281a15e9ebe10acf5903d72f20e184db9..8b1105cb3015c5a38f5de030250f60fda9f7691c 100644
--- a/java/com/android/dialer/app/res/values-bg/strings.xml
+++ b/java/com/android/dialer/app/res/values-bg/strings.xml
@@ -80,6 +80,7 @@
"Добавяне на изчакване"
"Настройки"
"Симулатор"
+ "Пряк път към новия ПИ"
"Всички контакти"
"Използване на тонова клавиатура"
"Назад към текущото обаждане"
@@ -104,12 +105,14 @@
"%s сек"
"%s мин %s сек"
"Анулиране на режима на групови действия"
- "гласово съобщение"
- "гласови съобщения"
- "Да"
- "Не"
+ "Изтриване"
+ "Отказ"
"Избрахте %1$s – да се изтрие ли избраното?"
"Избрахте %1$s"
+
+ - ""Да се изтрият ли тези гласови съобщения? ""
+ - ""Да се изтрие ли това гласово съобщение? ""
+
@string/call_log_header_today
"%1$s в %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-bn/strings.xml b/java/com/android/dialer/app/res/values-bn/strings.xml
index 4d2d7cc1e4bb679b91544012d3597fb0b5cdeb8c..2ec362685b382559c778ade62968f940f15c2e42 100644
--- a/java/com/android/dialer/app/res/values-bn/strings.xml
+++ b/java/com/android/dialer/app/res/values-bn/strings.xml
@@ -80,6 +80,7 @@
"অপেক্ষা যোগ করুন"
"সেটিংস"
"সিমুলেটার"
+ "নতুন UI শর্টকাট তৈরি করুন"
"সকল পরিচিতি"
"স্পর্শ স্বর কীপ্যাড ব্যবহার করুন"
"প্রগতিতে থাকা কলে প্রত্যাবর্তন"
@@ -104,12 +105,14 @@
"%s সেকেন্ড"
"%s মিনিট %s সেকেন্ড"
"ব্যাচ অ্যাকশন মোড বাতিল করুন"
- "ভয়েসমেল"
- "ভয়েসমেলগুলি"
- "হ্যাঁ"
- "না"
+ "মুছুন"
+ "বাতিল করুন"
"নির্বাচিত %1$s মুছে ফেলতে চান?"
"%1$sটি নির্বাচিত"
+
+ - ""এই ভয়েসমেলগুলি মুছবেন? ""
+ - ""এই ভয়েসমেলগুলি মুছবেন? ""
+
@string/call_log_header_today
"%1$s তারিখে %2$s\'টায়"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-bs/strings.xml b/java/com/android/dialer/app/res/values-bs/strings.xml
index d8347723dc3d192ca18290ca7d7896f04501170b..087db1274603b36d1bb8b785857ca82b4ecf3e66 100644
--- a/java/com/android/dialer/app/res/values-bs/strings.xml
+++ b/java/com/android/dialer/app/res/values-bs/strings.xml
@@ -81,6 +81,7 @@
"Dodaj čekanje"
"Postavke"
"Simulator"
+ "Kreiraj prečicu za novi UI"
"Svi kontakti"
"Koristi tastaturu za tonsko biranje"
"Povratak na poziv u toku"
@@ -105,12 +106,15 @@
"%s sek."
"%s min. %s sek."
"Otkaži način rada za grupnu radnju"
- "poruka govorne pošte"
- "poruke govorne pošte"
- "Da"
- "Ne"
+ "Izbriši"
+ "Otkaži"
"Izbrisati izabranu/e %1$s?"
"Odabrano %1$s"
+
+ - ""Izbrisati ove govorne poruke? ""
+ - ""Izbrisati ove govorne poruke? ""
+ - ""Izbrisati ove govorne poruke? ""
+
@string/call_log_header_today
"%1$s u %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ca/strings.xml b/java/com/android/dialer/app/res/values-ca/strings.xml
index 7b12e0dbd3ae707b5255feb1276c65023f24db48..71385805a397e7a25e8eab0c53c8043925bed28e 100644
--- a/java/com/android/dialer/app/res/values-ca/strings.xml
+++ b/java/com/android/dialer/app/res/values-ca/strings.xml
@@ -80,6 +80,7 @@
"Afegeix espera"
"Configuració"
"Simulador"
+ "Crea drecera per a la nova IU"
"Tots els contactes"
"Utilitza el teclat de tons"
"Torna a la trucada en curs"
@@ -104,18 +105,20 @@
"%s s"
"%s min %s s"
"Cancel·la el mode d\'accions en lot"
- "missatge de veu"
- "missatges de veu"
- "Sí"
- "No"
+ "Suprimeix"
+ "Cancel·la"
"Vols suprimir l\'element o elements seleccionats (%1$s)?"
"%1$s seleccionades"
+
+ - ""Vols suprimir aquests missatges de veu? ""
+ - ""Vols suprimir aquest missatge de veu? ""
+
@string/call_log_header_today
"%1$s a les %2$s"
"%1$02d:%2$02d"
"%1$s • %2$s"
"No es pot trucar a aquest número."
- "Per configurar els missatges de veu, vés a Menú > Configuració."
+ "Per configurar els missatges de veu, ves a Menú > Configuració."
"Per trucar a la bústia de veu, primer has de desactivar el mode d\'avió."
"S\'està carregant…"
"IMEI"
@@ -229,7 +232,7 @@
"Bloqueja el número"
"No és una trucada brossa"
"Desbloqueja el número"
- "Contingut brossa"
+ "Trucada brossa"
"%1$s no té connexió i no s\'hi pot contactar"
"Informació"
diff --git a/java/com/android/dialer/app/res/values-cs/strings.xml b/java/com/android/dialer/app/res/values-cs/strings.xml
index bbcb35847ef1ec0b684b151e0d75bc40cc3fe859..dbff467c08c85262df61f37c0b33ba1dc326ce20 100644
--- a/java/com/android/dialer/app/res/values-cs/strings.xml
+++ b/java/com/android/dialer/app/res/values-cs/strings.xml
@@ -82,6 +82,7 @@
"Přidat čekání"
"Nastavení"
"Simulátor"
+ "Vytv. zkratku na nové rozhraní"
"Všechny kontakty"
"Použít dotykovou tónovou klávesnici"
"Návrat k probíhajícímu hovoru"
@@ -106,12 +107,16 @@
"%s s"
"%s min %s s"
"Zrušit režim hromadných akcí"
- "vybranou hlasovou zprávu"
- "vybrané hlasové zprávy"
- "Ano"
- "Ne"
+ "Smazat"
+ "Zrušit"
"Smazat %1$s?"
"Vybráno: %1$s"
+
+ - ""Smazat tyto hlasové zprávy? ""
+ - ""Smazat tyto hlasové zprávy? ""
+ - ""Smazat tyto hlasové zprávy? ""
+ - ""Smazat tuto hlasovou zprávu? ""
+
@string/call_log_header_today
"%1$s v %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-da/strings.xml b/java/com/android/dialer/app/res/values-da/strings.xml
index 31cf8e33d1b9ffb0838f190dbe91bf53e8721597..72f5a283559a94eea2440361ef3d92f5e8ca7f5c 100644
--- a/java/com/android/dialer/app/res/values-da/strings.xml
+++ b/java/com/android/dialer/app/res/values-da/strings.xml
@@ -80,6 +80,7 @@
"Tilføj ventetid"
"Indstillinger"
"Simulator"
+ "Opret ny brugerfladegenvej"
"Alle kontakter"
"Brug numerisk tastatur"
"Vend tilbage til igangværende opkald"
@@ -88,7 +89,7 @@
"Massehandlingstilstanden startes"
"Massehandlingstilstanden blev afsluttet"
"Vælg %1$s"
- "Fravælg %1$s"
+ "Fravalgt %1$s"
"Afspil telefonsvarerbesked"
"Vis kontaktpersonen %1$s"
"Ring til %1$s"
@@ -104,12 +105,14 @@
"%s sek."
"%s min. %s sek."
"Annuller massehandlingstilstand"
- "talebesked"
- "talebeskeder"
- "Ja"
- "Nej"
+ "Slet"
+ "Annuller"
"Vil du slette de valgte %1$s?"
"%1$s er valgt"
+
+ - ""Vil du slette denne talebesked? ""
+ - ""Vil du slette disse talebeskeder? ""
+
@string/call_log_header_today
"%1$s kl. %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-de/strings.xml b/java/com/android/dialer/app/res/values-de/strings.xml
index c1f644119de6027a9b818e40a0f46e954a58df2b..a7efd53a352fc2b99b0754dc8b8a294cde960605 100644
--- a/java/com/android/dialer/app/res/values-de/strings.xml
+++ b/java/com/android/dialer/app/res/values-de/strings.xml
@@ -80,6 +80,7 @@
"Warten hinzufügen"
"Einstellungen"
"Simulator"
+ "Verknüpfung für neue Benutzeroberfläche erstellen"
"Alle Kontakte"
"Telefontastatur verwenden"
"Zurück zum aktuellen Anruf"
@@ -104,12 +105,14 @@
"%s s"
"%s min %s s"
"Modus für Batch-Aktionen abbrechen"
- "Mailboxnachricht"
- "Mailboxnachrichten"
- "Ja"
- "Nein"
+ "Löschen"
+ "Abbrechen"
"Ausgewählte %1$s löschen?"
"%1$s ausgewählt"
+
+ - ""Diese Mailboxnachrichten löschen? ""
+ - ""Diese Mailboxnachricht löschen? ""
+
@string/call_log_header_today
"%1$s um %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-el/strings.xml b/java/com/android/dialer/app/res/values-el/strings.xml
index c4ba02d0f1d9fb73f9c4e44504d926e38cb95298..7080e5e50d5f68a324a46d5d6471ffdc649dca22 100644
--- a/java/com/android/dialer/app/res/values-el/strings.xml
+++ b/java/com/android/dialer/app/res/values-el/strings.xml
@@ -80,6 +80,7 @@
"Προσθήκη αναμονής"
"Ρυθμίσεις"
"Προσομοιωτής"
+ "Δημ. νέας συντόμ. διεπαφής"
"Όλες οι επαφές"
"Χρησιμοποιήστε το πληκτρολόγιο αφής ηχητικών τόνων"
"Επιστροφή στην κλήση που βρίσκεται σε εξέλιξη"
@@ -104,12 +105,14 @@
"%s δευτερόλεπτα"
"%s λεπτά %s δευτερόλεπτα"
"Ακύρωση λειτουργίας μαζικών ενεργειών"
- "φωνητικού μηνύματος αυτόματου τηλεφωνητή"
- "φωνητικών μηνυμάτων αυτόματου τηλεφωνητή"
- "Ναι"
- "Όχι"
+ "Διαγραφή"
+ "Ακύρωση"
"Διαγραφή επιλεγμ. %1$s;"
"Έχουν επιλεγεί %1$s"
+
+ - ""Διαγραφή αυτών των μηνυμάτων αυτόματου τηλεφωνητή; ""
+ - ""Διαγραφή αυτού του μηνύματος αυτόματου τηλεφωνητή; ""
+
@string/call_log_header_today
"%1$s στις %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-en-rAU/strings.xml b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
index cb7e912c7bc119c938f1c9d0a2551a107ae1d00b..999f7dab01b5a41f74ac67a194a2b617ed733bd7 100644
--- a/java/com/android/dialer/app/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
@@ -80,6 +80,7 @@
"Add wait"
"Settings"
"Simulator"
+ "Create new UI shortcut"
"All contacts"
"Use touch tone keypad"
"Return to call in progress"
@@ -104,12 +105,14 @@
"%s sec"
"%s min %s sec"
"Cancel batch actions mode"
- "voicemail"
- "voicemails"
- "Yes"
- "No"
+ "Delete"
+ "Cancel"
"Delete selected %1$s?"
"%1$s selected"
+
+ - ""Delete these voicemails? ""
+ - ""Delete this voicemail? ""
+
@string/call_log_header_today
"%1$s at %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-en-rGB/strings.xml b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
index cb7e912c7bc119c938f1c9d0a2551a107ae1d00b..999f7dab01b5a41f74ac67a194a2b617ed733bd7 100644
--- a/java/com/android/dialer/app/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
@@ -80,6 +80,7 @@
"Add wait"
"Settings"
"Simulator"
+ "Create new UI shortcut"
"All contacts"
"Use touch tone keypad"
"Return to call in progress"
@@ -104,12 +105,14 @@
"%s sec"
"%s min %s sec"
"Cancel batch actions mode"
- "voicemail"
- "voicemails"
- "Yes"
- "No"
+ "Delete"
+ "Cancel"
"Delete selected %1$s?"
"%1$s selected"
+
+ - ""Delete these voicemails? ""
+ - ""Delete this voicemail? ""
+
@string/call_log_header_today
"%1$s at %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-en-rIN/strings.xml b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
index cb7e912c7bc119c938f1c9d0a2551a107ae1d00b..999f7dab01b5a41f74ac67a194a2b617ed733bd7 100644
--- a/java/com/android/dialer/app/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
@@ -80,6 +80,7 @@
"Add wait"
"Settings"
"Simulator"
+ "Create new UI shortcut"
"All contacts"
"Use touch tone keypad"
"Return to call in progress"
@@ -104,12 +105,14 @@
"%s sec"
"%s min %s sec"
"Cancel batch actions mode"
- "voicemail"
- "voicemails"
- "Yes"
- "No"
+ "Delete"
+ "Cancel"
"Delete selected %1$s?"
"%1$s selected"
+
+ - ""Delete these voicemails? ""
+ - ""Delete this voicemail? ""
+
@string/call_log_header_today
"%1$s at %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-es-rUS/strings.xml b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
index 79d607fc781aad12568058676f3c76ff53df0115..701d74ebca44873cf46bc24e3791425f70cd8d4a 100644
--- a/java/com/android/dialer/app/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
@@ -80,6 +80,7 @@
"Agregar espera"
"Configuración"
"Simulador"
+ "Crear acceso a la nueva IU"
"Todos los contactos"
"Usar teclado numérico"
"Regresar a la llamada en curso"
@@ -104,12 +105,14 @@
"%s s"
"%s min %s s"
"Cancelar el modo de acción masiva"
- "el mensaje de voz"
- "los mensajes de voz"
- "Sí"
- "No"
+ "Borrar"
+ "Cancelar"
"¿Deseas borrar %1$s que seleccionaste?"
"%1$s seleccionada(s)"
+
+ - ""¿Deseas borrar estos mensajes de voz? ""
+ - ""¿Deseas borrar este mensaje de voz? ""
+
@string/call_log_header_today
"El %1$s a la hora %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-es/strings.xml b/java/com/android/dialer/app/res/values-es/strings.xml
index 170edc8ca604e64374a76c1bafdb190aab021b9e..8cf47f554474071b148baf57e47e0a71809b430e 100644
--- a/java/com/android/dialer/app/res/values-es/strings.xml
+++ b/java/com/android/dialer/app/res/values-es/strings.xml
@@ -80,6 +80,7 @@
"Añadir espera"
"Ajustes"
"Simulador"
+ "Crear acceso a la interfaz"
"Todos los contactos"
"Usar teclado táctil"
"Volver a la llamada"
@@ -104,12 +105,14 @@
"%s s"
"%s min y %s s"
"Cancelar el modo de acciones en lote"
- "mensaje de voz"
- "mensajes de voz"
- "Sí"
- "No"
+ "Eliminar"
+ "Cancelar"
"¿Eliminar la selección de %1$s?"
"Se han seleccionado %1$s"
+
+ - ""¿Eliminar estos mensajes de voz? ""
+ - ""¿Eliminar este mensaje de voz? ""
+
@string/call_log_header_today
"%1$s a las %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-et/strings.xml b/java/com/android/dialer/app/res/values-et/strings.xml
index e32b10403892da5e2a0eeec470b608c1321b105f..da043bf3cdc6f4303fda98f70c0d42a5cf5c4728 100644
--- a/java/com/android/dialer/app/res/values-et/strings.xml
+++ b/java/com/android/dialer/app/res/values-et/strings.xml
@@ -80,6 +80,7 @@
"Lisa ootamine"
"Seaded"
"Simulaator"
+ "Loo uue kasutajaliid. otsetee"
"Kõik kontaktid"
"Kasuta puutetooniga klahvistikku"
"Tagasi käimasolevale kõnele"
@@ -104,12 +105,14 @@
"%s s"
"%s min %s s"
"Mitme toimigu režiimi tühistamine"
- "kõnepostisõnum"
- "kõnepostisõnumid"
- "Jah"
- "Ei"
+ "Kustuta"
+ "Tühista"
"Kas kustutada valitud kõnepostisõnumid %1$s?"
"%1$s on valitud"
+
+ - ""Kas kustutada need kõnepostisõnumid? ""
+ - ""Kas kustutada see kõnepostisõnum? ""
+
@string/call_log_header_today
"%1$s kell %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-eu/strings.xml b/java/com/android/dialer/app/res/values-eu/strings.xml
index 57ef67d883759d5de3aa919b704624d8f4940552..071c6f3f06f59860bdc7192161d0fbc80bec5537 100644
--- a/java/com/android/dialer/app/res/values-eu/strings.xml
+++ b/java/com/android/dialer/app/res/values-eu/strings.xml
@@ -80,6 +80,7 @@
"Gehitu itxaronaldia"
"Ezarpenak"
"Simulagailua"
+ "Sortu interfazerako esteka"
"Kontaktu guztiak"
"Erabili ukipen-tonuak dituen teklatua"
"Itzuli abian den deira"
@@ -104,12 +105,14 @@
"%s s"
"%s min %s s"
"Utzi bertan behera ekintzak multzoka gauzatzeko modua"
- "ahots-mezua"
- "ahots-mezuak"
- "Bai"
- "Ez"
+ "Ezabatu"
+ "Utzi"
"Hautatutako %1$s ezabatu?"
"%1$s hautatu dira"
+
+ - ""Ahots-mezu hauek ezabatu nahi dituzu? ""
+ - ""Ahots-mezu hau ezabatu nahi duzu? ""
+
@string/call_log_header_today
"%1$s (%2$s)"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-fa/strings.xml b/java/com/android/dialer/app/res/values-fa/strings.xml
index eadb0dcb7aa9e42c61ff3f0676241af82b75a8bb..6c588747e6e82362572aab7e2ed00a000d7710ba 100644
--- a/java/com/android/dialer/app/res/values-fa/strings.xml
+++ b/java/com/android/dialer/app/res/values-fa/strings.xml
@@ -80,6 +80,7 @@
"افزودن انتظار"
"تنظیمات"
"شبیهساز"
+ "ایجاد میانبر رابط کاربری جدید"
"همه مخاطبین"
"استفاده از صفحهکلید لمسی"
"برگشت به تماس درحال انجام"
@@ -104,12 +105,14 @@
"%s ثانیه"
"%s دقیقه %s ثانیه"
"لغو حالت اقدام دستهای"
- "پست صوتی"
- "پستهای صوتی"
- "بله"
- "نه"
+ "حذف"
+ "لغو"
"%1$s انتخابشده حذف شود؟"
"%1$s مورد انتخاب شد"
+
+ - ""این پستهای صوتی حذف شوند؟ ""
+ - ""این پستهای صوتی حذف شوند؟ ""
+
@string/call_log_header_today
"%1$s ساعت %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-fi/strings.xml b/java/com/android/dialer/app/res/values-fi/strings.xml
index 9510959088519fb672e8c25b563ec7b103bf237d..55865d44a48d58e29c1c87f06f0112c0a15c4c58 100644
--- a/java/com/android/dialer/app/res/values-fi/strings.xml
+++ b/java/com/android/dialer/app/res/values-fi/strings.xml
@@ -80,6 +80,7 @@
"Lisää tauko"
"Asetukset"
"Simulaattori"
+ "Luo uusi UI-pikakuvake"
"Kaikki yhteystiedot"
"Käytä näppäimistöä"
"Palaa käynnissä olevaan puheluun"
@@ -104,12 +105,14 @@
"%s s"
"%s min %s s"
"Peruuta joukkotoimintotila."
- "vastaajaviesti"
- "vastaajaviestit"
- "Kyllä"
- "Ei"
+ "Poista"
+ "Peruuta"
"Poistetaanko %1$s?"
"%1$s valittu"
+
+ - ""Poistetaanko nämä vastaajaviestit? ""
+ - ""Poistetaanko tämä vastaajaviesti? ""
+
@string/call_log_header_today
"%1$s klo %2$s"
"%1$02d.%2$02d"
diff --git a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
index 6aa285c501d452e1229b8d96780dfc4c3413d6a0..f10b121d5561ea4a6cee0901e4fc394e31cff7da 100644
--- a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
@@ -80,6 +80,7 @@
"Ajouter Attendre"
"Paramètres"
"Simulateur"
+ "Créer un raccourci vers l\'IU"
"Tous les contacts"
"Utiliser le clavier DTMF"
"Reprendre l\'appel en cours"
@@ -104,12 +105,14 @@
"%s s"
"%s min et %s sec"
"Annuler le mode d\'action par lots"
- "message vocal"
- "messages vocaux"
- "Oui"
- "Non"
+ "Supprimer"
+ "Annuler"
"Supprimer la sélection (%1$s)?"
"%1$s sélection(s)"
+
+ - ""Supprimer ce message vocal? ""
+ - ""Supprimer ces messages vocaux? ""
+
@string/call_log_header_today
"%1$s à %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-fr/strings.xml b/java/com/android/dialer/app/res/values-fr/strings.xml
index f539d2e550afc57386980a5c430d50743f961f02..2ce930af5b1f1834634459728d191709d82afb0d 100644
--- a/java/com/android/dialer/app/res/values-fr/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr/strings.xml
@@ -80,6 +80,7 @@
"Ajouter une attente"
"Paramètres"
"Simulateur"
+ "Créer un raccourci vers la nouvelle interface"
"Tous les contacts"
"Utiliser le clavier DTMF"
"Reprendre l\'appel en cours"
@@ -104,12 +105,14 @@
"%s secondes"
"%s min et %s s"
"Annuler le mode d\'actions groupées"
- "message vocal"
- "messages vocaux"
- "Oui"
- "Non"
+ "Supprimer"
+ "Annuler"
"Supprimer les messages vocaux sélectionnés (%1$s) ?"
"%1$s sélectionnés"
+
+ - ""Supprimer ce message vocal ? ""
+ - ""Supprimer ces message vocaux ? ""
+
@string/call_log_header_today
"%1$s à %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-gl/strings.xml b/java/com/android/dialer/app/res/values-gl/strings.xml
index ca31c5e4706a83aeefc8ae96fa0d28a518a5a2b5..b9e540750b864d6895df7775a32dd9bde6e967bc 100644
--- a/java/com/android/dialer/app/res/values-gl/strings.xml
+++ b/java/com/android/dialer/app/res/values-gl/strings.xml
@@ -80,6 +80,7 @@
"Engadir espera"
"Configuración"
"Simulador"
+ "Crear atallo para a nova IU"
"Todos os contactos"
"Usar teclado de tons táctiles"
"Volver á chamada en curso"
@@ -104,12 +105,14 @@
"%s s"
"%s min %s s"
"Cancela o modo de accións en lote"
- "correo de voz"
- "correos de voz"
- "Si"
- "Non"
+ "Eliminar"
+ "Cancelar"
"Queres eliminar a selección (%1$s)?"
"Cantidade seleccionada: %1$s"
+
+ - ""Queres eliminar estes correos de voz? ""
+ - ""Queres eliminar este correo de voz? ""
+
@string/call_log_header_today
"%1$s ás %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-gu/strings.xml b/java/com/android/dialer/app/res/values-gu/strings.xml
index fbe4d0aaabc14b1559faa00b7d8c40c94640528e..ca8749ad37c41b0b102d97e7c30329f87c0ff870 100644
--- a/java/com/android/dialer/app/res/values-gu/strings.xml
+++ b/java/com/android/dialer/app/res/values-gu/strings.xml
@@ -80,6 +80,7 @@
"પ્રતીક્ષા ઉમેરો"
"સેટિંગ્સ"
"સિમ્યુલેટર"
+ "નવું UI શૉર્ટકટ્સ બનાવો"
"તમામ સંપર્કો"
"ટચ ટોન કીપેડનો ઉપયોગ કરો"
"કૉલ પર પાછા આવવું પ્રગતિ પર છે"
@@ -104,12 +105,14 @@
"%s સેકંડ"
"%s મિ %s સે"
"બૅચ ક્રિયા મોડ રદ કરો"
- "વૉઇસમેઇલ"
- "વૉઇસમેઇલ"
- "હા"
- "નહીં"
+ "કાઢી નાખો"
+ "રદ કરો"
"પસંદ કરેલ %1$sને કાઢી નાખીએ?"
"%1$s પસંદ કરી"
+
+ - ""આ વૉઇસમેઇલ કાઢી નાખીએ? ""
+ - ""આ વૉઇસમેઇલ કાઢી નાખીએ? ""
+
@string/call_log_header_today
"%1$s નાં રોજ %2$s વાગ્યે"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-hi/strings.xml b/java/com/android/dialer/app/res/values-hi/strings.xml
index c998e4402cc70a3bab0d15cabaca03fe92fc09b0..3bc93192197bcd01b3cedac3c6dceba2d3458393 100644
--- a/java/com/android/dialer/app/res/values-hi/strings.xml
+++ b/java/com/android/dialer/app/res/values-hi/strings.xml
@@ -80,6 +80,7 @@
"प्रतीक्षा का समय बढ़ाएं"
"सेटिंग"
"सिम्युलेटर"
+ "नया UI शॉर्टकट बनाएं"
"सभी संपर्क"
"टच टोन कीपैड का उपयोग करें"
"कॉल पर लौटना प्रगति पर है"
@@ -104,12 +105,14 @@
"%s सेकंड"
"%s मि. %s से."
"बैच कार्रवाई मोड रद्द करें"
- "वॉयसमेल"
- "वॉयसमेल"
- "हां"
- "नहीं"
+ "हटाएं"
+ "रद्द करें"
"क्या चुने गए %1$s हटाना चाहते हैं?"
"%1$s चयनित"
+
+ - ""ये वॉइसमेल हटाएं? ""
+ - ""ये वॉइसमेल हटाएं? ""
+
@string/call_log_header_today
"%1$s को %2$s बजे"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-hr/strings.xml b/java/com/android/dialer/app/res/values-hr/strings.xml
index 5261cfb0dace4cb65ca819042a9a5c30e0f44b43..0d2147008acf7a6f030777ddaf55f56867cab447 100644
--- a/java/com/android/dialer/app/res/values-hr/strings.xml
+++ b/java/com/android/dialer/app/res/values-hr/strings.xml
@@ -81,6 +81,7 @@
"Dodaj čekanje"
"Postavke"
"Simulator"
+ "Izrada prečaca novog sučelja"
"Svi kontakti"
"Koristi dodirnu zvučnu tipkovnicu"
"Natrag na poziv u tijeku"
@@ -105,12 +106,15 @@
"%s s"
"%s min %s s"
"Otkaži način skupnih radnji"
- "poruka govorne pošte"
- "poruke govorne pošte"
- "Da"
- "Ne"
+ "Izbriši"
+ "Odustani"
"Želite li izbrisati odabranu poruku/e govorne pošte %1$s?"
"Odabrano: %1$s"
+
+ - ""Želite li izbrisati ove poruke govorne pošte? ""
+ - ""Želite li izbrisati ove poruke govorne pošte? ""
+ - ""Želite li izbrisati ove poruke govorne pošte? ""
+
@string/call_log_header_today
"%1$s u %2$s"
"%1$02d.%2$02d"
diff --git a/java/com/android/dialer/app/res/values-hu/strings.xml b/java/com/android/dialer/app/res/values-hu/strings.xml
index 452f0da47d09b8edb28df882f5c6a3f6159a444e..9a373e6e8ddea0d3756a67afbf33d776ade4a675 100644
--- a/java/com/android/dialer/app/res/values-hu/strings.xml
+++ b/java/com/android/dialer/app/res/values-hu/strings.xml
@@ -80,6 +80,7 @@
"Várakozás hozzáadása"
"Beállítások"
"Szimulátor"
+ "Új felh. felület-parancsikon"
"Összes névjegy"
"Hangkódos telefonbillentyűzet használata"
"Vissza a folyamatban lévő híváshoz"
@@ -104,12 +105,14 @@
"%s másodperc"
"%s perc %s másodperc"
"Köteges művelet mód leállítva"
- "hangpostaüzenetet"
- "hangpostaüzeneteket"
- "Igen"
- "Nem"
+ "Törlés"
+ "Mégse"
"Törli a kiválasztott %1$s?"
"%1$s kiválasztva"
+
+ - ""Törli ezeket a hangpostaüzeneteket? ""
+ - ""Törli ezt a hangpostaüzenetet? ""
+
@string/call_log_header_today
"%1$s, %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-hy/strings.xml b/java/com/android/dialer/app/res/values-hy/strings.xml
index 97a84f2feff1c40a8c4d8e47122fb0b5321a91d9..2b2fbf61bc97fbf4645b05aeadc234a159b3fda3 100644
--- a/java/com/android/dialer/app/res/values-hy/strings.xml
+++ b/java/com/android/dialer/app/res/values-hy/strings.xml
@@ -80,12 +80,13 @@
"Ավելացնել սպասում"
"Կարգավորումներ"
"Նմանակիչ"
+ "Ստեղծել միջերեսի նոր դյուրանցում"
"Բոլոր կոնտակտները"
"Օգտագործել հնչերանգներով ստեղնաշարը"
"Վերադառնալ ընթացիկ զանգին"
"Ավելացնել զանգ"
"Մուտքային զանգեր"
- "Մուտք զանգվածային գործողությունների ռեժին"
+ "Դուք մտել եք զանգվածային գործողության ռեժիմ"
"Դուք դուրս եկաք զանգվածային գործողությունների ռեժիմից"
"Ընտրվեց՝ %1$s"
"Ապընտրվեց՝ %1$s"
@@ -104,12 +105,14 @@
"%s վրկ"
"%s րոպե %s վայրկյան"
"Չեղարկել փաթեթային գործողությունների ռեժիմը"
- "ձայնային հաղորդագրություն"
- "ձայնային հաղորդագրություններ"
- "Այո"
- "Ոչ"
+ "Ջնջել"
+ "Չեղարկել"
"Ջնջե՞լ նշված %1$sը"
"Ընտրվել է՝ %1$s"
+
+ - ""Delete these voicemails? ""
+ - ""Ջնջե՞լ այս ձայնային հաղորդագրությունները ""
+
@string/call_log_header_today
"%1$s-ին, ժամը %2$s-ին"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-in/strings.xml b/java/com/android/dialer/app/res/values-in/strings.xml
index f309f927b3611ad5317d6dc113fea008e356bcf5..e72fd6337a7ee2cdf6f70c48c40cf5d6760e87f6 100644
--- a/java/com/android/dialer/app/res/values-in/strings.xml
+++ b/java/com/android/dialer/app/res/values-in/strings.xml
@@ -80,6 +80,7 @@
"Tambahkan tunggu"
"Setelan"
"Simulator"
+ "Buat Pintasan UI Baru"
"Semua kontak"
"Gunakan keypad nada sentuh"
"Kembali ke panggilan sedang berlangsung"
@@ -104,12 +105,14 @@
"%s dtk"
"%s mnt %s dtk"
"Membatalkan mode tindakan kelompok"
- "pesan suara"
- "pesan suara"
- "Ya"
- "Tidak"
+ "Hapus"
+ "Batal"
"Hapus %1$s yang dipilih?"
"%1$s dipilih"
+
+ - ""Hapus pesan suara ini? ""
+ - ""Hapus pesan suara ini? ""
+
@string/call_log_header_today
"%1$s pukul %2$s"
"%1$02d.%2$02d"
diff --git a/java/com/android/dialer/app/res/values-is/strings.xml b/java/com/android/dialer/app/res/values-is/strings.xml
index b291eae84a31717417e7b62e45b2bac14e652b42..bd329be9d602a2a99cea4e42569daf94ff6b7181 100644
--- a/java/com/android/dialer/app/res/values-is/strings.xml
+++ b/java/com/android/dialer/app/res/values-is/strings.xml
@@ -80,6 +80,7 @@
"Bæta töf við"
"Stillingar"
"Hermir"
+ "Stofna flýtileið í nýtt viðmót"
"Allir tengiliðir"
"Nota snertitónatakkaborð"
"Fara aftur í símtal í gangi"
@@ -104,12 +105,14 @@
"%s sek."
"%s mín. og %s sek."
"Hætta við runuaðgerðastillingu"
- "talhólfsskilaboð"
- "talhólfsskilaboð"
- "Já"
- "Nei"
+ "Eyða"
+ "Hætta við"
"Eyða völdum %1$s?"
"%1$s valin"
+
+ - ""Eyða þessum talhólfsskilaboðum? ""
+ - ""Eyða þessum talhólfsskilaboðum? ""
+
@string/call_log_header_today
"%1$s kl. %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-it/strings.xml b/java/com/android/dialer/app/res/values-it/strings.xml
index 711ab26eebf9975938701cf355ca654d0eac7494..356f5a603c4efef20118b35ee8c300d2a9a15cbf 100644
--- a/java/com/android/dialer/app/res/values-it/strings.xml
+++ b/java/com/android/dialer/app/res/values-it/strings.xml
@@ -80,6 +80,7 @@
"Aggiungi attesa"
"Impostazioni"
"Simulatore"
+ "Crea nuova scorciatoia UI"
"Tutti i contatti"
"Usa tastierino per selezione a toni"
"Torna alla chiamata in corso"
@@ -104,12 +105,14 @@
"%s secondi"
"%s min %s s"
"Annulla modalità di azione collettiva"
- "messaggio vocale"
- "messaggi vocali"
- "Sì"
- "No"
+ "Elimina"
+ "Annulla"
"Eliminare i %1$s selezionati?"
"%1$s selezionate"
+
+ - ""Eliminare questi messaggi vocali? ""
+ - ""Eliminare questo messaggio vocale? ""
+
@string/call_log_header_today
"%1$s alle ore %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-iw/strings.xml b/java/com/android/dialer/app/res/values-iw/strings.xml
index bd2a05aec1ac83d21191692ca6eb313645945b61..230555a14e0d4ae1e174ff87a99ef4634952bca1 100644
--- a/java/com/android/dialer/app/res/values-iw/strings.xml
+++ b/java/com/android/dialer/app/res/values-iw/strings.xml
@@ -82,6 +82,7 @@
"הוסף המתנה"
"הגדרות"
"סימולטור"
+ "יצירת קיצור דרך לממשק החדש"
"כל אנשי הקשר"
"השתמש במקלדת עם חיוג צלילים"
"חזור לשיחה פעילה"
@@ -106,12 +107,16 @@
"%s שניות"
"%s דק\' %s שנ\'"
"ביטול המצב של ביצוע פעולות בכמות גדולה"
- "ההודעה הקולית"
- "ההודעות הקוליות"
- "כן"
- "לא"
+ "מחיקה"
+ "ביטול"
"האם למחוק את %1$s שבחרת?"
"%1$s נבחרו"
+
+ - ""האם למחוק את ההודעות הקוליות האלה? ""
+ - ""האם למחוק את ההודעות הקוליות האלה? ""
+ - ""האם למחוק את ההודעות הקוליות האלה? ""
+ - ""האם למחוק את ההודעה הקולית הזו? ""
+
@string/call_log_header_today
"%1$s ב-%2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ja/strings.xml b/java/com/android/dialer/app/res/values-ja/strings.xml
index 9ba40fb8f8c84de517a9c354905f67fd7fb3faa0..71fca83d5032b39086e90a07e16de65257175430 100644
--- a/java/com/android/dialer/app/res/values-ja/strings.xml
+++ b/java/com/android/dialer/app/res/values-ja/strings.xml
@@ -80,6 +80,7 @@
"待機を追加"
"設定"
"シミュレーション"
+ "新しいUIのショートカットを作成"
"すべての連絡先"
"プッシュホン式キーパッドを使う"
"通話に戻る"
@@ -104,12 +105,14 @@
"%s秒"
"%s分%s秒"
"一括操作モードをキャンセルします"
- "ボイスメール"
- "ボイスメール"
- "はい"
- "いいえ"
+ "削除"
+ "キャンセル"
"選択した%1$sを削除しますか?"
"%1$s 件選択済み"
+
+ - ""これらのボイスメールを削除しますか?""
+ - ""このボイスメールを削除しますか?""
+
@string/call_log_header_today
"%1$s、%2$s"
"%1$02d 分 %2$02d 秒"
diff --git a/java/com/android/dialer/app/res/values-ka/strings.xml b/java/com/android/dialer/app/res/values-ka/strings.xml
index dbb48f4f5091b6d8ef9d6e86f2f8fb9423092be4..fd9351f54c2fe0e6b04e414ad33027c83c91b62d 100644
--- a/java/com/android/dialer/app/res/values-ka/strings.xml
+++ b/java/com/android/dialer/app/res/values-ka/strings.xml
@@ -80,6 +80,7 @@
"ლოდინის დამატება"
"პარამეტრები"
"სიმულატორი"
+ "ახალი UI მალსახმობის შექმნა"
"ყველა კონტაქტი"
"ტონალური კლავიატურის გამოყენება"
"მიმდინარე ზარზე დაბრუნება"
@@ -104,12 +105,14 @@
"%s წმ"
"%s მინ %s წამ"
"ერთიანი ქმედების რეჟიმის გაუქმება"
- "ხმოვანი ფოსტა"
- "ხმოვანი ფოსტა"
- "დიახ"
- "არა"
+ "წაშლა"
+ "გაუქმება"
"გსურთ, წაშალოთ არჩეული %1$s?"
"არჩეულია %1$s"
+
+ - ""გსურთ ამ ხმოვანი შეტყობინებების წაშლა? ""
+ - ""გსურთ ამ ხმოვანი შეტყობინების წაშლა? ""
+
@string/call_log_header_today
"%1$s, %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-kk/strings.xml b/java/com/android/dialer/app/res/values-kk/strings.xml
index 8dfe531a1d7b0363fc4061f61fa06c1898ade826..f1763a21aba756324faa8502c455801cbe922d55 100644
--- a/java/com/android/dialer/app/res/values-kk/strings.xml
+++ b/java/com/android/dialer/app/res/values-kk/strings.xml
@@ -80,6 +80,7 @@
"Күтуді қосу"
"Параметрлер"
"Симулятор"
+ "Жаңа пайдаланушы интерфейсінің пернелер тіркесімін жасау"
"Барлық контактілер"
"Сенсорлы әуенді пернетақта"
"Қосылып тұрған қоңырауға оралу"
@@ -104,12 +105,14 @@
"%s сек."
"%s мин %s сек"
"Топтама әрекеттер режимін жабу"
- "дауыстық хабар"
- "дауыстық хабарлар"
- "Иә"
- "Жоқ"
+ "Жою"
+ "Жабу"
"Таңдалған %1$s хабарларын жою қажет пе?"
"%1$s таңдалды"
+
+ - ""Осы дауыстық хабарларды жою қажет пе? ""
+ - ""Осы дауыстық хабарды жою қажет пе? ""
+
@string/call_log_header_today
"%1$s, %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-km/strings.xml b/java/com/android/dialer/app/res/values-km/strings.xml
index ed0db05e24856afdf2afc976533f14f930466c59..54f1a126ab600346e15f42c9856692b5342727aa 100644
--- a/java/com/android/dialer/app/res/values-km/strings.xml
+++ b/java/com/android/dialer/app/res/values-km/strings.xml
@@ -80,6 +80,7 @@
"បញ្ចូលការរង់ចាំ"
"ការកំណត់"
"កម្មវិធីធ្វើដូចមែនទែន"
+ "បង្កើតផ្លូវកាត់ UI ថ្មី"
"ទំនាក់ទំនងទាំងអស់"
"ប្រើសំឡេងប៉ះបន្ទះលេខ"
"កំពុងត្រឡប់ទៅកាន់ការហៅ"
@@ -104,12 +105,14 @@
"%s វិនាទី"
"%s នាទី %s វិនាទី"
"បោះបង់មុខងារសកម្មភាពជាក្រុម"
- "សារជាសំឡេង"
- "សារជាសំឡេង"
- "បាទ/ចាស"
- "ទេ"
+ "លុប"
+ "បោះបង់"
"លុប %1$s ដែលបានជ្រើសរើស?"
"បានជ្រើសរើស %1$s"
+
+ - ""លុបសារជាសំឡេងទាំងនេះ? ""
+ - ""លុបសារជាសំឡេងនេះ? ""
+
@string/call_log_header_today
"%1$s នៅម៉ោង %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-kn/strings.xml b/java/com/android/dialer/app/res/values-kn/strings.xml
index 932bc403509aa01536bd2421477b9cabdb47ae98..d7f3aabbcf125deb93c289e822012456149e3044 100644
--- a/java/com/android/dialer/app/res/values-kn/strings.xml
+++ b/java/com/android/dialer/app/res/values-kn/strings.xml
@@ -80,6 +80,7 @@
"ನಿರೀಕ್ಷೆಯನ್ನು ಸೇರಿಸಿ"
"ಸೆಟ್ಟಿಂಗ್ಗಳು"
"ಸಿಮ್ಯುಲೇಟರ್"
+ "ಹೊಸ UI ಶಾರ್ಟ್ಕಟ್ ರಚಿಸಿ"
"ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು"
"ಸ್ಪರ್ಶ ಟೋನ್ ಕೀಪ್ಯಾಡ್ ಬಳಸಿ"
"ಪ್ರತ್ಯತ್ತರ ಕರೆಯು ಪ್ರಗತಿಯಲ್ಲಿದೆ"
@@ -104,12 +105,14 @@
"%s ಸೆಕೆಂ"
"%s ನಿಮಿ %s ಸೆಕೆಂ"
"ಬ್ಯಾಚ್ ಕ್ರಿಯೆಗಳ ಮೋಡ್ ಅನ್ನು ರದ್ದುಮಾಡಿ"
- "ಧ್ವನಿಮೇಲ್"
- "ಧ್ವನಿಮೇಲ್ಗಳು"
- "ಹೌದು"
- "ಇಲ್ಲ"
+ "ಅಳಿಸಿ"
+ "ರದ್ದುಮಾಡಿ"
"ಆಯ್ಕೆ ಮಾಡಲಾದ %1$s ಅನ್ನು ಅಳಿಸುವುದೇ?"
"%1$s ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"
+
+ - ""ಈ ಧ್ವನಿಮೇಲ್ಗಳನ್ನು ಅಳಿಸುವುದೇ? ""
+ - ""ಈ ಧ್ವನಿಮೇಲ್ಗಳನ್ನು ಅಳಿಸುವುದೇ? ""
+
@string/call_log_header_today
"%1$s ರಂದು %2$s ಗಂಟೆಗೆ"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ko/strings.xml b/java/com/android/dialer/app/res/values-ko/strings.xml
index de6b93c01befb4c955f973ac06a64a7a25a37c3c..cb2e83c79e5800381cb16774c43599fe79261f24 100644
--- a/java/com/android/dialer/app/res/values-ko/strings.xml
+++ b/java/com/android/dialer/app/res/values-ko/strings.xml
@@ -80,6 +80,7 @@
"대기 시간 추가"
"설정"
"시뮬레이터"
+ "새 UI 바로가기 만들기"
"모든 연락처"
"터치톤 키패드 사용"
"진행 중인 통화로 돌아가기"
@@ -104,12 +105,14 @@
"%s초"
"%s분 %s초"
"일괄 작업 모드 취소"
- "음성사서함"
- "음성사서함"
- "예"
- "아니요"
+ "삭제"
+ "취소"
"선택한 %1$s을(를) 삭제하시겠습니까?"
"%1$s개 선택됨"
+
+ - ""이 음성사서함을 삭제하시겠습니까? ""
+ - ""이 음성사서함을 삭제하시겠습니까? ""
+
@string/call_log_header_today
"%1$s %2$s"
"%1$02d분 %2$02d초"
diff --git a/java/com/android/dialer/app/res/values-ky/strings.xml b/java/com/android/dialer/app/res/values-ky/strings.xml
index ac9a617ed8b8db5ac63068f63afa2e7eea273881..0a0b3e6618d2db966968319d70fd393f0cb00afa 100644
--- a/java/com/android/dialer/app/res/values-ky/strings.xml
+++ b/java/com/android/dialer/app/res/values-ky/strings.xml
@@ -80,6 +80,7 @@
"Тыныгуу кошуу"
"Жөндөөлөр"
"Симулятор"
+ "Жаңы интерфейс үчүн кыска жол түзүү"
"Бардык байланыштар"
"Тоналдык терүү тактасын колдонуу"
"Токтотулган чалууга кайтуу"
@@ -104,12 +105,14 @@
"%s сек."
"%s мүн. %s сек."
"Жапырт аракет режимин жокко чыгаруу"
- "үн почтасы"
- "үн почталары"
- "Ооба"
- "Жок"
+ "Жок кылуу"
+ "Жокко чыгаруу"
"Тандалган %1$s жок кылынсынбы?"
"%1$s тандалды"
+
+ - ""Бул үн почталар жок кылынсынбы? ""
+ - ""Бул үн почта жок кылынсынбы? ""
+
@string/call_log_header_today
"%1$s саат %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-lo/strings.xml b/java/com/android/dialer/app/res/values-lo/strings.xml
index 2a829730fd4452b97dc4cc464d472161c75ee5b5..267d1c6be91b1f6c9347637c2ab52ca52b4033c4 100644
--- a/java/com/android/dialer/app/res/values-lo/strings.xml
+++ b/java/com/android/dialer/app/res/values-lo/strings.xml
@@ -80,6 +80,7 @@
"ເພີ່ມການລໍຖ້າ"
"ການຕັ້ງຄ່າ"
"ຕົວຈຳລອງ"
+ "ສ້າງປຸ່ມລັດສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ໃໝ່"
"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"
"ໃຊ້ປຸ່ມກົດສັນຍານສຽງ"
"ກັບໄປການໂທທີ່ກຳລັງດຳເນີນຢູ່"
@@ -104,12 +105,14 @@
"%s ວິນາທີ"
"%s ນທ %s ວິ"
"ຍົກເລີກໂໝດຄຳສັ່ງເປັນຊຸດ"
- "ຂໍ້ຄວາມສຽງ"
- "ຂໍ້ຄວາມສຽງ"
- "ແມ່ນແລ້ວ"
- "ບໍ່"
+ "ລຶບ"
+ "ຍົກເລີກ"
"ລຶບ %1$s ທີ່ເລືອກອອກໄປບໍ?"
"ເລືອກ %1$s ລາຍການແລ້ວ"
+
+ - ""ລຶບຂໍ້ຄວາມສຽງເຫຼົ່ານີ້ບໍ? ""
+ - ""ລຶບຂໍ້ຄວາມສຽງນີ້ບໍ? ""
+
@string/call_log_header_today
"%1$s ເວລາ %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-lt/strings.xml b/java/com/android/dialer/app/res/values-lt/strings.xml
index 367c928f4813319e169a503934d6eb159ee435e6..e26a909277b2e73ac699146a4f11724807558a8d 100644
--- a/java/com/android/dialer/app/res/values-lt/strings.xml
+++ b/java/com/android/dialer/app/res/values-lt/strings.xml
@@ -82,6 +82,7 @@
"Pridėti laukimą"
"Nustatymai"
"Simuliatorius"
+ "Sukurti naują NS spart. klav."
"Visi kontaktai"
"Naudoti jutiklinę klaviatūrą"
"Grįžti prie vykdomo skambučio"
@@ -106,12 +107,16 @@
"%s sek."
"%s min. %s sek."
"Atšaukti masinių veiksmų režimą"
- "balso pašto praneš."
- "balso pašto praneš."
- "Taip"
- "Ne"
+ "Ištrinti"
+ "Atšaukti"
"Ištrinti pasir. %1$s?"
"Pasirinkta: %1$s"
+
+ - ""Ištrinti šiuos balso pašto pranešimus? ""
+ - ""Ištrinti šiuos balso pašto pranešimus? ""
+ - ""Ištrinti šiuos balso pašto pranešimus? ""
+ - ""Ištrinti šiuos balso pašto pranešimus? ""
+
@string/call_log_header_today
"%1$s, %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-lv/strings.xml b/java/com/android/dialer/app/res/values-lv/strings.xml
index 2713b91b6e9793e8b4e9f7be8bc1beccff187cc0..8df2813c42c3c79be6f995c0f28c94cdc53118e7 100644
--- a/java/com/android/dialer/app/res/values-lv/strings.xml
+++ b/java/com/android/dialer/app/res/values-lv/strings.xml
@@ -81,6 +81,7 @@
"Pievienot gaidīšanu"
"Iestatījumi"
"Simulators"
+ "Jaunās liet. saskarnes saīsne"
"Visas kontaktpersonas"
"Izmantot skārientoņu tastatūru"
"Atgriezties pie pašreizējā zvana"
@@ -105,12 +106,15 @@
"%s s"
"%s min %s s"
"Iziet no grupas darbību režīma"
- "balss pasta ziņojums"
- "balss pasta ziņojumi"
- "Jā"
- "Nē"
+ "Dzēst"
+ "Atcelt"
"Vai dzēst atlasi: %1$s?"
"Atlasīti: %1$s"
+
+ - ""Vai dzēst šos balss pasta ziņojumus? ""
+ - ""Vai dzēst šos balss pasta ziņojumus? ""
+ - ""Vai dzēst šos balss pasta ziņojumus? ""
+
@string/call_log_header_today
"%1$s plkst. %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-mk/strings.xml b/java/com/android/dialer/app/res/values-mk/strings.xml
index 09725a64212b7523a343fe05e27a2e990df49d16..953a05569e82e5dcb8e9e7bc8f183f853ab9e118 100644
--- a/java/com/android/dialer/app/res/values-mk/strings.xml
+++ b/java/com/android/dialer/app/res/values-mk/strings.xml
@@ -80,6 +80,7 @@
"Додај почекај"
"Поставки"
"Симулатор"
+ "Создај крат. за нов интерфејс"
"Сите контакти"
"Користи тастатура со звуци на допир"
"Врати се на повик во тек"
@@ -104,12 +105,14 @@
"%s сек."
"%s мин. %s сек."
"Откажи го режимот на групни дејства"
- "говорна пошта"
- "говорни пораки"
- "Да"
- "Не"
+ "Избриши"
+ "Откажи"
"Да се избришат избраните %1$s?"
"Избрани се %1$s"
+
+ - ""Да се избришат говорните пораки? ""
+ - ""Да се избришат говорните пораки? ""
+
@string/call_log_header_today
"%1$s во %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ml/strings.xml b/java/com/android/dialer/app/res/values-ml/strings.xml
index 7655dbe233778aa2f922050091721e9471f6aaac..0eef40748e2fa2d1bf668fa19638c2c9cd42ccc6 100644
--- a/java/com/android/dialer/app/res/values-ml/strings.xml
+++ b/java/com/android/dialer/app/res/values-ml/strings.xml
@@ -80,6 +80,7 @@
"കാത്തിരിക്കൽ ചേർക്കുക"
"ക്രമീകരണം"
"സിമുലേറ്റർ"
+ "പുതിയ UI കുറുക്കുവഴി സൃഷ്ടിക്കുക"
"എല്ലാ കോൺടാക്റ്റുകളും"
"ടച്ച് ടോൺ കീപാഡ് ഉപയോഗിക്കുക"
"വിളിച്ചുകൊണ്ടിരിക്കുന്ന കോളിലേക്ക് മടങ്ങുക"
@@ -104,12 +105,14 @@
"%s സെക്കൻഡ്"
"%s മി. %s സെ."
"\'ബാച്ച് പ്രവർത്തനങ്ങൾ\' മോഡ് റദ്ദാക്കുക"
- "വോയ്സ്മെയിൽ"
- "വോയ്സ്മെയിലുകൾ"
- "അതെ"
- "ഇല്ല"
+ "ഇല്ലാതാക്കുക"
+ "റദ്ദാക്കൂ"
"തിരഞ്ഞെടുത്ത %1$s ഇല്ലാതാക്കണോ?"
"%1$s എണ്ണം തിരഞ്ഞെടുത്തു"
+
+ - ""ഈ വോയ്സ്മെയിലുകൾ ഇല്ലാതാക്കണോ? ""
+ - ""ഈ വോയ്സ്മെയിൽ ഇല്ലാതാക്കണോ? ""
+
@string/call_log_header_today
"%1$s, %2$s-ന്"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-mn/strings.xml b/java/com/android/dialer/app/res/values-mn/strings.xml
index 29bd8af42229b21d8f6cacb77a708860876af332..e0cd987108f9eda40d55ff1b91b634a39b83714f 100644
--- a/java/com/android/dialer/app/res/values-mn/strings.xml
+++ b/java/com/android/dialer/app/res/values-mn/strings.xml
@@ -80,6 +80,7 @@
"Хүлээлт нэмэх"
"Тохиргоо"
"Симулятор"
+ "Шинэ UI үүсгэх товчлол"
"Бүх харилцагчид"
"Хүрэлтээр дуугардаг гар ашиглах"
"Үргэлжилж буй дуудлага руу буцах"
@@ -104,12 +105,14 @@
"%s сек"
"%s минут %s секунд"
"Багц үйлдлийн горимыг цуцлах"
- "дуут шуудан"
- "дуут шуудан"
- "Тийм"
- "Үгүй"
+ "Устгах"
+ "Цуцлах"
"Сонгосон %1$s-г устгах уу?"
"%1$s сонгосон"
+
+ - ""Эдгээр дуут шууданг устгах уу? ""
+ - ""Энэ дуут шууданг устгах уу? ""
+
@string/call_log_header_today
"%1$s %2$s-д"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-mr/strings.xml b/java/com/android/dialer/app/res/values-mr/strings.xml
index ee21291e81eacdc08a37db17309a2c91ce1b1985..70e6d410cb26ac04af1c992f086837fcaaace826 100644
--- a/java/com/android/dialer/app/res/values-mr/strings.xml
+++ b/java/com/android/dialer/app/res/values-mr/strings.xml
@@ -80,6 +80,7 @@
"प्रतीक्षा करा जोडा"
"सेटिंग्ज"
"सिम्युलेटर"
+ "नवीन UI शॉर्टकट तयार करा"
"सर्व संपर्क"
"स्पर्श टोन कीपॅडचा वापर करा"
"चालू असलेल्या कॉलवर परत जा"
@@ -104,12 +105,14 @@
"%s सेकंद"
"%s मिनिट %s सेकंद"
"बॅच क्रिया मोड रद्द करा"
- "व्हॉइसमेल"
- "व्हॉइसमेल"
- "होय"
- "नाही"
+ "हटवा"
+ "रद्द करा"
"निवडलेले %1$s हटवायचेे?"
"%1$s निवडले"
+
+ - ""हा व्हॉइसमेल हटवायचा? ""
+ - ""हे व्हॉइसमेल हटवायचे? ""
+
@string/call_log_header_today
"%1$s रोजी %2$s वाजता"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ms/strings.xml b/java/com/android/dialer/app/res/values-ms/strings.xml
index dbb021359581d3a64dee78a75617161c682274b3..f58f08f0222e6518e0ff0d667f0303679744abff 100644
--- a/java/com/android/dialer/app/res/values-ms/strings.xml
+++ b/java/com/android/dialer/app/res/values-ms/strings.xml
@@ -80,6 +80,7 @@
"Tambah penungguan"
"Tetapan"
"Simulator"
+ "Buat Pintasan UI Baharu"
"Semua kenalan"
"Gunakan pad kekunci nada sentuh"
"Kembali ke panggilan yang sedang berlangsung"
@@ -104,12 +105,14 @@
"%s saat"
"%s min %s saat"
"Batalkan mod tindakan kelompok"
- "mel suara"
- "mel suara"
- "Ya"
- "Tidak"
+ "Padam"
+ "Batal"
"Padam %1$s yang dipilih?"
"%1$s dipilih"
+
+ - ""Padamkan mel suara ini? ""
+ - ""Padamkan mel suara ini? ""
+
@string/call_log_header_today
"%1$s pada %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-my/strings.xml b/java/com/android/dialer/app/res/values-my/strings.xml
index eecfeb234d6d35f1baedcd418b75edf92180c9d0..60c3271a0487f6bb51e0ad7a58b9d817397452c9 100644
--- a/java/com/android/dialer/app/res/values-my/strings.xml
+++ b/java/com/android/dialer/app/res/values-my/strings.xml
@@ -80,6 +80,7 @@
"စောင့်ဆိုင်းခြင်း ထည့်ပါ"
"ဆက်တင်များ"
"အသစ်ကဲ့သို့ တုပသည့်စနစ်"
+ "UI ဖြတ်လမ်းလင့်ခ်အသစ် လုပ်ရန်"
"လိပ်စာများအားလုံး"
"touch tone ကီးခလုတ် ကိုအသုံးပြုပါ"
"ဖုန်းပြန်ခေါ်မှု ပြုလုပ်နေစဉ်"
@@ -104,12 +105,14 @@
"%s စက္ကန့်"
"%s မိနစ် %s စက္ကန့်"
"တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်များမုဒ်ကိ ပယ်ဖျက်ရန်"
- "အသံမေးလ်"
- "အသံမေးလ်များ"
- "Yes"
- "No"
+ "ဖျက်ပါ"
+ "မလုပ်တော့"
"ရွေးထားသော %1$s ကို ဖျက်လိုပါသလား။"
"%1$s ကို ရွေးချယ်ထားသည်"
+
+ - ""ဤအသံမေးလ်များကို ဖျက်မလား။ ""
+ - ""ဤအသံမေးလ်ကို ဖျက်မလား။ ""
+
@string/call_log_header_today
"%1$s %2$s ၌"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-nb/strings.xml b/java/com/android/dialer/app/res/values-nb/strings.xml
index bda4915b50530a42ea5a4e8ff5e34a455d4bea1e..344a26a513dfb4b36aeaa0d240ae8dbdd57986ad 100644
--- a/java/com/android/dialer/app/res/values-nb/strings.xml
+++ b/java/com/android/dialer/app/res/values-nb/strings.xml
@@ -80,6 +80,7 @@
"Legg til Vent"
"Innstillinger"
"Simulator"
+ "Nytt grensesnitt – lag snarvei"
"Alle kontakter"
"Bruk tonetastatur"
"Gå tilbake til aktiv samtale"
@@ -104,12 +105,14 @@
"%s sek"
"%s min %s sek"
"Avbryt massehandlinsmodus"
- "talepost"
- "talepost"
- "Ja"
- "Nei"
+ "Slett"
+ "Avbryt"
"Slett markert %1$s?"
"%1$s er valgt"
+
+ - ""Vil du slette disse talemeldingene? ""
+ - ""Vil du slette denne talemeldingen? ""
+
@string/call_log_header_today
"%1$s kl. %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ne/strings.xml b/java/com/android/dialer/app/res/values-ne/strings.xml
index 8262a316c4b10547d9f4dd354b29dff02f5944a7..5e70c40b657545fa4972b2b65f6eb862ac40844f 100644
--- a/java/com/android/dialer/app/res/values-ne/strings.xml
+++ b/java/com/android/dialer/app/res/values-ne/strings.xml
@@ -80,6 +80,7 @@
"पर्खाइ थप्नुहोस्"
"सेटिङ्हरू"
"सिम्युलेटर"
+ "नयाँ UI सर्टकट सिर्जना गर्ने"
"सबै सम्पर्कहरू"
"स्पर्श टोन किप्याडको प्रयोग गर्नुहोस्"
"हुदै गरेको कलमा फर्कनुहोस्"
@@ -104,12 +105,14 @@
"%s सेकेन्ड"
"%s मिनेट %s सकेन्ड"
"ब्याच सम्बन्धी कारबाहीको मोडलाई रद्द गर्नुहोस्"
- "भ्वाइस मेल"
- "भ्वाइस मेलहरू"
- "हो"
- "होइन"
+ "मेट्नुहोस्"
+ "रद्द गर्नुहोस्"
"चयन गरिएका %1$s लाई मेटाउने हो?"
"%1$s चयन गरियो"
+
+ - ""यी भ्वाइस मेलहरू मेट्ने हो? ""
+ - ""यो भ्वाइस मेल मेट्ने हो? ""
+
@string/call_log_header_today
"%1$s मा %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-nl/strings.xml b/java/com/android/dialer/app/res/values-nl/strings.xml
index eed412d69f3f94c4eb0b37c53bbb5cf51f41d89c..dbd29bc785c4a56b68dfb17e4bad9afb850d7d77 100644
--- a/java/com/android/dialer/app/res/values-nl/strings.xml
+++ b/java/com/android/dialer/app/res/values-nl/strings.xml
@@ -80,6 +80,7 @@
"Wachten toevoegen"
"Instellingen"
"Simulator"
+ "Snelkoppeling voor nieuwe UI"
"Alle contacten"
"Toetsen voor toonkiezen gebruiken"
"Terug naar actief gesprek"
@@ -104,12 +105,14 @@
"%s sec."
"%s min. %s sec."
"Modus voor batchacties annuleren"
- "voicemail"
- "voicemails"
- "Ja"
- "Nee"
+ "Verwijderen"
+ "Annuleren"
"Geselecteerde %1$s verwijderen?"
"%1$s geselecteerd"
+
+ - ""Deze voicemails verwijderen? ""
+ - ""Deze voicemail verwijderen? ""
+
@string/call_log_header_today
"%1$s om %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-no/strings.xml b/java/com/android/dialer/app/res/values-no/strings.xml
index bda4915b50530a42ea5a4e8ff5e34a455d4bea1e..344a26a513dfb4b36aeaa0d240ae8dbdd57986ad 100644
--- a/java/com/android/dialer/app/res/values-no/strings.xml
+++ b/java/com/android/dialer/app/res/values-no/strings.xml
@@ -80,6 +80,7 @@
"Legg til Vent"
"Innstillinger"
"Simulator"
+ "Nytt grensesnitt – lag snarvei"
"Alle kontakter"
"Bruk tonetastatur"
"Gå tilbake til aktiv samtale"
@@ -104,12 +105,14 @@
"%s sek"
"%s min %s sek"
"Avbryt massehandlinsmodus"
- "talepost"
- "talepost"
- "Ja"
- "Nei"
+ "Slett"
+ "Avbryt"
"Slett markert %1$s?"
"%1$s er valgt"
+
+ - ""Vil du slette disse talemeldingene? ""
+ - ""Vil du slette denne talemeldingen? ""
+
@string/call_log_header_today
"%1$s kl. %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-pa/strings.xml b/java/com/android/dialer/app/res/values-pa/strings.xml
index 8e6540727e79c399afd60a6371dc64ed2d6b344d..33afd5824740608c3bf1a0edaf26469858867568 100644
--- a/java/com/android/dialer/app/res/values-pa/strings.xml
+++ b/java/com/android/dialer/app/res/values-pa/strings.xml
@@ -80,6 +80,7 @@
"ਉਡੀਕ ਜੋੜੋ"
"ਸੈਟਿੰਗਾਂ"
"ਸਿਮੁਲੇਟਰ"
+ "ਨਵਾਂ UI ਸ਼ਾਰਟਕੱਟ ਬਣਾਓ"
"ਸਾਰੇ ਸੰਪਰਕ"
"ਟਚ ਟੋਨ ਕੀਪੈਡ ਵਰਤੋ"
"ਪ੍ਰਗਤੀ ਵਿੱਚ ਕਾਲ ਤੇ ਵਾਪਸ ਜਾਓ"
@@ -104,12 +105,14 @@
"%s ਸਕਿੰਟ"
"%s ਮਿੰਟ %s ਸਕਿੰਟ"
"ਬੈਚ ਕਾਰਵਾਈਆਂ ਮੋਡ ਨੂੰ ਰੱਦ ਕਰੋ"
- "ਵੌਇਸਮੇਲ"
- "ਵੌਇਸਮੇਲਾਂ"
- "ਹਾਂ"
- "ਨਹੀਂ"
+ "ਮਿਟਾਓ"
+ "ਰੱਦ ਕਰੋ"
"ਕੀ ਚੁਣੀ(ਆਂ) ਹੋਈ(ਆਂ) %1$s ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?"
"%1$s ਨੂੰ ਚੁਣਿਆ ਗਿਆ"
+
+ - ""ਕੀ ਇਸ ਵੌਇਸਮੇਲ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ? ""
+ - ""ਕੀ ਇਹਨਾਂ ਵੌਇਸਮੇਲਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ? ""
+
@string/call_log_header_today
"%1$s ਨੂੰ %2$s ਵਜੇ"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-pl/strings.xml b/java/com/android/dialer/app/res/values-pl/strings.xml
index 8f57a82b43ce412d0a73856ae1e02a2fe29626a3..7f6027c51d30855128ac20d5624d60215b3d8f81 100644
--- a/java/com/android/dialer/app/res/values-pl/strings.xml
+++ b/java/com/android/dialer/app/res/values-pl/strings.xml
@@ -82,6 +82,7 @@
"Dodaj oczekiwanie"
"Ustawienia"
"Symulator"
+ "Utwórz skrót do nowego interfejsu"
"Wszystkie kontakty"
"Użyj klawiatury tonowej"
"Wróć do aktywnego połączenia"
@@ -106,12 +107,16 @@
"%s s"
"%s min %s s"
"Anuluj tryb działań zbiorczych"
- "wiadomości głosowe"
- "wiadomości głosowe"
- "Tak"
- "Nie"
+ "Usuń"
+ "Anuluj"
"Usunąć wybrane %1$s?"
"Wybrane: %1$s"
+
+ - ""Usunąć te wiadomości głosowe? ""
+ - ""Usunąć te wiadomości głosowe? ""
+ - ""Usunąć te wiadomości głosowe? ""
+ - ""Usunąć tę wiadomość głosową? ""
+
@string/call_log_header_today
"%1$s o %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
index eb61923e99fd55d3a0d0d418e0e6681f1d10bf17..768ce57d4bbea5ee9c89d98a4dda4d9e5e6276ed 100644
--- a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
@@ -80,6 +80,7 @@
"Adicionar espera"
"Configurações"
"Simulador"
+ "Criar atalho para a nova IU"
"Todos os contatos"
"Usar teclado multifrequencial"
"Retornar para a chamada em espera"
@@ -104,12 +105,14 @@
"%s seg"
"%s m %s s"
"Cancelar modo de ações em lote"
- "correio de voz"
- "correios de voz"
- "Sim"
- "Não"
+ "Excluir"
+ "Cancelar"
"Excluir a seleção de %1$s?"
"Itens selecionados: %1$s"
+
+ - ""Excluir este correio de voz? ""
+ - ""Excluir estes correios de voz? ""
+
@string/call_log_header_today
"%1$s às %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
index 493f846c4c98a177c1a8dbf6332eaf224c4443a5..3c636e1d60f0658677418de885a82307dc73fe29 100644
--- a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
@@ -80,6 +80,7 @@
"Adicionar espera"
"Definições"
"Simulador"
+ "Criar novo atalho de IU"
"Todos os contactos"
"Utilizar teclado numérico com tons de toque"
"Voltar à chamada em curso"
@@ -104,12 +105,14 @@
"%s seg"
"%s min. %s seg."
"Cancelar modo de ações em lote"
- "mensagem de correio de voz"
- "mensagens de correio de voz"
- "Sim"
- "Não"
+ "Eliminar"
+ "Cancelar"
"Pretende eliminar a(s) %1$s selecionada(s)?"
"%1$s selecionada(s)"
+
+ - ""Pretende eliminar esta(s) mensagem(ns) de correio de voz? ""
+ - ""Pretende eliminar estas mensagens de correio de voz? ""
+
@string/call_log_header_today
"%1$s às %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-pt/strings.xml b/java/com/android/dialer/app/res/values-pt/strings.xml
index eb61923e99fd55d3a0d0d418e0e6681f1d10bf17..768ce57d4bbea5ee9c89d98a4dda4d9e5e6276ed 100644
--- a/java/com/android/dialer/app/res/values-pt/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt/strings.xml
@@ -80,6 +80,7 @@
"Adicionar espera"
"Configurações"
"Simulador"
+ "Criar atalho para a nova IU"
"Todos os contatos"
"Usar teclado multifrequencial"
"Retornar para a chamada em espera"
@@ -104,12 +105,14 @@
"%s seg"
"%s m %s s"
"Cancelar modo de ações em lote"
- "correio de voz"
- "correios de voz"
- "Sim"
- "Não"
+ "Excluir"
+ "Cancelar"
"Excluir a seleção de %1$s?"
"Itens selecionados: %1$s"
+
+ - ""Excluir este correio de voz? ""
+ - ""Excluir estes correios de voz? ""
+
@string/call_log_header_today
"%1$s às %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ro/strings.xml b/java/com/android/dialer/app/res/values-ro/strings.xml
index 93d01888a1002bcca70c94e562acf687749de049..b85f84987f245f0d36c6f37b6f3233784a8cb338 100644
--- a/java/com/android/dialer/app/res/values-ro/strings.xml
+++ b/java/com/android/dialer/app/res/values-ro/strings.xml
@@ -81,6 +81,7 @@
"Adăugați interval de așteptare"
"Setări"
"Simulator"
+ "Creați comandă rapidă IU nouă"
"Toată agenda"
"Tastatura tactilă cu sunet"
"Reveniți la apelul în curs"
@@ -105,12 +106,15 @@
"%s secunde"
"%s min. %s sec."
"Anulați modul de acțiuni în lot"
- "mesagerie vocală"
- "mesaje vocale"
- "Da"
- "Nu"
+ "Ștergeți"
+ "Anulați"
"Ștergeți cele %1$s selectate?"
"%1$s selectate"
+
+ - ""Ștergeți aceste mesaje vocale? ""
+ - ""Ștergeți aceste mesaje vocale? ""
+ - ""Ștergeți acest mesaj vocal? ""
+
@string/call_log_header_today
"%1$s la %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ru/strings.xml b/java/com/android/dialer/app/res/values-ru/strings.xml
index 54278c40b135d64857dbc53346d25dca4a3d016e..91441cc56046e8463a8dfbeaea3ca54eda5fd9a1 100644
--- a/java/com/android/dialer/app/res/values-ru/strings.xml
+++ b/java/com/android/dialer/app/res/values-ru/strings.xml
@@ -82,6 +82,7 @@
"Добавить паузу"
"Настройки"
"Симулятор"
+ "Создать ярлык для нового интерфейса"
"Все контакты"
"Панель тонального набора"
"Вернуться к текущему вызову"
@@ -106,12 +107,16 @@
"%s сек."
"%s мин. %s сек."
"Отмена режима массового действия"
- "голосовое сообщение"
- "голосовые сообщения"
- "Да"
- "Нет"
+ "Удалить"
+ "Отмена"
"Удалить %1$s?"
"Выбрано: %1$s"
+
+ - ""Удалить эти голосовые сообщения? ""
+ - ""Удалить эти голосовые сообщения? ""
+ - ""Удалить эти голосовые сообщения? ""
+ - ""Удалить эти голосовые сообщения? ""
+
@string/call_log_header_today
"%1$s в %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-si/strings.xml b/java/com/android/dialer/app/res/values-si/strings.xml
index 63634577fa10eafc06c6b1a5c6f5e9483b486f35..8a748d53c91c8fbafd8fd834d69874b07467f9aa 100644
--- a/java/com/android/dialer/app/res/values-si/strings.xml
+++ b/java/com/android/dialer/app/res/values-si/strings.xml
@@ -80,6 +80,7 @@
"රැඳී සිටීම එක් කරන්න"
"සැකසීම්"
"සමාකෘතිය"
+ "නව UI කෙටිමග තනන්න"
"සියලුම සම්බන්ධතා"
"ස්පර්ශ නාද යතුරුපෑඩය භාවිතා කරන්න"
"පවතින ඇමතුමට නැවත යන්න"
@@ -104,12 +105,14 @@
"තත් %s"
"මිනි %s තත් %s"
"කාණ්ඩ ක්රියා ප්රකාරය අවලංගු කරන්න"
- "හඬ තැපෑල"
- "හඬ තැපැල්"
- "ඔව්"
- "නැත"
+ "මකන්න"
+ "අවලංගු කරන්න"
"තෝරා ගත් %1$s මකන්නද?"
"%1$s තෝරා ගන්නා ලදි"
+
+ - ""මෙම හඬ තැපැල් මකන්නද? ""
+ - ""මෙම හඬ තැපැල් මකන්නද? ""
+
@string/call_log_header_today
"%1$s දින %2$sට"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-sk/strings.xml b/java/com/android/dialer/app/res/values-sk/strings.xml
index f7bf4237c44e0a116eb4cda074d72399a8328c8c..e84febb17130706570db8a0d3e5467783be1f4cd 100644
--- a/java/com/android/dialer/app/res/values-sk/strings.xml
+++ b/java/com/android/dialer/app/res/values-sk/strings.xml
@@ -82,6 +82,7 @@
"Pridať čakanie"
"Nastavenia"
"Simulátor"
+ "Vyt. skratku na nové rozhranie"
"Všetky kontakty"
"Použiť dotykovú tónovú klávesnicu"
"Návrat k prebiehajúcemu hovoru"
@@ -106,12 +107,16 @@
"%s s"
"%s min. %s s"
"Zrušiť režim hromadných akcií"
- "hlasová správa"
- "hlasové správy"
- "Áno"
- "Nie"
+ "Odstrániť"
+ "Zrušiť"
"Chcete odstrániť vybraté položky (%1$s)?"
"Vybraté: %1$s"
+
+ - ""Chcete odstrániť tieto hlasové správy? ""
+ - ""Chcete odstrániť tieto hlasové správy? ""
+ - ""Chcete odstrániť tieto hlasové správy? ""
+ - ""Chcete odstrániť túto hlasovú správu? ""
+
@string/call_log_header_today
"%1$s o %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-sl/strings.xml b/java/com/android/dialer/app/res/values-sl/strings.xml
index d3c57dd92b1e04bba3d59b5e9eeca79dd5cac250..495b6e8020b26093e49fc778c78d5d2c42a70e77 100644
--- a/java/com/android/dialer/app/res/values-sl/strings.xml
+++ b/java/com/android/dialer/app/res/values-sl/strings.xml
@@ -82,6 +82,7 @@
"Dodaj premor"
"Nastavitve"
"Simulator"
+ "Ustvari bliž. za novi up. vm."
"Vsi stiki"
"Uporabi številčnico za tonsko klicanje"
"Nazaj na klic, ki poteka"
@@ -106,12 +107,16 @@
"%s s"
"%s min %s s"
"Prekliči način množičnega dejanja"
- "sporočilo v odzivniku"
- "sporočila v odzivniku"
- "Da"
- "Ne"
+ "Izbriši"
+ "Prekliči"
"Želite izbrisati %1$s?"
"Št. izbranih: %1$s"
+
+ - ""Želite izbrisati ta sporočila v odzivniku? ""
+ - ""Želite izbrisati ta sporočila v odzivniku? ""
+ - ""Želite izbrisati ta sporočila v odzivniku? ""
+ - ""Želite izbrisati ta sporočila v odzivniku? ""
+
@string/call_log_header_today
"%1$s ob %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-sq/strings.xml b/java/com/android/dialer/app/res/values-sq/strings.xml
index 84704459c738046bced67c0bc04d6f78d17262f3..809fd8a22eb0eef78cc27afa9b61f4e8fa51e617 100644
--- a/java/com/android/dialer/app/res/values-sq/strings.xml
+++ b/java/com/android/dialer/app/res/values-sq/strings.xml
@@ -80,6 +80,7 @@
"Shto një pritje"
"Cilësimet"
"Simuluesi"
+ "Krijo një shkurtore për ndërfaqen e re të përdoruesit"
"Të gjitha kontaktet"
"Përdor bllokun e tasteve"
"Kthehu te telefonata"
@@ -104,12 +105,14 @@
"%s sekonda"
"%s min. e %s sek."
"Anulo modalitetin e veprimeve në grup"
- "posta zanore"
- "postat zanore"
- "Po"
- "Jo"
+ "Fshi"
+ "Anulo"
"Të fshihen %1$s të zgjedhura?"
"%1$s të zgjedhura"
+
+ - ""Të fshihen këto posta zanore? ""
+ - ""Të fshihet kjo postë zanore? ""
+
@string/call_log_header_today
"%1$s në %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-sr/strings.xml b/java/com/android/dialer/app/res/values-sr/strings.xml
index 6cf7a7c8563d5c5d7bb0b4d23f1ff9f8164fc070..6f85c0ba8a5a3c19a10c36a9af4a4ac3a6b20b4c 100644
--- a/java/com/android/dialer/app/res/values-sr/strings.xml
+++ b/java/com/android/dialer/app/res/values-sr/strings.xml
@@ -81,6 +81,7 @@
"Додај чекање"
"Подешавања"
"Симулатор"
+ "Направите пречицу за нови UI"
"Сви контакти"
"Употребите бројчаник за тонско бирање"
"Врати се на позив који је у току"
@@ -105,12 +106,15 @@
"%s сек"
"%s мин %s сек"
"Откажите режим групних радњи"
- "говорну поруку"
- "говорне поруке"
- "Да"
- "Не"
+ "Избриши"
+ "Откажи"
"Желите ли да избришете изабрану(е) %1$s?"
"Изабраних: %1$s"
+
+ - ""Желите ли да избришете ове говорне поруке? ""
+ - ""Желите ли да избришете ове говорне поруке? ""
+ - ""Желите ли да избришете ове говорне поруке? ""
+
@string/call_log_header_today
"%1$s у %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-sv/strings.xml b/java/com/android/dialer/app/res/values-sv/strings.xml
index 71ef3e55bc8ad665093cf1a1f5daca7c9fd1e445..e8446cab1cf2034fd37c41dcd076b42d70ec5184 100644
--- a/java/com/android/dialer/app/res/values-sv/strings.xml
+++ b/java/com/android/dialer/app/res/values-sv/strings.xml
@@ -80,6 +80,7 @@
"Lägg till väntetid"
"Inställningar"
"Simulator"
+ "Skapa genväg till anv.gränssn."
"Alla kontakter"
"Använd tonvalstelefon"
"Återvänd till pågående samtal"
@@ -104,12 +105,14 @@
"%s sekund"
"%s min %s sek"
"Avbryt läget för massåtgärd"
- "röstbrevlåda"
- "röstmeddelanden"
- "Ja"
- "Nej"
+ "Radera"
+ "Avbryt"
"Vill du radera markerade %1$s?"
"%1$s har markerats"
+
+ - ""Vill du ta bort dessa röstmeddelanden? ""
+ - ""Vill du ta bort det här röstmeddelandet? ""
+
@string/call_log_header_today
"%1$s kl. %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-sw/strings.xml b/java/com/android/dialer/app/res/values-sw/strings.xml
index 9cbdd3e8e33ebbdc3901cb3045e7c8b18ae6204a..142aaf0de23131a68c36d9faef55ec6723d5e630 100644
--- a/java/com/android/dialer/app/res/values-sw/strings.xml
+++ b/java/com/android/dialer/app/res/values-sw/strings.xml
@@ -80,6 +80,7 @@
"Ongeza kusubiri"
"Mipangilio"
"Kielelezo"
+ "Unda Mkato Mpya wa Kiolesura"
"Anwani zote"
"Tumia kibao cha kuchapa cha sauti na kugusa"
"Rudi kwa simu inayoendelea"
@@ -104,12 +105,14 @@
"Sekunde %s"
"Dak %s sek %s"
"Ghairi hali ya kutekeleza vitendo vingi"
- "ujumbe wa sauti"
- "ujumbe wa sauti"
- "Ndiyo"
- "Hapana"
+ "Futa"
+ "Ghairi"
"Je, ungependa kufuta %1$s uliochagua?"
"%1$s zimechaguliwa"
+
+ - ""Je, unataka kufuta kila ujumbe wa sauti ulioonyeshwa? ""
+ - ""Je, unataka kufuta ujumbe huu wa sauti? ""
+
@string/call_log_header_today
"%1$s saa %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ta/strings.xml b/java/com/android/dialer/app/res/values-ta/strings.xml
index a91088c4fd0dd1dd1d3da47e30343c0f475d60a6..e270a3ceee72617ac04d61dc12f55724c94b27e2 100644
--- a/java/com/android/dialer/app/res/values-ta/strings.xml
+++ b/java/com/android/dialer/app/res/values-ta/strings.xml
@@ -80,6 +80,7 @@
"காத்திருப்பைச் சேர்"
"அமைப்பு"
"சிமுலேட்டர்"
+ "புதிய UI குறுக்குவழியை உருவாக்கு"
"எல்லா தொடர்புகளும்"
"டச் டோன் விசைப்பலகையைப் பயன்படுத்தவும்"
"செயலிலுள்ள அழைப்பிற்குத் திரும்பு"
@@ -104,12 +105,14 @@
"%s வி"
"%s நிமிடம் %s வினாடி"
"தொகுப்புச் செயல்கள் பயன்முறையை ரத்துசெய்யும்"
- "குரலஞ்சல்"
- "குரலஞ்சல்கள்"
- "ஆம்"
- "வேண்டாம்"
+ "நீக்கு"
+ "ரத்துசெய்"
"தேர்ந்தெடுத்த %1$sஐ நீக்கவா?"
"%1$s தேர்ந்தெடுக்கப்பட்டன"
+
+ - ""இந்தக் குரலஞ்சல்களை நீக்கவா? ""
+ - ""இந்தக் குரலஞ்சலை நீக்கவா? ""
+
@string/call_log_header_today
"%1$s அன்று %2$s மணிக்கு"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-te/strings.xml b/java/com/android/dialer/app/res/values-te/strings.xml
index aecc1c4b93ac10e47a393ed27881676fee573544..8d2c66784559d44fd805be03a77e48b4cba68ed4 100644
--- a/java/com/android/dialer/app/res/values-te/strings.xml
+++ b/java/com/android/dialer/app/res/values-te/strings.xml
@@ -80,6 +80,7 @@
"నిరీక్షణ సమయాన్ని జోడించు"
"సెట్టింగ్లు"
"సిములేటర్"
+ "కొత్త UI సత్వరమార్గం సృష్టించు"
"అన్ని పరిచయాలు"
"టచ్ టోన్ కీప్యాడ్ను ఉపయోగించండి"
"ప్రోగ్రెస్లో ఉన్న కాల్కు వెళ్లు"
@@ -104,12 +105,14 @@
"%s సెక"
"%s నిమి %s సెక"
"సమూహ చర్యల మోడ్ను రద్దు చేస్తుంది"
- "వాయిస్ మెయిల్"
- "వాయిస్ మెయిల్లు"
- "అవును"
- "వద్దు"
+ "తొలగించు"
+ "రద్దు చేయి"
"ఎంచుకున్న %1$sను తొలగించాలా?"
"%1$s ఎంచుకోబడ్డాయి"
+
+ - ""ఈ వాయిస్ మెయిల్లను తొలగించాలా? ""
+ - ""ఈ వాయిస్ మెయిల్ను తొలగించాలా? ""
+
@string/call_log_header_today
"%1$s %2$sకి"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-th/strings.xml b/java/com/android/dialer/app/res/values-th/strings.xml
index 58507b49e6f88493ea1475fb6836dfa286537362..76a66e20e95c78e19b113dbbda7a40f1f1dd8ec9 100644
--- a/java/com/android/dialer/app/res/values-th/strings.xml
+++ b/java/com/android/dialer/app/res/values-th/strings.xml
@@ -80,6 +80,7 @@
"เพิ่มการรอ"
"การตั้งค่า"
"เครื่องมือจำลอง"
+ "สร้างทางลัด UI ใหม่"
"รายชื่อติดต่อทั้งหมด"
"ใช้ปุ่มกดสัญญาณเสียง"
"กลับไปคุยสายต่อ"
@@ -104,12 +105,14 @@
"%s วินาที"
"%s นาที %s วินาที"
"ยกเลิกโหมดการทำงานแบบกลุ่ม"
- "ข้อความเสียง"
- "ข้อความเสียง"
- "ใช่"
- "ไม่"
+ "ลบ"
+ "ยกเลิก"
"ลบ%1$sที่เลือกหรือไม่"
"เลือกไว้ %1$s รายการ"
+
+ - ""ลบข้อความเสียงเหล่านี้ไหม ""
+ - ""ลบข้อความเสียงนี้ไหม ""
+
@string/call_log_header_today
"วันที่ %1$s เวลา %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-tl/strings.xml b/java/com/android/dialer/app/res/values-tl/strings.xml
index 9a8157feaef526d063cbc9489583ea8d6eb3046f..51e7a665940e7d6cc3352671f4d8bda494b3248d 100644
--- a/java/com/android/dialer/app/res/values-tl/strings.xml
+++ b/java/com/android/dialer/app/res/values-tl/strings.xml
@@ -80,6 +80,7 @@
"Magdagdag ng paghihintay"
"Mga Setting"
"Simulator"
+ "Gawa ng Shortcut ng Bagong UI"
"Lahat ng mga contact"
"Gumamit ng touch tone na keypad"
"Bumalik sa kasalukuyang tawag"
@@ -104,12 +105,14 @@
"%s sec"
"%s min %s sec"
"Kanselahin ang batch actions mode"
- "voicemail"
- "mga voicemail"
- "Oo"
- "Hindi"
+ "I-delete"
+ "Kanselahin"
"I-delete ang napiling %1$s?"
"%1$s ang napili"
+
+ - ""I-delete ang mga voicemail na ito? ""
+ - ""I-delete ang mga voicemail na ito? ""
+
@string/call_log_header_today
"%1$s ng %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-tr/strings.xml b/java/com/android/dialer/app/res/values-tr/strings.xml
index 17bd6645c73180e8fcf74b513e8d20e39b834109..1ff0128d4b50c8516a03b4c86dd38a8166e82e4e 100644
--- a/java/com/android/dialer/app/res/values-tr/strings.xml
+++ b/java/com/android/dialer/app/res/values-tr/strings.xml
@@ -80,6 +80,7 @@
"Bekleme ekle"
"Ayarlar"
"Simülatör"
+ "Kull. Arayüzü Kısayolu Oluştur"
"Tüm kişiler"
"Telefon tuş takımını kullan"
"Çağrıya dön"
@@ -104,12 +105,14 @@
"%s sn."
"%s dk. %s sn."
"Toplu işlemler modu iptal edilir"
- "sesli mesaj"
- "sesli mesajlar"
- "Evet"
- "Hayır"
+ "Sil"
+ "İptal"
"Seçili %1$s silinsin mi?"
"%1$s öğe seçildi"
+
+ - ""Bu sesli mesajlar silinsin mi? ""
+ - ""Bu sesli mesaj silinsin mi? ""
+
@string/call_log_header_today
"%1$s, %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-uk/strings.xml b/java/com/android/dialer/app/res/values-uk/strings.xml
index a020a1f1b7bcecd56cbebf77b577d23928d24d1c..b92970daa3677491cc41e84d02726fa96153166f 100644
--- a/java/com/android/dialer/app/res/values-uk/strings.xml
+++ b/java/com/android/dialer/app/res/values-uk/strings.xml
@@ -82,6 +82,7 @@
"Додати паузу"
"Налаштування"
"Симулятор"
+ "Створити ярлик для нової дії"
"Усі контакти"
"Використовувати тональний набір"
"Повернутися до поточного виклику"
@@ -106,12 +107,16 @@
"%s с"
"%s хв %s с"
"Скасувати режим масових дій"
- "голосова пошта"
- "голосова пошта"
- "Так"
- "Ні"
+ "Видалити"
+ "Скасувати"
"Видалити вибране (%1$s)?"
"Вибрано %1$s"
+
+ - ""Видалити ці повідомлення голосової пошти? ""
+ - ""Видалити ці повідомлення голосової пошти? ""
+ - ""Видалити ці повідомлення голосової пошти? ""
+ - ""Видалити ці повідомлення голосової пошти? ""
+
@string/call_log_header_today
"%1$s о %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-ur/strings.xml b/java/com/android/dialer/app/res/values-ur/strings.xml
index d696bd54c16ca936c92050e34b1de77ff5b896d5..cb2eb9e333692e025b229a3d185f3244e8bce23c 100644
--- a/java/com/android/dialer/app/res/values-ur/strings.xml
+++ b/java/com/android/dialer/app/res/values-ur/strings.xml
@@ -80,6 +80,7 @@
"انتظار شامل کریں"
"ترتیبات"
"Simulator"
+ "نیا UI شارٹ کٹ تخلیق کریں"
"سبھی رابطے"
"ٹچ ٹون کی پیڈ کا استعمال کریں"
"جاری کال پر واپس لوٹیں"
@@ -104,12 +105,14 @@
"%s سیکنڈ"
"%s منٹ %s سیکنڈ"
"بیچ کاروائی موڈ منسوخ کریں"
- "صوتی میل"
- "صوتی میلز"
- "ہاں"
- "نہیں"
+ "حذف کریں"
+ "منسوخ کریں"
"منتخب کردہ %1$s حذف کریں؟"
"%1$s منتخب کردہ"
+
+ - ""ان صوتی میلز کو حذف کریں؟ ""
+ - ""اس صوتی میل کو حذف کریں؟ ""
+
@string/call_log_header_today
"%1$s بوقت %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-uz/strings.xml b/java/com/android/dialer/app/res/values-uz/strings.xml
index aa645bf88c13e25b007f1efc68de75708f566889..c7d08f3bf07fca0fe8d64a496b9c2f20d634f2d1 100644
--- a/java/com/android/dialer/app/res/values-uz/strings.xml
+++ b/java/com/android/dialer/app/res/values-uz/strings.xml
@@ -80,6 +80,7 @@
"Kutishni qo‘shish"
"Sozlamalar"
"Simulyator"
+ "Yangi interfeys uchun yorliq"
"Barcha kontaktlar"
"Tovushli raqam tergich"
"Amaldagi chaqiruvga qaytish"
@@ -104,12 +105,14 @@
"%s soniya"
"%s daq %s son"
"Yoppasiga bajariladigan amallar rejimini bekor qilish"
- "ovozli xabar"
- "ovozli xabarlar"
- "Ha"
- "Yo‘q"
+ "O‘chirish"
+ "Bekor qilish"
"Tanlangan %1$s o‘chirib tashlansinmi?"
"Tanlandi: %1$s"
+
+ - ""Bu ovozli xabarlar o‘chirib tashlansinmi? ""
+ - ""Bu ovozli xabar o‘chirib tashlansinmi? ""
+
@string/call_log_header_today
"%1$s, %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-vi/strings.xml b/java/com/android/dialer/app/res/values-vi/strings.xml
index dda7c1523058840433bd8fd9117c6e9193e5c2e9..c79e1ed20a98adaa064cd1ad8cb96f9c09234e1f 100644
--- a/java/com/android/dialer/app/res/values-vi/strings.xml
+++ b/java/com/android/dialer/app/res/values-vi/strings.xml
@@ -80,6 +80,7 @@
"Thêm chờ"
"Cài đặt"
"Trình mô phỏng"
+ "Tạo phím tắt giao diện người dùng mới"
"Tất cả liên hệ"
"Sử dụng bàn phím số cảm ứng có âm"
"Quay lại cuộc gọi đang thực hiện"
@@ -104,12 +105,14 @@
"%s giây"
"%s phút %s giây"
"Hủy chế độ tác vụ hàng loạt"
- "thư thoại"
- "thư thoại"
- "Có"
- "Không"
+ "Xóa"
+ "Hủy"
"Xóa %1$s đã chọn?"
"Đã chọn %1$s"
+
+ - ""Xóa các thư thoại này? ""
+ - ""Xóa thư thoại này? ""
+
@string/call_log_header_today
"%1$s lúc %2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
index 672614e484db7ebc333234be8fdd2b2595a39a36..3262c1a029f3457b7cec14c4124a732a0397883a 100644
--- a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
@@ -80,6 +80,7 @@
"延长等待时间"
"设置"
"模拟器"
+ "创建可在新界面中使用的快捷键"
"所有联系人"
"使用按键式键盘"
"返回正在进行的通话"
@@ -104,12 +105,14 @@
"%s 秒"
"%s 分钟 %s 秒"
"取消批量操作模式"
- "语音邮件"
- "语音邮件"
- "是"
- "否"
+ "删除"
+ "取消"
"要删除所选的%1$s吗?"
"已选择 %1$s 封"
+
+ - ""要删除这些语音邮件吗?""
+ - ""要删除这封语音邮件吗?""
+
@string/call_log_header_today
"%1$s%2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
index f3dc44baf9f2986d91a82513f47f4112e9a5fa06..71e62eddccf3e47cefe5d95e49b6a667e78b2669 100644
--- a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
@@ -80,6 +80,7 @@
"新增插播功能"
"設定"
"模擬器"
+ "建立新使用者介面捷徑"
"所有聯絡人"
"使用觸控音頻按鍵"
"返回進行中的通話"
@@ -104,12 +105,14 @@
"%s 秒"
"%s 分 %s 秒"
"取消批量操作模式"
- "留言"
- "留言"
- "是"
- "否"
+ "刪除"
+ "取消"
"要刪除所選的%1$s嗎?"
"已選取 %1$s 個"
+
+ - ""要刪除這些留言嗎?""
+ - ""要刪除此留言嗎?""
+
@string/call_log_header_today
"%1$s%2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
index 473955c5d9f1d926b12d881eca579894a72d6679..9178dcf676e25e1381f9e4069531b6647360a652 100644
--- a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
@@ -80,6 +80,7 @@
"延長等待時間"
"設定"
"模擬工具"
+ "建立新版 UI 捷徑"
"所有聯絡人"
"使用觸控音按鍵"
"返回進行中的通話"
@@ -104,12 +105,14 @@
"%s 秒"
"%s 分 %s 秒"
"取消批次操作模式"
- "語音留言"
- "語音留言"
- "是"
- "否"
+ "刪除"
+ "取消"
"要刪除選取的%1$s嗎?"
"已選取 %1$s 個"
+
+ - ""要刪除這些語音留言嗎?""
+ - ""要刪除這則語音留言嗎?""
+
@string/call_log_header_today
"%1$s%2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values-zu/strings.xml b/java/com/android/dialer/app/res/values-zu/strings.xml
index 93843aa2cad485f44307ab15e20847c1352cdb28..f52f597c817af2b8cd53c82953d946fc0ac23d4b 100644
--- a/java/com/android/dialer/app/res/values-zu/strings.xml
+++ b/java/com/android/dialer/app/res/values-zu/strings.xml
@@ -80,6 +80,7 @@
"Yengeza ukulinda"
"Izilungiselelo"
"Isilingisi"
+ "Dala isinqamuleli esisha se-UI"
"Bonke othintana nabo"
"Sebenzisa ikhiphedi yethoni yokuthinta"
"Buyela kukholi eqhubekayo"
@@ -104,12 +105,14 @@
"%s isekhondi"
"%s amaminithi %s amasekhondi"
"Khansela imodi lezenzo zeqoqo"
- "ivoyisimeyili"
- "ama-meyli ezwi"
- "Yebo"
- "Cha"
+ "Susa"
+ "Khansela"
"Susa okukhethiwe %1$s?"
"Engu-%1$s ekhethiwe"
+
+ - ""Sula lawa mavoyisimeyili? ""
+ - ""Sula lawa mavoyisimeyili? ""
+
@string/call_log_header_today
"%1$s ngo-%2$s"
"%1$02d:%2$02d"
diff --git a/java/com/android/dialer/app/res/values/dimens.xml b/java/com/android/dialer/app/res/values/dimens.xml
index 57c43ebbd47662fc895dae79e14ff841ece0fdbe..90a8bb879c55200bee8ab67963ede534bcf0e300 100644
--- a/java/com/android/dialer/app/res/values/dimens.xml
+++ b/java/com/android/dialer/app/res/values/dimens.xml
@@ -24,6 +24,11 @@
-->
16dp
+
+ 14sp
+ 16dp
+ 18dp
+
8dp
32dp
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index 6110601d81322fd5895258bba9f0a5355124db0e..e02c6fb30c3013093240009e0ffd9279aeb014db 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -114,7 +114,7 @@
- Voicemail
- -
+
-
%1$d
Voicemails
@@ -131,12 +131,12 @@
[CHAR LIMIT=10]
-->
- %1$s,
+ %1$s,
%2$s
- New voicemail from
+ New voicemail from
%1$s
@@ -165,7 +165,7 @@
Missed calls only
- (%1$d)
+ (%1$d)
%2$s
@@ -258,6 +258,9 @@
and testing. [CHAR LIMIT=30]-->
Simulator
+
+ Create New UI Shortcut
+
All contacts
@@ -395,14 +398,18 @@
[CHAR LIMIT=NONE] -->
Cancel batch actions mode
- voicemail
- voicemails
- Yes
- No
+ Delete
+ Cancel
Delete selected %1$s?
%1$s selected
+
+
+ - Delete this voicemail?
+ - Delete these voicemails?
+
+
@@ -516,7 +523,7 @@
Undo
- Call
+ Call
%s
@@ -579,13 +586,13 @@
-
+
Call ^1
-
+
Missed call from ^1, ^2, ^3, ^4.
-
+
Call ^1
@@ -629,7 +636,7 @@
action triggers a return video call to the named person/number.
Note: AccessibilityServices uses this attribute to announce the purpose of the button.
[CHAR LIMIT=NONE] -->
-
+
Video call ^1.
@@ -638,21 +645,21 @@
triggers playing back the voicemail.
Note: AccessibilityServices uses this attribute to announce the purpose of the button.
[CHAR LIMIT=NONE] -->
-
+
Listen to voicemail from ^1
-
+
Play voicemail from ^1
-
+
Pause voicemail from ^1
@@ -660,7 +667,7 @@
-
+
Delete voicemail from ^1
@@ -674,14 +681,14 @@
-
+
Create contact for ^1
-
+
Add ^1 to existing contact
@@ -689,7 +696,7 @@
displays the call details screen for an entry in the call log. This shows the calls to
and from the specified number associated with the call log entry.
[CHAR LIMIT=NONE] -->
-
+
Call details for ^1
@@ -798,14 +805,14 @@
-
+
Call blocking temporarily off
-
+
Call blocking has been disabled because you contacted emergency services from this phone
within the last 48 hours. It will be automatically reenabled once the 48 hour period
expires.
@@ -818,7 +825,7 @@
-
+
You previously marked some callers to be automatically sent to voicemail via other apps.
@@ -840,13 +847,13 @@
-
+
Calls from these numbers will be blocked and voicemails will be automatically deleted.
-
+
Calls from these numbers will be blocked, but they may still be able to leave you voicemails.
@@ -855,7 +862,7 @@
- %1$s
+ %1$s
is already blocked.
diff --git a/java/com/android/dialer/app/res/values/styles.xml b/java/com/android/dialer/app/res/values/styles.xml
index 592f06d29fe835d1c681611f9faeeb568a774024..e0122e81c65d844ae16e549a6242b021d6187a4d 100644
--- a/java/com/android/dialer/app/res/values/styles.xml
+++ b/java/com/android/dialer/app/res/values/styles.xml
@@ -16,6 +16,11 @@
-->
+
+
+
+
+
diff --git a/java/com/android/dialer/notification/AndroidManifest.xml b/java/com/android/dialer/notification/AndroidManifest.xml
index 741f481caae1ce876e6127e7fda3c8c0f5a6eafe..b89d8f816611478d1cf4aa5f40ff15dfe4c1b544 100644
--- a/java/com/android/dialer/notification/AndroidManifest.xml
+++ b/java/com/android/dialer/notification/AndroidManifest.xml
@@ -1,3 +1,4 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/notification/GroupedNotificationUtil.java b/java/com/android/dialer/notification/GroupedNotificationUtil.java
deleted file mode 100644
index 3925248d5cfee2313370bfcd92cb3682a4c0f559..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/notification/GroupedNotificationUtil.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2017 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.notification;
-
-import android.app.NotificationManager;
-import android.service.notification.StatusBarNotification;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import java.util.Objects;
-
-/** Utilities for dealing with grouped notifications */
-public final class GroupedNotificationUtil {
-
- /**
- * Remove notification(s) that were added as part of a group. Will ensure that if this is the last
- * notification in the group the summary will be removed.
- *
- * @param tag String tag as included in {@link NotificationManager#notify(String, int,
- * android.app.Notification)}. If null will remove all notifications under id
- * @param id notification id as included with {@link NotificationManager#notify(String, int,
- * android.app.Notification)}.
- * @param summaryTag String tag of the summary notification
- */
- public static void removeNotification(
- @NonNull NotificationManager notificationManager,
- @Nullable String tag,
- int id,
- @NonNull String summaryTag) {
- if (tag == null) {
- // Clear all grouped notifications
- for (StatusBarNotification notification : notificationManager.getActiveNotifications()) {
- if (notification.getId() == id) {
- notificationManager.cancel(notification.getTag(), id);
- }
- }
- } else {
- notificationManager.cancel(tag, id);
-
- // See if other non-summary grouped notifications exist, and if not then clear the summary
- boolean clearSummary = true;
- for (StatusBarNotification notification : notificationManager.getActiveNotifications()) {
- if (notification.getId() == id && !Objects.equals(summaryTag, notification.getTag())) {
- clearSummary = false;
- break;
- }
- }
- if (clearSummary) {
- notificationManager.cancel(summaryTag, id);
- }
- }
- }
-}
diff --git a/java/com/android/dialer/notification/NotificationChannelId.java b/java/com/android/dialer/notification/NotificationChannelId.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ab3d44f2bc54ee336acaa73f8a228f44e980741
--- /dev/null
+++ b/java/com/android/dialer/notification/NotificationChannelId.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2017 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.notification;
+
+import android.support.annotation.StringDef;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/** Centralized source of all notification channels used by Dialer. */
+@Retention(RetentionPolicy.SOURCE)
+@StringDef({
+ NotificationChannelId.INCOMING_CALL,
+ NotificationChannelId.ONGOING_CALL,
+ NotificationChannelId.MISSED_CALL,
+ NotificationChannelId.DEFAULT,
+})
+public @interface NotificationChannelId {
+ // This value is white listed in the system.
+ // See /vendor/google/nexus_overlay/common/frameworks/base/core/res/res/values/config.xml
+ String INCOMING_CALL = "phone_incoming_call";
+
+ String ONGOING_CALL = "phone_ongoing_call";
+
+ String MISSED_CALL = "phone_missed_call";
+
+ String DEFAULT = "phone_default";
+}
diff --git a/java/com/android/dialer/notification/NotificationChannelManager.java b/java/com/android/dialer/notification/NotificationChannelManager.java
index 88679066dbc1ed5755692bf55104366e5361296c..790aac36fc7971346001c8f0be5d01506a099868 100644
--- a/java/com/android/dialer/notification/NotificationChannelManager.java
+++ b/java/com/android/dialer/notification/NotificationChannelManager.java
@@ -17,366 +17,156 @@
package com.android.dialer.notification;
import android.annotation.TargetApi;
-import android.app.Notification;
import android.app.NotificationChannel;
-import android.app.NotificationChannelGroup;
import android.app.NotificationManager;
import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
import android.media.AudioAttributes;
-import android.net.Uri;
import android.os.Build.VERSION_CODES;
-import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.StringDef;
import android.support.v4.os.BuildCompat;
-import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.telephony.TelephonyManager;
-import com.android.contacts.common.compat.TelephonyManagerCompat;
-import com.android.dialer.buildtype.BuildType;
+import android.util.ArraySet;
+import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutors;
-import com.android.dialer.telecom.TelecomUtil;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.List;
-import java.util.Objects;
+import java.util.Set;
-/** Contains info on how to create {@link NotificationChannel NotificationChannels} */
-public class NotificationChannelManager {
-
- private static final String PREFS_FILENAME = "NotificationChannelManager";
- private static final String PREF_NEED_FIRST_INIT = "needFirstInit";
- private static NotificationChannelManager instance;
-
- public static NotificationChannelManager getInstance() {
- if (instance == null) {
- instance = new NotificationChannelManager();
- }
- return instance;
- }
+/** Creates all notification channels for Dialer. */
+@TargetApi(VERSION_CODES.O)
+public final class NotificationChannelManager {
/**
- * Set the channel of notification appropriately. Will create the channel if it does not already
- * exist. Safe to call pre-O (will no-op).
+ * Creates all the notification channels Dialer will need. This method is called at app startup
+ * and must be fast. Currently it takes between 3 to 7 milliseconds on a Pixel XL.
+ *
+ * An alternative approach would be to lazily create channels when we actualy post a
+ * notification. The advatange to precreating channels is that:
*
- *
phoneAccount should only be null if channelName is {@link Channel#DEFAULT} or {@link
- * Channel#MISSED_CALL} since these do not have account-specific settings.
+ *
+ * - channels will be available to user right away. For example, users can customize voicemail
+ * sounds when they first get their device without waiting for a voicemail to arrive first.
+ *
- code that posts a notification can be simpler
+ *
- channel management code is simpler and it's easier to ensure that the correct set of
+ * channels are visible.
+ *
*/
- @TargetApi(26)
- public static void applyChannel(
- @NonNull Notification.Builder notification,
- @NonNull Context context,
- @Channel String channelName,
- @Nullable PhoneAccountHandle phoneAccount) {
- checkNullity(channelName, phoneAccount);
-
- if (BuildCompat.isAtLeastO()) {
- NotificationChannel channel =
- NotificationChannelManager.getInstance().getChannel(context, channelName, phoneAccount);
- notification.setChannelId(channel.getId());
- }
- }
-
- private static void checkNullity(
- @Channel String channelName, @Nullable PhoneAccountHandle phoneAccount) {
- if (phoneAccount != null || channelAllowsNullPhoneAccountHandle(channelName)) {
- return;
- }
-
- // TODO (b/36568553): don't throw an exception once most cases have been identified
- IllegalArgumentException exception =
- new IllegalArgumentException(
- "Phone account handle must not be null on channel " + channelName);
- if (BuildType.get() == BuildType.RELEASE) {
- LogUtil.e("NotificationChannelManager.applyChannel", null, exception);
- } else {
- throw exception;
- }
- }
-
- private static boolean channelAllowsNullPhoneAccountHandle(@Channel String channelName) {
- switch (channelName) {
- case Channel.DEFAULT:
- case Channel.MISSED_CALL:
- return true;
- default:
- return false;
- }
- }
+ public static void initChannels(@NonNull Context context) {
+ Assert.checkArgument(BuildCompat.isAtLeastO());
+ Assert.isNotNull(context);
- /** The base Channel IDs for {@link NotificationChannel} */
- @Retention(RetentionPolicy.SOURCE)
- @StringDef({
- Channel.INCOMING_CALL,
- Channel.ONGOING_CALL,
- Channel.ONGOING_CALL_OLD,
- Channel.MISSED_CALL,
- Channel.VOICEMAIL,
- Channel.EXTERNAL_CALL,
- Channel.DEFAULT
- })
- public @interface Channel {
- @Deprecated String ONGOING_CALL_OLD = "ongoingCall";
- String INCOMING_CALL = "incomingCall";
- String ONGOING_CALL = "ongoingCall2";
- String MISSED_CALL = "missedCall";
- String VOICEMAIL = "voicemail";
- String EXTERNAL_CALL = "externalCall";
- String DEFAULT = "default";
- }
-
- @Channel
- private static final String[] prepopulatedAccountChannels =
- new String[] {Channel.INCOMING_CALL, Channel.ONGOING_CALL, Channel.VOICEMAIL};
-
- @Channel
- private static final String[] prepopulatedGlobalChannels =
- new String[] {Channel.MISSED_CALL, Channel.DEFAULT};
-
- private NotificationChannelManager() {}
-
- public void firstInitIfNeeded(@NonNull Context context) {
- if (BuildCompat.isAtLeastO()) {
- DialerExecutors.createNonUiTaskBuilder(this::firstInitIfNeededSync)
- .build()
- .executeSerial(context);
- }
- }
-
- private boolean firstInitIfNeededSync(@NonNull Context context) {
- if (needsFirstInit(context)) {
- initChannels(context);
- return true;
- }
- return false;
- }
-
- public boolean needsFirstInit(@NonNull Context context) {
- return (BuildCompat.isAtLeastO()
- && getSharedPreferences(context).getBoolean(PREF_NEED_FIRST_INIT, true));
- }
-
- @RequiresApi(VERSION_CODES.N)
- private SharedPreferences getSharedPreferences(@NonNull Context context) {
- // Use device protected storage since in some cases this will need to be accessed while device
- // is locked
- context = context.createDeviceProtectedStorageContext();
- return context.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE);
- }
-
- @RequiresApi(26)
- public Intent getSettingsIntentForChannel(
- @NonNull Context context, @Channel String channelName, PhoneAccountHandle accountHandle) {
- checkNullity(channelName, accountHandle);
- Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
- intent.putExtra(
- Settings.EXTRA_CHANNEL_ID, getChannel(context, channelName, accountHandle).getId());
- intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName());
- return intent;
- }
+ NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
+ Set desiredChannelIds = getAllDesiredChannelIds(context);
+ Set existingChannelIds = getAllExistingChannelIds(context);
- @TargetApi(26)
- @SuppressWarnings("AndroidApiChecker")
- public void initChannels(@NonNull Context context) {
- if (!BuildCompat.isAtLeastO()) {
+ if (desiredChannelIds.equals(existingChannelIds)) {
return;
}
- LogUtil.enterBlock("NotificationChannelManager.initChannels");
- List phoneAccounts = TelecomUtil.getCallCapablePhoneAccounts(context);
-
- // Remove notification channels for PhoneAccounts that don't exist anymore
- NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
- List notificationChannelGroups =
- notificationManager.getNotificationChannelGroups();
- notificationChannelGroups
- .stream()
- .filter(group -> !idExists(group.getId(), phoneAccounts))
- .forEach(group -> deleteGroup(notificationManager, group));
-
- for (PhoneAccountHandle phoneAccountHandle : phoneAccounts) {
- for (@Channel String channel : prepopulatedAccountChannels) {
- getChannel(context, channel, phoneAccountHandle);
+ LogUtil.i(
+ "NotificationChannelManager.initChannels",
+ "doing an expensive initialization of all notification channels");
+ LogUtil.i(
+ "NotificationChannelManager.initChannels", "desired channel IDs: " + desiredChannelIds);
+ LogUtil.i(
+ "NotificationChannelManager.initChannels", "existing channel IDs: " + existingChannelIds);
+
+ // Delete any old channels that we don't use any more. This is safe because if we're recreate
+ // this later then any user settings will be restored. An example is SIM specific voicemail
+ // channel that gets deleted when the user removes the SIM and is then restored when the user
+ // re-inserts the SIM.
+ for (String existingChannelId : existingChannelIds) {
+ if (!desiredChannelIds.contains(existingChannelId)) {
+ notificationManager.deleteNotificationChannel(existingChannelId);
}
}
- for (@Channel String channel : prepopulatedGlobalChannels) {
- getChannel(context, channel, null);
- }
- getSharedPreferences(context).edit().putBoolean(PREF_NEED_FIRST_INIT, false).apply();
- }
-
- @TargetApi(26)
- private void deleteGroup(
- @NonNull NotificationManager notificationManager, @NonNull NotificationChannelGroup group) {
- for (NotificationChannel channel : group.getChannels()) {
- notificationManager.deleteNotificationChannel(channel.getId());
- }
- notificationManager.deleteNotificationChannelGroup(group.getId());
- }
-
- private boolean idExists(String id, List phoneAccountHandles) {
- for (PhoneAccountHandle handle : phoneAccountHandles) {
- if (Objects.equals(handle.getId(), id)) {
- return true;
- }
- }
- return false;
+ // Just recreate all desired channels. We won't do this often so it's ok to do this now.
+ createIncomingCallChannel(context);
+ createOngoingCallChannel(context);
+ createMissedCallChannel(context);
+ createDefaultChannel(context);
+ VoicemailChannelUtils.createAllChannels(context);
}
@NonNull
- @RequiresApi(26)
- private NotificationChannel getChannel(
- @NonNull Context context,
- @Channel String channelName,
- @Nullable PhoneAccountHandle phoneAccount) {
- String channelId = channelNameToId(channelName, phoneAccount);
- NotificationChannel channel = getNotificationManager(context).getNotificationChannel(channelId);
- if (channel == null) {
- channel = createChannel(context, channelName, phoneAccount);
- }
- return channel;
+ public static String getVoicemailChannelId(
+ @NonNull Context context, @Nullable PhoneAccountHandle handle) {
+ Assert.checkArgument(BuildCompat.isAtLeastO());
+ Assert.isNotNull(context);
+ return VoicemailChannelUtils.getChannelId(context, handle);
}
- private static String channelNameToId(
- @Channel String name, @Nullable PhoneAccountHandle phoneAccountHandle) {
- if (phoneAccountHandle == null) {
- return name;
- } else {
- return name + ":" + phoneAccountHandle.getId();
- }
- }
-
- @RequiresApi(26)
- private NotificationChannel createChannel(
- Context context,
- @Channel String channelName,
- @Nullable PhoneAccountHandle phoneAccountHandle) {
- String channelId = channelNameToId(channelName, phoneAccountHandle);
-
- if (phoneAccountHandle != null) {
- PhoneAccount account = getTelecomManager(context).getPhoneAccount(phoneAccountHandle);
- NotificationChannelGroup group =
- new NotificationChannelGroup(
- phoneAccountHandle.getId(),
- (account == null) ? phoneAccountHandle.getId() : account.getLabel().toString());
- getNotificationManager(context)
- .createNotificationChannelGroup(group); // No-op if already exists
- } else if (!channelAllowsNullPhoneAccountHandle(channelName)) {
- LogUtil.w(
- "NotificationChannelManager.createChannel",
- "Null PhoneAccountHandle with channel " + channelName);
- }
-
- Uri silentRingtone = Uri.EMPTY;
-
- CharSequence name;
- int importance;
- boolean canShowBadge;
- boolean lights;
- boolean vibration;
- Uri sound;
- switch (channelName) {
- case Channel.INCOMING_CALL:
- name = context.getText(R.string.notification_channel_incoming_call);
- importance = NotificationManager.IMPORTANCE_MAX;
- canShowBadge = false;
- lights = true;
- vibration = false;
- sound = silentRingtone;
- break;
- case Channel.MISSED_CALL:
- name = context.getText(R.string.notification_channel_missed_call);
- importance = NotificationManager.IMPORTANCE_DEFAULT;
- canShowBadge = true;
- lights = true;
- vibration = true;
- sound = silentRingtone;
- break;
- case Channel.ONGOING_CALL:
- name = context.getText(R.string.notification_channel_ongoing_call);
- importance = NotificationManager.IMPORTANCE_DEFAULT;
- canShowBadge = false;
- lights = false;
- vibration = false;
- sound = silentRingtone;
- deleteOldOngoingCallChannelIfNeeded(context, phoneAccountHandle);
- break;
- case Channel.VOICEMAIL:
- name = context.getText(R.string.notification_channel_voicemail);
- importance = NotificationManager.IMPORTANCE_DEFAULT;
- canShowBadge = true;
- lights = true;
- vibration =
- TelephonyManagerCompat.isVoicemailVibrationEnabled(
- getTelephonyManager(context), phoneAccountHandle);
- sound =
- TelephonyManagerCompat.getVoicemailRingtoneUri(
- getTelephonyManager(context), phoneAccountHandle);
- break;
- case Channel.EXTERNAL_CALL:
- name = context.getText(R.string.notification_channel_external_call);
- importance = NotificationManager.IMPORTANCE_HIGH;
- canShowBadge = false;
- lights = true;
- vibration = true;
- sound = null;
- break;
- case Channel.DEFAULT:
- name = context.getText(R.string.notification_channel_misc);
- importance = NotificationManager.IMPORTANCE_DEFAULT;
- canShowBadge = false;
- lights = true;
- vibration = true;
- sound = null;
- break;
- default:
- throw new IllegalArgumentException("Unknown channel: " + channelName);
- }
-
- NotificationChannel channel = new NotificationChannel(channelId, name, importance);
- channel.setShowBadge(canShowBadge);
- if (sound != null) {
- // silentRingtone acts as a sentinel value to indicate that setSound should still be called,
- // but with a null value to indicate no sound.
- channel.setSound(
- sound.equals(silentRingtone) ? null : sound,
- new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build());
- }
- channel.enableLights(lights);
- channel.enableVibration(vibration);
- getNotificationManager(context).createNotificationChannel(channel);
- return channel;
- }
-
- @RequiresApi(26)
- private void deleteOldOngoingCallChannelIfNeeded(
- @NonNull Context context, PhoneAccountHandle phoneAccountHandle) {
- String channelId = channelNameToId(Channel.ONGOING_CALL_OLD, phoneAccountHandle);
- NotificationManager notificationManager = getNotificationManager(context);
- NotificationChannel channel = notificationManager.getNotificationChannel(channelId);
- if (channel != null) {
- LogUtil.i(
- "NotificationManager.deleteOldOngoingCallChannelIfNeeded",
- "Old ongoing channel found. Deleting to create new channel");
- notificationManager.deleteNotificationChannel(channel.getId());
- }
- }
-
- private static NotificationManager getNotificationManager(@NonNull Context context) {
- return context.getSystemService(NotificationManager.class);
- }
-
- private static TelephonyManager getTelephonyManager(@NonNull Context context) {
- return context.getSystemService(TelephonyManager.class);
+ private static Set getAllExistingChannelIds(@NonNull Context context) {
+ Set result = new ArraySet<>();
+ NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
+ for (NotificationChannel channel : notificationManager.getNotificationChannels()) {
+ result.add(channel.getId());
+ }
+ return result;
+ }
+
+ private static Set getAllDesiredChannelIds(@NonNull Context context) {
+ Set result = new ArraySet<>();
+ result.add(NotificationChannelId.INCOMING_CALL);
+ result.add(NotificationChannelId.ONGOING_CALL);
+ result.add(NotificationChannelId.MISSED_CALL);
+ result.add(NotificationChannelId.DEFAULT);
+ result.addAll(VoicemailChannelUtils.getAllChannelIds(context));
+ return result;
+ }
+
+ private static void createIncomingCallChannel(@NonNull Context context) {
+ NotificationChannel channel =
+ new NotificationChannel(
+ NotificationChannelId.INCOMING_CALL,
+ context.getText(R.string.notification_channel_incoming_call),
+ NotificationManager.IMPORTANCE_MAX);
+ channel.setShowBadge(false);
+ channel.enableLights(true);
+ channel.enableVibration(false);
+ channel.setSound(
+ null, new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build());
+ context.getSystemService(NotificationManager.class).createNotificationChannel(channel);
+ }
+
+ private static void createOngoingCallChannel(@NonNull Context context) {
+ NotificationChannel channel =
+ new NotificationChannel(
+ NotificationChannelId.ONGOING_CALL,
+ context.getText(R.string.notification_channel_ongoing_call),
+ NotificationManager.IMPORTANCE_DEFAULT);
+ channel.setShowBadge(false);
+ channel.enableLights(false);
+ channel.enableVibration(false);
+ channel.setSound(
+ null, new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build());
+ context.getSystemService(NotificationManager.class).createNotificationChannel(channel);
+ }
+
+ private static void createMissedCallChannel(@NonNull Context context) {
+ NotificationChannel channel =
+ new NotificationChannel(
+ NotificationChannelId.MISSED_CALL,
+ context.getText(R.string.notification_channel_missed_call),
+ NotificationManager.IMPORTANCE_DEFAULT);
+ channel.setShowBadge(true);
+ channel.enableLights(true);
+ channel.enableVibration(true);
+ channel.setSound(
+ null, new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build());
+ context.getSystemService(NotificationManager.class).createNotificationChannel(channel);
+ }
+
+ private static void createDefaultChannel(@NonNull Context context) {
+ NotificationChannel channel =
+ new NotificationChannel(
+ NotificationChannelId.DEFAULT,
+ context.getText(R.string.notification_channel_misc),
+ NotificationManager.IMPORTANCE_DEFAULT);
+ channel.setShowBadge(false);
+ channel.enableLights(true);
+ channel.enableVibration(true);
+ context.getSystemService(NotificationManager.class).createNotificationChannel(channel);
}
- private static TelecomManager getTelecomManager(@NonNull Context context) {
- return context.getSystemService(TelecomManager.class);
- }
+ private NotificationChannelManager() {}
}
diff --git a/java/com/android/dialer/notification/VoicemailChannelUtils.java b/java/com/android/dialer/notification/VoicemailChannelUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..dc74799ca8cca2cd2104c6df559e44a5c8374929
--- /dev/null
+++ b/java/com/android/dialer/notification/VoicemailChannelUtils.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2017 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.notification;
+
+import android.annotation.TargetApi;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.media.AudioAttributes;
+import android.os.Build.VERSION_CODES;
+import android.provider.Settings;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.os.BuildCompat;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.ArraySet;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/** Utilities for working with voicemail channels. */
+@TargetApi(VERSION_CODES.O)
+/* package */ final class VoicemailChannelUtils {
+ private static final String GLOBAL_VOICEMAIL_CHANNEL_ID = "phone_voicemail";
+ private static final String PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX = "phone_voicemail_account_";
+
+ static Set getAllChannelIds(@NonNull Context context) {
+ Assert.checkArgument(BuildCompat.isAtLeastO());
+ Assert.isNotNull(context);
+
+ Set result = new ArraySet<>();
+ if (isSingleSimDevice(context)) {
+ result.add(GLOBAL_VOICEMAIL_CHANNEL_ID);
+ } else {
+ for (PhoneAccountHandle handle : getAllEligableAccounts(context)) {
+ result.add(getChannelIdForAccount(handle));
+ }
+ }
+ return result;
+ }
+
+ static void createAllChannels(@NonNull Context context) {
+ Assert.checkArgument(BuildCompat.isAtLeastO());
+ Assert.isNotNull(context);
+
+ if (isSingleSimDevice(context)) {
+ createGlobalVoicemailChannel(context);
+ } else {
+ for (PhoneAccountHandle handle : getAllEligableAccounts(context)) {
+ createVoicemailChannelForAccount(context, handle);
+ }
+ }
+ }
+
+ @NonNull
+ static String getChannelId(@NonNull Context context, @Nullable PhoneAccountHandle handle) {
+ Assert.checkArgument(BuildCompat.isAtLeastO());
+ Assert.isNotNull(context);
+
+ // Most devices we deal with have a single SIM slot. No need to distinguish between phone
+ // accounts.
+ if (isSingleSimDevice(context)) {
+ return GLOBAL_VOICEMAIL_CHANNEL_ID;
+ }
+
+ // We can get a null phone account at random points (modem reboot, etc...). Gracefully degrade
+ // by using the default channel.
+ if (handle == null) {
+ LogUtil.i(
+ "VoicemailChannelUtils.getChannelId",
+ "no phone account on a multi-SIM device, using default channel");
+ return NotificationChannelId.DEFAULT;
+ }
+
+ // Voicemail notifications should always be associated with a SIM based phone account.
+ if (!isChannelAllowedForAccount(context, handle)) {
+ LogUtil.i(
+ "VoicemailChannelUtils.getChannelId",
+ "phone account is not for a SIM, using default channel");
+ return NotificationChannelId.DEFAULT;
+ }
+
+ // Now we're in the multi-SIM case.
+ String channelId = getChannelIdForAccount(handle);
+ if (!doesChannelExist(context, channelId)) {
+ LogUtil.i(
+ "VoicemailChannelUtils.getChannelId",
+ "voicemail channel not found for phone account (possible SIM swap?), creating a new one");
+ createVoicemailChannelForAccount(context, handle);
+ }
+ return channelId;
+ }
+
+ private static boolean doesChannelExist(@NonNull Context context, @NonNull String channelId) {
+ return context.getSystemService(NotificationManager.class).getNotificationChannel(channelId)
+ != null;
+ }
+
+ private static String getChannelIdForAccount(@NonNull PhoneAccountHandle handle) {
+ Assert.isNotNull(handle);
+ return PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX + ":" + handle.getId();
+ }
+
+ /**
+ * Creates a voicemail channel but doesn't associate it with a SIM. For devices with only one SIM
+ * slot this is ideal because there won't be duplication in the settings UI.
+ */
+ private static void createGlobalVoicemailChannel(@NonNull Context context) {
+ NotificationChannel channel = newChannel(context, GLOBAL_VOICEMAIL_CHANNEL_ID, null);
+
+ TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+ PhoneAccountHandle handle =
+ telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
+ if (handle == null) {
+ LogUtil.i(
+ "VoicemailChannelUtils.createGlobalVoicemailChannel",
+ "phone account is null, not migrating sound settings");
+ } else if (!isChannelAllowedForAccount(context, handle)) {
+ LogUtil.i(
+ "VoicemailChannelUtils.createGlobalVoicemailChannel",
+ "phone account is not eligable, not migrating sound settings");
+ } else {
+ migrateVoicemailSoundSettings(context, channel, handle);
+ }
+ context.getSystemService(NotificationManager.class).createNotificationChannel(channel);
+ }
+
+ private static List getAllEligableAccounts(@NonNull Context context) {
+ List handles = new ArrayList<>();
+ TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+ for (PhoneAccountHandle handle : telecomManager.getCallCapablePhoneAccounts()) {
+ if (isChannelAllowedForAccount(context, handle)) {
+ handles.add(handle);
+ }
+ }
+ return handles;
+ }
+
+ private static void createVoicemailChannelForAccount(
+ @NonNull Context context, @NonNull PhoneAccountHandle handle) {
+ PhoneAccount phoneAccount =
+ context.getSystemService(TelecomManager.class).getPhoneAccount(handle);
+ NotificationChannel channel =
+ newChannel(context, getChannelIdForAccount(handle), phoneAccount.getLabel());
+ migrateVoicemailSoundSettings(context, channel, handle);
+ context.getSystemService(NotificationManager.class).createNotificationChannel(channel);
+ }
+
+ private static void migrateVoicemailSoundSettings(
+ @NonNull Context context,
+ @NonNull NotificationChannel channel,
+ @NonNull PhoneAccountHandle handle) {
+ TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+ channel.enableVibration(telephonyManager.isVoicemailVibrationEnabled(handle));
+ channel.setSound(
+ telephonyManager.getVoicemailRingtoneUri(handle),
+ new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build());
+ }
+
+ private static boolean isChannelAllowedForAccount(
+ @NonNull Context context, @NonNull PhoneAccountHandle handle) {
+ PhoneAccount phoneAccount =
+ context.getSystemService(TelecomManager.class).getPhoneAccount(handle);
+ if (phoneAccount == null) {
+ return false;
+ }
+ if (!phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
+ return false;
+ }
+ return true;
+ }
+
+ private static NotificationChannel newChannel(
+ @NonNull Context context, @NonNull String channelId, @Nullable CharSequence nameSuffix) {
+ CharSequence name = context.getText(R.string.notification_channel_voicemail);
+ // TODO: Use a string resource template after v10.
+ if (!TextUtils.isEmpty(nameSuffix)) {
+ name = TextUtils.concat(name, ": ", nameSuffix);
+ }
+
+ NotificationChannel channel =
+ new NotificationChannel(channelId, name, NotificationManager.IMPORTANCE_DEFAULT);
+ channel.setShowBadge(true);
+ channel.enableLights(true);
+ channel.enableVibration(true);
+ channel.setSound(
+ Settings.System.DEFAULT_NOTIFICATION_URI,
+ new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).build());
+ return channel;
+ }
+
+ private static boolean isSingleSimDevice(@NonNull Context context) {
+ return context.getSystemService(TelephonyManager.class).getPhoneCount() <= 1;
+ }
+
+ private VoicemailChannelUtils() {}
+}
diff --git a/java/com/android/dialer/notification/res/values-af/strings.xml b/java/com/android/dialer/notification/res/values-af/strings.xml
index 08dd754ddc726b520213cea7ded71328d52ecb3b..e48249b3c8dda6a2fe25b91605b3c29d35246d41 100644
--- a/java/com/android/dialer/notification/res/values-af/strings.xml
+++ b/java/com/android/dialer/notification/res/values-af/strings.xml
@@ -21,6 +21,5 @@
"Deurlopende oproepe"
"Gemiste oproepe"
"Stemboodskappe"
- "Ekterne oproepe"
"Verstek"
diff --git a/java/com/android/dialer/notification/res/values-am/strings.xml b/java/com/android/dialer/notification/res/values-am/strings.xml
index 56d6c2ca1205dcf9a813b1209efad8320dd5bc50..0983e0591f1fcec562746c1fcc2a6cfda6ba7a57 100644
--- a/java/com/android/dialer/notification/res/values-am/strings.xml
+++ b/java/com/android/dialer/notification/res/values-am/strings.xml
@@ -21,6 +21,5 @@
"በመካሄድ ላይ ያሉ ጥሪዎች"
"ያመለጡ ጥሪዎች"
"የድምፅ መልዕክቶች"
- "ውጫዊ ጥሪዎች"
"ነባሪ"
diff --git a/java/com/android/dialer/notification/res/values-ar/strings.xml b/java/com/android/dialer/notification/res/values-ar/strings.xml
index 71857c274a7e449270d094409350c19cd5829643..ab6059ff1f12ad03c9b29e1daca14d562a451fcb 100644
--- a/java/com/android/dialer/notification/res/values-ar/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ar/strings.xml
@@ -21,6 +21,5 @@
"المكالمات الجارية"
"المكالمات الفائتة"
"رسائل البريد الصوتي"
- "المكالمات الخارجية"
"افتراضي"
diff --git a/java/com/android/dialer/notification/res/values-az/strings.xml b/java/com/android/dialer/notification/res/values-az/strings.xml
index f907e554ebc07e09309a7896ab931d1622c9f5aa..425f30ad79e56ad33c271170eb972195c077d7db 100644
--- a/java/com/android/dialer/notification/res/values-az/strings.xml
+++ b/java/com/android/dialer/notification/res/values-az/strings.xml
@@ -21,6 +21,5 @@
"Gedən zənglər"
"Buraxılmış zənglər"
"Səsli məktublar"
- "External calls"
"Defolt"
diff --git a/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml
index 4d5b5e78a4d3c655a6ddc80fa480c2c97ada45e7..4598e764419a200bf1ebd5f228ee75eec823cbf4 100644
--- a/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml
@@ -21,6 +21,5 @@
"Pozivi u toku"
"Propušteni pozivi"
"Govorne poruke"
- "Spoljni pozivi"
"Podrazumevano"
diff --git a/java/com/android/dialer/notification/res/values-be/strings.xml b/java/com/android/dialer/notification/res/values-be/strings.xml
index 70defe342d2e2e0ce04b7b1174a706a4f0f4e9c7..586a36c3109897d0e70eb31de052d9b32cda1180 100644
--- a/java/com/android/dialer/notification/res/values-be/strings.xml
+++ b/java/com/android/dialer/notification/res/values-be/strings.xml
@@ -21,6 +21,5 @@
"Адбываючыяся выклікі"
"Прапушчаныя выклікі"
"Галасавая пошта"
- "Знешнія выклікі"
"Стандартны"
diff --git a/java/com/android/dialer/notification/res/values-bg/strings.xml b/java/com/android/dialer/notification/res/values-bg/strings.xml
index 1ec202e6c016d2231bd85a7dc6ad5cb523ea36fc..9bc8f8f028a73c597ca6b17815bfa9941f7d5b84 100644
--- a/java/com/android/dialer/notification/res/values-bg/strings.xml
+++ b/java/com/android/dialer/notification/res/values-bg/strings.xml
@@ -21,6 +21,5 @@
"Текущи обаждания"
"Пропуснати обаждания"
"Гласови съобщения"
- "Външни обаждания"
"По подразбиране"
diff --git a/java/com/android/dialer/notification/res/values-bn/strings.xml b/java/com/android/dialer/notification/res/values-bn/strings.xml
index 886f8317dafe09f2ee114e6f82298643d30934b6..1d778179760640c29447b085bd85dd2fcdc65c5a 100644
--- a/java/com/android/dialer/notification/res/values-bn/strings.xml
+++ b/java/com/android/dialer/notification/res/values-bn/strings.xml
@@ -21,6 +21,5 @@
"সংযুক্ত কল"
"মিস করা কল"
"ভয়েসমেল"
- "বাহ্যিক কল"
"ডিফল্ট"
diff --git a/java/com/android/dialer/notification/res/values-bs/strings.xml b/java/com/android/dialer/notification/res/values-bs/strings.xml
index e408a6468feb02b8f3790a36fe7a7fdae1b76e22..dedbb1c2dafa83fe9c611adec5f827e157d21d0d 100644
--- a/java/com/android/dialer/notification/res/values-bs/strings.xml
+++ b/java/com/android/dialer/notification/res/values-bs/strings.xml
@@ -21,6 +21,5 @@
"Tekući pozivi"
"Propušteni pozivi"
"Poruke govorne pošte"
- "Vanjski pozivi"
"Zadano"
diff --git a/java/com/android/dialer/notification/res/values-ca/strings.xml b/java/com/android/dialer/notification/res/values-ca/strings.xml
index ea81b627a32e138e46f27d2c7f02266e41d800cd..1c19d0f74beca78992daaf4f0bd40d4f4137bd36 100644
--- a/java/com/android/dialer/notification/res/values-ca/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ca/strings.xml
@@ -21,6 +21,5 @@
"Trucades en curs"
"Trucades perdudes"
"Missatges de veu"
- "Trucades externes"
"Predeterminat"
diff --git a/java/com/android/dialer/notification/res/values-cs/strings.xml b/java/com/android/dialer/notification/res/values-cs/strings.xml
index 9ea7b61cad884f7f8f911bb4c01a57189a605257..c428ca2f3225264f944875a4ca98b97fcefab8b0 100644
--- a/java/com/android/dialer/notification/res/values-cs/strings.xml
+++ b/java/com/android/dialer/notification/res/values-cs/strings.xml
@@ -21,6 +21,5 @@
"Probíhající hovory"
"Zmeškané hovory"
"Hlasové zprávy"
- "Externí hovory"
"Výchozí"
diff --git a/java/com/android/dialer/notification/res/values-da/strings.xml b/java/com/android/dialer/notification/res/values-da/strings.xml
index e4fc4ddedb27c7c651746df6133b40432ba278ca..7f0ce9f1059babb925bd9dcd983349aff11a016d 100644
--- a/java/com/android/dialer/notification/res/values-da/strings.xml
+++ b/java/com/android/dialer/notification/res/values-da/strings.xml
@@ -21,6 +21,5 @@
"Igangværende opkald"
"Ubesvarede opkald"
"Talebeskeder"
- "Eksterne opkald"
"Standard"
diff --git a/java/com/android/dialer/notification/res/values-de/strings.xml b/java/com/android/dialer/notification/res/values-de/strings.xml
index 7fce6bf47bd0067fc8cad5b06414b3827029e4c7..86b7520169acb799702c21b53eb3c3a0af04a7f6 100644
--- a/java/com/android/dialer/notification/res/values-de/strings.xml
+++ b/java/com/android/dialer/notification/res/values-de/strings.xml
@@ -21,6 +21,5 @@
"Laufende Anrufe"
"Entgangene Anrufe"
"Mailboxnachrichten"
- "Externe Anrufe"
"Standard"
diff --git a/java/com/android/dialer/notification/res/values-el/strings.xml b/java/com/android/dialer/notification/res/values-el/strings.xml
index a25bb43e9e7fb5f26b1308aae475d3feb0936876..812dc25642f73ffef958d9d1d8970e41474741c9 100644
--- a/java/com/android/dialer/notification/res/values-el/strings.xml
+++ b/java/com/android/dialer/notification/res/values-el/strings.xml
@@ -21,6 +21,5 @@
"Κλήσεις σε εξέλιξη"
"Αναπάντητες κλήσεις"
"Μηνύματα αυτόματου τηλεφωνητή"
- "Εξωτερικές κλήσεις"
"Προεπιλογή"
diff --git a/java/com/android/dialer/notification/res/values-en-rAU/strings.xml b/java/com/android/dialer/notification/res/values-en-rAU/strings.xml
index 7d4bd825bb0eda9492e6c37f911fc36584bf104d..43b722bebb93b41f9604649f5592ec580f1c8871 100644
--- a/java/com/android/dialer/notification/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/notification/res/values-en-rAU/strings.xml
@@ -21,6 +21,5 @@
"Ongoing calls"
"Missed calls"
"Voicemail"
- "External calls"
"Default"
diff --git a/java/com/android/dialer/notification/res/values-en-rGB/strings.xml b/java/com/android/dialer/notification/res/values-en-rGB/strings.xml
index 7d4bd825bb0eda9492e6c37f911fc36584bf104d..43b722bebb93b41f9604649f5592ec580f1c8871 100644
--- a/java/com/android/dialer/notification/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/notification/res/values-en-rGB/strings.xml
@@ -21,6 +21,5 @@
"Ongoing calls"
"Missed calls"
"Voicemail"
- "External calls"
"Default"
diff --git a/java/com/android/dialer/notification/res/values-en-rIN/strings.xml b/java/com/android/dialer/notification/res/values-en-rIN/strings.xml
index 7d4bd825bb0eda9492e6c37f911fc36584bf104d..43b722bebb93b41f9604649f5592ec580f1c8871 100644
--- a/java/com/android/dialer/notification/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/notification/res/values-en-rIN/strings.xml
@@ -21,6 +21,5 @@
"Ongoing calls"
"Missed calls"
"Voicemail"
- "External calls"
"Default"
diff --git a/java/com/android/dialer/notification/res/values-es-rUS/strings.xml b/java/com/android/dialer/notification/res/values-es-rUS/strings.xml
index fe8fe1354c8794718d495b1c55abec77e92355ca..c56edcfe6ec4a5a9d1dd0e386b38fc15802967c7 100644
--- a/java/com/android/dialer/notification/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/notification/res/values-es-rUS/strings.xml
@@ -21,6 +21,5 @@
"Llamadas en curso"
"Llamadas perdidas"
"Mensajes de voz"
- "Llamadas externas"
"Predeterminado"
diff --git a/java/com/android/dialer/notification/res/values-es/strings.xml b/java/com/android/dialer/notification/res/values-es/strings.xml
index fe8fe1354c8794718d495b1c55abec77e92355ca..c56edcfe6ec4a5a9d1dd0e386b38fc15802967c7 100644
--- a/java/com/android/dialer/notification/res/values-es/strings.xml
+++ b/java/com/android/dialer/notification/res/values-es/strings.xml
@@ -21,6 +21,5 @@
"Llamadas en curso"
"Llamadas perdidas"
"Mensajes de voz"
- "Llamadas externas"
"Predeterminado"
diff --git a/java/com/android/dialer/notification/res/values-et/strings.xml b/java/com/android/dialer/notification/res/values-et/strings.xml
index 41623951f25c932c28d73fe9e15e5b30abe12b2c..9c60a319503cac1c7d0c60be4f238d3dd3f17c63 100644
--- a/java/com/android/dialer/notification/res/values-et/strings.xml
+++ b/java/com/android/dialer/notification/res/values-et/strings.xml
@@ -21,6 +21,5 @@
"Käimasolevad kõned"
"Vastamata kõned"
"Kõnepostisõnumid"
- "Välised kõned"
"Vaikeseade"
diff --git a/java/com/android/dialer/notification/res/values-eu/strings.xml b/java/com/android/dialer/notification/res/values-eu/strings.xml
index 326ac0ab650b6756a12366d82220f0d956cc4f82..d94ac0ab67be743f908c40f7f6bf6ec18f7785f6 100644
--- a/java/com/android/dialer/notification/res/values-eu/strings.xml
+++ b/java/com/android/dialer/notification/res/values-eu/strings.xml
@@ -21,6 +21,5 @@
"Abian diren deiak"
"Dei galduak"
"Ahots-mezuak"
- "Kanpoko deiak"
"Lehenetsia"
diff --git a/java/com/android/dialer/notification/res/values-fa/strings.xml b/java/com/android/dialer/notification/res/values-fa/strings.xml
index f1a7efc3d9bb1e38906a0b097a73355e841de292..edbc98336650686838b31a7fdc8916bcc4ccf685 100644
--- a/java/com/android/dialer/notification/res/values-fa/strings.xml
+++ b/java/com/android/dialer/notification/res/values-fa/strings.xml
@@ -21,6 +21,5 @@
"تماسهای درحال انجام"
"تماسهای بیپاسخ"
"پستهای صوتی"
- "تماسهای خارجی"
"پیشفرض"
diff --git a/java/com/android/dialer/notification/res/values-fi/strings.xml b/java/com/android/dialer/notification/res/values-fi/strings.xml
index c88c2325ad98b315ed3451ef2f13f6377156f868..87652f8a86234686682828641c8bbf45a377a44a 100644
--- a/java/com/android/dialer/notification/res/values-fi/strings.xml
+++ b/java/com/android/dialer/notification/res/values-fi/strings.xml
@@ -21,6 +21,5 @@
"Käynnissä olevat puhelut"
"Vastaamattomat puhelut"
"Vastaajaviestit"
- "Ulkopuoliset puhelut"
"Oletus"
diff --git a/java/com/android/dialer/notification/res/values-fr-rCA/strings.xml b/java/com/android/dialer/notification/res/values-fr-rCA/strings.xml
index a21d6b28b8ed3c70c811e6f30136851764687caf..5a2d7dcfe2f4023eb7f22d41e310c46e6a391987 100644
--- a/java/com/android/dialer/notification/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/notification/res/values-fr-rCA/strings.xml
@@ -21,6 +21,5 @@
"Appels en cours"
"Appels manqués"
"Messages vocaux"
- "Appels externes"
"Par défaut"
diff --git a/java/com/android/dialer/notification/res/values-fr/strings.xml b/java/com/android/dialer/notification/res/values-fr/strings.xml
index a21d6b28b8ed3c70c811e6f30136851764687caf..5a2d7dcfe2f4023eb7f22d41e310c46e6a391987 100644
--- a/java/com/android/dialer/notification/res/values-fr/strings.xml
+++ b/java/com/android/dialer/notification/res/values-fr/strings.xml
@@ -21,6 +21,5 @@
"Appels en cours"
"Appels manqués"
"Messages vocaux"
- "Appels externes"
"Par défaut"
diff --git a/java/com/android/dialer/notification/res/values-gl/strings.xml b/java/com/android/dialer/notification/res/values-gl/strings.xml
index 3b57a59b32fe30b74834953755edb316546da4e8..0e7fb612b3addd794d2567499d3adf0fc714aab1 100644
--- a/java/com/android/dialer/notification/res/values-gl/strings.xml
+++ b/java/com/android/dialer/notification/res/values-gl/strings.xml
@@ -21,6 +21,5 @@
"Chamadas saíntes"
"Chamadas perdidas"
"Correos de voz"
- "Chamadas externas"
"Predeterminado"
diff --git a/java/com/android/dialer/notification/res/values-gu/strings.xml b/java/com/android/dialer/notification/res/values-gu/strings.xml
index f185e5971fa401162abf84cdbbb070c80da04b82..a4a0a7ae10ea7fdf531118c2d5c9fe9e6c9ca334 100644
--- a/java/com/android/dialer/notification/res/values-gu/strings.xml
+++ b/java/com/android/dialer/notification/res/values-gu/strings.xml
@@ -21,6 +21,5 @@
"ચાલુ કૉલ"
"છૂટેલા કૉલ"
"વૉઇસમેઇલ"
- "બાહ્ય કૉલ"
"ડિફૉલ્ટ"
diff --git a/java/com/android/dialer/notification/res/values-hi/strings.xml b/java/com/android/dialer/notification/res/values-hi/strings.xml
index 89c8e55475d8ae3434536b6976c287f8028a8b86..69ed9b0b21ae4c04545892ecba215408a92deb99 100644
--- a/java/com/android/dialer/notification/res/values-hi/strings.xml
+++ b/java/com/android/dialer/notification/res/values-hi/strings.xml
@@ -21,6 +21,5 @@
"चल रहे कॉल"
"छूटे कॉल"
"वॉइसमेल"
- "बाहरी कॉल"
"डिफ़ॉल्ट"
diff --git a/java/com/android/dialer/notification/res/values-hr/strings.xml b/java/com/android/dialer/notification/res/values-hr/strings.xml
index 9f786d7d8de57a85d35e7071c0eec63a42b95ec5..a5924c3ce5b070200fd68b5da2a40c2096ab0bd1 100644
--- a/java/com/android/dialer/notification/res/values-hr/strings.xml
+++ b/java/com/android/dialer/notification/res/values-hr/strings.xml
@@ -21,6 +21,5 @@
"Pozivi u tijeku"
"Propušteni pozivi"
"Poruke govorne pošte"
- "Vanjski pozivi"
"Zadano"
diff --git a/java/com/android/dialer/notification/res/values-hu/strings.xml b/java/com/android/dialer/notification/res/values-hu/strings.xml
index 09fa795d62b11f8c2892e687d9383adaaac8ee83..719252f0fa3521a581c915c3ce8a8e68250e1ee8 100644
--- a/java/com/android/dialer/notification/res/values-hu/strings.xml
+++ b/java/com/android/dialer/notification/res/values-hu/strings.xml
@@ -21,6 +21,5 @@
"Kimenő hívások"
"Nem fogadott hívások"
"Hangüzenetek"
- "Külső hívások"
"Alapértelmezett"
diff --git a/java/com/android/dialer/notification/res/values-hy/strings.xml b/java/com/android/dialer/notification/res/values-hy/strings.xml
index 693898a55c29959b570521cd2291ad4a911f9616..6bb2c34e30a029f73b511eae88d289e2e122e0d0 100644
--- a/java/com/android/dialer/notification/res/values-hy/strings.xml
+++ b/java/com/android/dialer/notification/res/values-hy/strings.xml
@@ -21,6 +21,5 @@
"Ընթացիկ զանգեր"
"Բաց թողնված զանգեր"
"Ձայնային փոստ"
- "Արտաքին զանգեր"
"Կանխադրված"
diff --git a/java/com/android/dialer/notification/res/values-in/strings.xml b/java/com/android/dialer/notification/res/values-in/strings.xml
index 405b2927dea2a58029bfbbbed2391dfa47527fb5..88ef3d5241f546f7e194ba38be0c1dbf58b5d8b1 100644
--- a/java/com/android/dialer/notification/res/values-in/strings.xml
+++ b/java/com/android/dialer/notification/res/values-in/strings.xml
@@ -21,6 +21,5 @@
"Panggilan keluar"
"Panggilan tak terjawab"
"Pesan suara"
- "Panggilan eksternal"
"Default"
diff --git a/java/com/android/dialer/notification/res/values-is/strings.xml b/java/com/android/dialer/notification/res/values-is/strings.xml
index be84917fcd4c1ce7a59d47e7aba818977c4d7dd8..166d9744348055dc1bcbc5ca29664c0baff41b89 100644
--- a/java/com/android/dialer/notification/res/values-is/strings.xml
+++ b/java/com/android/dialer/notification/res/values-is/strings.xml
@@ -21,6 +21,5 @@
"Símtöl í gangi"
"Ósvöruð símtöl"
"Talhólfsskilaboð"
- "Utanaðkomandi símtöl"
"Sjálfgefið"
diff --git a/java/com/android/dialer/notification/res/values-it/strings.xml b/java/com/android/dialer/notification/res/values-it/strings.xml
index 1ac6e2d41e48b0557a77f10196af65fe28f9a254..7b55da99187cbe7b93c093b4f71d237315e22b8b 100644
--- a/java/com/android/dialer/notification/res/values-it/strings.xml
+++ b/java/com/android/dialer/notification/res/values-it/strings.xml
@@ -21,6 +21,5 @@
"Chiamate in uscita"
"Chiamate perse"
"Messaggi vocali"
- "Chiamate esterne"
"Predefinito"
diff --git a/java/com/android/dialer/notification/res/values-iw/strings.xml b/java/com/android/dialer/notification/res/values-iw/strings.xml
index ed07b8643ea7e48cd92f2e948942db146f4c109b..2b8b9df33adb8871c25c3b8a4c8808ec3dc997de 100644
--- a/java/com/android/dialer/notification/res/values-iw/strings.xml
+++ b/java/com/android/dialer/notification/res/values-iw/strings.xml
@@ -21,6 +21,5 @@
"שיחות יוצאות"
"שיחות שלא נענו"
"הודעות קוליות"
- "שיחות חיצוניות"
"ברירת מחדל"
diff --git a/java/com/android/dialer/notification/res/values-ja/strings.xml b/java/com/android/dialer/notification/res/values-ja/strings.xml
index 3265d7266f03309bf8be90c8d9ea53d79fdbef8b..2ff8da7d0727899a1b0fe863474e0fe1ff22cb6a 100644
--- a/java/com/android/dialer/notification/res/values-ja/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ja/strings.xml
@@ -21,6 +21,5 @@
"通話中"
"不在着信"
"ボイスメール"
- "外部通話"
"デフォルト"
diff --git a/java/com/android/dialer/notification/res/values-ka/strings.xml b/java/com/android/dialer/notification/res/values-ka/strings.xml
index 6d81465e272e3c0ed2f7b2aafd52ce5da3487d94..73394efebc56991cf61f7e06858ee647cbbf7f8f 100644
--- a/java/com/android/dialer/notification/res/values-ka/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ka/strings.xml
@@ -21,6 +21,5 @@
"გამავალი ზარები"
"გამოტოვებული ზარები"
"ხმოვანი ფოსტა"
- "გარე ზარები"
"ნაგულისხმევი"
diff --git a/java/com/android/dialer/notification/res/values-kk/strings.xml b/java/com/android/dialer/notification/res/values-kk/strings.xml
index 35733fb0495454fc0e1ee4ecc4da3c8892d03a7c..8151c9ca9e3c02ec6e8a88415f8e3f2941a28dbf 100644
--- a/java/com/android/dialer/notification/res/values-kk/strings.xml
+++ b/java/com/android/dialer/notification/res/values-kk/strings.xml
@@ -21,6 +21,5 @@
"Қазіргі қоңыраулар"
"Қабылданбаған қоңыраулар"
"Дауыстық хабарлар"
- "Сыртқы қоңыраулар"
"Әдепкі"
diff --git a/java/com/android/dialer/notification/res/values-km/strings.xml b/java/com/android/dialer/notification/res/values-km/strings.xml
index 42bc1135044dc392bd97d3e0567f0e68745a28a7..22131ff398a63bbe9e64fe3833e47b0c58a14cfc 100644
--- a/java/com/android/dialer/notification/res/values-km/strings.xml
+++ b/java/com/android/dialer/notification/res/values-km/strings.xml
@@ -21,6 +21,5 @@
"ការហៅបន្ត"
"ការហៅដែលមិនបានទទួល"
"សារជាសំឡេង"
- "ការហៅខាងក្រៅ"
"លំនាំដើម"
diff --git a/java/com/android/dialer/notification/res/values-kn/strings.xml b/java/com/android/dialer/notification/res/values-kn/strings.xml
index 45f26e378b9ca2cf678af92b7b1f37fe338dc1f8..d6e55bdb182d84035de0228693912ee401e7f7a5 100644
--- a/java/com/android/dialer/notification/res/values-kn/strings.xml
+++ b/java/com/android/dialer/notification/res/values-kn/strings.xml
@@ -21,6 +21,5 @@
"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಗಳು"
"ಮಿಸ್ಡ್ ಕರೆಗಳು"
"ಧ್ವನಿಮೇಲ್ಗಳು"
- "ಹೊರಗಿನ ಕರೆಗಳು"
"ಡಿಫಾಲ್ಟ್"
diff --git a/java/com/android/dialer/notification/res/values-ko/strings.xml b/java/com/android/dialer/notification/res/values-ko/strings.xml
index d806cad0651a23d6486e1a8c1e7dfc83016e367d..5a667176d1ab30fd6874731114ba0d7283601e60 100644
--- a/java/com/android/dialer/notification/res/values-ko/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ko/strings.xml
@@ -21,6 +21,5 @@
"진행 중인 전화"
"부재중 전화"
"음성사서함"
- "외부 전화"
"기본"
diff --git a/java/com/android/dialer/notification/res/values-ky/strings.xml b/java/com/android/dialer/notification/res/values-ky/strings.xml
index eb6adf6e794bdbdff71cdc42eb5462c285a7da62..c5259315af3887af72bb0126d2d371e067cff7e8 100644
--- a/java/com/android/dialer/notification/res/values-ky/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ky/strings.xml
@@ -21,6 +21,5 @@
"Учурдагы чалуулар"
"Кабыл алынбаган чалуулар"
"Үнкаттар"
- "Тышкы чалуулар"
"Демейки"
diff --git a/java/com/android/dialer/notification/res/values-lo/strings.xml b/java/com/android/dialer/notification/res/values-lo/strings.xml
index f439807deff12937af3a7eaa4578ab59bed3d3e0..a52d9df143d76038ff04c525acb128fa5a4c9ac5 100644
--- a/java/com/android/dialer/notification/res/values-lo/strings.xml
+++ b/java/com/android/dialer/notification/res/values-lo/strings.xml
@@ -21,6 +21,5 @@
"ສາຍໂທອອກ"
"ສາຍບໍ່ໄດ້ຮັບ"
"ຂໍ້ຄວາມສຽງ"
- "ສາຍພາຍນອກ"
"ຄ່າເລີ່ມຕົ້ນ"
diff --git a/java/com/android/dialer/notification/res/values-lt/strings.xml b/java/com/android/dialer/notification/res/values-lt/strings.xml
index f08697ad6617bb2854a6d0595defcec3cc2a4293..6f26d3e66a76f0b651ab85d70f244505cdc654fb 100644
--- a/java/com/android/dialer/notification/res/values-lt/strings.xml
+++ b/java/com/android/dialer/notification/res/values-lt/strings.xml
@@ -21,6 +21,5 @@
"Vykstantys skambučiai"
"Praleisti skambučiai"
"Balso pašto pranešimai"
- "Išoriniai skambučiai"
"Numatytasis"
diff --git a/java/com/android/dialer/notification/res/values-lv/strings.xml b/java/com/android/dialer/notification/res/values-lv/strings.xml
index d465b682d1d9a3168c2aab277a156c08310288cc..1819d810ab7aa3e6c4a20c343ffdc9a788ca0268 100644
--- a/java/com/android/dialer/notification/res/values-lv/strings.xml
+++ b/java/com/android/dialer/notification/res/values-lv/strings.xml
@@ -21,6 +21,5 @@
"Aktīvie zvani"
"Neatbildētie zvani"
"Balss pasta ziņojumi"
- "Ārējie zvani"
"Noklusējums"
diff --git a/java/com/android/dialer/notification/res/values-mk/strings.xml b/java/com/android/dialer/notification/res/values-mk/strings.xml
index 838065ba9fb93cea5ab257262f94bca6d97a2ebb..56459c479de9ad00b3ddbb1bcfb755cf06cc30f9 100644
--- a/java/com/android/dialer/notification/res/values-mk/strings.xml
+++ b/java/com/android/dialer/notification/res/values-mk/strings.xml
@@ -21,6 +21,5 @@
"Појдовни повици"
"Пропуштени повици"
"Говорни пораки"
- "Надворешни повици"
"Стандардно"
diff --git a/java/com/android/dialer/notification/res/values-ml/strings.xml b/java/com/android/dialer/notification/res/values-ml/strings.xml
index 448186a36e9c8f7cfabc55db494c856dc81bf44e..49a64e8f565541b1dcd0e182875204edb35273d0 100644
--- a/java/com/android/dialer/notification/res/values-ml/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ml/strings.xml
@@ -21,6 +21,5 @@
"നിലവിലുള്ള കോളുകൾ"
"മിസ്ഡ് കോളുകൾ"
"വോയ്സ്മെയിലുകൾ"
- "എക്സ്റ്റേണൽ കോളുകൾ"
"ഡിഫോൾട്ട്"
diff --git a/java/com/android/dialer/notification/res/values-mn/strings.xml b/java/com/android/dialer/notification/res/values-mn/strings.xml
index 3dca52e6b5c6035fecf201f8d8f2fcd5f5ec4f80..28297b3c1ce6e2f498f987d9570af6b7726cda43 100644
--- a/java/com/android/dialer/notification/res/values-mn/strings.xml
+++ b/java/com/android/dialer/notification/res/values-mn/strings.xml
@@ -21,6 +21,5 @@
"Үргэлжилж буй дуудлага"
"Аваагүй дуудлага"
"Дуут шуудан"
- "Гадаад дуудлага"
"Өгөгдмөл"
diff --git a/java/com/android/dialer/notification/res/values-mr/strings.xml b/java/com/android/dialer/notification/res/values-mr/strings.xml
index 5685376401f3b34927d873c339561c3ceb860d08..38fbd606a84acbd4dc4ed9bbb4db4404702e8b36 100644
--- a/java/com/android/dialer/notification/res/values-mr/strings.xml
+++ b/java/com/android/dialer/notification/res/values-mr/strings.xml
@@ -21,6 +21,5 @@
"सुरू असलेले कॉल"
"सुटलेले कॉल"
"व्हॉइसमेल"
- "बाह्य कॉल"
"डीफॉल्ट"
diff --git a/java/com/android/dialer/notification/res/values-ms/strings.xml b/java/com/android/dialer/notification/res/values-ms/strings.xml
index a1961c4a46889fc04171b12558c74345a4d7213d..ec7be04efbbf13cd8c5bf9fe2f5911a1c5ff7946 100644
--- a/java/com/android/dialer/notification/res/values-ms/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ms/strings.xml
@@ -21,6 +21,5 @@
"Panggilan sedang berlangsung"
"Panggilan terlepas"
"Mel suara"
- "Panggilan luar"
"Lalai"
diff --git a/java/com/android/dialer/notification/res/values-my/strings.xml b/java/com/android/dialer/notification/res/values-my/strings.xml
index 26398b4593d36e089dd71282a17b9f347f4ab4c1..44df8479873a565171b29a6ee9fb8af9364c14ad 100644
--- a/java/com/android/dialer/notification/res/values-my/strings.xml
+++ b/java/com/android/dialer/notification/res/values-my/strings.xml
@@ -21,6 +21,5 @@
"လက်ရှိခေါ်ဆိုမှုများ"
"လွဲသွားသော ခေါ်ဆိုမှုများ"
"အသံစာပို့စနစ်များ"
- "ပြင်ပခေါ်ဆိုမှုများ"
"မူရင်း"
diff --git a/java/com/android/dialer/notification/res/values-nb/strings.xml b/java/com/android/dialer/notification/res/values-nb/strings.xml
index e4ccd48a09a5a46a4dfc917001419128644aeb6f..8e63fd24bb85e75e9f7251267ffc9c28f22a50f6 100644
--- a/java/com/android/dialer/notification/res/values-nb/strings.xml
+++ b/java/com/android/dialer/notification/res/values-nb/strings.xml
@@ -21,6 +21,5 @@
"Pågående samtaler"
"Tapte anrop"
"Talepost"
- "Eksterne anrop"
"Standard"
diff --git a/java/com/android/dialer/notification/res/values-ne/strings.xml b/java/com/android/dialer/notification/res/values-ne/strings.xml
index 8ccd2997aef2655ec48c5435bf41b31a7336be37..e653bb3f8cc525c7f4e8f497b7dc550cd676b56d 100644
--- a/java/com/android/dialer/notification/res/values-ne/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ne/strings.xml
@@ -21,6 +21,5 @@
"जारी रहेका कलहरू"
"छुटेका कलहरू"
"भ्वाइस मेलहरू"
- "बाह्य कलहरू"
"पूर्वनिर्धारित मान"
diff --git a/java/com/android/dialer/notification/res/values-nl/strings.xml b/java/com/android/dialer/notification/res/values-nl/strings.xml
index e46dd19e38228ced78dd701b629b3076b6a7db21..094cc357f6b718705a13d2b3beec43a17d839360 100644
--- a/java/com/android/dialer/notification/res/values-nl/strings.xml
+++ b/java/com/android/dialer/notification/res/values-nl/strings.xml
@@ -21,6 +21,5 @@
"Actieve oproepen"
"Gemiste oproepen"
"Voicemails"
- "Externe oproepen"
"Standaard"
diff --git a/java/com/android/dialer/notification/res/values-no/strings.xml b/java/com/android/dialer/notification/res/values-no/strings.xml
index e4ccd48a09a5a46a4dfc917001419128644aeb6f..8e63fd24bb85e75e9f7251267ffc9c28f22a50f6 100644
--- a/java/com/android/dialer/notification/res/values-no/strings.xml
+++ b/java/com/android/dialer/notification/res/values-no/strings.xml
@@ -21,6 +21,5 @@
"Pågående samtaler"
"Tapte anrop"
"Talepost"
- "Eksterne anrop"
"Standard"
diff --git a/java/com/android/dialer/notification/res/values-pa/strings.xml b/java/com/android/dialer/notification/res/values-pa/strings.xml
index 40709c1acdcbccf0c343563d6703e36049da189b..c4ee97b223f57d65ad4b58be1565ae78d4677fd7 100644
--- a/java/com/android/dialer/notification/res/values-pa/strings.xml
+++ b/java/com/android/dialer/notification/res/values-pa/strings.xml
@@ -21,6 +21,5 @@
"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ"
"ਖੁੰਝੀਆਂ ਕਾਲਾਂ"
"ਵੌਇਸਮੇਲਾਂ"
- "ਬਾਹਰੀ ਕਾਲਾਂ"
"ਪੂਰਵ-ਨਿਰਧਾਰਤ"
diff --git a/java/com/android/dialer/notification/res/values-pl/strings.xml b/java/com/android/dialer/notification/res/values-pl/strings.xml
index 73b795cff7627e9cc5aadc7eb62175203f1e9516..4b3346001a3e9d1cee7236437b0614efab1c0280 100644
--- a/java/com/android/dialer/notification/res/values-pl/strings.xml
+++ b/java/com/android/dialer/notification/res/values-pl/strings.xml
@@ -21,6 +21,5 @@
"Połączenia trwające"
"Połączenia nieodebrane"
"Wiadomości głosowe"
- "Połączenia zewnętrzne"
"Domyślny"
diff --git a/java/com/android/dialer/notification/res/values-pt-rBR/strings.xml b/java/com/android/dialer/notification/res/values-pt-rBR/strings.xml
index f6e41cb11231d2ced7ebf22de6d150572f07796e..4b988c3ccafd58ee788e399e809becf0a8506d81 100644
--- a/java/com/android/dialer/notification/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/notification/res/values-pt-rBR/strings.xml
@@ -21,6 +21,5 @@
"Chamadas em andamento"
"Chamadas perdidas"
"Correios de voz"
- "Chamadas externas"
"Padrão"
diff --git a/java/com/android/dialer/notification/res/values-pt-rPT/strings.xml b/java/com/android/dialer/notification/res/values-pt-rPT/strings.xml
index ec42a5bf5723370193e3d02fc49c7b4b008fcdc5..45b31ebd005d3d05a89f4a7ef9e6bd90d8c784f6 100644
--- a/java/com/android/dialer/notification/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/notification/res/values-pt-rPT/strings.xml
@@ -21,6 +21,5 @@
"Chamadas efetuadas"
"Chamadas não atendidas"
"Mensagens de correio de voz"
- "Chamadas externas"
"Predefinição"
diff --git a/java/com/android/dialer/notification/res/values-pt/strings.xml b/java/com/android/dialer/notification/res/values-pt/strings.xml
index f6e41cb11231d2ced7ebf22de6d150572f07796e..4b988c3ccafd58ee788e399e809becf0a8506d81 100644
--- a/java/com/android/dialer/notification/res/values-pt/strings.xml
+++ b/java/com/android/dialer/notification/res/values-pt/strings.xml
@@ -21,6 +21,5 @@
"Chamadas em andamento"
"Chamadas perdidas"
"Correios de voz"
- "Chamadas externas"
"Padrão"
diff --git a/java/com/android/dialer/notification/res/values-ro/strings.xml b/java/com/android/dialer/notification/res/values-ro/strings.xml
index 7deeabba379cd109f55d48d44fa13ce597cbf60c..040c58ad2c10d05b25eb6083c3e274641d17c4f8 100644
--- a/java/com/android/dialer/notification/res/values-ro/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ro/strings.xml
@@ -21,6 +21,5 @@
"Apeluri în desfășurare"
"Apeluri nepreluate"
"Mesaje vocale"
- "Apeluri externe"
"Prestabilit"
diff --git a/java/com/android/dialer/notification/res/values-ru/strings.xml b/java/com/android/dialer/notification/res/values-ru/strings.xml
index 3a114045598b54c5f2213c3853220da1318285f0..a8117990a8fbfaaeee85b829dcbc04544fde2483 100644
--- a/java/com/android/dialer/notification/res/values-ru/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ru/strings.xml
@@ -21,6 +21,5 @@
"Текущие вызовы"
"Пропущенные вызовы"
"Голосовые сообщения"
- "Внешние вызовы"
"По умолчанию"
diff --git a/java/com/android/dialer/notification/res/values-si/strings.xml b/java/com/android/dialer/notification/res/values-si/strings.xml
index bf0a5a798672c330449bacd0c85cf9d26c703955..3ad0af7296bebab24566313c1fe5ea70c2bada50 100644
--- a/java/com/android/dialer/notification/res/values-si/strings.xml
+++ b/java/com/android/dialer/notification/res/values-si/strings.xml
@@ -21,6 +21,5 @@
"යන ඇමතුම්"
"මඟ හැරුණු ඇමතුම්"
"හඬ තැපැල්"
- "බාහිර ඇමතුම්"
"පෙරනිමි"
diff --git a/java/com/android/dialer/notification/res/values-sk/strings.xml b/java/com/android/dialer/notification/res/values-sk/strings.xml
index 4a67e60d2c8727d1ffa0100cd2878028f099cded..30941bcd56539d90b11f95b51aadc1f170db6bd5 100644
--- a/java/com/android/dialer/notification/res/values-sk/strings.xml
+++ b/java/com/android/dialer/notification/res/values-sk/strings.xml
@@ -21,6 +21,5 @@
"Prebiehajúce hovory"
"Zmeškané hovory"
"Hlasové správy"
- "Externé hovory"
"Predvolené"
diff --git a/java/com/android/dialer/notification/res/values-sl/strings.xml b/java/com/android/dialer/notification/res/values-sl/strings.xml
index e54111d12ae861c309c5b87fc629f12ec6a2a537..70474b87b86211c3eeb2f7e49437eb348022d84c 100644
--- a/java/com/android/dialer/notification/res/values-sl/strings.xml
+++ b/java/com/android/dialer/notification/res/values-sl/strings.xml
@@ -21,6 +21,5 @@
"Aktivni klici"
"Neodgovorjeni klici"
"Sporočila v odzivniku"
- "Zunanji klici"
"Privzeto"
diff --git a/java/com/android/dialer/notification/res/values-sq/strings.xml b/java/com/android/dialer/notification/res/values-sq/strings.xml
index 42d4daac3dbd11b4f25f170412ad6dca9c7cf55f..03bc24775838b8ca00bd8403847c88077dc212ac 100644
--- a/java/com/android/dialer/notification/res/values-sq/strings.xml
+++ b/java/com/android/dialer/notification/res/values-sq/strings.xml
@@ -21,6 +21,5 @@
"Telefonatat në vazhdim"
"Telefonatat e humbura"
"Postat zanore"
- "Telefonatat e jashtme"
"I parazgjedhur"
diff --git a/java/com/android/dialer/notification/res/values-sr/strings.xml b/java/com/android/dialer/notification/res/values-sr/strings.xml
index 10477170f308a43f92515e08b5eb3937cadff7df..8326c0403894c2c5a9e35d3fc6a55307df49e5b6 100644
--- a/java/com/android/dialer/notification/res/values-sr/strings.xml
+++ b/java/com/android/dialer/notification/res/values-sr/strings.xml
@@ -21,6 +21,5 @@
"Позиви у току"
"Пропуштени позиви"
"Говорне поруке"
- "Спољни позиви"
"Подразумевано"
diff --git a/java/com/android/dialer/notification/res/values-sv/strings.xml b/java/com/android/dialer/notification/res/values-sv/strings.xml
index 6c9ff83b716132a3a7215d5f533348b778827102..e3170d48f13cc746c3a32dcef916a51d95afae16 100644
--- a/java/com/android/dialer/notification/res/values-sv/strings.xml
+++ b/java/com/android/dialer/notification/res/values-sv/strings.xml
@@ -21,6 +21,5 @@
"Pågående samtal"
"Missade samtal"
"Röstmeddelanden"
- "Externa samtal"
"Standard"
diff --git a/java/com/android/dialer/notification/res/values-sw/strings.xml b/java/com/android/dialer/notification/res/values-sw/strings.xml
index a493f88977a81d61423f0a60a232be1eddd2e254..d0a65b08c363cd13b29b2809d8e9e2db800c96e4 100644
--- a/java/com/android/dialer/notification/res/values-sw/strings.xml
+++ b/java/com/android/dialer/notification/res/values-sw/strings.xml
@@ -21,6 +21,5 @@
"Simu zinazoendelea"
"Simu ambazo hukujibu"
"Ujumbe wa sauti"
- "Simu za nje"
"Chaguo-msingi"
diff --git a/java/com/android/dialer/notification/res/values-ta/strings.xml b/java/com/android/dialer/notification/res/values-ta/strings.xml
index d3000cf90544efd5fbad81f94ff7841eb21ba203..8a6ae89a8c877e88d842e9082db3c2ed7507dbf2 100644
--- a/java/com/android/dialer/notification/res/values-ta/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ta/strings.xml
@@ -21,6 +21,5 @@
"செயலில் உள்ள அழைப்புகள்"
"தவறிய அழைப்புகள்"
"குரலஞ்சல்கள்"
- "வெளி அழைப்புகள்"
"இயல்பு"
diff --git a/java/com/android/dialer/notification/res/values-te/strings.xml b/java/com/android/dialer/notification/res/values-te/strings.xml
index b14b210712efdcd83cdd6c70957534ac15530aba..b1911d34d6ae6f8fd6d35ce17962de81b5fe2bce 100644
--- a/java/com/android/dialer/notification/res/values-te/strings.xml
+++ b/java/com/android/dialer/notification/res/values-te/strings.xml
@@ -21,6 +21,5 @@
"కొనసాగుతున్న కాల్లు"
"సమాధానమివ్వని కాల్లు"
"వాయిస్ మెయిల్లు"
- "బాహ్య కాల్లు"
"డిఫాల్ట్"
diff --git a/java/com/android/dialer/notification/res/values-th/strings.xml b/java/com/android/dialer/notification/res/values-th/strings.xml
index 45248bbbe7c3a437e19ba04676b15dc5f6552a8a..b2949e42f6a8e28e203fc7c5b907db1310aee7e2 100644
--- a/java/com/android/dialer/notification/res/values-th/strings.xml
+++ b/java/com/android/dialer/notification/res/values-th/strings.xml
@@ -21,6 +21,5 @@
"สายที่สนทนาอยู่"
"สายที่ไม่ได้รับ"
"ข้อความเสียง"
- "สายนอก"
"ค่าเริ่มต้น"
diff --git a/java/com/android/dialer/notification/res/values-tl/strings.xml b/java/com/android/dialer/notification/res/values-tl/strings.xml
index 3e88a055fe0d9abdff997c570ba022b7d256e3ec..1219ad86f4d3c4f85f6590e94cca667f15fcee5f 100644
--- a/java/com/android/dialer/notification/res/values-tl/strings.xml
+++ b/java/com/android/dialer/notification/res/values-tl/strings.xml
@@ -21,6 +21,5 @@
"Mga kasalukuyang tawag"
"Mga hindi nasagot na tawag"
"Mga voicemail"
- "Mga external na tawag"
"Default"
diff --git a/java/com/android/dialer/notification/res/values-tr/strings.xml b/java/com/android/dialer/notification/res/values-tr/strings.xml
index d4e063bc2ac43ee3830da37a7b7c1fdd6aaf5765..71c91c806275dad843e93c40413b7aabc733f70d 100644
--- a/java/com/android/dialer/notification/res/values-tr/strings.xml
+++ b/java/com/android/dialer/notification/res/values-tr/strings.xml
@@ -21,6 +21,5 @@
"Devam eden çağrılar"
"Cevapsız çağrılar"
"Sesli mesajlar"
- "Harici çağrılar"
"Varsayılan"
diff --git a/java/com/android/dialer/notification/res/values-uk/strings.xml b/java/com/android/dialer/notification/res/values-uk/strings.xml
index a83a58460b635bb9a3793f71a2f16c891b736835..a002f42e1e711b59ca4bcd9a024de7731cc1479f 100644
--- a/java/com/android/dialer/notification/res/values-uk/strings.xml
+++ b/java/com/android/dialer/notification/res/values-uk/strings.xml
@@ -21,6 +21,5 @@
"Поточні виклики"
"Пропущені виклики"
"Голосова пошта"
- "Зовнішні виклики"
"За умовчанням"
diff --git a/java/com/android/dialer/notification/res/values-ur/strings.xml b/java/com/android/dialer/notification/res/values-ur/strings.xml
index ba6e0d1dab3cb32a4e653983d25703d6b2064ebf..805fe08f81a18b2f8e85c34b53ab441a08bbbc9b 100644
--- a/java/com/android/dialer/notification/res/values-ur/strings.xml
+++ b/java/com/android/dialer/notification/res/values-ur/strings.xml
@@ -21,6 +21,5 @@
"جاری کالیں"
"چھوٹی ہوئی کالیں"
"صوتی میلز"
- "بیرونی کالیں"
"ڈیفالٹ"
diff --git a/java/com/android/dialer/notification/res/values-uz/strings.xml b/java/com/android/dialer/notification/res/values-uz/strings.xml
index d45ff47d2fa27e9e98b5b79fa229ebd016f5494e..16075b0317a8f869fc7e5e009ff423f8ba1cbfc9 100644
--- a/java/com/android/dialer/notification/res/values-uz/strings.xml
+++ b/java/com/android/dialer/notification/res/values-uz/strings.xml
@@ -21,6 +21,5 @@
"Davom etayotgan suhbatlar"
"Javobsiz chaqiruvlar"
"Ovozli xabarlar"
- "Tashqi chaqiruvlar"
"Standart"
diff --git a/java/com/android/dialer/notification/res/values-vi/strings.xml b/java/com/android/dialer/notification/res/values-vi/strings.xml
index 6df88721ef9fee19b510bcec574c54f8f7359bd8..b6ab3d2d8fbc978fc4c2fc95e2003803fa319d0d 100644
--- a/java/com/android/dialer/notification/res/values-vi/strings.xml
+++ b/java/com/android/dialer/notification/res/values-vi/strings.xml
@@ -21,6 +21,5 @@
"Cuộc gọi đến"
"Cuộc gọi nhỡ"
"Thư thoại"
- "Cuộc gọi bên ngoài"
"Mặc định"
diff --git a/java/com/android/dialer/notification/res/values-zh-rCN/strings.xml b/java/com/android/dialer/notification/res/values-zh-rCN/strings.xml
index fa5f0a65743fda5870d28662842ce64b63926adf..1ef46c2b99261210d659ece0c0b846811148e988 100644
--- a/java/com/android/dialer/notification/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/notification/res/values-zh-rCN/strings.xml
@@ -21,6 +21,5 @@
"正在进行的通话"
"未接电话"
"语音邮件"
- "外部来电"
"默认"
diff --git a/java/com/android/dialer/notification/res/values-zh-rHK/strings.xml b/java/com/android/dialer/notification/res/values-zh-rHK/strings.xml
index 307a7f9bff97e5c6780220f41614747f62951cba..43a6fabf699ae8ac86f0305c981623d201c3c8f5 100644
--- a/java/com/android/dialer/notification/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/notification/res/values-zh-rHK/strings.xml
@@ -21,6 +21,5 @@
"進行中的通話"
"未接來電"
"留言信箱"
- "外部通話"
"預設"
diff --git a/java/com/android/dialer/notification/res/values-zh-rTW/strings.xml b/java/com/android/dialer/notification/res/values-zh-rTW/strings.xml
index 054a2d737b014ff269ac2590309ce9551dfaf626..35236be1dfeb0d79d7faf2c2f428195fe89d213e 100644
--- a/java/com/android/dialer/notification/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/notification/res/values-zh-rTW/strings.xml
@@ -21,6 +21,5 @@
"進行中的通話"
"未接來電"
"語音留言"
- "外部通話"
"預設"
diff --git a/java/com/android/dialer/notification/res/values-zu/strings.xml b/java/com/android/dialer/notification/res/values-zu/strings.xml
index 744ffc8164d2d2ad5036d4d89b2090282a52da47..f3d95531f07bdf971646ca48cff3c27341d7b42f 100644
--- a/java/com/android/dialer/notification/res/values-zu/strings.xml
+++ b/java/com/android/dialer/notification/res/values-zu/strings.xml
@@ -21,6 +21,5 @@
"Amakholi aqhubekayo"
"Amakholi akuphuthile"
"Amavoyisimeyili"
- "Amakholi angaphandle"
"Okuzenzakalelayo"
diff --git a/java/com/android/dialer/notification/res/values/strings.xml b/java/com/android/dialer/notification/res/values/strings.xml
index cb3119f67acfdcb406174e2dbff57f9bdb2e911a..a3c6935aa21c72fc71c40f448b6ffcefc4966c09 100644
--- a/java/com/android/dialer/notification/res/values/strings.xml
+++ b/java/com/android/dialer/notification/res/values/strings.xml
@@ -20,7 +20,6 @@
Ongoing calls
Missed calls
Voicemails
- External calls
Default
diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java
index 806d553eb29f71505794c4082e973a681ee5aa1b..86097c41ad529c6fc1802c08d315e3238905dd41 100644
--- a/java/com/android/dialer/oem/CequintCallerIdManager.java
+++ b/java/com/android/dialer/oem/CequintCallerIdManager.java
@@ -28,8 +28,8 @@ import android.support.annotation.WorkerThread;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import java.util.concurrent.ConcurrentHashMap;
/**
diff --git a/java/com/android/dialer/oem/MotorolaUtils.java b/java/com/android/dialer/oem/MotorolaUtils.java
index 2c91e60abe307373339d34c71d839fbcdf1e41f2..ffab8ea23523c4f994fc2a627f97095acc6573dd 100644
--- a/java/com/android/dialer/oem/MotorolaUtils.java
+++ b/java/com/android/dialer/oem/MotorolaUtils.java
@@ -18,9 +18,9 @@ package com.android.dialer.oem;
import android.content.Context;
import android.content.res.Resources;
import android.telephony.TelephonyManager;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.PackageUtils;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
diff --git a/java/com/android/dialer/p13n/inference/P13nRanking.java b/java/com/android/dialer/p13n/inference/P13nRanking.java
index 0682e85db1972df11c6743a0b9198979fdbb96c7..79b4d7136f4e5bb736194ce7bfa01fce345ac37b 100644
--- a/java/com/android/dialer/p13n/inference/P13nRanking.java
+++ b/java/com/android/dialer/p13n/inference/P13nRanking.java
@@ -22,7 +22,7 @@ import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.p13n.inference.protocol.P13nRanker;
import com.android.dialer.p13n.inference.protocol.P13nRankerFactory;
import java.util.List;
diff --git a/java/com/android/dialer/performancereport/PerformanceReport.java b/java/com/android/dialer/performancereport/PerformanceReport.java
new file mode 100644
index 0000000000000000000000000000000000000000..27fd7485b7407c98e37668e2a5c8d8b0a250d35f
--- /dev/null
+++ b/java/com/android/dialer/performancereport/PerformanceReport.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2017 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.performancereport;
+
+import android.os.SystemClock;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.RecyclerView;
+import android.widget.AbsListView;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.UiAction;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/** Tracks UI performance for a call. */
+public final class PerformanceReport {
+
+ private static final long INVALID_TIME = -1;
+ private static final long ACTIVE_DURATION = TimeUnit.MINUTES.toMillis(5);
+
+ private static final List actions = new ArrayList<>();
+ private static final List actionTimestamps = new ArrayList<>();
+
+ private static final RecyclerView.OnScrollListener recordOnScrollListener =
+ new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+ if (newState == RecyclerView.SCROLL_STATE_SETTLING) {
+ PerformanceReport.recordClick(UiAction.Type.SCROLL);
+ }
+ super.onScrollStateChanged(recyclerView, newState);
+ }
+ };
+
+ private static boolean recording = false;
+ private static long appLaunchTimeMillis = INVALID_TIME;
+ private static long firstClickTimeMillis = INVALID_TIME;
+ private static long lastActionTimeMillis = INVALID_TIME;
+
+ @Nullable private static UiAction.Type ignoreActionOnce = null;
+
+ private PerformanceReport() {}
+
+ public static void startRecording() {
+ LogUtil.enterBlock("PerformanceReport.startRecording");
+
+ appLaunchTimeMillis = SystemClock.elapsedRealtime();
+ lastActionTimeMillis = appLaunchTimeMillis;
+ if (!actions.isEmpty()) {
+ actions.clear();
+ actionTimestamps.clear();
+ }
+ recording = true;
+ }
+
+ public static void stopRecording() {
+ LogUtil.enterBlock("PerformanceReport.stopRecording");
+ recording = false;
+ }
+
+ public static void recordClick(UiAction.Type action) {
+ if (!recording) {
+ return;
+ }
+
+ if (action == ignoreActionOnce) {
+ LogUtil.i("PerformanceReport.recordClick", "%s is ignored", action.toString());
+ ignoreActionOnce = null;
+ return;
+ }
+ ignoreActionOnce = null;
+
+ LogUtil.v("PerformanceReport.recordClick", action.toString());
+
+ // Timeout
+ long currentTime = SystemClock.elapsedRealtime();
+ if (currentTime - lastActionTimeMillis > ACTIVE_DURATION) {
+ startRecording();
+ recordClick(action);
+ return;
+ }
+
+ lastActionTimeMillis = currentTime;
+ if (actions.isEmpty()) {
+ firstClickTimeMillis = currentTime;
+ }
+ actions.add(action);
+ actionTimestamps.add(currentTime - appLaunchTimeMillis);
+ }
+
+ public static void recordScrollStateChange(int scrollState) {
+ if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
+ recordClick(UiAction.Type.SCROLL);
+ }
+ }
+
+ public static void logOnScrollStateChange(RecyclerView recyclerView) {
+ // Remove the listener in case it was added before
+ recyclerView.removeOnScrollListener(recordOnScrollListener);
+ recyclerView.addOnScrollListener(recordOnScrollListener);
+ }
+
+ public static boolean isRecording() {
+ return recording;
+ }
+
+ public static long getTimeSinceAppLaunch() {
+ if (appLaunchTimeMillis == INVALID_TIME) {
+ return INVALID_TIME;
+ }
+ return SystemClock.elapsedRealtime() - appLaunchTimeMillis;
+ }
+
+ public static long getTimeSinceFirstClick() {
+ if (firstClickTimeMillis == INVALID_TIME) {
+ return INVALID_TIME;
+ }
+ return SystemClock.elapsedRealtime() - firstClickTimeMillis;
+ }
+
+ public static List getActions() {
+ return actions;
+ }
+
+ public static List getActionTimestamps() {
+ return actionTimestamps;
+ }
+
+ @Nullable
+ public static UiAction.Type getIgnoreActionOnce() {
+ return ignoreActionOnce;
+ }
+
+ public static void setIgnoreActionOnce(@Nullable UiAction.Type ignoreActionOnce) {
+ PerformanceReport.ignoreActionOnce = ignoreActionOnce;
+ LogUtil.i(
+ "PerformanceReport.setIgnoreActionOnce",
+ "next action will be ignored once if it is %s",
+ ignoreActionOnce.toString());
+ }
+}
diff --git a/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java b/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
index 2aed9e75ec9f9454c8c48993aaee8bfacedb6c2d..c398251e41e3ec6ddb67184b1251b73240782ba3 100644
--- a/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
+++ b/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
@@ -49,6 +49,8 @@ public interface CachedNumberLookupService {
boolean canReportAsInvalid(ContactSource.Type sourceType, String objectId);
+ boolean reportAsInvalid(Context context, CachedContactInfo cachedContactInfo);
+
/** @return return {@link Uri} to the photo or return {@code null} when failing to add photo */
@Nullable
Uri addPhoto(Context context, String number, InputStream in);
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
index c9e940ef4a87992b01b12f3671d1ae70b0663757..4fa3147eb3c5bcd85ef7431bdff1273332465d9c 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
@@ -203,6 +203,7 @@ public class ContactInfoHelper {
return info;
}
+ @Nullable
public ContactInfo lookupNumber(String number, String countryIso) {
return lookupNumber(number, countryIso, -1);
}
@@ -223,12 +224,14 @@ public class ContactInfoHelper {
@SuppressWarnings("ReferenceEquality")
public ContactInfo lookupNumber(String number, String countryIso, long directoryId) {
if (TextUtils.isEmpty(number)) {
+ LogUtil.d("ContactInfoHelper.lookupNumber", "number is empty");
return null;
}
ContactInfo info;
if (PhoneNumberHelper.isUriNumber(number)) {
+ LogUtil.d("ContactInfoHelper.lookupNumber", "number is sip");
// The number is a SIP address..
info = lookupContactFromUri(getContactInfoLookupUri(number, directoryId));
if (info == null || info == ContactInfo.EMPTY) {
@@ -246,6 +249,7 @@ public class ContactInfoHelper {
final ContactInfo updatedInfo;
if (info == null) {
// The lookup failed.
+ LogUtil.d("ContactInfoHelper.lookupNumber", "lookup failed");
updatedInfo = null;
} else {
// If we did not find a matching contact, generate an empty contact info for the number.
@@ -325,9 +329,11 @@ public class ContactInfoHelper {
*/
ContactInfo lookupContactFromUri(Uri uri) {
if (uri == null) {
+ LogUtil.d("ContactInfoHelper.lookupContactFromUri", "uri is null");
return null;
}
if (!PermissionsUtil.hasContactsReadPermissions(mContext)) {
+ LogUtil.d("ContactInfoHelper.lookupContactFromUri", "no contact permission, return empty");
return ContactInfo.EMPTY;
}
@@ -336,10 +342,12 @@ public class ContactInfoHelper {
String[] projection = PhoneQuery.getPhoneLookupProjection(uri);
phoneLookupCursor = mContext.getContentResolver().query(uri, projection, null, null, null);
} catch (NullPointerException e) {
+ LogUtil.e("ContactInfoHelper.lookupContactFromUri", "phone lookup", e);
// Trap NPE from pre-N CP2
return null;
}
if (phoneLookupCursor == null) {
+ LogUtil.d("ContactInfoHelper.lookupContactFromUri", "phoneLookupCursor is null");
return null;
}
@@ -408,19 +416,32 @@ public class ContactInfoHelper {
private ContactInfo queryContactInfoForPhoneNumber(
String number, String countryIso, long directoryId) {
if (TextUtils.isEmpty(number)) {
+ LogUtil.d("ContactInfoHelper.queryContactInfoForPhoneNumber", "number is empty");
return null;
}
ContactInfo info = lookupContactFromUri(getContactInfoLookupUri(number, directoryId));
+ if (info == null) {
+ LogUtil.d("ContactInfoHelper.queryContactInfoForPhoneNumber", "info looked up is null");
+ }
if (info != null && info != ContactInfo.EMPTY) {
info.formattedNumber = formatPhoneNumber(number, null, countryIso);
+ if (directoryId == -1) {
+ // Contact found in the default directory
+ info.sourceType = ContactSource.Type.SOURCE_TYPE_DIRECTORY;
+ } else {
+ // Contact found in the extended directory specified by directoryId
+ info.sourceType = ContactSource.Type.SOURCE_TYPE_EXTENDED;
+ }
} else if (mCachedNumberLookupService != null) {
CachedContactInfo cacheInfo =
mCachedNumberLookupService.lookupCachedContactFromNumber(mContext, number);
if (cacheInfo != null) {
- info = cacheInfo.getContactInfo().isBadData ? null : cacheInfo.getContactInfo();
- } else {
- info = null;
+ if (!cacheInfo.getContactInfo().isBadData) {
+ info = cacheInfo.getContactInfo();
+ } else {
+ LogUtil.i("ContactInfoHelper.queryContactInfoForPhoneNumber", "info is bad data");
+ }
}
}
return info;
diff --git a/java/com/android/dialer/phonenumberproto/Converter.java b/java/com/android/dialer/phonenumberproto/Converter.java
new file mode 100644
index 0000000000000000000000000000000000000000..453b98844f6df1fceef5e1c99a7891a4114af154
--- /dev/null
+++ b/java/com/android/dialer/phonenumberproto/Converter.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2017 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.phonenumberproto;
+
+import com.android.dialer.DialerInternalPhoneNumber;
+import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+/**
+ * Methods for converting from {@link PhoneNumber} POJOs to {@link DialerInternalPhoneNumber} protos
+ * and back.
+ */
+class Converter {
+
+ static DialerInternalPhoneNumber pojoToProto(PhoneNumber pojo) {
+ DialerInternalPhoneNumber.Builder proto = DialerInternalPhoneNumber.newBuilder();
+ if (pojo.hasCountryCode()) {
+ proto.setCountryCode(pojo.getCountryCode());
+ }
+ if (pojo.hasCountryCodeSource()) {
+ switch (pojo.getCountryCodeSource()) {
+ case FROM_NUMBER_WITH_PLUS_SIGN:
+ proto.setCountryCodeSource(
+ DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN);
+ break;
+ case FROM_NUMBER_WITH_IDD:
+ proto.setCountryCodeSource(
+ DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_IDD);
+ break;
+ case FROM_NUMBER_WITHOUT_PLUS_SIGN:
+ proto.setCountryCodeSource(
+ DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN);
+ break;
+ case FROM_DEFAULT_COUNTRY:
+ proto.setCountryCodeSource(
+ DialerInternalPhoneNumber.CountryCodeSource.FROM_DEFAULT_COUNTRY);
+ break;
+ default:
+ throw new IllegalArgumentException(
+ "unsupported country code source: " + pojo.getCountryCodeSource());
+ }
+ }
+ if (pojo.hasExtension()) {
+ proto.setExtension(pojo.getExtension());
+ }
+ if (pojo.hasItalianLeadingZero()) {
+ proto.setItalianLeadingZero(pojo.isItalianLeadingZero());
+ }
+ if (pojo.hasNationalNumber()) {
+ proto.setNationalNumber(pojo.getNationalNumber());
+ }
+ if (pojo.hasNumberOfLeadingZeros()) {
+ proto.setNumberOfLeadingZeros(pojo.getNumberOfLeadingZeros());
+ }
+ if (pojo.hasPreferredDomesticCarrierCode()) {
+ proto.setPreferredDomesticCarrierCode(pojo.getPreferredDomesticCarrierCode());
+ }
+ if (pojo.hasRawInput()) {
+ proto.setRawInput(pojo.getRawInput());
+ }
+ return proto.build();
+ }
+
+ static PhoneNumber protoToPojo(DialerInternalPhoneNumber proto) {
+ PhoneNumber pojo = new PhoneNumber();
+ if (proto.hasCountryCode()) {
+ pojo.setCountryCode(proto.getCountryCode());
+ }
+ if (proto.hasCountryCodeSource()) {
+ switch (proto.getCountryCodeSource()) {
+ case FROM_NUMBER_WITH_PLUS_SIGN:
+ pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN);
+ break;
+ case FROM_NUMBER_WITH_IDD:
+ pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_IDD);
+ break;
+ case FROM_NUMBER_WITHOUT_PLUS_SIGN:
+ pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN);
+ break;
+ case FROM_DEFAULT_COUNTRY:
+ pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_DEFAULT_COUNTRY);
+ break;
+ default:
+ throw new IllegalArgumentException(
+ "unsupported country code source: " + proto.getCountryCodeSource());
+ }
+ }
+ if (proto.hasExtension()) {
+ pojo.setExtension(proto.getExtension());
+ }
+ if (proto.hasItalianLeadingZero()) {
+ pojo.setItalianLeadingZero(proto.getItalianLeadingZero());
+ }
+ if (proto.hasNationalNumber()) {
+ pojo.setNationalNumber(proto.getNationalNumber());
+ }
+ if (proto.hasNumberOfLeadingZeros()) {
+ pojo.setNumberOfLeadingZeros(proto.getNumberOfLeadingZeros());
+ }
+ if (proto.hasPreferredDomesticCarrierCode()) {
+ pojo.setPreferredDomesticCarrierCode(proto.getPreferredDomesticCarrierCode());
+ }
+ if (proto.hasRawInput()) {
+ pojo.setRawInput(proto.getRawInput());
+ }
+ return pojo;
+ }
+}
diff --git a/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java b/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..cc509f41ba57fd67ba4707bce6d3cb4954b7775f
--- /dev/null
+++ b/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2017 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.phonenumberproto;
+
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.annotation.WorkerThread;
+import com.android.dialer.DialerInternalPhoneNumber;
+import com.android.dialer.DialerPhoneNumber;
+import com.android.dialer.DialerPhoneNumber.RawInput;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.google.i18n.phonenumbers.NumberParseException;
+import com.google.i18n.phonenumbers.PhoneNumberUtil;
+import com.google.i18n.phonenumbers.PhoneNumberUtil.MatchType;
+
+/**
+ * Wrapper for selected methods in {@link PhoneNumberUtil} which uses the {@link DialerPhoneNumber}
+ * lite proto instead of the {@link com.google.i18n.phonenumbers.Phonenumber.PhoneNumber} POJO.
+ *
+ * All methods should be called on a worker thread.
+ */
+public class DialerPhoneNumberUtil {
+ private final PhoneNumberUtil phoneNumberUtil;
+
+ @WorkerThread
+ public DialerPhoneNumberUtil(@NonNull PhoneNumberUtil phoneNumberUtil) {
+ Assert.isWorkerThread();
+ this.phoneNumberUtil = Assert.isNotNull(phoneNumberUtil);
+ }
+
+ /**
+ * Parses the provided raw phone number into a {@link DialerPhoneNumber}.
+ *
+ * @see PhoneNumberUtil#parse(String, String)
+ */
+ @WorkerThread
+ public DialerPhoneNumber parse(@Nullable String numberToParse, @Nullable String defaultRegion) {
+ Assert.isWorkerThread();
+
+ DialerPhoneNumber.Builder dialerPhoneNumber = DialerPhoneNumber.newBuilder();
+ RawInput.Builder rawInput = RawInput.newBuilder();
+ // Numbers can be null or empty for incoming "unknown" calls.
+ if (numberToParse != null) {
+ rawInput.setNumber(numberToParse);
+ }
+ if (defaultRegion != null) {
+ rawInput.setCountryIso(defaultRegion);
+ }
+ dialerPhoneNumber.setRawInput(rawInput.build());
+
+ try {
+ dialerPhoneNumber.setDialerInternalPhoneNumber(
+ Converter.pojoToProto(phoneNumberUtil.parse(numberToParse, defaultRegion)));
+ } catch (NumberParseException e) {
+ LogUtil.w("DialerPhoneNumberUtil.parse", "couldn't parse phone number", e);
+ }
+ return dialerPhoneNumber.build();
+ }
+
+ /**
+ * Returns true if the two numbers were parseable by libphonenumber and are an {@link
+ * MatchType#EXACT_MATCH} or if they have the same raw input.
+ */
+ @WorkerThread
+ public boolean isExactMatch(
+ @NonNull DialerPhoneNumber firstNumberIn, @NonNull DialerPhoneNumber secondNumberIn) {
+ Assert.isWorkerThread();
+ if (!Assert.isNotNull(firstNumberIn).hasDialerInternalPhoneNumber()
+ || !Assert.isNotNull(secondNumberIn).hasDialerInternalPhoneNumber()) {
+ return firstNumberIn.getRawInput().equals(secondNumberIn.getRawInput());
+ }
+ return isNumberMatch(
+ firstNumberIn.getDialerInternalPhoneNumber(),
+ secondNumberIn.getDialerInternalPhoneNumber())
+ == MatchType.EXACT_MATCH;
+ }
+
+ /**
+ * Compares the provided phone numbers.
+ *
+ * @see PhoneNumberUtil#isNumberMatch(com.google.i18n.phonenumbers.Phonenumber.PhoneNumber,
+ * com.google.i18n.phonenumbers.Phonenumber.PhoneNumber)
+ */
+ @WorkerThread
+ private MatchType isNumberMatch(
+ @NonNull DialerInternalPhoneNumber firstNumberIn,
+ @NonNull DialerInternalPhoneNumber secondNumberIn) {
+ Assert.isWorkerThread();
+ return phoneNumberUtil.isNumberMatch(
+ Converter.protoToPojo(Assert.isNotNull(firstNumberIn)),
+ Converter.protoToPojo(Assert.isNotNull(secondNumberIn)));
+ }
+}
diff --git a/java/com/android/dialer/phonenumberproto/dialer_phone_number.proto b/java/com/android/dialer/phonenumberproto/dialer_phone_number.proto
new file mode 100644
index 0000000000000000000000000000000000000000..a0f362631b6fd269318e15c5fd8a3576143d51f8
--- /dev/null
+++ b/java/com/android/dialer/phonenumberproto/dialer_phone_number.proto
@@ -0,0 +1,172 @@
+// Copyright (C) 2017 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
+
+syntax = "proto2";
+
+option java_package = "com.android.dialer";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+package com.android.dialer;
+
+// A phone number for use in the dialer application. It consists of a
+// DialerInternalPhoneNumber, which is a copy of libphonenumber's PhoneNumber
+// proto, and the raw input used to create it.
+message DialerPhoneNumber {
+ // libphonenumber representation of the phone number. May be empty if the raw
+ // input failed to parse, in which case raw_input should be used.
+ optional DialerInternalPhoneNumber dialer_internal_phone_number = 1;
+
+ // The raw input which was used to create a DialerPhoneNumber.
+ message RawInput {
+ // The phone number as it was entered or received.
+ optional string number = 1;
+ // The ISO 3166-1 two letter country code of the country where the user made
+ // or received the call.
+ optional string country_iso = 2;
+ }
+ // Prefer to use dialer_internal_phone_number if present.
+ optional RawInput raw_input = 2;
+}
+
+// This is a copy of libphonenumber proto file for use in the dialer codebase.
+// We cannot depend on the real libphonenumber proto because it is not exposed
+// in any open source library. As such, this file could fall out of sync with
+// that proto over time.
+//
+// The only difference between this proto and the libphonenumber proto (as of
+// when this file was created) is the package name and proto name.
+//
+// If the libphonenumber proto becomes accessible some day, it may be possible
+// to remove this proto and use the real libphonenumber proto assuming this
+// proto is kept wire-compatible with it.
+message DialerInternalPhoneNumber {
+ // The country calling code for this number, as defined by the International
+ // Telecommunication Union (ITU). For example, this would be 1 for NANPA
+ // countries, and 33 for France.
+ required int32 country_code = 1;
+
+ // The National (significant) Number, as defined in International
+ // Telecommunication Union (ITU) Recommendation E.164, without any leading
+ // zero. The leading-zero is stored separately if required, since this is an
+ // uint64 and hence cannot store such information. Do not use this field
+ // directly: if you want the national significant number, call the
+ // getNationalSignificantNumber method of PhoneNumberUtil.
+ //
+ // For countries which have the concept of an "area code" or "national
+ // destination code", this is included in the National (significant) Number.
+ // Although the ITU says the maximum length should be 15, we have found longer
+ // numbers in some countries e.g. Germany.
+ // Note that the National (significant) Number does not contain the National
+ // (trunk) prefix. Obviously, as a uint64, it will never contain any
+ // formatting (hyphens, spaces, parentheses), nor any alphanumeric spellings.
+ required uint64 national_number = 2 [jstype = JS_NUMBER];
+
+ // Extension is not standardized in ITU recommendations, except for being
+ // defined as a series of numbers with a maximum length of 40 digits. It is
+ // defined as a string here to accommodate for the possible use of a leading
+ // zero in the extension (organizations have complete freedom to do so, as
+ // there is no standard defined). Other than digits, some other dialling
+ // characters such as "," (indicating a wait) may be stored here.
+ optional string extension = 3;
+
+ // In some countries, the national (significant) number starts with one or
+ // more "0"s without this being a national prefix or trunk code of some kind.
+ // For example, the leading zero in the national (significant) number of an
+ // Italian phone number indicates the number is a fixed-line number. There
+ // have been plans to migrate fixed-line numbers to start with the digit two
+ // since December 2000, but it has not happened yet. See
+ // http://en.wikipedia.org/wiki/%2B39 for more details.
+ //
+ // These fields can be safely ignored (there is no need to set them) for most
+ // countries. Some limited number of countries behave like Italy - for these
+ // cases, if the leading zero(s) of a number would be retained even when
+ // dialling internationally, set this flag to true, and also set the number of
+ // leading zeros.
+ //
+ // Clients who use the parsing or conversion functionality of the i18n phone
+ // number libraries (go/phonenumbers) will have these fields set if necessary
+ // automatically.
+ optional bool italian_leading_zero = 4;
+ optional int32 number_of_leading_zeros = 8 [default = 1];
+
+ // The next few fields are non-essential fields for a phone number. They
+ // retain extra information about the form the phone number was in when it was
+ // provided to us to parse. They can be safely ignored by most clients. To
+ // populate them, call parseAndKeepRawInput on PhoneNumberUtil.
+
+ // This field is used to store the raw input string containing phone numbers
+ // before it was canonicalized by the library. For example, it could be used
+ // to store alphanumerical numbers such as "1-800-GOOG-411".
+ optional string raw_input = 5;
+
+ // The source from which the country_code is derived. This is not set in the
+ // general parsing method, but in the method that parses and keeps raw_input.
+ // New fields could be added upon request.
+ enum CountryCodeSource {
+ // The country_code is derived based on a phone number with a leading "+",
+ // e.g. the French number "+33 1 42 68 53 00".
+ FROM_NUMBER_WITH_PLUS_SIGN = 1;
+
+ // The country_code is derived based on a phone number with a leading IDD,
+ // e.g. the French number "011 33 1 42 68 53 00", as it is dialled from US.
+ FROM_NUMBER_WITH_IDD = 5;
+
+ // The country_code is derived based on a phone number without a leading
+ // "+", e.g. the French number "33 1 42 68 53 00" when defaultCountry is
+ // supplied as France.
+ FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;
+
+ // The country_code is derived NOT based on the phone number itself, but
+ // from the defaultCountry parameter provided in the parsing function by the
+ // clients. This happens mostly for numbers written in the national format
+ // (without country code). For example, this would be set when parsing the
+ // French number "01 42 68 53 00", when defaultCountry is supplied as
+ // France.
+ FROM_DEFAULT_COUNTRY = 20;
+ }
+
+ // The source from which the country_code is derived.
+ optional CountryCodeSource country_code_source = 6;
+
+ // The carrier selection code that is preferred when calling this phone number
+ // domestically. This also includes codes that need to be dialed in some
+ // countries when calling from landlines to mobiles or vice versa. For
+ // example, in Columbia, a "3" needs to be dialed before the phone number
+ // itself when calling from a mobile phone to a domestic landline phone and
+ // vice versa.
+ //
+ // Note this is the "preferred" code, which means other codes may work as
+ // well.
+ optional string preferred_domestic_carrier_code = 7;
+}
+
+// Examples:
+//
+// Google MTV, +1 650-253-0000, (650) 253-0000
+// country_code: 1
+// national_number: 6502530000
+//
+// Google Paris, +33 (0)1 42 68 53 00, 01 42 68 53 00
+// country_code: 33
+// national_number: 142685300
+//
+// Google Beijing, +86-10-62503000, (010) 62503000
+// country_code: 86
+// national_number: 1062503000
+//
+// Google Italy, +39 02-36618 300, 02-36618 300
+// country_code: 39
+// national_number: 236618300
+// italian_leading_zero: true
\ No newline at end of file
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index 7eb83b1339fde8e29d208f9ca9dcb12332aaa2c6..b17a9b66d200f24403dd20b2ac008472c92c59e1 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -26,22 +26,23 @@ import android.support.design.widget.Snackbar;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
-import com.android.dialer.common.ConfigProvider;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProvider;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.enrichedcall.EnrichedCallManager;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
/** Helper class to handle all post call actions. */
public class PostCall {
- private static final String KEY_POST_CALL_CALL_CONNECT_TIME = "post_call_call_connect_time";
private static final String KEY_POST_CALL_CALL_DISCONNECT_TIME = "post_call_call_disconnect_time";
+ private static final String KEY_POST_CALL_CALL_CONNECT_TIME = "post_call_call_connect_time";
private static final String KEY_POST_CALL_CALL_NUMBER = "post_call_call_number";
private static final String KEY_POST_CALL_MESSAGE_SENT = "post_call_message_sent";
@@ -53,6 +54,8 @@ public class PostCall {
promptUserToViewSentMessage(activity, rootView);
} else if (shouldPromptUserToSendMessage(activity)) {
promptUserToSendMessage(activity, rootView);
+ } else {
+ clear(activity);
}
}
}
@@ -158,6 +161,19 @@ public class PostCall {
.apply();
}
+ /**
+ * Restart performance recording if there is a recent call (disconnect time to now is under
+ * threshold)
+ */
+ public static void restartPerformanceRecordingIfARecentCallExist(Context context) {
+ long disconnectTimeMillis =
+ DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context)
+ .getLong(PostCall.KEY_POST_CALL_CALL_DISCONNECT_TIME, -1);
+ if (disconnectTimeMillis != -1 && PerformanceReport.isRecording()) {
+ PerformanceReport.startRecording();
+ }
+ }
+
private static void clear(Context context) {
activeSnackbar = null;
diff --git a/java/com/android/dialer/searchfragment/NewSearchFragment.java b/java/com/android/dialer/searchfragment/NewSearchFragment.java
deleted file mode 100644
index e7283d0ad5c672cddb40293aad2fe4fd50fd3e8f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/searchfragment/NewSearchFragment.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2017 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.searchfragment;
-
-import android.app.Fragment;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.Loader;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-/** Fragment used for searching contacts. */
-public final class NewSearchFragment extends Fragment implements LoaderCallbacks {
-
- private RecyclerView recyclerView;
- private SearchAdapter adapter;
- private String query;
-
- @Nullable
- @Override
- public View onCreateView(
- LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) {
- getLoaderManager().initLoader(0, null, this);
- View view = inflater.inflate(R.layout.fragment_search, parent, false);
- recyclerView = view.findViewById(R.id.recycler_view);
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-
- getLoaderManager().initLoader(0, null, this);
- return view;
- }
-
- @Override
- public Loader onCreateLoader(int id, Bundle bundle) {
- // TODO add more loaders
- return new SearchContactsCursorLoader(getContext());
- }
-
- @Override
- public void onLoadFinished(Loader loader, Cursor cursor) {
- if (adapter == null) {
- adapter = new SearchAdapter(getContext());
- }
- if (loader instanceof SearchContactsCursorLoader) {
- adapter.setContactsCursor(new SearchContactCursor(cursor, query));
- }
- recyclerView.setAdapter(adapter);
- }
-
- @Override
- public void onLoaderReset(Loader loader) {
- if (adapter != null) {
- adapter.clear();
- adapter = null;
- }
- recyclerView.setAdapter(null);
- }
-
- public void setQuery(String query) {
- this.query = query;
- if (adapter != null) {
- adapter.setQuery(query);
- }
- }
-}
diff --git a/java/com/android/dialer/searchfragment/common/AndroidManifest.xml b/java/com/android/dialer/searchfragment/common/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..178cd83c3967d4c5314ced7f9cd1fd315ef77738
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/common/AndroidManifest.xml
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/common/Projections.java
similarity index 73%
rename from java/com/android/dialer/searchfragment/SearchContactsCursorLoader.java
rename to java/com/android/dialer/searchfragment/common/Projections.java
index 309dfffd933a41381366c7fab7c6f2c9352d3bab..37e20d19544059718dec76c371d97555626edbb3 100644
--- a/java/com/android/dialer/searchfragment/SearchContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/common/Projections.java
@@ -11,17 +11,15 @@
* 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.
+ * limitations under the License
*/
-package com.android.dialer.searchfragment;
+package com.android.dialer.searchfragment.common;
-import android.content.Context;
-import android.content.CursorLoader;
import android.provider.ContactsContract.CommonDataKinds.Phone;
-/** Cursor Loader for {@link NewSearchFragment}. */
-final class SearchContactsCursorLoader extends CursorLoader {
+/** Class containing relevant projections for searching contacts. */
+public class Projections {
public static final int PHONE_ID = 0;
public static final int PHONE_TYPE = 1;
@@ -34,9 +32,9 @@ final class SearchContactsCursorLoader extends CursorLoader {
public static final int PHONE_CARRIER_PRESENCE = 8;
@SuppressWarnings("unused")
- public static final int PHONE_SOFT_KEY = 9;
+ public static final int PHONE_SORT_KEY = 9;
- static final String[] PHONE_PROJECTION =
+ public static final String[] PHONE_PROJECTION =
new String[] {
Phone._ID, // 0
Phone.TYPE, // 1
@@ -49,9 +47,4 @@ final class SearchContactsCursorLoader extends CursorLoader {
Phone.CARRIER_PRESENCE, // 8
Phone.SORT_KEY_PRIMARY // 9
};
-
- SearchContactsCursorLoader(Context context) {
- super(
- context, Phone.CONTENT_URI, PHONE_PROJECTION, null, null, Phone.SORT_KEY_PRIMARY + " ASC");
- }
}
diff --git a/java/com/android/dialer/searchfragment/QueryUtil.java b/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java
similarity index 52%
rename from java/com/android/dialer/searchfragment/QueryUtil.java
rename to java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java
index a3f44ab831a8046320935160d7d633f4dac18db1..7bdd69567588b9cd48c8737c15068c2e521bf4e1 100644
--- a/java/com/android/dialer/searchfragment/QueryUtil.java
+++ b/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java
@@ -14,23 +14,18 @@
* limitations under the License
*/
-package com.android.dialer.searchfragment;
+package com.android.dialer.searchfragment.common;
import android.graphics.Typeface;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import android.telephony.PhoneNumberUtils;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.StyleSpan;
-import java.util.regex.Pattern;
-/** Contains utility methods for comparing and filtering strings with search queries. */
-final class QueryUtil {
-
- /** Matches strings with "-", "(", ")", 2-9 of at least length one. */
- static final Pattern T9_PATTERN = Pattern.compile("[\\-()2-9]+");
+/** Utility class for handling bolding queries contained in string. */
+public class QueryBoldingUtil {
/**
* Compares a name and query and returns a {@link CharSequence} with bolded characters.
@@ -47,7 +42,7 @@ final class QueryUtil {
* @param name of a contact/string that query will compare to
* @return name with query bolded if query can be found in the name.
*/
- static CharSequence getNameWithQueryBolded(@Nullable String query, @NonNull String name) {
+ public static CharSequence getNameWithQueryBolded(@Nullable String query, @NonNull String name) {
if (TextUtils.isEmpty(query)) {
return name;
}
@@ -55,9 +50,10 @@ final class QueryUtil {
int index = -1;
int numberOfBoldedCharacters = 0;
- if (nameMatchesT9Query(query, name)) {
+ if (QueryFilteringUtil.nameMatchesT9Query(query, name)) {
// Bold the characters that match the t9 query
- index = indexOfQueryNonDigitsIgnored(query, getT9Representation(name));
+ String t9 = QueryFilteringUtil.getT9Representation(name);
+ index = QueryFilteringUtil.indexOfQueryNonDigitsIgnored(query, t9);
if (index == -1) {
return getNameWithInitialsBolded(query, name);
}
@@ -98,7 +94,7 @@ final class QueryUtil {
while (++nameIndex < name.length() && initialsBolded < query.length()) {
if ((nameIndex == 0 || name.charAt(nameIndex - 1) == ' ')
- && getDigit(name.charAt(nameIndex)) == query.charAt(initialsBolded)) {
+ && QueryFilteringUtil.getDigit(name.charAt(nameIndex)) == query.charAt(initialsBolded)) {
boldedInitials.setSpan(
new StyleSpan(Typeface.BOLD),
nameIndex,
@@ -122,12 +118,13 @@ final class QueryUtil {
* @param number phone number of a contact that the query will compare to.
* @return number with query bolded if query can be found in the number.
*/
- static CharSequence getNumberWithQueryBolded(@Nullable String query, @NonNull String number) {
- if (TextUtils.isEmpty(query) || !numberMatchesNumberQuery(query, number)) {
+ public static CharSequence getNumberWithQueryBolded(
+ @Nullable String query, @NonNull String number) {
+ if (TextUtils.isEmpty(query) || !QueryFilteringUtil.numberMatchesNumberQuery(query, number)) {
return number;
}
- int index = indexOfQueryNonDigitsIgnored(query, number);
+ int index = QueryFilteringUtil.indexOfQueryNonDigitsIgnored(query, number);
int boldedCharacters = query.length();
for (char c : query.toCharArray()) {
@@ -154,116 +151,4 @@ final class QueryUtil {
new StyleSpan(Typeface.BOLD), index, index + numBolded, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return span;
}
-
- /**
- * @return true if the query is of T9 format and the name's T9 representation belongs to the
- * query; false otherwise.
- */
- static boolean nameMatchesT9Query(String query, String name) {
- if (!T9_PATTERN.matcher(query).matches()) {
- return false;
- }
-
- // Substring
- if (indexOfQueryNonDigitsIgnored(query, getT9Representation(name)) != -1) {
- return true;
- }
-
- // Check matches initials
- // TODO investigate faster implementation
- query = digitsOnly(query);
- int queryIndex = 0;
-
- String[] names = name.toLowerCase().split("\\s");
- for (int i = 0; i < names.length && queryIndex < query.length(); i++) {
- if (TextUtils.isEmpty(names[i])) {
- continue;
- }
-
- if (getDigit(names[i].charAt(0)) == query.charAt(queryIndex)) {
- queryIndex++;
- }
- }
-
- return queryIndex == query.length();
- }
-
- /** @return true if the number belongs to the query. */
- static boolean numberMatchesNumberQuery(String query, String number) {
- return PhoneNumberUtils.isGlobalPhoneNumber(query)
- && indexOfQueryNonDigitsIgnored(query, number) != -1;
- }
-
- /**
- * Checks if query is contained in number while ignoring all characters in both that are not
- * digits (i.e. {@link Character#isDigit(char)} returns false).
- *
- * @return index where query is found with all non-digits removed, -1 if it's not found.
- */
- private static int indexOfQueryNonDigitsIgnored(@NonNull String query, @NonNull String number) {
- return digitsOnly(number).indexOf(digitsOnly(query));
- }
-
- // Returns string with letters replaced with their T9 representation.
- private static String getT9Representation(String s) {
- StringBuilder builder = new StringBuilder(s.length());
- for (char c : s.toLowerCase().toCharArray()) {
- builder.append(getDigit(c));
- }
- return builder.toString();
- }
-
- /** @return String s with only digits recognized by Character#isDigit() remaining */
- static String digitsOnly(String s) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < s.length(); i++) {
- char c = s.charAt(i);
- if (Character.isDigit(c)) {
- sb.append(c);
- }
- }
- return sb.toString();
- }
-
- // Returns the T9 representation of a lower case character, otherwise returns the character.
- private static char getDigit(char c) {
- switch (c) {
- case 'a':
- case 'b':
- case 'c':
- return '2';
- case 'd':
- case 'e':
- case 'f':
- return '3';
- case 'g':
- case 'h':
- case 'i':
- return '4';
- case 'j':
- case 'k':
- case 'l':
- return '5';
- case 'm':
- case 'n':
- case 'o':
- return '6';
- case 'p':
- case 'q':
- case 'r':
- case 's':
- return '7';
- case 't':
- case 'u':
- case 'v':
- return '8';
- case 'w':
- case 'x':
- case 'y':
- case 'z':
- return '9';
- default:
- return c;
- }
- }
}
diff --git a/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..b23315b1505c384f19fbd8ea17e544c9ac4aec3b
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2017 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.searchfragment.common;
+
+import android.support.annotation.NonNull;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import java.util.regex.Pattern;
+
+/** Utility class for filtering, comparing and handling strings and queries. */
+public class QueryFilteringUtil {
+
+ /** Matches strings with "-", "(", ")", 2-9 of at least length one. */
+ static final Pattern T9_PATTERN = Pattern.compile("[\\-()2-9]+");
+
+ /**
+ * @return true if the query is of T9 format and the name's T9 representation belongs to the
+ * query; false otherwise.
+ */
+ public static boolean nameMatchesT9Query(String query, String name) {
+ if (!T9_PATTERN.matcher(query).matches()) {
+ return false;
+ }
+
+ // Substring
+ if (indexOfQueryNonDigitsIgnored(query, getT9Representation(name)) != -1) {
+ return true;
+ }
+
+ // Check matches initials
+ // TODO investigate faster implementation
+ query = digitsOnly(query);
+ int queryIndex = 0;
+
+ String[] names = name.toLowerCase().split("\\s");
+ for (int i = 0; i < names.length && queryIndex < query.length(); i++) {
+ if (TextUtils.isEmpty(names[i])) {
+ continue;
+ }
+
+ if (getDigit(names[i].charAt(0)) == query.charAt(queryIndex)) {
+ queryIndex++;
+ }
+ }
+
+ return queryIndex == query.length();
+ }
+
+ /** @return true if the number belongs to the query. */
+ public static boolean numberMatchesNumberQuery(String query, String number) {
+ return PhoneNumberUtils.isGlobalPhoneNumber(query)
+ && indexOfQueryNonDigitsIgnored(query, number) != -1;
+ }
+
+ /**
+ * Checks if query is contained in number while ignoring all characters in both that are not
+ * digits (i.e. {@link Character#isDigit(char)} returns false).
+ *
+ * @return index where query is found with all non-digits removed, -1 if it's not found.
+ */
+ static int indexOfQueryNonDigitsIgnored(@NonNull String query, @NonNull String number) {
+ return digitsOnly(number).indexOf(digitsOnly(query));
+ }
+
+ // Returns string with letters replaced with their T9 representation.
+ static String getT9Representation(String s) {
+ StringBuilder builder = new StringBuilder(s.length());
+ for (char c : s.toLowerCase().toCharArray()) {
+ builder.append(getDigit(c));
+ }
+ return builder.toString();
+ }
+
+ /** @return String s with only digits recognized by Character#isDigit() remaining */
+ public static String digitsOnly(String s) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (Character.isDigit(c)) {
+ sb.append(c);
+ }
+ }
+ return sb.toString();
+ }
+
+ // Returns the T9 representation of a lower case character, otherwise returns the character.
+ static char getDigit(char c) {
+ switch (c) {
+ case 'a':
+ case 'b':
+ case 'c':
+ return '2';
+ case 'd':
+ case 'e':
+ case 'f':
+ return '3';
+ case 'g':
+ case 'h':
+ case 'i':
+ return '4';
+ case 'j':
+ case 'k':
+ case 'l':
+ return '5';
+ case 'm':
+ case 'n':
+ case 'o':
+ return '6';
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ return '7';
+ case 't':
+ case 'u':
+ case 'v':
+ return '8';
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ return '9';
+ default:
+ return c;
+ }
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/res/layout/search_contact_row.xml b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
similarity index 80%
rename from java/com/android/dialer/searchfragment/res/layout/search_contact_row.xml
rename to java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
index efeca0e9d1e9b039529912ee77b319a79c1e7352..dd871af709ed43c4a4578d836696b282f2d32445 100644
--- a/java/com/android/dialer/searchfragment/res/layout/search_contact_row.xml
+++ b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
@@ -19,8 +19,8 @@
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="@dimen/search_row_height"
- android:paddingStart="16dp"
- android:paddingEnd="16dp"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp"
android:background="?android:attr/selectableItemBackground">
+ android:fontFamily="sans-serif"
+ style="@style/PrimaryText"/>
+ android:fontFamily="sans-serif"
+ style="@style/SecondaryText"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/res/values/dimens.xml b/java/com/android/dialer/searchfragment/common/res/values/dimens.xml
similarity index 100%
rename from java/com/android/dialer/searchfragment/res/values/dimens.xml
rename to java/com/android/dialer/searchfragment/common/res/values/dimens.xml
diff --git a/java/com/android/dialer/searchfragment/SearchContactCursor.java b/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java
similarity index 91%
rename from java/com/android/dialer/searchfragment/SearchContactCursor.java
rename to java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java
index 5006e1a6013eb6b86426ad5cd92321418c9b17e2..a2ef58c3cdbfe20b58f9c3f0ba992bbee4ea4470 100644
--- a/java/com/android/dialer/searchfragment/SearchContactCursor.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactCursor.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.searchfragment;
+package com.android.dialer.searchfragment.cp2;
import android.content.ContentResolver;
import android.database.CharArrayBuffer;
@@ -26,6 +26,8 @@ import android.os.Bundle;
import android.support.annotation.IntDef;
import android.support.annotation.Nullable;
import android.text.TextUtils;
+import com.android.dialer.searchfragment.common.Projections;
+import com.android.dialer.searchfragment.common.QueryFilteringUtil;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -37,7 +39,7 @@ import java.util.List;
* This cursor removes duplicate phone numbers associated with the same contact and can filter
* contacts based on a query by calling {@link #filter(String)}.
*/
-final class SearchContactCursor implements Cursor {
+public final class SearchContactCursor implements Cursor {
private final Cursor cursor;
// List of cursor ids that are valid for displaying after filtering.
@@ -61,10 +63,10 @@ final class SearchContactCursor implements Cursor {
}
/**
- * @param cursor with projection {@link SearchContactsCursorLoader#PHONE_PROJECTION}.
+ * @param cursor with projection {@link Projections#PHONE_PROJECTION}.
* @param query to filter cursor results.
*/
- SearchContactCursor(Cursor cursor, @Nullable String query) {
+ public SearchContactCursor(Cursor cursor, @Nullable String query) {
// TODO investigate copying this into a MatrixCursor and holding in memory
this.cursor = cursor;
filter(query);
@@ -77,7 +79,7 @@ final class SearchContactCursor implements Cursor {
*
*
* - A phone number
- *
- A T9 representation of a name (matches {@link QueryUtil#T9_PATTERN}).
+ *
- A T9 representation of a name (matches {@link QueryFilteringUtil#T9_PATTERN}).
*
- A name
*
*
@@ -89,7 +91,7 @@ final class SearchContactCursor implements Cursor {
* - Its name contains the query
*
*/
- void filter(@Nullable String query) {
+ public void filter(@Nullable String query) {
if (query == null) {
query = "";
}
@@ -108,8 +110,8 @@ final class SearchContactCursor implements Cursor {
while (cursor.moveToNext()) {
int position = cursor.getPosition();
- String currentNumber = cursor.getString(SearchContactsCursorLoader.PHONE_NUMBER);
- String currentName = cursor.getString(SearchContactsCursorLoader.PHONE_DISPLAY_NAME);
+ String currentNumber = cursor.getString(Projections.PHONE_NUMBER);
+ String currentName = cursor.getString(Projections.PHONE_DISPLAY_NAME);
if (!previousName.equals(currentName)) {
previousName = currentName;
@@ -138,8 +140,8 @@ final class SearchContactCursor implements Cursor {
}
if (TextUtils.isEmpty(query)
- || QueryUtil.nameMatchesT9Query(query, previousName)
- || QueryUtil.numberMatchesNumberQuery(query, previousMostQualifiedNumber)
+ || QueryFilteringUtil.nameMatchesT9Query(query, previousName)
+ || QueryFilteringUtil.numberMatchesNumberQuery(query, previousMostQualifiedNumber)
|| previousName.contains(query)) {
queryFilteredPositions.add(previousMostQualifiedPosition);
}
@@ -156,8 +158,8 @@ final class SearchContactCursor implements Cursor {
*/
private @Qualification int getQualification(String number, String mostQualifiedNumber) {
// Ignore formatting
- String numberDigits = QueryUtil.digitsOnly(number);
- String qualifiedNumberDigits = QueryUtil.digitsOnly(mostQualifiedNumber);
+ String numberDigits = QueryFilteringUtil.digitsOnly(number);
+ String qualifiedNumberDigits = QueryFilteringUtil.digitsOnly(mostQualifiedNumber);
// If the numbers are identical, return version with more formatting
if (qualifiedNumberDigits.equals(numberDigits)) {
diff --git a/java/com/android/dialer/searchfragment/SearchContactViewHolder.java b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
similarity index 77%
rename from java/com/android/dialer/searchfragment/SearchContactViewHolder.java
rename to java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
index 4ac6af33edcb5f9e708f0c9331a1c7697590b482..5f06b5991efb0fc18d78b15f177a6a89ef640f69 100644
--- a/java/com/android/dialer/searchfragment/SearchContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.searchfragment;
+package com.android.dialer.searchfragment.cp2;
import android.content.Context;
import android.content.res.Resources;
@@ -35,20 +35,19 @@ import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.dialer.callintent.CallInitiationType.Type;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.Assert;
+import com.android.dialer.searchfragment.common.Projections;
+import com.android.dialer.searchfragment.common.QueryBoldingUtil;
+import com.android.dialer.searchfragment.common.R;
import com.android.dialer.telecom.TelecomUtil;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
-/** ViewHolder for a contact row in {@link NewSearchFragment}. */
-final class SearchContactViewHolder extends ViewHolder implements OnClickListener {
+/** ViewHolder for a contact row. */
+public final class SearchContactViewHolder extends ViewHolder implements OnClickListener {
/** IntDef for the different types of actions that can be shown. */
@Retention(RetentionPolicy.SOURCE)
- @IntDef({
- SearchContactViewHolder.CallToAction.NONE,
- SearchContactViewHolder.CallToAction.VIDEO_CALL,
- SearchContactViewHolder.CallToAction.SHARE_AND_CALL
- })
+ @IntDef({CallToAction.NONE, CallToAction.VIDEO_CALL, CallToAction.SHARE_AND_CALL})
@interface CallToAction {
int NONE = 0;
int VIDEO_CALL = 1;
@@ -64,7 +63,7 @@ final class SearchContactViewHolder extends ViewHolder implements OnClickListene
private String number;
private @CallToAction int currentAction;
- SearchContactViewHolder(View view) {
+ public SearchContactViewHolder(View view) {
super(view);
view.setOnClickListener(this);
photo = view.findViewById(R.id.photo);
@@ -78,29 +77,29 @@ final class SearchContactViewHolder extends ViewHolder implements OnClickListene
* Binds the ViewHolder with a cursor from {@link SearchContactsCursorLoader} with the data found
* at the cursors set position.
*/
- void bind(Cursor cursor, String query) {
- number = cursor.getString(SearchContactsCursorLoader.PHONE_NUMBER);
- String name = cursor.getString(SearchContactsCursorLoader.PHONE_DISPLAY_NAME);
+ public void bind(Cursor cursor, String query) {
+ number = cursor.getString(Projections.PHONE_NUMBER);
+ String name = cursor.getString(Projections.PHONE_DISPLAY_NAME);
String label = getLabel(context.getResources(), cursor);
String secondaryInfo =
TextUtils.isEmpty(label)
? number
- : context.getString(R.string.call_subject_type_and_number, label, number);
+ : context.getString(
+ com.android.contacts.common.R.string.call_subject_type_and_number, label, number);
- nameOrNumberView.setText(QueryUtil.getNameWithQueryBolded(query, name));
- numberView.setText(QueryUtil.getNumberWithQueryBolded(query, secondaryInfo));
+ nameOrNumberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name));
+ numberView.setText(QueryBoldingUtil.getNumberWithQueryBolded(query, secondaryInfo));
setCallToAction(cursor);
if (shouldShowPhoto(cursor, name)) {
nameOrNumberView.setVisibility(View.VISIBLE);
photo.setVisibility(View.VISIBLE);
- photo.setContentDescription(context.getString(R.string.description_quick_contact_for, name));
- String photoUri = cursor.getString(SearchContactsCursorLoader.PHONE_PHOTO_URI);
+ String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI);
ContactPhotoManager.getInstance(context)
.loadDialerThumbnailOrPhoto(
photo,
getContactUri(cursor),
- cursor.getLong(SearchContactsCursorLoader.PHONE_PHOTO_ID),
+ cursor.getLong(Projections.PHONE_PHOTO_ID),
photoUri == null ? null : Uri.parse(photoUri),
name,
LetterTileDrawable.TYPE_DEFAULT);
@@ -116,23 +115,23 @@ final class SearchContactViewHolder extends ViewHolder implements OnClickListene
return true;
} else {
cursor.moveToPosition(currentPosition - 1);
- String previousName = cursor.getString(SearchContactsCursorLoader.PHONE_DISPLAY_NAME);
+ String previousName = cursor.getString(Projections.PHONE_DISPLAY_NAME);
cursor.moveToPosition(currentPosition);
return !currentName.equals(previousName);
}
}
private static Uri getContactUri(Cursor cursor) {
- long contactId = cursor.getLong(SearchContactsCursorLoader.PHONE_ID);
- String lookupKey = cursor.getString(SearchContactsCursorLoader.PHONE_LOOKUP_KEY);
+ long contactId = cursor.getLong(Projections.PHONE_ID);
+ String lookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
return Contacts.getLookupUri(contactId, lookupKey);
}
// TODO: handle CNAP and cequint types.
// TODO: unify this into a utility method with CallLogAdapter#getNumberType
private static String getLabel(Resources resources, Cursor cursor) {
- int numberType = cursor.getInt(SearchContactsCursorLoader.PHONE_TYPE);
- String numberLabel = cursor.getString(SearchContactsCursorLoader.PHONE_LABEL);
+ int numberType = cursor.getInt(Projections.PHONE_TYPE);
+ String numberLabel = cursor.getString(Projections.PHONE_LABEL);
// Returns empty label instead of "custom" if the custom label is empty.
if (numberType == Phone.TYPE_CUSTOM && TextUtils.isEmpty(numberLabel)) {
@@ -150,7 +149,8 @@ final class SearchContactViewHolder extends ViewHolder implements OnClickListene
break;
case CallToAction.SHARE_AND_CALL:
callToActionView.setVisibility(View.VISIBLE);
- callToActionView.setImageDrawable(context.getDrawable(R.drawable.ic_phone_attach));
+ callToActionView.setImageDrawable(
+ context.getDrawable(com.android.contacts.common.R.drawable.ic_phone_attach));
callToActionView.setOnClickListener(this);
break;
case CallToAction.VIDEO_CALL:
@@ -166,7 +166,7 @@ final class SearchContactViewHolder extends ViewHolder implements OnClickListene
}
private static @CallToAction int getCallToAction(Cursor cursor) {
- int carrierPresence = cursor.getInt(SearchContactsCursorLoader.PHONE_CARRIER_PRESENCE);
+ int carrierPresence = cursor.getInt(Projections.PHONE_CARRIER_PRESENCE);
if ((carrierPresence & Phone.CARRIER_PRESENCE_VT_CAPABLE) == 1) {
return CallToAction.VIDEO_CALL;
}
@@ -181,7 +181,8 @@ final class SearchContactViewHolder extends ViewHolder implements OnClickListene
switch (currentAction) {
case CallToAction.SHARE_AND_CALL:
callToActionView.setVisibility(View.VISIBLE);
- callToActionView.setImageDrawable(context.getDrawable(R.drawable.ic_phone_attach));
+ callToActionView.setImageDrawable(
+ context.getDrawable(com.android.contacts.common.R.drawable.ic_phone_attach));
// TODO: open call composer.
break;
case CallToAction.VIDEO_CALL:
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
new file mode 100644
index 0000000000000000000000000000000000000000..c72f28b25abc4df48d4706ec8aa0143b6d3d0a4e
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2017 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.searchfragment.cp2;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import com.android.dialer.searchfragment.common.Projections;
+
+/** Cursor Loader for CP2 contacts. */
+public final class SearchContactsCursorLoader extends CursorLoader {
+
+ public SearchContactsCursorLoader(Context context) {
+ super(
+ context,
+ Phone.CONTENT_URI,
+ Projections.PHONE_PROJECTION,
+ null,
+ null,
+ Phone.SORT_KEY_PRIMARY + " ASC");
+ }
+
+ @Override
+ public Cursor loadInBackground() {
+ return new SearchContactCursor(super.loadInBackground(), null);
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/AndroidManifest.xml b/java/com/android/dialer/searchfragment/list/AndroidManifest.xml
similarity index 91%
rename from java/com/android/dialer/searchfragment/AndroidManifest.xml
rename to java/com/android/dialer/searchfragment/list/AndroidManifest.xml
index 88ce67c133317e7cff7392990dd35444ce07f135..e0890cc2c48abef7e2e9c41bbbaeba1246493c6b 100644
--- a/java/com/android/dialer/searchfragment/AndroidManifest.xml
+++ b/java/com/android/dialer/searchfragment/list/AndroidManifest.xml
@@ -13,4 +13,4 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java b/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd35b13eecae01e748872d5e273067ce0da70707
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2017 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.searchfragment.list;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+
+/** ViewHolder for header rows in {@link NewSearchFragment}. */
+final class HeaderViewHolder extends RecyclerView.ViewHolder {
+
+ private final TextView header;
+
+ HeaderViewHolder(View view) {
+ super(view);
+ header = view.findViewById(R.id.header);
+ }
+
+ public void setHeader(String header) {
+ this.header.setText(header);
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
new file mode 100644
index 0000000000000000000000000000000000000000..fcc87c386d33cb83e824d23487ba6f800aa35a7c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2017 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.searchfragment.list;
+
+import android.app.Fragment;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Loader;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
+import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.searchfragment.cp2.SearchContactsCursorLoader;
+import com.android.dialer.searchfragment.nearbyplaces.NearbyPlacesCursorLoader;
+
+/** Fragment used for searching contacts. */
+public final class NewSearchFragment extends Fragment implements LoaderCallbacks {
+
+ // Since some of our queries can generate network requests, we should delay them until the user
+ // stops typing to prevent generating too much network traffic.
+ private static final int NETWORK_SEARCH_DELAY_MILLIS = 300;
+
+ private static final int CONTACTS_LOADER_ID = 0;
+ private static final int NEARBY_PLACES_ID = 1;
+
+ private RecyclerView recyclerView;
+ private SearchAdapter adapter;
+ private String query;
+
+ private final Runnable loadNearbyPlacesRunnable =
+ () -> getLoaderManager().restartLoader(NEARBY_PLACES_ID, null, this);
+
+ @Nullable
+ @Override
+ public View onCreateView(
+ LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) {
+ getLoaderManager().initLoader(0, null, this);
+ View view = inflater.inflate(R.layout.fragment_search, parent, false);
+ adapter = new SearchAdapter(getContext());
+ recyclerView = view.findViewById(R.id.recycler_view);
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ recyclerView.setAdapter(adapter);
+
+ getLoaderManager().initLoader(CONTACTS_LOADER_ID, null, this);
+ loadNearbyPlacesCursor();
+ return view;
+ }
+
+ @Override
+ public Loader onCreateLoader(int id, Bundle bundle) {
+ // TODO add enterprise loader
+ if (id == CONTACTS_LOADER_ID) {
+ return new SearchContactsCursorLoader(getContext());
+ } else if (id == NEARBY_PLACES_ID) {
+ return new NearbyPlacesCursorLoader(getContext(), query);
+ } else {
+ throw new IllegalStateException("Invalid loader id: " + id);
+ }
+ }
+
+ @Override
+ public void onLoadFinished(Loader loader, Cursor cursor) {
+ if (loader instanceof SearchContactsCursorLoader) {
+ adapter.setContactsCursor(cursor);
+ } else if (loader instanceof NearbyPlacesCursorLoader) {
+ adapter.setNearbyPlacesCursor(cursor);
+ } else {
+ throw new IllegalStateException("Invalid loader: " + loader);
+ }
+ }
+
+ @Override
+ public void onLoaderReset(Loader loader) {
+ adapter.clear();
+ recyclerView.setAdapter(null);
+ }
+
+ public void setQuery(String query) {
+ this.query = query;
+ if (adapter != null) {
+ adapter.setQuery(query);
+ loadNearbyPlacesCursor();
+ }
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ // close adapters
+ adapter.setNearbyPlacesCursor(null);
+ adapter.setContactsCursor(null);
+ ThreadUtil.getUiThreadHandler().removeCallbacks(loadNearbyPlacesRunnable);
+ }
+
+ private void loadNearbyPlacesCursor() {
+ // Cancel existing load if one exists.
+ ThreadUtil.getUiThreadHandler().removeCallbacks(loadNearbyPlacesRunnable);
+
+ // If nearby places is not enabled, do not try to load them.
+ if (!PhoneDirectoryExtenderAccessor.get(getContext()).isEnabled(getContext())) {
+ return;
+ }
+ ThreadUtil.getUiThreadHandler()
+ .postDelayed(loadNearbyPlacesRunnable, NETWORK_SEARCH_DELAY_MILLIS);
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
similarity index 56%
rename from java/com/android/dialer/searchfragment/SearchAdapter.java
rename to java/com/android/dialer/searchfragment/list/SearchAdapter.java
index 8f52415579e421a0c36b35cef74717879b74a5c4..023513e478a371e2818cd37ef2d5d1bcb56c055a 100644
--- a/java/com/android/dialer/searchfragment/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.searchfragment;
+package com.android.dialer.searchfragment.list;
import android.content.Context;
import android.database.Cursor;
@@ -23,7 +23,9 @@ import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.android.dialer.common.Assert;
-import com.android.dialer.searchfragment.SearchCursorManager.RowType;
+import com.android.dialer.searchfragment.cp2.SearchContactViewHolder;
+import com.android.dialer.searchfragment.list.SearchCursorManager.RowType;
+import com.android.dialer.searchfragment.nearbyplaces.NearbyPlaceViewHolder;
/** RecyclerView adapter for {@link NewSearchFragment}. */
class SearchAdapter extends RecyclerView.Adapter {
@@ -38,33 +40,50 @@ class SearchAdapter extends RecyclerView.Adapter {
this.context = context;
}
- // TODO: fill in the rest of the view holders.
@Override
- public ViewHolder onCreateViewHolder(ViewGroup root, int position) {
- @RowType int rowType = searchCursorManager.getRowType(position);
+ public ViewHolder onCreateViewHolder(ViewGroup root, @RowType int rowType) {
switch (rowType) {
case RowType.CONTACT_ROW:
return new SearchContactViewHolder(
LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false));
+ case RowType.NEARBY_PLACES_ROW:
+ return new NearbyPlaceViewHolder(
+ LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false));
case RowType.DIRECTORY_HEADER:
- case RowType.DIRECTORY_ROW:
- case RowType.INVALID:
case RowType.NEARBY_PLACES_HEADER:
- case RowType.NEARBY_PLACES_ROW:
- return null;
+ return new HeaderViewHolder(
+ LayoutInflater.from(context).inflate(R.layout.header_layout, root, false));
+ case RowType.DIRECTORY_ROW: // TODO: add directory rows to search
+ case RowType.INVALID:
default:
throw Assert.createIllegalStateFailException("Invalid RowType: " + rowType);
}
}
+ @Override
+ public @RowType int getItemViewType(int position) {
+ return searchCursorManager.getRowType(position);
+ }
+
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
- Cursor cursor = searchCursorManager.getCursor(position);
- ((SearchContactViewHolder) holder).bind(cursor, query);
+ if (holder instanceof SearchContactViewHolder) {
+ Cursor cursor = searchCursorManager.getCursor(position);
+ ((SearchContactViewHolder) holder).bind(cursor, query);
+ } else if (holder instanceof NearbyPlaceViewHolder) {
+ Cursor cursor = searchCursorManager.getCursor(position);
+ ((NearbyPlaceViewHolder) holder).bind(cursor, query);
+ } else if (holder instanceof HeaderViewHolder) {
+ String header = context.getString(searchCursorManager.getHeaderText(position));
+ ((HeaderViewHolder) holder).setHeader(header);
+ } else {
+ throw Assert.createIllegalStateFailException("Invalid ViewHolder: " + holder);
+ }
}
void setContactsCursor(Cursor cursor) {
searchCursorManager.setContactsCursor(cursor);
+ notifyDataSetChanged();
}
void clear() {
@@ -81,4 +100,9 @@ class SearchAdapter extends RecyclerView.Adapter {
searchCursorManager.setQuery(query);
notifyDataSetChanged();
}
+
+ public void setNearbyPlacesCursor(Cursor nearbyPlacesCursor) {
+ searchCursorManager.setNearbyPlacesCursor(nearbyPlacesCursor);
+ notifyDataSetChanged();
+ }
}
diff --git a/java/com/android/dialer/searchfragment/SearchCursorManager.java b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
similarity index 84%
rename from java/com/android/dialer/searchfragment/SearchCursorManager.java
rename to java/com/android/dialer/searchfragment/list/SearchCursorManager.java
index 64c4fc1707653da56bad1b3ef5549a66b4f182b0..216a9ada942e7d08c9c5d3702a234d3d2d2fa345 100644
--- a/java/com/android/dialer/searchfragment/SearchCursorManager.java
+++ b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
@@ -14,11 +14,13 @@
* limitations under the License
*/
-package com.android.dialer.searchfragment;
+package com.android.dialer.searchfragment.list;
import android.database.Cursor;
import android.support.annotation.IntDef;
+import android.support.annotation.StringRes;
import com.android.dialer.common.Assert;
+import com.android.dialer.searchfragment.cp2.SearchContactCursor;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -73,6 +75,14 @@ final class SearchCursorManager {
private Cursor corpDirectoryCursor = null;
void setContactsCursor(Cursor cursor) {
+ if (cursor == contactsCursor) {
+ return;
+ }
+
+ if (contactsCursor != null && !contactsCursor.isClosed()) {
+ contactsCursor.close();
+ }
+
if (cursor != null && cursor.getCount() > 0) {
contactsCursor = cursor;
} else {
@@ -81,6 +91,14 @@ final class SearchCursorManager {
}
void setNearbyPlacesCursor(Cursor cursor) {
+ if (cursor == nearbyPlacesCursor) {
+ return;
+ }
+
+ if (nearbyPlacesCursor != null && !nearbyPlacesCursor.isClosed()) {
+ nearbyPlacesCursor.close();
+ }
+
if (cursor != null && cursor.getCount() > 0) {
nearbyPlacesCursor = cursor;
} else {
@@ -89,6 +107,14 @@ final class SearchCursorManager {
}
void setCorpDirectoryCursor(Cursor cursor) {
+ if (cursor == corpDirectoryCursor) {
+ return;
+ }
+
+ if (corpDirectoryCursor != null && !corpDirectoryCursor.isClosed()) {
+ corpDirectoryCursor.close();
+ }
+
if (cursor != null && cursor.getCount() > 0) {
corpDirectoryCursor = cursor;
} else {
@@ -98,6 +124,7 @@ final class SearchCursorManager {
void setQuery(String query) {
if (contactsCursor != null) {
+ // TODO: abstract this
((SearchContactCursor) contactsCursor).filter(query);
}
}
@@ -209,6 +236,23 @@ final class SearchCursorManager {
throw Assert.createIllegalStateFailException("No valid cursor.");
}
+ @StringRes
+ int getHeaderText(int position) {
+ @RowType int rowType = getRowType(position);
+ switch (rowType) {
+ case RowType.NEARBY_PLACES_HEADER:
+ return R.string.nearby_places;
+ case RowType.DIRECTORY_HEADER: // TODO
+ case RowType.DIRECTORY_ROW:
+ case RowType.CONTACT_ROW:
+ case RowType.NEARBY_PLACES_ROW:
+ case RowType.INVALID:
+ default:
+ throw Assert.createIllegalStateFailException(
+ "Invalid row type, position " + position + " is rowtype " + rowType);
+ }
+ }
+
/** removes all cursors. */
void clear() {
if (contactsCursor != null) {
diff --git a/java/com/android/dialer/searchfragment/res/layout/fragment_search.xml b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
similarity index 100%
rename from java/com/android/dialer/searchfragment/res/layout/fragment_search.xml
rename to java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
diff --git a/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml b/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml
new file mode 100644
index 0000000000000000000000000000000000000000..36af42ed9f2986b9d60836cd53765ca7f2b525fb
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/list/res/layout/header_layout.xml
@@ -0,0 +1,22 @@
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..178cd83c3967d4c5314ced7f9cd1fd315ef77738
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
new file mode 100644
index 0000000000000000000000000000000000000000..b6e5a9013f65310be3c15fe4286d50572ea498e2
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2017 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.searchfragment.nearbyplaces;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.searchfragment.common.Projections;
+import com.android.dialer.searchfragment.common.QueryBoldingUtil;
+import com.android.dialer.searchfragment.common.R;
+import com.android.dialer.telecom.TelecomUtil;
+
+/** ViewHolder for a nearby place row. */
+public final class NearbyPlaceViewHolder extends RecyclerView.ViewHolder
+ implements View.OnClickListener {
+
+ private final Context context;
+ private final TextView placeName;
+ private final TextView placeAddress;
+ private final QuickContactBadge photo;
+
+ private String number;
+
+ public NearbyPlaceViewHolder(View view) {
+ super(view);
+ view.setOnClickListener(this);
+ photo = view.findViewById(R.id.photo);
+ placeName = view.findViewById(R.id.primary);
+ placeAddress = view.findViewById(R.id.secondary);
+ context = view.getContext();
+ }
+
+ /**
+ * Binds the ViewHolder with a cursor from {@link NearbyPlacesCursorLoader} with the data found at
+ * the cursors set position.
+ */
+ public void bind(Cursor cursor, String query) {
+ number = cursor.getString(Projections.PHONE_NUMBER);
+ String name = cursor.getString(Projections.PHONE_DISPLAY_NAME);
+ String address = cursor.getString(Projections.PHONE_LABEL);
+
+ placeName.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name));
+ placeAddress.setText(QueryBoldingUtil.getNameWithQueryBolded(query, address));
+
+ String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI);
+ ContactPhotoManager.getInstance(context)
+ .loadDialerThumbnailOrPhoto(
+ photo,
+ getContactUri(cursor),
+ cursor.getLong(Projections.PHONE_PHOTO_ID),
+ photoUri == null ? null : Uri.parse(photoUri),
+ name,
+ LetterTileDrawable.TYPE_DEFAULT);
+ }
+
+ private static Uri getContactUri(Cursor cursor) {
+ long contactId = cursor.getLong(Projections.PHONE_ID);
+ String lookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY);
+ return ContactsContract.Contacts.getLookupUri(contactId, lookupKey);
+ }
+
+ @Override
+ public void onClick(View v) {
+ TelecomUtil.placeCall(
+ context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH).build());
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
new file mode 100644
index 0000000000000000000000000000000000000000..9f3193e9223aa3aea3cc0cdafa26b2b16a78150a
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 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.searchfragment.nearbyplaces;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
+import com.android.dialer.searchfragment.common.Projections;
+
+/** Cursor loader for nearby places search results. */
+public final class NearbyPlacesCursorLoader extends CursorLoader {
+
+ private static final String MAX_RESULTS = "3";
+
+ public NearbyPlacesCursorLoader(Context context, String query) {
+ super(context, getContentUri(context, query), Projections.PHONE_PROJECTION, null, null, null);
+ }
+
+ private static Uri getContentUri(Context context, String query) {
+ return PhoneDirectoryExtenderAccessor.get(context)
+ .getContentUri()
+ .buildUpon()
+ .appendPath(query)
+ .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, MAX_RESULTS)
+ .build();
+ }
+}
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-af/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-af/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..21eb4b11d9294e4f391b466808d55022c9b88396
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-af/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Nabygeleë plekke"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-am/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-am/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-am/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ar/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ar/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d68b4d1ee597c89bd13b6847151358cf3441bf47
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ar/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "الأماكن المجاورة"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-az/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-az/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-az/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bb9f06fe7666dc25c37ce0772e1dcdbf203098d6
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Obližnja mesta"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-be/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-be/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-be/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bg/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bg/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e8839532afe089d68c977109bfcb6ca0cc595881
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bg/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Места в района"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bn/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bn/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4bc3fedb43c4771fe4fde7baa6d883d12b615d2d
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bn/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "আশপাশের জায়গাগুলি"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bs/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bs/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f3fb92187d7646892eb4458da74302a49aa7f2c0
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-bs/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Mjesta u blizini"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ca/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ca/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ca/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-cs/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-cs/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-cs/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-da/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-da/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-da/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-de/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-de/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e2db4a325a92027be618f36cae024a7040b41f4
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-de/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Orte in der Nähe"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-el/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-el/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-el/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rAU/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0778273154aa2ca279c4b76ee535cf76aca62478
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rAU/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Places nearby"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rGB/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0778273154aa2ca279c4b76ee535cf76aca62478
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rGB/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Places nearby"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rIN/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0778273154aa2ca279c4b76ee535cf76aca62478
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-en-rIN/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Places nearby"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es-rUS/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es-rUS/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fada6bcafe7c9e9e7609ff5f2c90d3e0e06e0d0c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-es/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Sitios cercanos"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-et/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-et/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-et/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-eu/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-eu/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-eu/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fa/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fa/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fa/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fi/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fi/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fi/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr-rCA/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d65e7bd5523b72fec6a03a98557f473cb8845497
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr-rCA/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Adresses à proximité"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d65e7bd5523b72fec6a03a98557f473cb8845497
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-fr/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Adresses à proximité"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5a4cce7e083ded49212424f447978e25f63dd28e
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gl/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Lugares próximos"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gu/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gu/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ee32e466f8a3d1d178fd15bb807b93fbae929647
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-gu/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "નજીકના સ્થળો"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hi/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hi/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..079c03e0467d55bf2cf575157d9c7c8bb50e6355
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hi/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "आस-पास के स्थल"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hr/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hr/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hu/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hu/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hu/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hy/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hy/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3a2ba393844375cbf4bc148c25a347f9cbe3d0d7
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-hy/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Մոտակա վայրեր"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-in/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-in/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-in/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-is/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-is/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-is/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-it/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-it/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-it/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-iw/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-iw/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0f07995f3283ada28bbe4d59e7242cf213dc9f97
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-iw/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "מקומות קרובים"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ja/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ja/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ja/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ka/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ka/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ka/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kk/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kk/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kk/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-km/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-km/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-km/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kn/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kn/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-kn/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ko/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ko/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f05a332898f22ac965e3701c0d81bdd4d0cb5023
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ko/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "주변 장소"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ky/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ky/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ky/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lo/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lo/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2ff0e854821f2e3355b3b7d31c843a1e9634f59d
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lo/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "ສະຖານທີ່ໃກ້ຄຽງ"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lt/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lt/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9baf54044cb04a2a7e41135a81dea1eb0a50deb9
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lt/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Netoliese esančios vietos"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lv/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lv/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-lv/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mk/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mk/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mk/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ml/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ml/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ml/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mn/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mn/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..707a6c955947258b5dd6eacf9a57bf380a62fec9
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mn/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Ойролцоох газрууд"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mr/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..862cd041947e54a6bf880032c1d07fb0d1e4674a
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-mr/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "जवळपासची ठिकाणे"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ms/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ms/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aed0bbb4d01aa09b3c20cf78b57a20cb066180f9
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ms/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Tempat berdekatan"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-my/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-my/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..74e60a089f939f082ac6ec457332ddd7c39548fa
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-my/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "အနီးတဝိုက်ရှိ နေရာများ"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nb/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nb/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nb/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ne/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ne/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..29b6854fec040a372eb910ea83a8fdd54d784528
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ne/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "नजिकका स्थानहरू"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-nl/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-no/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-no/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-no/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pa/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pa/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d4d472a3c8eb8125cbe674c8e9f33341b9af0bb
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pa/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "ਨਜ਼ਦੀਕੀ ਸਥਾਨ"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c00b6081a86bcf050986da5b05eb78100236b820
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pl/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Miejsca w pobliżu"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rBR/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rBR/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rPT/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt-rPT/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-pt/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ro/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ro/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ro/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ru/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ru/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ru/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-si/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-si/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-si/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sk/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sk/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sk/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sl/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sq/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sq/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sq/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sr/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..21af04328e32dc8ad10441feab6f978f01776004
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sr/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Оближња места"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sv/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sv/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c309b8df47575787c09a6da1fc11e925c7660b53
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sv/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Platser i närheten"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sw/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sw/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-sw/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ta/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ta/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ce7496e530a17dac5e746e744f5995da41bf0f81
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ta/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "அருகிலுள்ள இடங்கள்"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-te/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-te/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c8229fb649c491fe80e2ec1fbc59de475a1c156f
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-te/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "సమీప స్థలాలు"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-th/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-th/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1167d2f57b023f5b7ea8e1a94e9aee649c250bb1
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-th/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "สถานที่ใกล้เคียง"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tl/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tl/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tr/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tr/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-tr/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uk/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uk/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a3936be25633040dfe21bc9b6c56fd23e931288b
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uk/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "Місця поблизу"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ur/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ur/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a220b3c22a11b9bc2c7751e4f6cf9b53476dd95
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-ur/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "قریبی مقامات"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uz/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uz/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-uz/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-vi/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-vi/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-vi/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rCN/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e060cb589fa91b14e3fc5c35ccfb99abfe1bf82f
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rCN/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "附近的地点"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rHK/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5cdf5b9a77fbe5e83e31db5c783d01bc4d84776f
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rHK/strings.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ "附近地點"
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rTW/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zh-rTW/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zu/strings.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zu/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8039ea04abe795cd14324416cdfb01861c56db5c
--- /dev/null
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values-zu/strings.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/notification/res/values/ids.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml
similarity index 59%
rename from java/com/android/dialer/notification/res/values/ids.xml
rename to java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml
index c965f319d89b5a676ceb530e9884d18b6e3c3056..ed8068018b125d372b34d0f87bf81e375f7b87b3 100644
--- a/java/com/android/dialer/notification/res/values/ids.xml
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/values/strings.xml
@@ -14,14 +14,7 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-
-
-
-
-
-
-
-
-
-
+
+ Nearby places
+
\ No newline at end of file
diff --git a/java/com/android/dialer/shortcuts/Shortcuts.java b/java/com/android/dialer/shortcuts/Shortcuts.java
index b6a7fa82ad429662815e357d26b12d82ab19454b..c2bbb4dde3506d39eb054e4ed06ce2e7bbac279f 100644
--- a/java/com/android/dialer/shortcuts/Shortcuts.java
+++ b/java/com/android/dialer/shortcuts/Shortcuts.java
@@ -18,7 +18,7 @@ package com.android.dialer.shortcuts;
import android.content.Context;
import android.support.annotation.NonNull;
-import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.configprovider.ConfigProviderBindings;
/** Checks if dynamic shortcuts should be enabled. */
public class Shortcuts {
diff --git a/java/com/android/dialer/simulator/impl/SimulatorContacts.java b/java/com/android/dialer/simulator/impl/SimulatorContacts.java
index c5e25b357a33c04e6be8c958b4d4b857df001d8f..e77788f02f43851bcad4ea0f1d892eb520bea5d9 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorContacts.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorContacts.java
@@ -134,7 +134,7 @@ final class SimulatorContacts {
ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, contact.getAccountType())
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.getAccountName())
- .withValue(ContactsContract.RawContacts.STARRED, contact.getIsStarred())
+ .withValue(ContactsContract.RawContacts.STARRED, contact.getIsStarred() ? 1 : 0)
.withYieldAllowed(true)
.build());
diff --git a/java/com/android/dialer/telecom/TelecomUtil.java b/java/com/android/dialer/telecom/TelecomUtil.java
index 82b43835fa95c64566255745c4f8e12bf16d2dfc..573bfe2d9d22d3c22c6f9090c752e5f175b32806 100644
--- a/java/com/android/dialer/telecom/TelecomUtil.java
+++ b/java/com/android/dialer/telecom/TelecomUtil.java
@@ -29,9 +29,12 @@ import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.text.TextUtils;
+import android.util.Pair;
import com.android.dialer.common.LogUtil;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/**
* Performs permission checks before calling into TelecomManager. Each method is self-explanatory -
@@ -45,6 +48,14 @@ public abstract class TelecomUtil {
private static TelecomUtilImpl instance = new TelecomUtilImpl();
+ /**
+ * Cache for {@link #isVoicemailNumber(Context, PhoneAccountHandle, String)}. Both
+ * PhoneAccountHandle and number are cached because multiple numbers might be mapped to true, and
+ * comparing with {@link #getVoicemailNumber(Context, PhoneAccountHandle)} will not suffice.
+ */
+ private static final Map, Boolean> isVoicemailNumberCache =
+ new ConcurrentHashMap<>();
+
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
public static void setInstanceForTesting(TelecomUtilImpl instanceForTesting) {
instance = instanceForTesting;
@@ -133,12 +144,27 @@ public abstract class TelecomUtil {
return instance.isInCall(context);
}
+ /**
+ * {@link TelecomManager#isVoiceMailNumber(PhoneAccountHandle, String)} takes about 10ms, which is
+ * way too slow for regular purposes. This method will cache the result for the life time of the
+ * process. The cache will not be invalidated, for example, if the voicemail number is changed by
+ * setting up apps like Google Voicemail, the result will be wrong. These events are rare.
+ */
public static boolean isVoicemailNumber(
Context context, PhoneAccountHandle accountHandle, String number) {
+ if (TextUtils.isEmpty(number)) {
+ return false;
+ }
+ Pair cacheKey = new Pair<>(accountHandle, number);
+ if (isVoicemailNumberCache.containsKey(cacheKey)) {
+ return isVoicemailNumberCache.get(cacheKey);
+ }
+ boolean result = false;
if (hasReadPhoneStatePermission(context)) {
- return getTelecomManager(context).isVoiceMailNumber(accountHandle, number);
+ result = getTelecomManager(context).isVoiceMailNumber(accountHandle, number);
}
- return false;
+ isVoicemailNumberCache.put(cacheKey, result);
+ return result;
}
@Nullable
diff --git a/java/com/android/dialer/util/CallUtil.java b/java/com/android/dialer/util/CallUtil.java
index b6ab3b30e0843cd60ed05aea78e9d0239f98b5a0..0afe930c9e4b1637a27ee51ebcd5a935c3763ea5 100644
--- a/java/com/android/dialer/util/CallUtil.java
+++ b/java/com/android/dialer/util/CallUtil.java
@@ -122,7 +122,7 @@ public class CallUtil {
cachedIsVideoEnabledState = isVideoEnabled;
}
- return true;
+ return isVideoEnabled;
}
/**
diff --git a/java/com/android/dialer/util/PermissionsUtil.java b/java/com/android/dialer/util/PermissionsUtil.java
index 72a59eaefea0d0494c06398193ded3ac1796a3ce..34828317d685c23e40efb3b62013f30116582f86 100644
--- a/java/com/android/dialer/util/PermissionsUtil.java
+++ b/java/com/android/dialer/util/PermissionsUtil.java
@@ -16,15 +16,33 @@
package com.android.dialer.util;
+import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
+import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static android.Manifest.permission.ADD_VOICEMAIL;
+import static android.Manifest.permission.CALL_PHONE;
+import static android.Manifest.permission.MODIFY_PHONE_STATE;
+import static android.Manifest.permission.READ_CALL_LOG;
+import static android.Manifest.permission.READ_CONTACTS;
+import static android.Manifest.permission.READ_PHONE_STATE;
+import static android.Manifest.permission.READ_VOICEMAIL;
+import static android.Manifest.permission.WRITE_CALL_LOG;
+import static android.Manifest.permission.WRITE_CONTACTS;
+import static android.Manifest.permission.WRITE_VOICEMAIL;
+
import android.Manifest.permission;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
+import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.LocalBroadcastManager;
import com.android.dialer.common.LogUtil;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
/** Utility class to help with runtime permissions. */
public class PermissionsUtil {
@@ -32,6 +50,27 @@ public class PermissionsUtil {
private static final String PERMISSION_PREFERENCE = "dialer_permissions";
private static final String CEQUINT_PERMISSION = "com.cequint.ecid.CALLER_ID_LOOKUP";
+ // Permissions list retrieved from application manifest.
+ // Starting in Android O Permissions must be explicitly enumerated:
+ // https://developer.android.com/preview/behavior-changes.html#rmp
+ public static final List allPhoneGroupPermissionsUsedInDialer =
+ Collections.unmodifiableList(
+ Arrays.asList(
+ READ_CALL_LOG,
+ WRITE_CALL_LOG,
+ READ_PHONE_STATE,
+ MODIFY_PHONE_STATE,
+ CALL_PHONE,
+ ADD_VOICEMAIL,
+ WRITE_VOICEMAIL,
+ READ_VOICEMAIL));
+
+ public static final List allContactsGroupPermissionsUsedInDialer =
+ Collections.unmodifiableList(Arrays.asList(READ_CONTACTS, WRITE_CONTACTS));
+
+ public static final List allLocationGroupPermissionsUsedInDialer =
+ Collections.unmodifiableList(Arrays.asList(ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION));
+
public static boolean hasPhonePermissions(Context context) {
return hasPermission(context, permission.CALL_PHONE);
}
@@ -72,15 +111,15 @@ public class PermissionsUtil {
return hasPermission(context, permission.WRITE_VOICEMAIL);
}
+ public static boolean hasAddVoicemailPermissions(Context context) {
+ return hasPermission(context, permission.ADD_VOICEMAIL);
+ }
+
public static boolean hasPermission(Context context, String permission) {
return ContextCompat.checkSelfPermission(context, permission)
== PackageManager.PERMISSION_GRANTED;
}
- public static boolean hasAddVoicemailPermissions(Context context) {
- return hasPermission(context, permission.ADD_VOICEMAIL);
- }
-
/**
* Checks {@link android.content.SharedPreferences} if a permission has been requested before.
*
@@ -147,4 +186,25 @@ public class PermissionsUtil {
final Intent intent = new Intent(permission);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
+
+ /**
+ * Returns a list of permissions currently not granted to the application from the supplied list.
+ *
+ * @param context - The Application context.
+ * @param permissionsList - A list of permissions to check if the current application has been
+ * granted.
+ * @return An array of permissions that are currently DENIED to the application; a subset of
+ * permissionsList.
+ */
+ @NonNull
+ public static String[] getPermissionsCurrentlyDenied(
+ @NonNull Context context, @NonNull List permissionsList) {
+ List permissionsCurrentlyDenied = new ArrayList<>();
+ for (String permission : permissionsList) {
+ if (!hasPermission(context, permission)) {
+ permissionsCurrentlyDenied.add(permission);
+ }
+ }
+ return permissionsCurrentlyDenied.toArray(new String[permissionsCurrentlyDenied.size()]);
+ }
}
diff --git a/java/com/android/incallui/incall/impl/LockableViewPager.java b/java/com/android/dialer/widget/LockableViewPager.java
similarity index 93%
rename from java/com/android/incallui/incall/impl/LockableViewPager.java
rename to java/com/android/dialer/widget/LockableViewPager.java
index 5b8b126099dc8cde78be5cc14b9d4c0e032adedf..b5d4022e7fd820e41932147ba7afbe6740d3b55a 100644
--- a/java/com/android/incallui/incall/impl/LockableViewPager.java
+++ b/java/com/android/dialer/widget/LockableViewPager.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.incallui.incall.impl;
+package com.android.dialer.widget;
import android.content.Context;
import android.support.v4.view.ViewPager;
@@ -34,6 +34,10 @@ public class LockableViewPager extends ViewPager {
this.swipingLocked = swipingLocked;
}
+ public boolean isSwipingLocked() {
+ return swipingLocked;
+ }
+
@Override
public boolean onInterceptTouchEvent(MotionEvent motionEvent) {
return !swipingLocked && super.onInterceptTouchEvent(motionEvent);
diff --git a/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml b/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..00344bf44c4b05ac262cb61f3e18989137e22d02
--- /dev/null
+++ b/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/widget/res/values-af/strings.xml b/java/com/android/dialer/widget/res/values-af/strings.xml
index 122c843289b2b0b2433d81a7faa141ea4656ed06..0c21ae9af738be64fadccc487ee6088bc9d5caff 100644
--- a/java/com/android/dialer/widget/res/values-af/strings.xml
+++ b/java/com/android/dialer/widget/res/values-af/strings.xml
@@ -1,10 +1,26 @@
+
+
"Skryf \'n gepasmaakte boodskap"
"Maak toe"
"Jy het nog nie enige kontakte nie"
- "Voeg \'n kontak by"
+ "Skep nuwe kontak"
"Skakel aan"
"Skakel die kontaktetoestemming aan om jou kontakte te sien."
"Geen kontakte-program beskikbaar nie"
diff --git a/java/com/android/dialer/widget/res/values-am/strings.xml b/java/com/android/dialer/widget/res/values-am/strings.xml
index 8a5353e18b50d2b384dc8510df270a95aa84d0d9..3952e83ccbd7de7325d1214c2686d988101da117 100644
--- a/java/com/android/dialer/widget/res/values-am/strings.xml
+++ b/java/com/android/dialer/widget/res/values-am/strings.xml
@@ -1,10 +1,27 @@
+
+
"ብጁ መልዕክት ይጻፉ"
"ዝጋ"
"ገና ምንም እውቂያዎች የሉዎትም"
- "እውቂያ ያክሉ"
+
+
"አብራ"
"የእርስዎን እውቂያዎች ለማየት፣ የእውቂያዎች ፍቃዱን ያብሩ።"
"ምንም የእውቂያዎች መተግበሪያ አይገኝም"
diff --git a/java/com/android/dialer/widget/res/values-ar/strings.xml b/java/com/android/dialer/widget/res/values-ar/strings.xml
index 7947903ce76b33bd9a43a9cfb6c84fb8f0fa6c4d..26ed748f08e334bb54b8b58dd5d12f33927bdfb7 100644
--- a/java/com/android/dialer/widget/res/values-ar/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ar/strings.xml
@@ -1,10 +1,26 @@
+
+
"كتابة رسالة مخصصة"
"إغلاق"
"ليست لديك أية جهات اتصال حتى الآن"
- "إضافة جهة اتصال"
+ "إنشاء جهة اتصال"
"تشغيل"
"للاطلاع على جهات الاتصال، شغِّل إذن جهات الاتصال."
"لا يتوفر تطبيق لجهات الاتصال"
diff --git a/java/com/android/dialer/widget/res/values-az/strings.xml b/java/com/android/dialer/widget/res/values-az/strings.xml
index 7a1389a1a4780fa6ac528cc107da2069063ce58e..cb40af6d7f58dc1ea32a41f423ae174be50e63d4 100644
--- a/java/com/android/dialer/widget/res/values-az/strings.xml
+++ b/java/com/android/dialer/widget/res/values-az/strings.xml
@@ -1,10 +1,27 @@
+
+
"Fərdi mesaj yazın"
"Bağlayın"
"Hələ heç bir kontakt yoxdur"
- "Kontakt əlavə edin"
+
+
"Aktiv edin"
"Kontaktları görmək üçün Kontakt icazəsini aktiv edin."
"Kontakt tətbiqi əlçatan deyil"
diff --git a/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml
index 46b29d27cf817ec5ab35cac92a7da5435d0349a7..fea3cb0ef21901ddd785a81891acbdcb86744ccb 100644
--- a/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml
@@ -1,10 +1,26 @@
+
+
"Napišite prilagođenu poruku"
"Zatvorite"
"Još uvek nemate nijedan kontakt"
- "Dodaj kontakt"
+ "Napravi novi kontakt"
"Uključi"
"Da biste videli kontakte, uključite dozvolu za Kontakte."
"Nema dostupne aplikacije za kontakte"
diff --git a/java/com/android/dialer/widget/res/values-be/strings.xml b/java/com/android/dialer/widget/res/values-be/strings.xml
index 38c8a80ca83eb831a1d46e28664d256cecabb72a..6805984c32b6a031afbf27dcd516409d64fa82ff 100644
--- a/java/com/android/dialer/widget/res/values-be/strings.xml
+++ b/java/com/android/dialer/widget/res/values-be/strings.xml
@@ -1,10 +1,27 @@
+
+
"Напісаць карыстальніцкае паведамленне"
"Закрыць"
"У вас пакуль няма ніякіх кантактаў"
- "Дадаць кантакт"
+
+
"Уключыць"
"Каб бачыць свае кантакты, уключыце дазвол для Кантактаў."
"Праграмы для аперацый з кантактамі няма"
diff --git a/java/com/android/dialer/widget/res/values-bg/strings.xml b/java/com/android/dialer/widget/res/values-bg/strings.xml
index 00ce56454d5ee93ff36cf2f25b70e4f1c6fddf78..fbb87d031d60cb150ce84e0e8eee3ab8b87a8452 100644
--- a/java/com/android/dialer/widget/res/values-bg/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bg/strings.xml
@@ -1,10 +1,26 @@
+
+
"Напишете свое съобщение"
"Затваряне"
"Още нямате контакти"
- "Добавяне на контакт"
+ "Създаване на нов контакт"
"Включване"
"За да видите контактите си, включете разрешението за Контакти."
"Няма налично приложение за контакти"
diff --git a/java/com/android/dialer/widget/res/values-bn/strings.xml b/java/com/android/dialer/widget/res/values-bn/strings.xml
index 96b75db59a1775d6a2c82cc207db8d716f991a4f..58bf44c6add4c0657be4ba946730066b551c32d0 100644
--- a/java/com/android/dialer/widget/res/values-bn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bn/strings.xml
@@ -1,10 +1,26 @@
+
+
"একটি কাস্টম বার্তা লিখুন"
"বন্ধ করুন"
"আপনার এখনও পর্যন্ত কোনো পরিচিতি নেই"
- "একটি পরিচিতি যোগ করুন"
+ "নতুন পরিচিতি তৈরি করুন"
"চালু করুন"
"আপনার পরিচিতিগুলি দেখতে, পরিচিতিগুলির অনুমতি চালু করুন।"
"কোনো পরিচিতি অ্যাপ্লিকেশান উপলব্ধ নয়"
diff --git a/java/com/android/dialer/widget/res/values-bs/strings.xml b/java/com/android/dialer/widget/res/values-bs/strings.xml
index df24ee16b7870b2a04262188d4a4d51ce4a963aa..239c0741278836ca31d765ca5342a242aa417861 100644
--- a/java/com/android/dialer/widget/res/values-bs/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bs/strings.xml
@@ -1,10 +1,26 @@
+
+
"Napišite prilagođenu poruku"
"Zatvori"
"Još nemate nijedan kontakt"
- "Dodajte kontakt"
+ "Kreirajte novi kontakt"
"Uključi"
"Da vidite kontakte, uključite dozvolu za Kontakte."
"Nije dostupna nijedna aplikacija za kontakte"
diff --git a/java/com/android/dialer/widget/res/values-ca/strings.xml b/java/com/android/dialer/widget/res/values-ca/strings.xml
index f7bbaa746113bb1e944c0b7af4051d6537795690..8f01cb53ec3aa0ce6fd732375119dc8b69af4b15 100644
--- a/java/com/android/dialer/widget/res/values-ca/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ca/strings.xml
@@ -1,10 +1,27 @@
+
+
"Escriu un miss. personalitzat"
"Tanca"
"Encara no tens cap contacte"
- "Afegeix un contacte"
+
+
"Activa"
"Activa el permís Contactes per veure els teus contactes."
"No hi ha cap contacte disponible"
diff --git a/java/com/android/dialer/widget/res/values-cs/strings.xml b/java/com/android/dialer/widget/res/values-cs/strings.xml
index 19e5d17dace475c36d5fb0540dd59ba81d3745e4..ee8d14022965bf181cd5061e9904d77622bf291a 100644
--- a/java/com/android/dialer/widget/res/values-cs/strings.xml
+++ b/java/com/android/dialer/widget/res/values-cs/strings.xml
@@ -1,10 +1,27 @@
+
+
"Napište vlastní zprávu"
"Zavřít"
"Zatím nemáte žádné kontakty"
- "Přidat kontakt"
+
+
"Povolit"
"Pokud chcete zobrazit kontakty, povolte aplikaci přístup ke Kontaktům."
"Není k dispozici žádná aplikace pro práci s kontakty"
diff --git a/java/com/android/dialer/widget/res/values-da/strings.xml b/java/com/android/dialer/widget/res/values-da/strings.xml
index 67fb244c4aa7964ffb5ca79bf60b05a6128b564b..0e449489df5b1b9cba013cc1cfbfd095db260738 100644
--- a/java/com/android/dialer/widget/res/values-da/strings.xml
+++ b/java/com/android/dialer/widget/res/values-da/strings.xml
@@ -1,10 +1,27 @@
+
+
"Skriv en tilpasset besked"
"Luk"
"Du har endnu ikke nogen kontaktpersoner"
- "Tilføj en kontaktperson"
+
+
"Slå til"
"Slå tilladelsen Kontaktpersoner til for at se dine kontaktpersoner."
"Der er ingen tilgængelig app til kontaktpersoner"
diff --git a/java/com/android/dialer/widget/res/values-de/strings.xml b/java/com/android/dialer/widget/res/values-de/strings.xml
index 14146d65f4243290e57cb6b4ecf35a0fbc1d371a..f650df9f0329884726f54c68bafd493dc3f5d626 100644
--- a/java/com/android/dialer/widget/res/values-de/strings.xml
+++ b/java/com/android/dialer/widget/res/values-de/strings.xml
@@ -1,10 +1,26 @@
+
+
"Eigene Nachricht schreiben"
"Schließen"
"Du hast noch keine Kontakte"
- "Kontakt hinzufügen"
+ "Neuen Kontakt erstellen"
"Aktivieren"
"Aktiviere die Berechtigung \"Kontakte\", um deine Kontakte abzurufen."
"Keine Kontakte-App verfügbar"
diff --git a/java/com/android/dialer/widget/res/values-el/strings.xml b/java/com/android/dialer/widget/res/values-el/strings.xml
index 0db6b269454286e4bf9cb6779faed31112d01fd2..849fd6a8aa906b3ec2c9691bd5511905de34b101 100644
--- a/java/com/android/dialer/widget/res/values-el/strings.xml
+++ b/java/com/android/dialer/widget/res/values-el/strings.xml
@@ -1,10 +1,27 @@
+
+
"Γράψτε ένα προσαρμ. μήνυμα"
"Κλείσιμο"
"Δεν έχετε επαφές ακόμη"
- "Προσθήκη επαφής"
+
+
"Ενεργοποίηση"
"Για να δείτε τις επαφές σας, ενεργοποιήστε την άδεια πρόσβασης στις Επαφές."
"Δεν υπάρχει διαθέσιμη εφαρμογή επαφών"
diff --git a/java/com/android/dialer/widget/res/values-en-rAU/strings.xml b/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
index a87cd28ffbe807b5626afa0d58310e0d4a76117f..33cba33376cff6d36fe824890e8093d4b467083d 100644
--- a/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
@@ -1,10 +1,26 @@
+
+
"Write a custom message"
"Close"
"You don\'t have any contacts yet"
- "Add a contact"
+ "Create new contact"
"Turn on"
"To see your contacts, turn on the Contacts permission."
"No contacts app available"
diff --git a/java/com/android/dialer/widget/res/values-en-rGB/strings.xml b/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
index a87cd28ffbe807b5626afa0d58310e0d4a76117f..33cba33376cff6d36fe824890e8093d4b467083d 100644
--- a/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
@@ -1,10 +1,26 @@
+
+
"Write a custom message"
"Close"
"You don\'t have any contacts yet"
- "Add a contact"
+ "Create new contact"
"Turn on"
"To see your contacts, turn on the Contacts permission."
"No contacts app available"
diff --git a/java/com/android/dialer/widget/res/values-en-rIN/strings.xml b/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
index a87cd28ffbe807b5626afa0d58310e0d4a76117f..33cba33376cff6d36fe824890e8093d4b467083d 100644
--- a/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
@@ -1,10 +1,26 @@
+
+
"Write a custom message"
"Close"
"You don\'t have any contacts yet"
- "Add a contact"
+ "Create new contact"
"Turn on"
"To see your contacts, turn on the Contacts permission."
"No contacts app available"
diff --git a/java/com/android/dialer/widget/res/values-es-rUS/strings.xml b/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
index 5ecc22b3da5f5b055af71625199452a6820b17f0..8c257b2d0ecac461e086f1722043b68797b5729b 100644
--- a/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
@@ -1,10 +1,27 @@
+
+
"Escribe tu propio mensaje"
"Cerrar"
"Aún no tienes contactos"
- "Agregar un contacto"
+
+
"Activar"
"Para ver los contactos, activa el permiso Contactos."
"No hay ninguna app de contactos disponible"
diff --git a/java/com/android/dialer/widget/res/values-es/strings.xml b/java/com/android/dialer/widget/res/values-es/strings.xml
index e561d06f7f89112b7c0142b99061e88244997df7..dcb695e201be2eabe52d6f289198d538f39112b3 100644
--- a/java/com/android/dialer/widget/res/values-es/strings.xml
+++ b/java/com/android/dialer/widget/res/values-es/strings.xml
@@ -1,10 +1,26 @@
+
+
"Mensaje personalizado"
"Cerrar"
"Aún no tienes contactos"
- "Añadir un contacto"
+ "Crear un contacto"
"Activar"
"Para ver tus contactos, activa el permiso de Contactos."
"No hay aplicaciones de contactos disponibles"
diff --git a/java/com/android/dialer/widget/res/values-et/strings.xml b/java/com/android/dialer/widget/res/values-et/strings.xml
index 054b42281df22feb6682c7e798cb643799861a61..f7357c279caa29e30e78eb41e8409a79fedebe9e 100644
--- a/java/com/android/dialer/widget/res/values-et/strings.xml
+++ b/java/com/android/dialer/widget/res/values-et/strings.xml
@@ -1,10 +1,27 @@
+
+
"Kirjutage kohandatud sõnum"
"Sule"
"Teil pole veel kontakte"
- "Kontakti lisamine"
+
+
"Lülita sisse"
"Kontaktide vaatamiseks lülitage sisse kontaktide luba."
"Kontaktide rakendus pole saadaval"
diff --git a/java/com/android/dialer/widget/res/values-eu/strings.xml b/java/com/android/dialer/widget/res/values-eu/strings.xml
index 7d191925e5cbda980cb930ce76fcce7b1550cf29..f4d0d1d7a11aea07e1ee96b062d6aedf5b8f01dc 100644
--- a/java/com/android/dialer/widget/res/values-eu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-eu/strings.xml
@@ -1,10 +1,27 @@
+
+
"Idatzi mezu bat"
"Itxi"
"Oraindik ez duzu kontakturik"
- "Gehitu kontaktu bat"
+
+
"Aktibatu"
"Kontaktuak ikusteko, aktibatu Kontaktuak atzitzeko baimena."
"Ez dago kontaktu-aplikaziorik erabilgarri"
diff --git a/java/com/android/dialer/widget/res/values-fa/strings.xml b/java/com/android/dialer/widget/res/values-fa/strings.xml
index 5ed23131ab95c92f9c99098864f8958c596b50d9..9168ac2932e8f3383954d3b4bd5c48b1c02bc633 100644
--- a/java/com/android/dialer/widget/res/values-fa/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fa/strings.xml
@@ -1,10 +1,27 @@
+
+
"پیام سفارشی بنویسید"
"بستن"
"هنوز هیچ مخاطبی ندارید"
- "افزودن مخاطب"
+
+
"فعالسازی"
"برای دیدن مخاطبینتان، مجوز «مخاطبین» را روشن کنید."
"هیچ برنامه مخاطبی در دسترس نیست"
diff --git a/java/com/android/dialer/widget/res/values-fi/strings.xml b/java/com/android/dialer/widget/res/values-fi/strings.xml
index 1a153072c8455e5b3f7b5bdc18d983f60c2ee469..80f190253a6d5ceb3856d85f2d71612f4aae3207 100644
--- a/java/com/android/dialer/widget/res/values-fi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fi/strings.xml
@@ -1,10 +1,27 @@
+
+
"Kirjoita oma viesti"
"Sulje"
"Sinulla ei ole vielä yhteystietoja."
- "Lisää yhteystieto."
+
+
"Ota käyttöön"
"Jos haluat katsella yhteystietojasi, ota Yhteystiedot-käyttöoikeus käyttöön."
"Yhteystietosovellusta ei ole käytettävissä."
diff --git a/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml b/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
index 62e1f37fbbc2f837df6574524710a2bdd4aea7c1..7785509979ee56cc2928025eb0d088022f788a9f 100644
--- a/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
@@ -1,10 +1,26 @@
+
+
"Rédiger message personnalisé"
"Fermer"
"Vous n\'avez pas encore de contacts"
- "Ajouter un contact"
+ "Créer un contact"
"Activer"
"Pour consulter vos contacts, activez l\'autorisation Contacts."
"Aucune application Contacts n\'est disponible"
diff --git a/java/com/android/dialer/widget/res/values-fr/strings.xml b/java/com/android/dialer/widget/res/values-fr/strings.xml
index 85a32b8752a0df921a0394876873ccb51474f104..be8810fd9ff9f2978a10086ed8409bd47c8a5808 100644
--- a/java/com/android/dialer/widget/res/values-fr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fr/strings.xml
@@ -1,10 +1,26 @@
+
+
"Écrire mon propre message"
"Fermer"
"Vous n\'avez pas encore de contacts."
- "Ajouter un contact"
+ "Créer un contact"
"Activer"
"Pour consulter vos contacts, activez l\'autorisation Contacts."
"Aucune application de gestion des contacts n\'est disponible"
diff --git a/java/com/android/dialer/widget/res/values-gl/strings.xml b/java/com/android/dialer/widget/res/values-gl/strings.xml
index 8a9089fdb8f63a326afd357706d70be764c0df41..a519e68b6eac87ccb8104eb84b45dedb0585079b 100644
--- a/java/com/android/dialer/widget/res/values-gl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-gl/strings.xml
@@ -1,10 +1,26 @@
+
+
"Escribe unha mensaxe personalizada"
"Pechar"
"Aínda non tes ningún contacto"
- "Engadir un contacto"
+ "Crear novo contacto"
"Activar"
"Para ver os teus contactos, activa o permiso de Contactos."
"Non hai ningunha aplicación de contactos dispoñible"
diff --git a/java/com/android/dialer/widget/res/values-gu/strings.xml b/java/com/android/dialer/widget/res/values-gu/strings.xml
index 794245d3db0a244c05e43c746f232ecf028d3ba3..81e6f10114f8eb3d888899dde97655e1d37e7164 100644
--- a/java/com/android/dialer/widget/res/values-gu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-gu/strings.xml
@@ -1,10 +1,26 @@
+
+
"એક કસ્ટમ સંદેશ લખો"
"બંધ કરો"
"તમે હજી સુધી કોઇપણ સંપર્કો ધરાવતાં નથી"
- "સંપર્ક ઉમેરો"
+ "નવો સંપર્ક બનાવો"
"ચાલુ કરો"
"તમારા સંપર્કો જોવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો."
"કોઈ સંપર્કો ઍપ્લિકેશન ઉપલબ્ધ નથી"
diff --git a/java/com/android/dialer/widget/res/values-hi/strings.xml b/java/com/android/dialer/widget/res/values-hi/strings.xml
index 5cdb8bbfc345791e0f653ae9524660a0ed3bde31..622cdca067fd0a234d2ae81b2cf3b7b5d65c333a 100644
--- a/java/com/android/dialer/widget/res/values-hi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hi/strings.xml
@@ -1,10 +1,26 @@
+
+
"कोई कस्टम संदेश लिखें"
"बंद करें"
"आपके पास अभी कोई भी संपर्क नहीं है"
- "कोई संपर्क जोड़ें"
+ "नया संपर्क बनाएं"
"चालू करें"
"अपने संपर्क देखने के लिए, संपर्क अनुमति चालू करें."
"कोई भी संपर्क ऐप उपलब्ध नहीं है"
diff --git a/java/com/android/dialer/widget/res/values-hr/strings.xml b/java/com/android/dialer/widget/res/values-hr/strings.xml
index 9ded4d4a79fc1ec04e8eabf6e6f044559ed2546f..7254bc06210f1101a9a76dc742c2aabf39e5e9c0 100644
--- a/java/com/android/dialer/widget/res/values-hr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hr/strings.xml
@@ -1,10 +1,27 @@
+
+
"Napišite prilagođenu poruku"
"Zatvaranje"
"Još nemate nijedan kontakt"
- "Dodavanje kontakta"
+
+
"Uključi"
"Da biste vidjeli svoje kontakte, uključite dopuštenje za kontakte."
"Nije dostupna nijedna aplikacija za kontakte"
diff --git a/java/com/android/dialer/widget/res/values-hu/strings.xml b/java/com/android/dialer/widget/res/values-hu/strings.xml
index 92ae71de8fb857ccd6fff04156a5a112c177e064..5301d697071e62890fdc6423d0b18e53a0aa0419 100644
--- a/java/com/android/dialer/widget/res/values-hu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hu/strings.xml
@@ -1,10 +1,27 @@
+
+
"Egyéni üzenet írása"
"Bezárás"
"Még nem rendelkezik egyetlen névjeggyel sem"
- "Névjegy hozzáadása"
+
+
"Bekapcsolás"
"A névjegyek megtekintéséhez kapcsolja be a Névjegyek engedélyt."
"Nincs elérhető névjegykezelő alkalmazás"
diff --git a/java/com/android/dialer/widget/res/values-hy/strings.xml b/java/com/android/dialer/widget/res/values-hy/strings.xml
index ffa7132c5c43a353ef90c1e0f8054375ba9b4c75..95d0b73030424df005d8b5a93f5bb158301fdf70 100644
--- a/java/com/android/dialer/widget/res/values-hy/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hy/strings.xml
@@ -1,10 +1,26 @@
+
+
"Գրել տեքստն ինքնուրույն"
"Փակել"
"Դեռ կոնտակտներ չունեք"
- "Ավելացնել կոնտակտ"
+ "Ստեղծել նոր կոնտակտ"
"Միացնել"
"Ձեր կոնտակտները տեսնելու համար միացրեք Կոնտակտների թույլտվությունը:"
"Կոնտակտների հավելված չկա"
diff --git a/java/com/android/dialer/widget/res/values-in/strings.xml b/java/com/android/dialer/widget/res/values-in/strings.xml
index 69849ae023e5be90c626c65c5b5bfdcd960d5ba2..98dfe7be233bbdc48f22384982cabd67029b800e 100644
--- a/java/com/android/dialer/widget/res/values-in/strings.xml
+++ b/java/com/android/dialer/widget/res/values-in/strings.xml
@@ -1,10 +1,27 @@
+
+
"Tulis pesan khusus"
"Tutup"
"Anda belum memiliki kontak"
- "Tambahkan kontak"
+
+
"Aktifkan"
"Untuk melihat kontak, aktifkan izin Kontak."
"Aplikasi kontak tidak tersedia"
diff --git a/java/com/android/dialer/widget/res/values-is/strings.xml b/java/com/android/dialer/widget/res/values-is/strings.xml
index 98a172904d7a77a497a3a4621046dbb63c400282..22485aa46d8746073847cb8d896a40e859e05c26 100644
--- a/java/com/android/dialer/widget/res/values-is/strings.xml
+++ b/java/com/android/dialer/widget/res/values-is/strings.xml
@@ -1,10 +1,27 @@
+
+
"Skrifa sérsniðin skilaboð"
"Loka"
"Þú ert ekki með neina tengiliði enn sem komið er"
- "Bæta tengilið við"
+
+
"Kveikja"
"Kveiktu á tengiliðaheimildinni til að sjá tengiliðina þína."
"Ekkert tengiliðaforrit í boði"
diff --git a/java/com/android/dialer/widget/res/values-it/strings.xml b/java/com/android/dialer/widget/res/values-it/strings.xml
index 1a6e6c13521ee6643cb5e48bbe9f3f08be6caf3b..059a7d644cf7a1d86b28d6e0ceddc26621ca39cc 100644
--- a/java/com/android/dialer/widget/res/values-it/strings.xml
+++ b/java/com/android/dialer/widget/res/values-it/strings.xml
@@ -1,10 +1,27 @@
+
+
"Scrivi un messaggio personalizzato"
"Chiudi"
"Nessun contatto disponibile"
- "Aggiungi un contatto"
+
+
"Attiva"
"Per accedere ai tuoi contatti, attiva l\'autorizzazione Contatti."
"Nessuna app di contatti disponibile"
diff --git a/java/com/android/dialer/widget/res/values-iw/strings.xml b/java/com/android/dialer/widget/res/values-iw/strings.xml
index f2a732a67c05ff3439b83699626cf72ad59e0f87..48bf21911a8c8da8e1ede55fefcd1c44f0896492 100644
--- a/java/com/android/dialer/widget/res/values-iw/strings.xml
+++ b/java/com/android/dialer/widget/res/values-iw/strings.xml
@@ -1,10 +1,26 @@
+
+
"כתוב הודעה מותאמת אישית"
"סגירה"
"עדיין אין לך אנשי קשר"
- "הוספה של איש קשר"
+ "איש קשר חדש"
"הפעלה"
"עליך להפעיל את ההרשאה \'אנשי קשר\' כדי להציג את אנשי הקשר שלך."
"אין אף אפליקציה לניהול אנשי קשר"
diff --git a/java/com/android/dialer/widget/res/values-ja/strings.xml b/java/com/android/dialer/widget/res/values-ja/strings.xml
index 7994c62623c85aff6e0a084abef76d29d16a5b6a..969ffbac08394c0d3b55e2f5f3c12f4ea2d3bc1b 100644
--- a/java/com/android/dialer/widget/res/values-ja/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ja/strings.xml
@@ -1,10 +1,27 @@
+
+
"カスタム メッセージを入力"
"閉じる"
"連絡先はまだありません"
- "連絡先を追加"
+
+
"ON にする"
"連絡先を表示するには、連絡先へのアクセスを許可する設定を ON にしてください。"
"利用できる連絡先アプリがありません"
diff --git a/java/com/android/dialer/widget/res/values-ka/strings.xml b/java/com/android/dialer/widget/res/values-ka/strings.xml
index 865a66b453430998ef557f9d089fb67ee6fce5cc..fcd45439e67a6504a8298bd8364f3ef804da785f 100644
--- a/java/com/android/dialer/widget/res/values-ka/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ka/strings.xml
@@ -1,10 +1,27 @@
+
+
"დაწერეთ მორგებ. შეტყობინება"
"დახურვა"
"კონტაქტები ჯერ არ გაქვთ"
- "კონტაქტის დამატება"
+
+
"ჩართვა"
"კონტაქტების სანახავად ჩართეთ კონტაქტების ნებართვა."
"კონტაქტების აპი მიუწვდომელია"
diff --git a/java/com/android/dialer/widget/res/values-kk/strings.xml b/java/com/android/dialer/widget/res/values-kk/strings.xml
index 08856aaecaef5fb8a5214a7f02bce463e47cebf8..cab827192f16e795639a630cb69cc268d2e99f31 100644
--- a/java/com/android/dialer/widget/res/values-kk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-kk/strings.xml
@@ -1,10 +1,27 @@
+
+
"Арнаулы хабар жазу"
"Жабу"
"Әлі ешқандай контактілер жоқ"
- "Контакт қосу"
+
+
"Қосу"
"Контактілерді көру үшін \"Контактілер\" рұқсатын қосыңыз."
"Контактілер қолданбасы қолжетімді емес"
diff --git a/java/com/android/dialer/widget/res/values-km/strings.xml b/java/com/android/dialer/widget/res/values-km/strings.xml
index c0923325345d4c708aca256af4d4eae81a2d669d..2d6f2f25ddb8f852947306ee697c73088df2816c 100644
--- a/java/com/android/dialer/widget/res/values-km/strings.xml
+++ b/java/com/android/dialer/widget/res/values-km/strings.xml
@@ -1,10 +1,27 @@
+
+
"សរសេរសារផ្ទាល់ខ្លួន"
"បិទ"
"អ្នកមិនទាន់មានទំនាក់ទំនងនៅឡើយទេ"
- "បញ្ចូលទំនាក់ទំនង"
+
+
"បើក"
"ដើម្បីមើលទំនាក់ទំនងរបស់អ្នក សូមបើកការអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។"
"មិនមានកម្មវិធីទំនាក់ទំនងទេ"
diff --git a/java/com/android/dialer/widget/res/values-kn/strings.xml b/java/com/android/dialer/widget/res/values-kn/strings.xml
index a502d087ecfd74ed59224be8ba36fc79b2e88f71..d449cb8b7c0e57da266b530ae87212ddaf79f47e 100644
--- a/java/com/android/dialer/widget/res/values-kn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-kn/strings.xml
@@ -1,10 +1,27 @@
+
+
"ಕಸ್ಟಮ್ ಸಂದೇಶವನ್ನು ಬರೆಯಿರಿ"
"ಮುಚ್ಚಿ"
"ನಿಮ್ಮ ಬಳಿ ಇನ್ನೂ ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ"
- "ಸಂಪರ್ಕ ಸೇರಿಸಿ"
+
+
"ಆನ್ ಮಾಡಿ"
"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."
"ಯಾವುದೇ ಸಂಪರ್ಕಗಳ ಅಪ್ಲಿಕೇಶನ್ ಲಭ್ಯವಿಲ್ಲ"
diff --git a/java/com/android/dialer/widget/res/values-ko/strings.xml b/java/com/android/dialer/widget/res/values-ko/strings.xml
index 045dc54dce42f15ffa29c5df24e0d4dde59afd1d..0827d36485df8dcbb78e07edfc83d6e6d18dbfa7 100644
--- a/java/com/android/dialer/widget/res/values-ko/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ko/strings.xml
@@ -1,10 +1,26 @@
+
+
"맞춤 메시지를 작성하세요."
"닫기"
"아직 연락처가 없습니다."
- "연락처 추가"
+ "새 연락처 만들기"
"사용"
"연락처를 보려면 연락처에 액세스할 권한을 부여하세요."
"사용할 수 있는 연락처 앱이 없습니다."
diff --git a/java/com/android/dialer/widget/res/values-ky/strings.xml b/java/com/android/dialer/widget/res/values-ky/strings.xml
index 7ef10e707a48af3041bc7d46a0d107d4faa0a339..62bd08851209e5e24472c63c4a07f9ce1d9bcd7a 100644
--- a/java/com/android/dialer/widget/res/values-ky/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ky/strings.xml
@@ -1,10 +1,27 @@
+
+
"Башка билдирүүнү жазыңыз"
"Жабуу"
"Азырынча эч байланышыңыз жок"
- "Байланыш кошуу"
+
+
"Күйгүзүү"
"Байланыштарыңызды көрүү үчүн, \"Байланыштар\" уруксатын күйгүзүңүз."
"Жеткиликтүү байланыштар колдонмосу жок"
diff --git a/java/com/android/dialer/widget/res/values-lo/strings.xml b/java/com/android/dialer/widget/res/values-lo/strings.xml
index dc7ba44c1f5545bd10474c290ddd902ceb11406f..8b7e476d971ff0d9135556788957638458c9d68a 100644
--- a/java/com/android/dialer/widget/res/values-lo/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lo/strings.xml
@@ -1,10 +1,26 @@
+
+
"ຂຽນຂໍ້ຄວາມດ້ວຍຕົນເອງ"
"ປິດ"
"ທ່ານຍັງບໍ່ມີລາຍຊື່ຜູ້ຕິດຕໍ່ເທື່ອ"
- "ເພີ່ມລາຍຊື່"
+ "ສ້າງລາຍຊື່ຜູ້ຕິດຕໍ່ໃໝ່"
"ເປີດໃຊ້"
"ເພື່ອເບິ່ງລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່ຜູ້ຕິດຕໍ່ກ່ອນ"
"ບໍ່ມີແອັບລາຍຊື່ຜູ້ຕິດຕໍ່ທີ່ສາມາດໃຊ້ໄດ້"
diff --git a/java/com/android/dialer/widget/res/values-lt/strings.xml b/java/com/android/dialer/widget/res/values-lt/strings.xml
index be12520f801c16992682837aef5c92556d729b84..30cc0adebfac5e2e0637aa680bbeab49fab79df5 100644
--- a/java/com/android/dialer/widget/res/values-lt/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lt/strings.xml
@@ -1,10 +1,26 @@
+
+
"Parašykite tinkintą praneš."
"Uždaryti"
"Dar neturite jokių kontaktų"
- "Pridėkite kontaktą"
+ "Sukurti naują kontaktą"
"Įjungti"
"Jei norite peržiūrėti kontaktus, įjunkite Kontaktų leidimą."
"Nepasiekiama jokia kontaktų programa"
diff --git a/java/com/android/dialer/widget/res/values-lv/strings.xml b/java/com/android/dialer/widget/res/values-lv/strings.xml
index acefbaea42b2cad8306ab5a40ab9f5fadb79305c..87464c576f30ac433e1b888fbf1e130fa758c4d6 100644
--- a/java/com/android/dialer/widget/res/values-lv/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lv/strings.xml
@@ -1,10 +1,27 @@
+
+
"Rakstīt pielāgotu ziņojumu"
"Aizvērt"
"Jums vēl nav nevienas kontaktpersonas."
- "Pievienot kontaktpersonu"
+
+
"Ieslēgt"
"Lai skatītu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas."
"Nav pieejama neviena kontaktpersonu lietotne."
diff --git a/java/com/android/dialer/widget/res/values-mk/strings.xml b/java/com/android/dialer/widget/res/values-mk/strings.xml
index 20b18e8d99655ee8930daeed4701ffc95686e6ac..cd2f86b7c22c87934ee6ce9cb08feecc97e7cba8 100644
--- a/java/com/android/dialer/widget/res/values-mk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mk/strings.xml
@@ -1,10 +1,27 @@
+
+
"Напиши приспособена порака"
"Затвори"
"Сè уште немате контакти"
- "Додајте контакт"
+
+
"Вклучи"
"За да ги видите контактите, вклучете ја дозволата за контакти."
"Нема достапна апликација за контакти"
diff --git a/java/com/android/dialer/widget/res/values-ml/strings.xml b/java/com/android/dialer/widget/res/values-ml/strings.xml
index a97a7d862746e79dc3a44a9fcf9da6bf26d3dbd0..1799755d1224a5a63388d9e2f3ec68d8bd3a97a8 100644
--- a/java/com/android/dialer/widget/res/values-ml/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ml/strings.xml
@@ -1,10 +1,27 @@
+
+
"ഒരു ഇഷ്ടാനുസൃത സന്ദേശം രചിക്കൂ"
"അടയ്ക്കുക"
"നിങ്ങൾക്ക് ഇതുവരെയും കോൺടാക്റ്റുകൾ ഒന്നുമില്ല."
- "ഒരു കോണ്ടാക്റ്റ് ചേര്ക്കുക"
+
+
"ഓൺ ചെയ്യുക"
"നിങ്ങളുടെ കോൺടാക്റ്റുകൾ കാണുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക."
"കോൺടാക്റ്റ് അപ്ലിക്കേഷനൊന്നും ലഭ്യമല്ല"
diff --git a/java/com/android/dialer/widget/res/values-mn/strings.xml b/java/com/android/dialer/widget/res/values-mn/strings.xml
index bbcfc7cf65f45f6f7d384a76cde0e9d9ef027829..e5f5c2162f81eb5f38fa52b17b2a7f64d5f16b3a 100644
--- a/java/com/android/dialer/widget/res/values-mn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mn/strings.xml
@@ -1,10 +1,26 @@
+
+
"Тусгай зурвас бичих"
"Хаах"
"Танд одоогоор харилцагч байхгүй байна"
- "Харилцагч нэмэх"
+ "Шинэ харилцагч үүсгэх"
"Асаах"
"Харилцагчдаа харахын тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү."
"Ямар ч харилцагчдын апликейшн байхгүй байна"
diff --git a/java/com/android/dialer/widget/res/values-mr/strings.xml b/java/com/android/dialer/widget/res/values-mr/strings.xml
index 38d913a85d55e591390de4af326994fb5643dbac..63239d21d212e0d6a162004cc6c90a9473a9812a 100644
--- a/java/com/android/dialer/widget/res/values-mr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mr/strings.xml
@@ -1,10 +1,26 @@
+
+
"एक सानुकूल संदेश लिहा"
"बंद करा"
"आपल्याकडे अद्याप कोणतेही संपर्क नाहीत"
- "एक संपर्क जोडा"
+ "नवीन संपर्क तयार करा"
"चालू करा"
"आपले संपर्क पाहण्यासाठी, संपर्क परवानगी चालू करा."
"कोणताही संपर्क अॅप उपलब्ध नाही"
diff --git a/java/com/android/dialer/widget/res/values-ms/strings.xml b/java/com/android/dialer/widget/res/values-ms/strings.xml
index bc67c676480f3a5265786aff4c668a2d746e1d1b..cf61fc171d838957e5904cab7913b6723484f811 100644
--- a/java/com/android/dialer/widget/res/values-ms/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ms/strings.xml
@@ -1,10 +1,26 @@
+
+
"Tulis mesej tersuai"
"Tutup"
"Anda belum mempunyai sebarang kenalan"
- "Tambahkan kenalan"
+ "Buat kenalan baharu"
"Hidupkan"
"Untuk melihat kenalan anda, hidupkan kebenaran Kenalan."
"Tiada apl kenalan yang tersedia"
diff --git a/java/com/android/dialer/widget/res/values-my/strings.xml b/java/com/android/dialer/widget/res/values-my/strings.xml
index c8e783bf4af8f9d81ca809e08bc6752b682cf829..5d3d9ebff56d6f44864b5ec5118dadebf2064d8c 100644
--- a/java/com/android/dialer/widget/res/values-my/strings.xml
+++ b/java/com/android/dialer/widget/res/values-my/strings.xml
@@ -1,10 +1,26 @@
+
+
"စိတ်ကြိုက် မက်ဆေ့ဂျ်တစ်ခု ရေးပါ"
"ပိတ်ရန်"
"သင့်တွင် မည်သည့်အဆက်အသွယ်မျှ မရှိသေးပါ"
- "အဆက်အသွယ်တစ်ယောက် ထည့်မည်"
+ "အဆက်အသွယ်အသစ် ပြုလုပ်ရန်"
"ဖွင့်ရန်"
"အဆက်အသွယ်များကိုကြည့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။"
"အဆက်အသွယ်များ app မရှိပါ"
diff --git a/java/com/android/dialer/widget/res/values-nb/strings.xml b/java/com/android/dialer/widget/res/values-nb/strings.xml
index 822f07ed17688ead1f49d4d12a30a793304f0d23..44121826749e7def2bc0df23c81484f43ffa5215 100644
--- a/java/com/android/dialer/widget/res/values-nb/strings.xml
+++ b/java/com/android/dialer/widget/res/values-nb/strings.xml
@@ -1,10 +1,27 @@
+
+
"Skriv egendefinert melding"
"Lukk"
"Du har ingen kontakter ennå"
- "Legg til en kontakt"
+
+
"Slå på"
"For å se kontaktene dine må du slå på Kontakter-tillatelsen."
"Ingen kontaktapper er tilgjengelige"
diff --git a/java/com/android/dialer/widget/res/values-ne/strings.xml b/java/com/android/dialer/widget/res/values-ne/strings.xml
index ebb31d57911cb5f76d2e43ad0dd835da305a7189..e1f6e959bade43f5bbb1b76e65dc58f4a21c94ee 100644
--- a/java/com/android/dialer/widget/res/values-ne/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ne/strings.xml
@@ -1,10 +1,26 @@
+
+
"आफू अनुकूल सन्देश लेख्ने"
"बन्द गर्नुहोस्"
"अहिलेसम्म तपाईंसँग कुनै सम्पर्कहरू छैनन्"
- "कुनै सम्पर्क थप्नुहोस्"
+ "नयाँ सम्पर्क सिर्जना गर्नुहोस्"
"सक्रिय गर्नुहोस्"
"आफ्ना सम्पर्कहरू हेर्न सम्पर्क सम्बन्धी अनुमतिलाई सक्रिय गर्नुहोस्।"
"सम्पर्क सम्बन्धी कुनै अनुप्रयोग उपलब्ध छैन"
diff --git a/java/com/android/dialer/widget/res/values-nl/strings.xml b/java/com/android/dialer/widget/res/values-nl/strings.xml
index cbc286ba36c969c1dc7fd606c0445109b0558fdf..1fb5f5ed3f345a6ce4c4c554bd6d92144873b8c8 100644
--- a/java/com/android/dialer/widget/res/values-nl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-nl/strings.xml
@@ -1,10 +1,27 @@
+
+
"Schrijf zelf een bericht"
"Sluiten"
"Je hebt nog geen contacten"
- "Een contact toevoegen"
+
+
"Inschakelen"
"Als je je contacten wilt bekijken, schakel je de machtiging voor Contacten in."
"Geen app voor contacten beschikbaar"
diff --git a/java/com/android/dialer/widget/res/values-no/strings.xml b/java/com/android/dialer/widget/res/values-no/strings.xml
index 822f07ed17688ead1f49d4d12a30a793304f0d23..44121826749e7def2bc0df23c81484f43ffa5215 100644
--- a/java/com/android/dialer/widget/res/values-no/strings.xml
+++ b/java/com/android/dialer/widget/res/values-no/strings.xml
@@ -1,10 +1,27 @@
+
+
"Skriv egendefinert melding"
"Lukk"
"Du har ingen kontakter ennå"
- "Legg til en kontakt"
+
+
"Slå på"
"For å se kontaktene dine må du slå på Kontakter-tillatelsen."
"Ingen kontaktapper er tilgjengelige"
diff --git a/java/com/android/dialer/widget/res/values-pa/strings.xml b/java/com/android/dialer/widget/res/values-pa/strings.xml
index 06f191e50d60e369c00ee6e6bcb792c9e1b1fc61..14b7b416b685c9e78a8a646e19f5772374d664d7 100644
--- a/java/com/android/dialer/widget/res/values-pa/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pa/strings.xml
@@ -1,10 +1,26 @@
+
+
"ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਸੰਦੇਸ਼ ਲਿਖੋ"
"ਬੰਦ ਕਰੋ"
"ਤੁਹਾਡੇ ਕੋਲ ਹਾਲੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ"
- "ਕੋਈ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ"
+ "ਨਵਾਂ ਸੰਪਰਕ ਬਣਾਓ"
"ਚਾਲੂ ਕਰੋ"
"ਆਪਣੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੇਖਣ ਲਈ, ਸੰਪਰਕ ਇਜਾਜ਼ਤ ਚਾਲੂ ਕਰੋ।"
"ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"
diff --git a/java/com/android/dialer/widget/res/values-pl/strings.xml b/java/com/android/dialer/widget/res/values-pl/strings.xml
index 5d62a07f157d812619262a00a63cdb3cb04f3ddd..3f0668c98a87f1f36d8a81515e49f0a7e465cf5d 100644
--- a/java/com/android/dialer/widget/res/values-pl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pl/strings.xml
@@ -1,10 +1,26 @@
+
+
"Wpisz wiadomość"
"Zamknij"
"Nie masz jeszcze żadnych kontaktów"
- "Dodaj kontakt"
+ "Utwórz nowy kontakt"
"Włącz"
"Aby zobaczyć swoje kontakty, włącz uprawnienia Kontakty."
"Nie jest dostępna żadna aplikacja do obsługi kontaktów"
diff --git a/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml b/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
index 0afc0f1d658066195ccec6b7db19c72dd96bf80f..7bc501e4f1718588c4f7e8a9c525cc5d011d6d34 100644
--- a/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
@@ -1,10 +1,27 @@
+
+
"Escreva sua mensagem"
"Fechar"
"Você ainda não tem contatos"
- "Adicionar um contato"
+
+
"Ativar"
"Para ver seus contatos, ative a permissão para o app Contatos."
"Nenhum app de contatos disponível"
diff --git a/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml b/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
index 35f71a37145bf1907c5a0885fd0be679243fd90d..459ba5790d49728d96126a2a75f250ddebc3b249 100644
--- a/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
@@ -1,10 +1,27 @@
+
+
"Escreva uma mensagem"
"Fechar"
"Ainda não tem nenhum contacto"
- "Adicionar um contacto"
+
+
"Ativar"
"Para ver os seus contactos, ative a autorização Contactos."
"Não existe nenhuma aplicação de contactos disponível"
diff --git a/java/com/android/dialer/widget/res/values-pt/strings.xml b/java/com/android/dialer/widget/res/values-pt/strings.xml
index 0afc0f1d658066195ccec6b7db19c72dd96bf80f..7bc501e4f1718588c4f7e8a9c525cc5d011d6d34 100644
--- a/java/com/android/dialer/widget/res/values-pt/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt/strings.xml
@@ -1,10 +1,27 @@
+
+
"Escreva sua mensagem"
"Fechar"
"Você ainda não tem contatos"
- "Adicionar um contato"
+
+
"Ativar"
"Para ver seus contatos, ative a permissão para o app Contatos."
"Nenhum app de contatos disponível"
diff --git a/java/com/android/dialer/widget/res/values-ro/strings.xml b/java/com/android/dialer/widget/res/values-ro/strings.xml
index 6c51d23ac75094ef6ffa5e2ce7af338acc57baaf..6138eb1b6a5cea0bf880815b59591557d4d584a9 100644
--- a/java/com/android/dialer/widget/res/values-ro/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ro/strings.xml
@@ -1,10 +1,27 @@
+
+
"Scrieți mesaj personalizat"
"Închideți"
"Nu aveți încă persoane de contact."
- "Adăugați o persoană de contact"
+
+
"Activați"
"Pentru a vedea persoanele de contact, activați permisiunea pentru Agendă."
"Nu este disponibilă nicio aplicație pentru agendă"
diff --git a/java/com/android/dialer/widget/res/values-ru/strings.xml b/java/com/android/dialer/widget/res/values-ru/strings.xml
index c36874de567489d374dc6d43c0301a67fe3b402a..7eb9f1de1a1820f69eed6afb04d0bcd0b72f52a9 100644
--- a/java/com/android/dialer/widget/res/values-ru/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ru/strings.xml
@@ -1,10 +1,27 @@
+
+
"Добавьте свой текст"
"Закрыть"
"Контактов нет"
- "Добавить контакт"
+
+
"Предоставить разрешение"
"Чтобы открыть список контактов, предоставьте приложению разрешение \"Контакты\"."
"Нет приложения для работы с контактами"
diff --git a/java/com/android/dialer/widget/res/values-si/strings.xml b/java/com/android/dialer/widget/res/values-si/strings.xml
index 10eb7b5b5506b80f27a91aae555bffeb4f7732cb..fb57425765da51d02a85c1b4c8187bc8784d8007 100644
--- a/java/com/android/dialer/widget/res/values-si/strings.xml
+++ b/java/com/android/dialer/widget/res/values-si/strings.xml
@@ -1,10 +1,27 @@
+
+
"අභිරුචි පණිවිඩයක් ලියන්න"
"වසන්න"
"ඔබට තවම කිසිදු සම්බන්ධතාවක් නැත"
- "සම්බන්ධතාවක් එක් කරන්න"
+
+
"ක්රියාත්මක කරන්න"
"ඔබේ සම්බන්ධතා බැලීමට, සම්බන්ධතා අවසරය ක්රියාත්මක කරන්න."
"සබඳතා යෙදුම ලබා ගැනීමට නොහැකිය"
diff --git a/java/com/android/dialer/widget/res/values-sk/strings.xml b/java/com/android/dialer/widget/res/values-sk/strings.xml
index 56f7ceb97df63ebfd2b2182da0b616ef65e2d9b9..5912b574a211e2fefe661a56f9547b60999475f6 100644
--- a/java/com/android/dialer/widget/res/values-sk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sk/strings.xml
@@ -1,10 +1,27 @@
+
+
"Napíšte vlastnú správu"
"Zavrieť"
"Zatiaľ nemáte žiadne kontakty"
- "Pridať kontakt"
+
+
"Zapnúť"
"Ak si chcete zobraziť kontakty, zapnite povolenie Kontakty."
"Nie je k dispozícii žiadna aplikácia na prácu s kontaktmi"
diff --git a/java/com/android/dialer/widget/res/values-sl/strings.xml b/java/com/android/dialer/widget/res/values-sl/strings.xml
index 52f02937736688553670a31ba5ea4a5e78675735..1ee87d13db26d046618e9dbd83ab9f6bb2230633 100644
--- a/java/com/android/dialer/widget/res/values-sl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sl/strings.xml
@@ -1,10 +1,27 @@
+
+
"Napišite sporočilo po meri"
"Zapri"
"Nimate še nobenega stika"
- "Dodaj stik"
+
+
"Vklopi"
"Če si želite ogledati stike, vklopite dovoljenje za stike."
"Na voljo ni nobene aplikacije za stike"
diff --git a/java/com/android/dialer/widget/res/values-sq/strings.xml b/java/com/android/dialer/widget/res/values-sq/strings.xml
index c7943dfd381a9d1c79f920b19797648af975da98..b55e47c89c9ae2dcdfb662466ef44f41adb408c9 100644
--- a/java/com/android/dialer/widget/res/values-sq/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sq/strings.xml
@@ -1,10 +1,27 @@
+
+
"Shkruaj mesazh të person."
"Mbyll"
"Nuk ke ende kontakte"
- "Shto një kontakt"
+
+
"Aktivizo"
"Për të parë kontaktet, aktivizo lejen e Kontakteve."
"Nuk ka asnjë aplikacion për kontaktet"
diff --git a/java/com/android/dialer/widget/res/values-sr/strings.xml b/java/com/android/dialer/widget/res/values-sr/strings.xml
index 00b9b4f6cf23e747bd521f0f1331b0cb943123b8..c2f269d3f7f87059a46d5c7e02ad77f9dce94236 100644
--- a/java/com/android/dialer/widget/res/values-sr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sr/strings.xml
@@ -1,10 +1,26 @@
+
+
"Напишите прилагођену поруку"
"Затворите"
"Још увек немате ниједан контакт"
- "Додај контакт"
+ "Направи нови контакт"
"Укључи"
"Да бисте видели контакте, укључите дозволу за Контакте."
"Нема доступне апликације за контакте"
diff --git a/java/com/android/dialer/widget/res/values-sv/strings.xml b/java/com/android/dialer/widget/res/values-sv/strings.xml
index 3593970268dabdc92f82dea2da9f5ca67e82473a..75add78ac585bc335dde71a59d077e8937cdad05 100644
--- a/java/com/android/dialer/widget/res/values-sv/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sv/strings.xml
@@ -1,10 +1,26 @@
+
+
"Skriv anpassat meddelande"
"Stäng"
"Du har inga kontakter ännu"
- "Lägg till en kontakt"
+ "Skapa ny kontakt"
"Aktivera"
"Du måste aktivera behörigheten Kontakter för att visa kontakterna."
"Det finns inga appar för kontakter"
diff --git a/java/com/android/dialer/widget/res/values-sw/strings.xml b/java/com/android/dialer/widget/res/values-sw/strings.xml
index b0892108b2bab4b5c75c778004d0ffbb931063d8..a9139809fe8400a6fb7370a0a2da9919859086f5 100644
--- a/java/com/android/dialer/widget/res/values-sw/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sw/strings.xml
@@ -1,10 +1,27 @@
+
+
"Andika ujumbe maalum"
"Funga"
"Bado huna anwani zozote"
- "Ongeza anwani"
+
+
"Washa"
"Ili uone anwani zako, washa ruhusa ya Anwani."
"Hakuna programu ya anwani iliyopatikana"
diff --git a/java/com/android/dialer/widget/res/values-ta/strings.xml b/java/com/android/dialer/widget/res/values-ta/strings.xml
index 83ca080e5c34db7d289e6c6ac1ca561195083546..17333304f1d2db163002270969c5580e96251387 100644
--- a/java/com/android/dialer/widget/res/values-ta/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ta/strings.xml
@@ -1,10 +1,26 @@
+
+
"தனிப்பயன் செய்தியை எழுதவும்"
"மூடு"
"இதுவரை தொடர்புகள் எதுவுமில்லை"
- "தொடர்பைச் சேர்"
+ "புதிய தொடர்பை உருவாக்கு"
"இயக்கு"
"தொடர்புகளைப் பார்க்க, தொடர்புகள் அனுமதியை இயக்கவும்."
"தொடர்புகள் பயன்பாடு எதுவுமில்லை"
diff --git a/java/com/android/dialer/widget/res/values-te/strings.xml b/java/com/android/dialer/widget/res/values-te/strings.xml
index 418cc3d0b28bbed998b38d619c6b18dd2255cc06..27e6b0536ed2ec439216cb5198b18ac8edad8575 100644
--- a/java/com/android/dialer/widget/res/values-te/strings.xml
+++ b/java/com/android/dialer/widget/res/values-te/strings.xml
@@ -1,10 +1,26 @@
+
+
"అనుకూల సందేశాన్ని వ్రాయండి"
"మూసివేయి"
"మీకు ఇప్పటికీ పరిచయాలేవీ లేవు"
- "పరిచయాన్ని జోడించండి"
+ "కొత్త పరిచయాన్ని సృష్టించండి"
"ఆన్ చేయి"
"మీ పరిచయాలను చూడటానికి, పరిచయాల అనుమతిని ఆన్ చేయండి."
"పరిచయాల అనువర్తనం ఏదీ అందుబాటులో లేదు"
diff --git a/java/com/android/dialer/widget/res/values-th/strings.xml b/java/com/android/dialer/widget/res/values-th/strings.xml
index c556d1c37ab12aa09dcaacf3eff780c1fbac1f81..40134c84d2e72ad50882134d637b669398ea4932 100644
--- a/java/com/android/dialer/widget/res/values-th/strings.xml
+++ b/java/com/android/dialer/widget/res/values-th/strings.xml
@@ -1,10 +1,26 @@
+
+
"เขียนข้อความที่กำหนดเอง"
"ปิด"
"คุณยังไม่มีรายชื่อติดต่อ"
- "เพิ่มรายชื่อติดต่อ"
+ "สร้างรายชื่อติดต่อใหม่"
"เปิด"
"หากต้องการดูรายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ"
"ไม่มีแอปรายชื่อติดต่อที่พร้อมใช้งาน"
diff --git a/java/com/android/dialer/widget/res/values-tl/strings.xml b/java/com/android/dialer/widget/res/values-tl/strings.xml
index be02d1989ce4645197d0d3cb423af55c05d05b06..406f18b5e48a8e7a7976b70b45009f55f7881d6f 100644
--- a/java/com/android/dialer/widget/res/values-tl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-tl/strings.xml
@@ -1,10 +1,27 @@
+
+
"Sumulat ng custom na mensahe"
"Isara"
"Wala ka pang sinumang contact"
- "Magdagdag ng contact"
+
+
"I-on"
"Upang makita ang iyong mga contact, i-on ang pahintulot ng Mga Contact."
"Walang available na app ng mga contact"
diff --git a/java/com/android/dialer/widget/res/values-tr/strings.xml b/java/com/android/dialer/widget/res/values-tr/strings.xml
index 90d5db64907d061910a52797d7dbba2fce5b7258..e1dcabd48a98d3398588aad97679c24967b88b52 100644
--- a/java/com/android/dialer/widget/res/values-tr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-tr/strings.xml
@@ -1,10 +1,27 @@
+
+
"Özel bir mesaj yazın"
"Kapat"
"Henüz hiç kişiniz yok"
- "Kişi ekleyin"
+
+
"Etkinleştir"
"Kişilerinizi görmek için Kişiler iznini etkinleştirin."
"Kullanılabilir kişi uygulaması yok"
diff --git a/java/com/android/dialer/widget/res/values-uk/strings.xml b/java/com/android/dialer/widget/res/values-uk/strings.xml
index cf5a7d1db17a3a50274e74e8887d8f1302665fa5..d1a281c64aeab7c648e82de90aec155d20e39aa9 100644
--- a/java/com/android/dialer/widget/res/values-uk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-uk/strings.xml
@@ -1,10 +1,26 @@
+
+
"Ваше власне повідомлення"
"Закрити"
"Ще немає контактів"
- "Додати контакт"
+ "Створити контакт"
"Увімкнути"
"Щоб переглянути контакти, увімкніть дозвіл \"Контакти\"."
"Немає додатка з контактами"
diff --git a/java/com/android/dialer/widget/res/values-ur/strings.xml b/java/com/android/dialer/widget/res/values-ur/strings.xml
index e5199afe4808e9194d8f30beb951a97c2287ecbc..d5dcad0bd2797d1cf3c6d7fec1eeb5371fe6b6f4 100644
--- a/java/com/android/dialer/widget/res/values-ur/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ur/strings.xml
@@ -1,10 +1,26 @@
+
+
"ایک حسب ضرورت پیغام لکھیں"
"بند کریں"
"آپ کے پاس ابھی تک کوئی رابطے نہیں ہیں"
- "ایک رابطہ شامل کریں"
+ "نیا رابطہ بنائیں"
"آن کریں"
"اپنے رابطے دیکھنے کیلئے رابطوں کی اجازت آن کریں۔"
"رابطوں کی کوئی ایپ دستیاب نہیں ہے"
diff --git a/java/com/android/dialer/widget/res/values-uz/strings.xml b/java/com/android/dialer/widget/res/values-uz/strings.xml
index eb0e0adaef476032c4d9fc65d8c1eb799abb551e..b3003be16a442122f434332a5654c130b07dfc87 100644
--- a/java/com/android/dialer/widget/res/values-uz/strings.xml
+++ b/java/com/android/dialer/widget/res/values-uz/strings.xml
@@ -1,10 +1,27 @@
+
+
"Boshqa xabar yozing"
"Yopish"
"Kontaktlar yo‘q"
- "Kontakt qo‘shish"
+
+
"Ruxsat berish"
"Kontaktlar ro‘yxatini ko‘rish uchun ilovaga Kontaktlarga kirishga ruxsat bering."
"Kontaktlarni ochadigan ilova yo‘q"
diff --git a/java/com/android/dialer/widget/res/values-vi/strings.xml b/java/com/android/dialer/widget/res/values-vi/strings.xml
index 62e94b82e67c8a880b2b548db2f0b5f32c93c921..68669ec671b306e613a614681dba92ea7aa93d8b 100644
--- a/java/com/android/dialer/widget/res/values-vi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-vi/strings.xml
@@ -1,10 +1,27 @@
+
+
"Viết tin nhắn tùy chỉnh"
"Đóng"
"Bạn chưa có bất kỳ liên hệ nào"
- "Thêm liên hệ"
+
+
"Bật"
"Để xem danh bạ của bạn, bật quyền đối với Danh bạ."
"Không có ứng dụng danh bạ"
diff --git a/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml b/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
index 063301ae05b565c3fcd4b65d130576497fe04dbc..4a5e458019f8d67b93ad71a7e3729ab89be0315c 100644
--- a/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
@@ -1,10 +1,26 @@
+
+
"自行撰写信息"
"关闭"
"您还没有任何联系人"
- "添加联系人"
+ "创建新联系人"
"开启"
"要查看您的联系人,请开启“通讯录”权限。"
"没有可用的通讯录应用"
diff --git a/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml b/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
index e2e69b75b0b1c81e37470bdbe1b7c16ed4b1c2ac..3d5fe6ebb59d6a224c48e61a31e6be1b07c502af 100644
--- a/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
@@ -1,10 +1,26 @@
+
+
"撰寫自訂訊息"
"關閉"
"您尚無任何聯絡人"
- "新增聯絡人"
+ "建立新聯絡人"
"開放"
"如要查看聯絡人,請開放「通訊錄」權限。"
"沒有可用的聯絡人應用程式"
diff --git a/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml b/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
index 85768af8fba00cbd474f40b600ceebd2bf04ef8a..0cb8d152dad5a258b8c95fe65a2bb7862eb5fbff 100644
--- a/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
@@ -1,10 +1,27 @@
+
+
"撰寫自訂訊息"
"關閉"
"你還沒有任何聯絡人"
- "新增聯絡人"
+
+
"開啟"
"如要查看你的聯絡人,請開啟「聯絡人」存取權限。"
"沒有可用的聯絡人應用程式"
diff --git a/java/com/android/dialer/widget/res/values-zu/strings.xml b/java/com/android/dialer/widget/res/values-zu/strings.xml
index a3ba84a9a7deaba406a6a43a2986348143fa8420..ca5898341c7b96b59c485df1c0d9ed0ca1894774 100644
--- a/java/com/android/dialer/widget/res/values-zu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zu/strings.xml
@@ -1,10 +1,27 @@
+
+
"Bhala umlayezo wangokwezifiso"
"Vala"
"Awunabo oxhumana nabo okwamanje"
- "Engeza oxhumana naye"
+
+
"Vula"
"Ukuze ubone oxhumana nabo, vula imvume yoxhumana nabo."
"Alukho uhlelo lokusebenza loxhumana nabo olutholakalayo"
diff --git a/java/com/android/dialer/widget/res/values/strings.xml b/java/com/android/dialer/widget/res/values/strings.xml
index d6ea2e7cd628b56736648b96475f439f8d20dc21..74a5f0f2151e039c2e52f4cb6e521f5b58bddcb8 100644
--- a/java/com/android/dialer/widget/res/values/strings.xml
+++ b/java/com/android/dialer/widget/res/values/strings.xml
@@ -1,4 +1,19 @@
+
Write a custom message
@@ -10,7 +25,7 @@
You don\'t have any contacts yet
- Add a contact
+ Create new contact
Turn on
diff --git a/java/com/android/dialershared/bubble/Bubble.java b/java/com/android/dialershared/bubble/Bubble.java
index 3eb88aa22883b32514f0aab1f1571a7a1c70fb50..dbb5ea759251ae6d7d562590a59d4b5d67ba22cc 100644
--- a/java/com/android/dialershared/bubble/Bubble.java
+++ b/java/com/android/dialershared/bubble/Bubble.java
@@ -26,8 +26,12 @@ import android.content.Context;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.PixelFormat;
+import android.graphics.drawable.Animatable;
+import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
import android.os.Handler;
import android.provider.Settings;
import android.support.annotation.ColorInt;
@@ -47,6 +51,7 @@ import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewGroup.MarginLayoutParams;
import android.view.ViewPropertyAnimator;
import android.view.ViewTreeObserver.OnPreDrawListener;
import android.view.WindowManager;
@@ -69,6 +74,8 @@ import java.util.List;
* convenience)
*/
public class Bubble {
+ // This class has some odd behavior that is not immediately obvious in order to avoid jank when
+ // resizing. See http://go/bubble-resize for details.
// How long text should show after showText(CharSequence) is called
private static final int SHOW_TEXT_DURATION_MILLIS = 3000;
@@ -96,6 +103,8 @@ public class Bubble {
private final Handler handler = new Handler();
private ViewHolder viewHolder;
+ private ViewPropertyAnimator collapseAnimation;
+ private Integer overrideGravity;
@Retention(RetentionPolicy.SOURCE)
@IntDef({CollapseEnd.NOTHING, CollapseEnd.HIDE})
@@ -114,7 +123,7 @@ public class Bubble {
public static boolean canShowBubbles(@NonNull Context context) {
return canShowBubblesForTesting != null
? canShowBubblesForTesting
- : Settings.canDrawOverlays(context);
+ : VERSION.SDK_INT < VERSION_CODES.M || Settings.canDrawOverlays(context);
}
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
@@ -127,7 +136,7 @@ public class Bubble {
public static Intent getRequestPermissionIntent(@NonNull Context context) {
return new Intent(
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
- new Uri.Builder().scheme("package").fragment(context.getPackageName()).build());
+ Uri.fromParts("package", context.getPackageName(), null));
}
/** Creates instances of Bubble. The default implementation just calls the constructor. */
@@ -183,13 +192,12 @@ public class Bubble {
type,
LayoutParams.FLAG_NOT_TOUCH_MODAL
| LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
- | LayoutParams.FLAG_NOT_FOCUSABLE,
+ | LayoutParams.FLAG_NOT_FOCUSABLE
+ | LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);
windowParams.gravity = Gravity.TOP | Gravity.LEFT;
- windowParams.x =
- context.getResources().getDimensionPixelOffset(R.dimen.bubble_initial_offset_x);
- windowParams.y =
- context.getResources().getDimensionPixelOffset(R.dimen.bubble_initial_offset_y);
+ windowParams.x = context.getResources().getDimensionPixelOffset(R.dimen.bubble_safe_margin_x);
+ windowParams.y = currentInfo.getStartingYPosition();
windowParams.height = LayoutParams.WRAP_CONTENT;
windowParams.width = LayoutParams.WRAP_CONTENT;
}
@@ -203,6 +211,7 @@ public class Bubble {
showAnimator.setInterpolator(new OvershootInterpolator());
showAnimator.start();
isShowing = true;
+ updatePrimaryIconAnimation();
}
/**
@@ -235,6 +244,7 @@ public class Bubble {
() -> {
windowManager.removeView(viewHolder.getRoot());
isShowing = false;
+ updatePrimaryIconAnimation();
})
.start();
}
@@ -342,6 +352,11 @@ public class Bubble {
SHOW_TEXT_DURATION_MILLIS);
}
+ @Nullable
+ Integer getGravityOverride() {
+ return overrideGravity;
+ }
+
void onMoveStart() {
startCollapse(CollapseEnd.NOTHING);
viewHolder
@@ -353,23 +368,27 @@ public class Bubble {
void onMoveFinish() {
viewHolder.getPrimaryButton().animate().translationZ(0);
+ // If it's GONE, no resize is necessary. If it's VISIBLE, it will get cleaned up when the
+ // collapse animation finishes
+ if (viewHolder.getExpandedView().getVisibility() == View.INVISIBLE) {
+ doResize(null);
+ }
}
void primaryButtonClick() {
if (expanded || textShowing || currentInfo.getActions().isEmpty()) {
try {
- currentInfo.getPrimaryAction().send();
+ currentInfo.getPrimaryIntent().send();
} catch (CanceledException e) {
throw new RuntimeException(e);
}
return;
}
- boolean onRight = (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT;
doResize(
() -> {
- onLeftRightSwitch(onRight);
- viewHolder.getExpandedView().setVisibility(View.VISIBLE);
+ onLeftRightSwitch(isDrawingFromRight());
+ viewHolder.setDrawerVisibility(View.VISIBLE);
});
View expandedView = viewHolder.getExpandedView();
expandedView
@@ -380,7 +399,7 @@ public class Bubble {
public boolean onPreDraw() {
expandedView.getViewTreeObserver().removeOnPreDrawListener(this);
expandedView.setTranslationX(
- onRight ? expandedView.getWidth() : -expandedView.getWidth());
+ isDrawingFromRight() ? expandedView.getWidth() : -expandedView.getWidth());
expandedView
.animate()
.setInterpolator(new LinearOutSlowInInterpolator())
@@ -393,6 +412,14 @@ public class Bubble {
}
void onLeftRightSwitch(boolean onRight) {
+ if (viewHolder.isMoving()) {
+ if (viewHolder.getExpandedView().getVisibility() == View.GONE) {
+ // If the drawer is not part of the layout we don't need to do anything. Layout flips will
+ // happen if necessary when opening the drawer.
+ return;
+ }
+ }
+
viewHolder
.getRoot()
.setLayoutDirection(onRight ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);
@@ -437,6 +464,7 @@ public class Bubble {
viewHolder.getSecondButton().setVisibility(numButtons < 2 ? View.GONE : View.VISIBLE);
viewHolder.getPrimaryIcon().setImageIcon(currentInfo.getPrimaryIcon());
+ updatePrimaryIconAnimation();
viewHolder
.getExpandedView()
@@ -445,6 +473,17 @@ public class Bubble {
updateButtonStates();
}
+ private void updatePrimaryIconAnimation() {
+ Drawable drawable = viewHolder.getPrimaryIcon().getDrawable();
+ if (drawable instanceof Animatable) {
+ if (isShowing) {
+ ((Animatable) drawable).start();
+ } else {
+ ((Animatable) drawable).stop();
+ }
+ }
+ }
+
private void setBackgroundDrawable(CheckableImageButton view, @ColorInt int color) {
RippleDrawable itemRipple =
(RippleDrawable)
@@ -492,7 +531,7 @@ public class Bubble {
private void doAction(Action action) {
try {
- action.getAction().send();
+ action.getIntent().send();
} catch (CanceledException e) {
throw new RuntimeException(e);
}
@@ -504,9 +543,8 @@ public class Bubble {
// would occur. To fix this, instead of resizing the window, we create a new one and destroy
// the old one. There is a short delay before destroying the old view to ensure the new one has
// had time to draw.
- boolean onRight = (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT;
ViewHolder oldViewHolder = viewHolder;
- if (onRight) {
+ if (isDrawingFromRight()) {
viewHolder = new ViewHolder(oldViewHolder.getRoot().getContext());
update();
viewHolder
@@ -519,12 +557,13 @@ public class Bubble {
operation.run();
}
- if (onRight) {
+ if (isDrawingFromRight()) {
swapViewHolders(oldViewHolder);
}
}
private void swapViewHolders(ViewHolder oldViewHolder) {
+ oldViewHolder.getShadowProvider().setVisibility(View.GONE);
ViewGroup root = viewHolder.getRoot();
windowManager.addView(root, windowParams);
root.getViewTreeObserver()
@@ -542,32 +581,56 @@ public class Bubble {
});
}
- private ViewPropertyAnimator startCollapse(@CollapseEnd int collapseEndAction) {
- setFocused(false);
- boolean onRight = (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT;
+ private void startCollapse(@CollapseEnd int collapseEndAction) {
View expandedView = viewHolder.getExpandedView();
- return expandedView
- .animate()
- .translationX(onRight ? expandedView.getWidth() : -expandedView.getWidth())
- .setInterpolator(new FastOutLinearInInterpolator())
- .withEndAction(
- () -> {
- expanded = false;
- if (collapseEndAction == CollapseEnd.HIDE) {
- hide();
- } else if (!textShowing) {
- // Don't swap the window while the user is moving it, even if we're on the right.
- // The movement will help hide the jank of the resize.
- boolean swapWindow = onRight && !viewHolder.isMoving();
- if (swapWindow) {
- // We don't actually need to set the drawer to GONE since in the new window it
- // will already be GONE. Just do the resize operation.
- doResize(null);
- } else {
- expandedView.setVisibility(View.GONE);
- }
- }
- });
+ if (expandedView.getVisibility() != View.VISIBLE || collapseAnimation != null) {
+ // Drawer is already collapsed or animation is running.
+ return;
+ }
+
+ overrideGravity = isDrawingFromRight() ? Gravity.RIGHT : Gravity.LEFT;
+ setFocused(false);
+ collapseAnimation =
+ expandedView
+ .animate()
+ .translationX(isDrawingFromRight() ? expandedView.getWidth() : -expandedView.getWidth())
+ .setInterpolator(new FastOutLinearInInterpolator())
+ .withEndAction(
+ () -> {
+ collapseAnimation = null;
+ expanded = false;
+
+ if (textShowing) {
+ // Will do resize once the text is done.
+ return;
+ }
+
+ // Hide the drawer and resize if possible.
+ viewHolder.setDrawerVisibility(View.INVISIBLE);
+ if (!viewHolder.isMoving() || !isDrawingFromRight()) {
+ doResize(() -> viewHolder.setDrawerVisibility(View.GONE));
+ }
+
+ // If this collapse was to come before a hide, do it now.
+ if (collapseEndAction == CollapseEnd.HIDE) {
+ hide();
+ }
+
+ // Resume normal gravity after any resizing is done.
+ handler.postDelayed(
+ () -> {
+ overrideGravity = null;
+ if (!viewHolder.isMoving()) {
+ viewHolder.undoGravityOverride();
+ }
+ },
+ // Need to wait twice as long for resize and layout
+ WINDOW_REDRAW_DELAY_MILLIS * 2);
+ });
+ }
+
+ private boolean isDrawingFromRight() {
+ return (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT;
}
private void setFocused(boolean focused) {
@@ -594,6 +657,7 @@ public class Bubble {
private final CheckableImageButton secondButton;
private final CheckableImageButton thirdButton;
private final View expandedView;
+ private final View shadowProvider;
public ViewHolder(Context context) {
// Window root is not in the layout file so that the inflater has a view to inflate into
@@ -604,6 +668,7 @@ public class Bubble {
primaryButton = contentView.findViewById(R.id.bubble_button_primary);
primaryIcon = contentView.findViewById(R.id.bubble_icon_primary);
primaryText = contentView.findViewById(R.id.bubble_text);
+ shadowProvider = contentView.findViewById(R.id.bubble_drawer_shadow_provider);
firstButton = contentView.findViewById(R.id.bubble_icon_first);
secondButton = contentView.findViewById(R.id.bubble_icon_second);
@@ -625,6 +690,28 @@ public class Bubble {
}
return false;
});
+ expandedView
+ .getViewTreeObserver()
+ .addOnDrawListener(
+ () -> {
+ int translationX = (int) expandedView.getTranslationX();
+ int parentOffset =
+ ((MarginLayoutParams) ((ViewGroup) expandedView.getParent()).getLayoutParams())
+ .leftMargin;
+ if (isDrawingFromRight()) {
+ int maxLeft =
+ shadowProvider.getRight()
+ - context.getResources().getDimensionPixelSize(R.dimen.bubble_size);
+ shadowProvider.setLeft(
+ Math.min(maxLeft, expandedView.getLeft() + translationX + parentOffset));
+ } else {
+ int minRight =
+ shadowProvider.getLeft()
+ + context.getResources().getDimensionPixelSize(R.dimen.bubble_size);
+ shadowProvider.setRight(
+ Math.max(minRight, expandedView.getRight() + translationX + parentOffset));
+ }
+ });
moveHandler = new MoveHandler(primaryButton, Bubble.this);
}
@@ -660,8 +747,21 @@ public class Bubble {
return expandedView;
}
+ public View getShadowProvider() {
+ return shadowProvider;
+ }
+
+ public void setDrawerVisibility(int visibility) {
+ expandedView.setVisibility(visibility);
+ shadowProvider.setVisibility(visibility);
+ }
+
public boolean isMoving() {
return moveHandler.isMoving();
}
+
+ public void undoGravityOverride() {
+ moveHandler.undoGravityOverride();
+ }
}
}
diff --git a/java/com/android/dialershared/bubble/BubbleInfo.java b/java/com/android/dialershared/bubble/BubbleInfo.java
index 52417ae7b1d02d52da495cc479a9fa63e7698ae5..eb9abd0593eef28eafd71356e3585d08caae6df8 100644
--- a/java/com/android/dialershared/bubble/BubbleInfo.java
+++ b/java/com/android/dialershared/bubble/BubbleInfo.java
@@ -20,6 +20,7 @@ import android.app.PendingIntent;
import android.graphics.drawable.Icon;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
+import android.support.annotation.Px;
import com.google.auto.value.AutoValue;
import java.util.Collections;
import java.util.List;
@@ -34,7 +35,10 @@ public abstract class BubbleInfo {
public abstract Icon getPrimaryIcon();
@NonNull
- public abstract PendingIntent getPrimaryAction();
+ public abstract PendingIntent getPrimaryIntent();
+
+ @Px
+ public abstract int getStartingYPosition();
@NonNull
public abstract List getActions();
@@ -45,9 +49,10 @@ public abstract class BubbleInfo {
public static Builder from(@NonNull BubbleInfo bubbleInfo) {
return builder()
- .setPrimaryAction(bubbleInfo.getPrimaryAction())
+ .setPrimaryIntent(bubbleInfo.getPrimaryIntent())
.setPrimaryColor(bubbleInfo.getPrimaryColor())
.setPrimaryIcon(bubbleInfo.getPrimaryIcon())
+ .setStartingYPosition(bubbleInfo.getStartingYPosition())
.setActions(bubbleInfo.getActions());
}
@@ -59,7 +64,9 @@ public abstract class BubbleInfo {
public abstract Builder setPrimaryIcon(@NonNull Icon primaryIcon);
- public abstract Builder setPrimaryAction(@NonNull PendingIntent primaryAction);
+ public abstract Builder setPrimaryIntent(@NonNull PendingIntent primaryIntent);
+
+ public abstract Builder setStartingYPosition(@Px int startingYPosition);
public abstract Builder setActions(List actions);
@@ -77,7 +84,7 @@ public abstract class BubbleInfo {
public abstract CharSequence getName();
@NonNull
- public abstract PendingIntent getAction();
+ public abstract PendingIntent getIntent();
public abstract boolean isEnabled();
@@ -89,7 +96,7 @@ public abstract class BubbleInfo {
public static Builder from(@NonNull Action action) {
return builder()
- .setAction(action.getAction())
+ .setIntent(action.getIntent())
.setChecked(action.isChecked())
.setEnabled(action.isEnabled())
.setName(action.getName())
@@ -104,7 +111,7 @@ public abstract class BubbleInfo {
public abstract Builder setName(@NonNull CharSequence name);
- public abstract Builder setAction(@NonNull PendingIntent action);
+ public abstract Builder setIntent(@NonNull PendingIntent intent);
public abstract Builder setEnabled(boolean enabled);
diff --git a/java/com/android/dialershared/bubble/MoveHandler.java b/java/com/android/dialershared/bubble/MoveHandler.java
index 8a21cd7e1f0c50a5702b26e808b8dbb4a1f3e6f1..bc6db64bc18f322f04425b6e8621b59ecec2418a 100644
--- a/java/com/android/dialershared/bubble/MoveHandler.java
+++ b/java/com/android/dialershared/bubble/MoveHandler.java
@@ -39,7 +39,7 @@ class MoveHandler implements OnTouchListener {
// Amount the ViewConfiguration's minFlingVelocity will be scaled by for our own minVelocity
private static final int MIN_FLING_VELOCITY_FACTOR = 8;
// The friction multiplier to control how slippery the bubble is when flung
- private static final float SCROLL_FRICTION_MULTIPLIER = 8f;
+ private static final float SCROLL_FRICTION_MULTIPLIER = 4f;
private final Context context;
private final WindowManager windowManager;
@@ -78,12 +78,22 @@ class MoveHandler implements OnTouchListener {
@Override
public void setValue(LayoutParams windowParams, float value) {
+ boolean wasOnRight = (windowParams.gravity & Gravity.RIGHT) == Gravity.RIGHT;
int displayWidth = context.getResources().getDisplayMetrics().widthPixels;
- boolean onRight = value > displayWidth / 2;
+ boolean onRight;
+ Integer gravityOverride = bubble.getGravityOverride();
+ if (gravityOverride == null) {
+ onRight = value > displayWidth / 2;
+ } else {
+ onRight = (gravityOverride & Gravity.RIGHT) == Gravity.RIGHT;
+ }
int centeringOffset = bubbleSize / 2 + shadowPaddingSize;
windowParams.x =
(int) (onRight ? (displayWidth - value - centeringOffset) : value - centeringOffset);
windowParams.gravity = Gravity.TOP | (onRight ? Gravity.RIGHT : Gravity.LEFT);
+ if (wasOnRight != onRight) {
+ bubble.onLeftRightSwitch(onRight);
+ }
if (bubble.isShowing()) {
windowManager.updateViewLayout(bubble.getRootView(), windowParams);
}
@@ -134,6 +144,11 @@ class MoveHandler implements OnTouchListener {
return isMoving;
}
+ public void undoGravityOverride() {
+ LayoutParams windowParams = bubble.getWindowParams();
+ xProperty.setValue(windowParams, xProperty.getValue(windowParams));
+ }
+
@Override
public boolean onTouch(View v, MotionEvent event) {
float eventX = event.getRawX();
@@ -190,13 +205,12 @@ class MoveHandler implements OnTouchListener {
} else {
snapX();
}
-
+ isMoving = false;
bubble.onMoveFinish();
} else {
v.performClick();
bubble.primaryButtonClick();
}
- isMoving = false;
break;
}
return true;
diff --git a/java/com/android/dialershared/bubble/g3doc/INTEGRATION.md b/java/com/android/dialershared/bubble/g3doc/INTEGRATION.md
new file mode 100644
index 0000000000000000000000000000000000000000..a13a6053bd2df901b45585f40b724455c66aff17
--- /dev/null
+++ b/java/com/android/dialershared/bubble/g3doc/INTEGRATION.md
@@ -0,0 +1,69 @@
+# Floating Bubble Integration
+
+go/bubble-integration
+
+Author: keyboardr@
+
+Last Updated: 2017-06-06
+
+Floating bubbles provide a lightweight means of providing interactive UI while
+the user is away from the app. This document details the steps necessary to
+integrate these bubbles into your app.
+
+[TOC]
+
+![Floating bubble](images/bubble_collapsed.png){height=400}
+
+## Ensure Bubbles can be shown
+
+Add the `android.permission.SYSTEM_ALERT_WINDOW` permission to your manifest.
+Before you show the bubble, call `Bubble.canShowBubbles(Context)` to see if the
+user has granted you permission. If not, you can start an Activity from
+`Bubble.getRequestPermissionIntent(Context)` to navigate the user to the system
+settings to enable drawing over other apps. This is more than just a simple
+runtime permission; the user must explicitly allow you to draw over other apps
+via this system setting. System apps may have this allowed by default, but be
+sure to test.
+
+## Create your initial `BubbleInfo`
+
+Use `BubbleInfo.builder()` to populate a `BubbleInfo` with your color, main
+icon, main Intent (which should navigate back to your app), starting Y position,
+and a list of `Actions` to put in the drawer. Each `Action` will define its
+icon, user-displayable name (used for content description), Intent to perform
+when clicked, whether it is enabled (optional, default true), and whether it is
+checked (optional, default false).
+
+![Floating bubble expanded](images/bubble_expanded.png){height=400}
+
+## Create, show, and hide the Bubble
+
+Create the bubble using `Bubble.createBubble(Context, BubbleInfo)`. The `show()`
+method is safe to call at any time. If the Bubble is already showing, it is a
+no-op. `hide()` may also be called at any time and will collapse the drawer
+before hiding if already open. While `show()` will show immediately, `hide()`
+may need to wait for other operations or animations before the bubble is hidden.
+It is unlikely you will need to keep track of this, however. The bubble will be
+hidden at its next opportunity, and `hide()` will not block.
+
+![Floating bubble with state](images/bubble_state.png){height=400}
+
+## Update the Bubble's state
+
+Call `Bubble.setBubbleInfo(BubbleInfo)` to update all displayed state.
+`BubbleInfo`s are immutable, so to make a new one using an existing
+`BubbleInfo`, use `BubbleInfo.from(BubbleInfo)` to get a `Builder` with
+prepopulated info. If only the `Action` state has changed, it is more efficient
+to just call `Bubble.updateActions(List)`
+
+![Floating bubble with text](images/bubble_text.png){height=400}
+
+## Show text
+
+To temporarily replace the icon with a textual message, call
+`Bubble.showText(CharSequence)`. The text will be displayed for several seconds
+before transitioning back to the primary icon. The drawer will be closed if open
+and cannot be reopened while the text is displayed. Any calls to `hide()` will
+be deferred until after the text is done being displayed, so if you wish to show
+an ending message of some sort you may call `hide()` immediately after
+`showText(CharSequence)`.
diff --git a/java/com/android/dialershared/bubble/g3doc/images/bubble_collapsed.png b/java/com/android/dialershared/bubble/g3doc/images/bubble_collapsed.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ecc0675b3adc3464f2d0cc8b00a18509b2cdf65
Binary files /dev/null and b/java/com/android/dialershared/bubble/g3doc/images/bubble_collapsed.png differ
diff --git a/java/com/android/dialershared/bubble/g3doc/images/bubble_expanded.png b/java/com/android/dialershared/bubble/g3doc/images/bubble_expanded.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd477f334c1483de48726d1d3811fe1ef8247250
Binary files /dev/null and b/java/com/android/dialershared/bubble/g3doc/images/bubble_expanded.png differ
diff --git a/java/com/android/dialershared/bubble/g3doc/images/bubble_state.png b/java/com/android/dialershared/bubble/g3doc/images/bubble_state.png
new file mode 100644
index 0000000000000000000000000000000000000000..21ca8a8b58200aff246e33d83cb19140b41f533b
Binary files /dev/null and b/java/com/android/dialershared/bubble/g3doc/images/bubble_state.png differ
diff --git a/java/com/android/dialershared/bubble/g3doc/images/bubble_text.png b/java/com/android/dialershared/bubble/g3doc/images/bubble_text.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c476dca6e78c6cbbd13b35b1f27af17c2056d8b
Binary files /dev/null and b/java/com/android/dialershared/bubble/g3doc/images/bubble_text.png differ
diff --git a/java/com/android/dialershared/bubble/res/layout/bubble_base.xml b/java/com/android/dialershared/bubble/res/layout/bubble_base.xml
index 3acd2af2e325fd7a6131694bf0d3c73fe938d43d..76970f020452ca14e9a4bc5cbdc6dab31f5f2c9b 100644
--- a/java/com/android/dialershared/bubble/res/layout/bubble_base.xml
+++ b/java/com/android/dialershared/bubble/res/layout/bubble_base.xml
@@ -19,24 +19,36 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:clipToPadding="false"
tools:theme="@style/Theme.AppCompat">
+
+ android:paddingEnd="@dimen/bubble_shadow_padding_size">
+ android:clipToPadding="false"
+ android:elevation="12dp">
- 0dp
- 0dp
- 0dp
- 120dp
- 64dp
- 20dp
+ 16dp
+ 64dp
+ 56dp
+ 16dp
4dp
16dp
diff --git a/java/com/android/incallui/AnswerScreenPresenter.java b/java/com/android/incallui/AnswerScreenPresenter.java
index ddbe6ccef514371b4103e54be8ab775996016e31..d5304014500b60339b3ad450fb2cc4c61eda3c88 100644
--- a/java/com/android/incallui/AnswerScreenPresenter.java
+++ b/java/com/android/incallui/AnswerScreenPresenter.java
@@ -17,12 +17,14 @@
package com.android.incallui;
import android.content.Context;
+import android.os.SystemClock;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
import android.support.v4.os.UserManagerCompat;
import android.telecom.VideoProfile;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.ThreadUtil;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.incallui.answer.protocol.AnswerScreen;
@@ -36,11 +38,14 @@ import com.android.incallui.call.DialerCallListener;
/** Manages changes for an incoming call screen. */
public class AnswerScreenPresenter
implements AnswerScreenDelegate, DialerCall.CannedTextResponsesLoadedListener {
+ private static final int ACCEPT_REJECT_CALL_TIME_OUT_IN_MILLIS = 5000;
+
@NonNull private final Context context;
@NonNull private final AnswerScreen answerScreen;
@NonNull private final DialerCall call;
+ private long actionPerformedTimeMillis;
- public AnswerScreenPresenter(
+ AnswerScreenPresenter(
@NonNull Context context, @NonNull AnswerScreen answerScreen, @NonNull DialerCall call) {
LogUtil.i("AnswerScreenPresenter.constructor", null);
this.context = Assert.isNotNull(context);
@@ -59,6 +64,13 @@ public class AnswerScreenPresenter
}
}
+ @Override
+ public boolean isActionTimeout() {
+ return actionPerformedTimeMillis != 0
+ && SystemClock.elapsedRealtime() - actionPerformedTimeMillis
+ >= ACCEPT_REJECT_CALL_TIME_OUT_IN_MILLIS;
+ }
+
@Override
public void onAnswerScreenUnready() {
call.removeCannedTextResponsesLoadedListener(this);
@@ -73,6 +85,7 @@ public class AnswerScreenPresenter
public void onRejectCallWithMessage(String message) {
call.reject(true /* rejectWithMessage */, message);
onDismissDialog();
+ addTimeoutCheck();
}
@Override
@@ -100,6 +113,7 @@ public class AnswerScreenPresenter
call.answer();
}
}
+ addTimeoutCheck();
}
@Override
@@ -114,6 +128,7 @@ public class AnswerScreenPresenter
} else {
call.reject(false /* rejectWithMessage */, null);
}
+ addTimeoutCheck();
}
@Override
@@ -128,6 +143,7 @@ public class AnswerScreenPresenter
activeCall.addListener(new AnswerOnDisconnected(activeCall));
activeCall.disconnect();
}
+ addTimeoutCheck();
}
@Override
@@ -165,7 +181,7 @@ public class AnswerScreenPresenter
private final DialerCall disconnectingCall;
- public AnswerOnDisconnected(DialerCall disconnectingCall) {
+ AnswerOnDisconnected(DialerCall disconnectingCall) {
this.disconnectingCall = disconnectingCall;
}
@@ -209,4 +225,23 @@ public class AnswerScreenPresenter
return UserManagerCompat.isUserUnlocked(context)
&& call.can(android.telecom.Call.Details.CAPABILITY_RESPOND_VIA_TEXT);
}
+
+ private void addTimeoutCheck() {
+ actionPerformedTimeMillis = SystemClock.elapsedRealtime();
+ if (answerScreen.getAnswerScreenFragment().isVisible()) {
+ ThreadUtil.postDelayedOnUiThread(
+ () -> {
+ if (!answerScreen.getAnswerScreenFragment().isVisible()) {
+ LogUtil.d(
+ "AnswerScreenPresenter.addTimeoutCheck",
+ "accept/reject call timed out, do nothing");
+ return;
+ }
+ LogUtil.i("AnswerScreenPresenter.addTimeoutCheck", "accept/reject call timed out");
+ // Force re-evaluate which fragment to show.
+ InCallPresenter.getInstance().refreshUi();
+ },
+ ACCEPT_REJECT_CALL_TIME_OUT_IN_MILLIS);
+ }
+ }
}
diff --git a/java/com/android/incallui/AnswerScreenPresenterStub.java b/java/com/android/incallui/AnswerScreenPresenterStub.java
index d02a181c1aa8ff4655a2d73ca35db024b56f1c74..2f9e608189cad929c68d6f31330ba43013de83d4 100644
--- a/java/com/android/incallui/AnswerScreenPresenterStub.java
+++ b/java/com/android/incallui/AnswerScreenPresenterStub.java
@@ -50,4 +50,9 @@ public class AnswerScreenPresenterStub implements AnswerScreenDelegate {
@Override
public void updateWindowBackgroundColor(@FloatRange(from = -1f, to = 1.0f) float progress) {}
+
+ @Override
+ public boolean isActionTimeout() {
+ return false;
+ }
}
diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java
index f758a9655e1f69416e7268eb101a8a6ac48530a0..e36d9cf9e07c9011153c337bea6fe0bf10717ed9 100644
--- a/java/com/android/incallui/CallButtonPresenter.java
+++ b/java/com/android/incallui/CallButtonPresenter.java
@@ -306,6 +306,9 @@ public class CallButtonPresenter
@Override
public void toggleCameraClicked() {
LogUtil.i("CallButtonPresenter.toggleCameraClicked", "");
+ if (mCall == null) {
+ return;
+ }
Logger.get(mContext)
.logCallImpression(
DialerImpression.Type.IN_CALL_SCREEN_SWAP_CAMERA,
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index cd06793ce41220d354d580268f5d4da08e3d734f..67b917767397015e47814c1475fc72d523d5a046 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -44,9 +44,9 @@ import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.ActivityCompat;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.multimedia.MultimediaData;
@@ -245,7 +245,7 @@ public class CallCardPresenter
@Override
public void onStateChange(InCallState oldState, InCallState newState, CallList callList) {
- LogUtil.v("CallCardPresenter.onStateChange", "" + newState);
+ LogUtil.v("CallCardPresenter.onStateChange", "oldState: %s, newState: %s", oldState, newState);
if (mInCallScreen == null) {
return;
}
@@ -374,6 +374,7 @@ public class CallCardPresenter
@Override
public void onEnrichedCallSessionUpdate() {
+ LogUtil.enterBlock("CallCardPresenter.onEnrichedCallSessionUpdate");
updatePrimaryDisplayInfo();
}
@@ -864,6 +865,14 @@ public class CallCardPresenter
return;
}
+ if (mSecondary.isMergeInProcess()) {
+ LogUtil.i(
+ "CallCardPresenter.updateSecondaryDisplayInfo",
+ "secondary call is merge in process, clearing info");
+ mInCallScreen.setSecondary(SecondaryInfo.createEmptySecondaryInfo(mIsFullscreen));
+ return;
+ }
+
if (mSecondary.isConferenceCall()) {
mInCallScreen.setSecondary(
new SecondaryInfo(
diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java
index d7eea79bd3544c5c987f78e4bcf85ffb9ca6d2dd..fdfba3b9fdb6af1d749e77f7e9143f9f5c6832c6 100644
--- a/java/com/android/incallui/ContactInfoCache.java
+++ b/java/com/android/incallui/ContactInfoCache.java
@@ -33,6 +33,7 @@ import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.WorkerThread;
+import android.support.v4.content.ContextCompat;
import android.support.v4.os.UserManagerCompat;
import android.telecom.TelecomManager;
import android.telephony.PhoneNumberUtils;
@@ -596,7 +597,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
// This will only be true for emergency numbers
if (info.photoResource != 0) {
- cce.photo = context.getResources().getDrawable(info.photoResource);
+ cce.photo = ContextCompat.getDrawable(context, info.photoResource);
} else if (info.isCachedPhotoCurrent) {
if (info.cachedPhoto != null) {
cce.photo = info.cachedPhoto;
diff --git a/java/com/android/incallui/ExternalCallNotifier.java b/java/com/android/incallui/ExternalCallNotifier.java
index 051392e2b24b44a73a883bbd008842e8a332b066..f01a29458b15c9d6ed7ad50f9d23c43bf039de7b 100644
--- a/java/com/android/incallui/ExternalCallNotifier.java
+++ b/java/com/android/incallui/ExternalCallNotifier.java
@@ -29,6 +29,7 @@ import android.net.Uri;
import android.os.Build.VERSION_CODES;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.v4.os.BuildCompat;
import android.telecom.Call;
import android.telecom.PhoneAccount;
import android.telecom.VideoProfile;
@@ -41,8 +42,7 @@ import com.android.contacts.common.compat.CallCompat;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.util.BitmapUtil;
import com.android.contacts.common.util.ContactDisplayUtils;
-import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.notification.NotificationChannelManager.Channel;
+import com.android.dialer.notification.NotificationChannelId;
import com.android.incallui.call.DialerCall;
import com.android.incallui.call.DialerCallDelegate;
import com.android.incallui.call.ExternalCallList;
@@ -59,9 +59,10 @@ import java.util.Map;
public class ExternalCallNotifier implements ExternalCallList.ExternalCallListener {
/** Tag used with the notification manager to uniquely identify external call notifications. */
- private static final int NOTIFICATION_ID = R.id.notification_external_call;
+ private static final String NOTIFICATION_TAG = "EXTERNAL_CALL";
+
+ private static final int NOTIFICATION_SUMMARY_ID = -1;
- private static final String NOTIFICATION_GROUP = "ExternalCallNotifier";
private final Context mContext;
private final ContactInfoCache mContactInfoCache;
private Map mNotifications = new ArrayMap<>();
@@ -188,15 +189,14 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen
NotificationManager notificationManager =
(NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.cancel(
- String.valueOf(mNotifications.get(call).getNotificationId()), NOTIFICATION_ID);
+ notificationManager.cancel(NOTIFICATION_TAG, mNotifications.get(call).getNotificationId());
mNotifications.remove(call);
if (mShowingSummary && mNotifications.size() <= 1) {
// Where a summary notification is showing and there is now not enough notifications to
// necessitate a summary, cancel the summary.
- notificationManager.cancel(NOTIFICATION_GROUP, NOTIFICATION_ID);
+ notificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_SUMMARY_ID);
mShowingSummary = false;
// If there is still a single call requiring a notification, re-post the notification as a
@@ -237,7 +237,7 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen
builder.setOngoing(true);
// Make the notification prioritized over the other normal notifications.
builder.setPriority(Notification.PRIORITY_HIGH);
- builder.setGroup(NOTIFICATION_GROUP);
+ builder.setGroup(NOTIFICATION_TAG);
boolean isVideoCall = VideoProfile.isVideo(info.getCall().getDetails().getVideoState());
// Set the content ("Ongoing call on another device")
@@ -251,9 +251,9 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen
builder.setLargeIcon(info.getLargeIcon());
builder.setColor(mContext.getResources().getColor(R.color.dialer_theme_color));
builder.addPerson(info.getPersonReference());
-
- NotificationChannelManager.applyChannel(
- builder, mContext, Channel.EXTERNAL_CALL, info.getCall().getDetails().getAccountHandle());
+ if (BuildCompat.isAtLeastO()) {
+ builder.setChannelId(NotificationChannelId.DEFAULT);
+ }
// Where the external call supports being transferred to the local device, add an action
// to the notification to initiate the call pull process.
@@ -286,20 +286,16 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen
Notification.Builder publicBuilder = new Notification.Builder(mContext);
publicBuilder.setSmallIcon(R.drawable.quantum_ic_call_white_24);
publicBuilder.setColor(mContext.getResources().getColor(R.color.dialer_theme_color));
-
- NotificationChannelManager.applyChannel(
- publicBuilder,
- mContext,
- Channel.EXTERNAL_CALL,
- info.getCall().getDetails().getAccountHandle());
+ if (BuildCompat.isAtLeastO()) {
+ publicBuilder.setChannelId(NotificationChannelId.DEFAULT);
+ }
builder.setPublicVersion(publicBuilder.build());
Notification notification = builder.build();
NotificationManager notificationManager =
(NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.notify(
- String.valueOf(info.getNotificationId()), NOTIFICATION_ID, notification);
+ notificationManager.notify(NOTIFICATION_TAG, info.getNotificationId(), notification);
if (!mShowingSummary && mNotifications.size() > 1) {
// If the number of notifications shown is > 1, and we're not already showing a group summary,
@@ -310,12 +306,13 @@ public class ExternalCallNotifier implements ExternalCallList.ExternalCallListen
summary.setOngoing(true);
// Make the notification prioritized over the other normal notifications.
summary.setPriority(Notification.PRIORITY_HIGH);
- summary.setGroup(NOTIFICATION_GROUP);
+ summary.setGroup(NOTIFICATION_TAG);
summary.setGroupSummary(true);
summary.setSmallIcon(R.drawable.quantum_ic_call_white_24);
- NotificationChannelManager.applyChannel(
- summary, mContext, Channel.EXTERNAL_CALL, info.getCall().getDetails().getAccountHandle());
- notificationManager.notify(NOTIFICATION_GROUP, NOTIFICATION_ID, summary.build());
+ if (BuildCompat.isAtLeastO()) {
+ summary.setChannelId(NotificationChannelId.DEFAULT);
+ }
+ notificationManager.notify(NOTIFICATION_TAG, NOTIFICATION_SUMMARY_ID, summary.build());
mShowingSummary = true;
}
}
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index bda003ccc64172b07204498f77964e1aaf51d95b..6ea31fc4c71857caf9b273dbf91531b386e027e6 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -35,9 +35,9 @@ import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.ActivityCompat;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.incallui.answer.bindings.AnswerBindings;
@@ -630,12 +630,22 @@ public class InCallActivity extends TransactionSafeFragmentActivity
AnswerScreen answerScreen = getAnswerScreen();
if (answerScreen.getCallId().equals(call.getId())
&& answerScreen.isVideoCall() == call.isVideoCall()
- && answerScreen.isVideoUpgradeRequest() == isVideoUpgradeRequest) {
+ && answerScreen.isVideoUpgradeRequest() == isVideoUpgradeRequest
+ && !answerScreen.isActionTimeout()) {
+ LogUtil.d(
+ "InCallActivity.showAnswerScreenFragment",
+ "answer fragment exists for same call and has NOT been accepted/rejected/timed out");
return false;
}
- LogUtil.i(
- "InCallActivity.showAnswerScreenFragment",
- "answer fragment exists but arguments do not match");
+ if (answerScreen.isActionTimeout()) {
+ LogUtil.i(
+ "InCallActivity.showAnswerScreenFragment",
+ "answer fragment exists but has been accepted/rejected and timed out");
+ } else {
+ LogUtil.i(
+ "InCallActivity.showAnswerScreenFragment",
+ "answer fragment exists but arguments do not match");
+ }
hideAnswerScreenFragment(transaction);
}
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 7c3000144b444456640831c2131c03ac946d971f..0bfd67e87d9532a7e2aeff969033d016375256a1 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -1014,6 +1014,13 @@ public class InCallPresenter implements CallList.Listener {
}
}
+ public void refreshUi() {
+ if (mInCallActivity != null) {
+ // Re-evaluate which fragment is being shown.
+ mInCallActivity.onPrimaryCallStateChanged();
+ }
+ }
+
public void addInCallUiListener(InCallUiListener listener) {
mInCallUiListeners.add(listener);
}
diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index 1653334a19e4d902c3d12318b8b735b1df922fd6..d2b0297417e5c236ecd9f404af28dd60699250a6 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -23,7 +23,6 @@ import android.telecom.Call;
import android.telecom.CallAudioState;
import android.telecom.InCallService;
import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.incallui.audiomode.AudioModeProvider;
import com.android.incallui.call.CallList;
import com.android.incallui.call.ExternalCallList;
@@ -82,7 +81,7 @@ public class InCallServiceImpl extends InCallService {
InCallPresenter.getInstance().onServiceBind();
InCallPresenter.getInstance().maybeStartRevealAnimation(intent);
TelecomAdapter.getInstance().setInCallService(this);
- if (ConfigProviderBindings.get(this).getBoolean("enable_return_to_call_bubble", false)) {
+ if (ReturnToCallController.isEnabled(this)) {
returnToCallController = new ReturnToCallController(this);
}
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
index 4cb6aaf898371915aaf30688d46e818275f0d40b..314aa45d4a4984ca036163cc42fae2ed00d66f20 100644
--- a/java/com/android/incallui/ReturnToCallController.java
+++ b/java/com/android/incallui/ReturnToCallController.java
@@ -24,6 +24,7 @@ import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import android.telecom.CallAudioState;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialershared.bubble.Bubble;
import com.android.dialershared.bubble.BubbleInfo;
@@ -57,6 +58,10 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio
private final PendingIntent toggleMute;
private final PendingIntent endCall;
+ public static boolean isEnabled(Context context) {
+ return !ConfigProviderBindings.get(context).getBoolean("disable_return_to_call_bubble", false);
+ }
+
public ReturnToCallController(Context context) {
this.context = context;
@@ -108,6 +113,7 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio
private Bubble startNewBubble() {
if (!Bubble.canShowBubbles(context)) {
LogUtil.i("ReturnToCallController.startNewBubble", "can't show bubble, no permission");
+ context.startActivity(Bubble.getRequestPermissionIntent(context));
return null;
}
Bubble returnToCallBubble = Bubble.createBubble(context, generateBubbleInfo());
@@ -156,12 +162,14 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio
}
private BubbleInfo generateBubbleInfo() {
+ Intent activityIntent = InCallActivity.getIntent(context, false, false, false);
+ activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
return BubbleInfo.builder()
.setPrimaryColor(context.getResources().getColor(R.color.dialer_theme_color, null))
- .setPrimaryIcon(Icon.createWithResource(context, R.drawable.quantum_ic_call_white_24))
- .setPrimaryAction(
- PendingIntent.getActivity(
- context, 0, InCallActivity.getIntent(context, false, false, false), 0))
+ .setPrimaryIcon(Icon.createWithResource(context, R.drawable.on_going_call))
+ .setStartingYPosition(
+ context.getResources().getDimensionPixelOffset(R.dimen.return_to_call_initial_offset_y))
+ .setPrimaryIntent(PendingIntent.getActivity(context, 0, activityIntent, 0))
.setActions(generateActions())
.build();
}
@@ -176,7 +184,7 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio
.setIcon(Icon.createWithResource(context, speakerButtonInfo.icon))
.setName(context.getText(speakerButtonInfo.label))
.setChecked(speakerButtonInfo.isChecked)
- .setAction(speakerButtonInfo.checkable ? toggleSpeaker : showSpeakerSelect)
+ .setIntent(speakerButtonInfo.checkable ? toggleSpeaker : showSpeakerSelect)
.build());
actions.add(
@@ -184,21 +192,21 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio
.setIcon(Icon.createWithResource(context, R.drawable.quantum_ic_mic_off_white_24))
.setName(context.getText(R.string.incall_label_mute))
.setChecked(audioState.isMuted())
- .setAction(toggleMute)
+ .setIntent(toggleMute)
.build());
actions.add(
Action.builder()
.setIcon(Icon.createWithResource(context, R.drawable.quantum_ic_call_end_white_24))
.setName(context.getText(R.string.incall_label_end_call))
- .setAction(endCall)
+ .setIntent(endCall)
.build());
return actions;
}
@NonNull
- private PendingIntent createActionIntent(String actionToggleSpeaker) {
+ private PendingIntent createActionIntent(String action) {
Intent toggleSpeaker = new Intent(context, ReturnToCallActionReceiver.class);
- toggleSpeaker.setAction(actionToggleSpeaker);
+ toggleSpeaker.setAction(action);
return PendingIntent.getBroadcast(context, 0, toggleSpeaker, 0);
}
}
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index 229f08c8e28eb33ced6c1a91f4ebec9d61e71007..458df51494a187be01a2d108be6aaeaba3d973b6 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -28,7 +28,6 @@ import static com.android.incallui.NotificationBroadcastReceiver.ACTION_HANG_UP_
import android.Manifest;
import android.app.ActivityManager;
import android.app.Notification;
-import android.app.Notification.Builder;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
@@ -70,8 +69,7 @@ import com.android.dialer.common.LogUtil;
import com.android.dialer.enrichedcall.EnrichedCallManager;
import com.android.dialer.enrichedcall.Session;
import com.android.dialer.multimedia.MultimediaData;
-import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.notification.NotificationChannelManager.Channel;
+import com.android.dialer.notification.NotificationChannelId;
import com.android.dialer.oem.MotorolaUtils;
import com.android.dialer.util.DrawableConverter;
import com.android.incallui.ContactInfoCache.ContactCacheEntry;
@@ -93,6 +91,9 @@ import java.util.Objects;
public class StatusBarNotifier
implements InCallPresenter.InCallStateListener, EnrichedCallManager.StateChangedListener {
+ private static final String NOTIFICATION_TAG = "STATUS_BAR_NOTIFIER";
+ private static final int NOTIFICATION_ID = 1;
+
// Notification types
// Indicates that no notification is currently showing.
private static final int NOTIFICATION_NONE = 0;
@@ -147,7 +148,7 @@ public class StatusBarNotifier
NotificationManager notificationManager =
backupContext.getSystemService(NotificationManager.class);
- notificationManager.cancel(R.id.notification_ongoing_call);
+ notificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID);
}
private static int getWorkStringFromPersonalString(int resId) {
@@ -173,12 +174,6 @@ public class StatusBarNotifier
return PendingIntent.getBroadcast(context, 0, intent, 0);
}
- private static void setColorized(@NonNull Builder builder) {
- if (BuildCompat.isAtLeastO()) {
- builder.setColorized(true);
- }
- }
-
/** Creates notifications according to the state we receive from {@link InCallPresenter}. */
@Override
@RequiresPermission(Manifest.permission.READ_PHONE_STATE)
@@ -226,7 +221,7 @@ public class StatusBarNotifier
}
if (mCurrentNotification != NOTIFICATION_NONE) {
LogUtil.i("StatusBarNotifier.cancelNotification", "cancel");
- mNotificationManager.cancel(R.id.notification_ongoing_call);
+ mNotificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID);
}
mCurrentNotification = NOTIFICATION_NONE;
}
@@ -365,13 +360,13 @@ public class StatusBarNotifier
LogUtil.i("StatusBarNotifier.buildAndSendNotification", "notificationType=" + notificationType);
switch (notificationType) {
case NOTIFICATION_INCOMING_CALL:
- NotificationChannelManager.applyChannel(
- builder, mContext, Channel.INCOMING_CALL, accountHandle);
+ if (BuildCompat.isAtLeastO()) {
+ builder.setChannelId(NotificationChannelId.INCOMING_CALL);
+ }
configureFullScreenIntent(builder, createLaunchPendingIntent(true /* isFullScreen */));
// Set the notification category and bump the priority for incoming calls
builder.setCategory(Notification.CATEGORY_CALL);
// This will be ignored on O+ and handled by the channel
- //noinspection deprecation
builder.setPriority(Notification.PRIORITY_MAX);
if (mCurrentNotification != NOTIFICATION_INCOMING_CALL) {
LogUtil.i(
@@ -379,18 +374,20 @@ public class StatusBarNotifier
"Canceling old notification so this one can be noisy");
// Moving from a non-interuptive notification (or none) to a noisy one. Cancel the old
// notification (if there is one) so the fullScreenIntent or HUN will show
- mNotificationManager.cancel(R.id.notification_ongoing_call);
+ mNotificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID);
}
break;
case NOTIFICATION_INCOMING_CALL_QUIET:
- NotificationChannelManager.applyChannel(
- builder, mContext, Channel.ONGOING_CALL, accountHandle);
+ if (BuildCompat.isAtLeastO()) {
+ builder.setChannelId(NotificationChannelId.ONGOING_CALL);
+ }
break;
case NOTIFICATION_IN_CALL:
- setColorized(publicBuilder);
- setColorized(builder);
- NotificationChannelManager.applyChannel(
- builder, mContext, Channel.ONGOING_CALL, accountHandle);
+ if (BuildCompat.isAtLeastO()) {
+ publicBuilder.setColorized(true);
+ builder.setColorized(true);
+ builder.setChannelId(NotificationChannelId.ONGOING_CALL);
+ }
break;
}
@@ -436,7 +433,7 @@ public class StatusBarNotifier
"displaying notification for " + notificationType);
try {
- mNotificationManager.notify(R.id.notification_ongoing_call, notification);
+ mNotificationManager.notify(NOTIFICATION_TAG, NOTIFICATION_ID, notification);
} catch (RuntimeException e) {
// TODO(b/34744003): Move the memory stats into silent feedback PSD.
ActivityManager activityManager = mContext.getSystemService(ActivityManager.class);
@@ -660,13 +657,17 @@ public class StatusBarNotifier
return R.drawable.quantum_ic_videocam_white_24;
} else if (call.hasProperty(PROPERTY_HIGH_DEF_AUDIO)
&& MotorolaUtils.shouldShowHdIconInNotification(mContext)) {
- // Normally when a call is ongoing the status bar displays an icon of a phone with animated
- // lines. This is a helpful hint for users so they know how to get back to the call.
- // For Sprint HD calls, we replace this icon with an icon of a phone with a HD badge.
- // This is a carrier requirement.
+ // Normally when a call is ongoing the status bar displays an icon of a phone. This is a
+ // helpful hint for users so they know how to get back to the call. For Sprint HD calls, we
+ // replace this icon with an icon of a phone with a HD badge. This is a carrier requirement.
return R.drawable.ic_hd_call;
}
- return R.anim.on_going_call;
+ // If ReturnToCall is enabled, use the static icon. The animated one will show in the bubble.
+ if (ReturnToCallController.isEnabled(mContext)) {
+ return R.drawable.quantum_ic_call_white_24;
+ } else {
+ return R.drawable.on_going_call;
+ }
}
/** Returns the message to use with the notification. */
@@ -823,13 +824,9 @@ public class StatusBarNotifier
"will show \"answer\" action in the incoming call Notification");
PendingIntent answerVoicePendingIntent =
createNotificationPendingIntent(mContext, ACTION_ANSWER_VOICE_INCOMING_CALL);
- // We put animation resources in "anim" folder instead of "drawable", which causes Android
- // Studio to complain.
- // TODO: Move "anim" resources to "drawable" as recommended in AnimationDrawable doc?
- //noinspection ResourceType
builder.addAction(
new Notification.Action.Builder(
- Icon.createWithResource(mContext, R.anim.on_going_call),
+ Icon.createWithResource(mContext, R.drawable.quantum_ic_call_white_24),
getActionText(
R.string.notification_action_answer, R.color.notification_action_accept),
answerVoicePendingIntent)
@@ -927,7 +924,7 @@ public class StatusBarNotifier
builder.setOngoing(true);
builder.setOnlyAlertOnce(true);
// This will be ignored on O+ and handled by the channel
- //noinspection deprecation
+ // noinspection deprecation
builder.setPriority(Notification.PRIORITY_HIGH);
return builder;
diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java
index 31999ef2e1238d370d4717b722dc1163e52082e3..bd9837097d692c5359c613cc38aa1a1ab0fb41dd 100644
--- a/java/com/android/incallui/VideoCallPresenter.java
+++ b/java/com/android/incallui/VideoCallPresenter.java
@@ -27,9 +27,9 @@ import android.telecom.VideoProfile.CameraCapabilities;
import android.view.Surface;
import android.view.SurfaceView;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
import com.android.dialer.compat.CompatUtils;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.incallui.InCallPresenter.InCallDetailsListener;
import com.android.incallui.InCallPresenter.InCallOrientationListener;
import com.android.incallui.InCallPresenter.InCallStateListener;
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index 6be79305d4339871fbb2113f73163f91cd8e5f2c..44310536d003ddba71312e7124560abac02741b1 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -216,6 +216,7 @@ public class AnswerFragment extends Fragment
private void performAnswerAndRelease() {
restoreAnswerAndReleaseButtonAnimation();
answerScreenDelegate.onAnswerAndReleaseCall();
+ buttonAcceptClicked = true;
}
private void restoreAnswerAndReleaseButtonAnimation() {
@@ -358,6 +359,11 @@ public class AnswerFragment extends Fragment
return instance;
}
+ @Override
+ public boolean isActionTimeout() {
+ return (buttonAcceptClicked || buttonRejectClicked) && answerScreenDelegate.isActionTimeout();
+ }
+
@Override
@NonNull
public String getCallId() {
@@ -526,6 +532,7 @@ public class AnswerFragment extends Fragment
if (!isAdded()) {
return;
}
+ LogUtil.enterBlock("AnswerFragment.updateDataFragment");
Fragment current = getChildFragmentManager().findFragmentById(R.id.incall_data_container);
Fragment newFragment = null;
@@ -542,6 +549,7 @@ public class AnswerFragment extends Fragment
|| !Objects.equals(((MultimediaFragment) current).getSubject(), subject)
|| !Objects.equals(((MultimediaFragment) current).getImageUri(), imageUri)
|| !Objects.equals(((MultimediaFragment) current).getLocation(), location)) {
+ LogUtil.i("AnswerFragment.updateDataFragment", "Replacing multimedia fragment");
// Needs replacement
newFragment =
MultimediaFragment.newInstance(
@@ -553,12 +561,14 @@ public class AnswerFragment extends Fragment
} else if (shouldShowAvatar()) {
// Needs Avatar
if (!(current instanceof AvatarFragment)) {
+ LogUtil.i("AnswerFragment.updateDataFragment", "Replacing avatar fragment");
// Needs replacement
newFragment = new AvatarFragment();
}
} else {
// Needs empty
if (current != null) {
+ LogUtil.i("AnswerFragment.updateDataFragment", "Removing current fragment");
getChildFragmentManager().beginTransaction().remove(current).commitNow();
}
contactGridManager.setAvatarImageView(null, 0, false);
@@ -1021,7 +1031,7 @@ public class AnswerFragment extends Fragment
}
private void updateImportanceBadgeVisibility() {
- if (!isAdded()) {
+ if (!isAdded() || getView() == null) {
return;
}
diff --git a/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java b/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
index 1d3d7ef22276b8cdec46f90d68be1b62cc4999d6..5e83dfc78707b1dc2bcefabc15196fda9c4c59e5 100644
--- a/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
+++ b/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
@@ -20,7 +20,7 @@ import android.content.Context;
import android.hardware.SensorEvent;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
-import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.configprovider.ConfigProviderBindings;
/** An classifier trying to determine whether it is a human interacting with the phone or not. */
class HumanInteractionClassifier extends Classifier {
diff --git a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java
index 9c33b5de64094e6c6fbedd83c983fbc0a8f56fce..94cf893f0e463d22b3eaae37dbdea92100ccf43a 100644
--- a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java
+++ b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java
@@ -23,8 +23,8 @@ import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.util.DialerUtils;
import com.android.incallui.util.AccessibilityUtil;
diff --git a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
index 3b4512c4fa29e1cb6f0854d5d166fda9a91e14ab..204c4e1315b1c17709b1ac46a8de36aa89316bbc 100644
--- a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
+++ b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
@@ -25,8 +25,8 @@ import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.widget.Toast;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.DialerImpression.Type;
import com.android.dialer.logging.Logger;
import com.android.dialer.util.DialerUtils;
diff --git a/java/com/android/incallui/answer/protocol/AnswerScreen.java b/java/com/android/incallui/answer/protocol/AnswerScreen.java
index 8bcad6e35aafbe14b7070ce7cc40e4aa4974b966..5ad500200ec31fd4c125428b03797bbefc3ff5e4 100644
--- a/java/com/android/incallui/answer/protocol/AnswerScreen.java
+++ b/java/com/android/incallui/answer/protocol/AnswerScreen.java
@@ -30,6 +30,8 @@ public interface AnswerScreen {
boolean allowAnswerAndRelease();
+ boolean isActionTimeout();
+
void setTextResponses(List textResponses);
boolean hasPendingDialogs();
diff --git a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
index 10a3413af4b909b50d451778dd53a413eda4a074..5d2c415ed51811ed919f21414dc5faa706c8dc97 100644
--- a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
+++ b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
@@ -46,4 +46,7 @@ public interface AnswerScreenDelegate {
* @param progress float from -1 to 1. -1 is fully rejected, 1 is fully accepted, and 0 is neutral
*/
void updateWindowBackgroundColor(@FloatRange(from = -1f, to = 1.0f) float progress);
+
+ /** Returns true if any answer/reject action timed out. */
+ boolean isActionTimeout();
}
diff --git a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
index fe4ae9f961e8086a7a87269c202c4a810f9666a6..536a470b0939bbe3b31344db79dc3de40ec63229 100644
--- a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
+++ b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
@@ -20,8 +20,8 @@ import android.content.Context;
import android.hardware.display.DisplayManager;
import android.os.PowerManager;
import android.view.Display;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.incallui.call.DialerCall;
import com.android.incallui.call.DialerCall.State;
import com.android.incallui.call.DialerCallListener;
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 3876ca64d16a97789be8178f53de8c5bba58527e..269fcd68b0b68a2a7e1679b8145d5960b21a1279 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -299,6 +299,8 @@ public class CallList implements DialerCallDelegate {
LogUtil.w(
"CallList.onCallRemoved", "Removing call not previously disconnected " + call.getId());
}
+
+ call.onRemovedFromCallList();
}
if (!hasLiveCall()) {
@@ -566,7 +568,8 @@ public class CallList implements DialerCallDelegate {
*
* @param call The call to update.
*/
- private void onUpdateCall(DialerCall call) {
+ @VisibleForTesting
+ void onUpdateCall(DialerCall call) {
LogUtil.d("CallList.onUpdateCall", String.valueOf(call));
if (!mCallById.containsKey(call.getId()) && call.isExternalCall()) {
// When a regular call becomes external, it is removed from the call list, and there may be
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 12edb07e62b5188f83707818522127f19fc2733a..88e0dbb5e5d1afb3b728d2b89bb4b089e8cc3388 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -47,8 +47,8 @@ import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentParser;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.enrichedcall.EnrichedCallManager;
@@ -163,6 +163,9 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
*/
private boolean isRemotelyHeld;
+ /** Indicates whether this call is currently in the process of being merged into a conference. */
+ private boolean isMergeInProcess;
+
/**
* Indicates whether the phone account associated with this call supports specifying a call
* subject.
@@ -265,6 +268,14 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
case TelephonyManagerCompat.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC:
notifyInternationalCallOnWifi();
break;
+ case TelephonyManagerCompat.EVENT_MERGE_START:
+ LogUtil.i("DialerCall.onConnectionEvent", "merge start");
+ isMergeInProcess = true;
+ break;
+ case TelephonyManagerCompat.EVENT_MERGE_COMPLETE:
+ LogUtil.i("DialerCall.onConnectionEvent", "merge complete");
+ isMergeInProcess = false;
+ break;
default:
break;
}
@@ -970,6 +981,10 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
return isRemotelyHeld;
}
+ public boolean isMergeInProcess() {
+ return isMergeInProcess;
+ }
+
public boolean isIncoming() {
return mLogState.isIncoming;
}
@@ -1274,6 +1289,11 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
}
}
+ void onRemovedFromCallList() {
+ // Ensure we clean up when this call is removed.
+ mVideoTechManager.dispatchRemovedFromCallList();
+ }
+
/**
* Specifies whether a number is in the call history or not. {@link #CALL_HISTORY_STATUS_UNKNOWN}
* means there is no result.
@@ -1493,7 +1513,10 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
videoTechs.add(
new LightbringerTech(
- LightbringerComponent.get(call.mContext).getLightbringer(), call, phoneNumber));
+ LightbringerComponent.get(call.mContext).getLightbringer(),
+ call,
+ call.mTelecomCall,
+ phoneNumber));
}
VideoTech getVideoTech() {
@@ -1517,6 +1540,12 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
videoTech.onCallStateChanged(context, newState);
}
}
+
+ void dispatchRemovedFromCallList() {
+ for (VideoTech videoTech : videoTechs) {
+ videoTech.onRemovedFromCallList();
+ }
+ }
}
/** Called when canned text responses have been loaded. */
diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java
index d329dc903842d19fab3bda0a0545e4d878f990ad..e102ee009071da8be281fd9e6e98519d7ae37a49 100644
--- a/java/com/android/incallui/incall/impl/InCallFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallFragment.java
@@ -42,6 +42,7 @@ import com.android.dialer.common.Assert;
import com.android.dialer.common.FragmentUtils;
import com.android.dialer.common.LogUtil;
import com.android.dialer.multimedia.MultimediaData;
+import com.android.dialer.widget.LockableViewPager;
import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
import com.android.incallui.contactgrid.ContactGridManager;
diff --git a/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml b/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
index 44431413cce58ad53e00d1fe531b811ca83b78c9..c06f7099c36fcd7e5514263fb7aeb62093a81a09 100644
--- a/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
+++ b/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
@@ -1,4 +1,19 @@
+
-
+
+
-
\ No newline at end of file
+
diff --git a/java/com/android/incallui/res/values-af/strings.xml b/java/com/android/incallui/res/values-af/strings.xml
index 5dacaaa8da008e1efbd4767f9df24716093d9a6c..7d260c337164e9f0cc81148aeba791900cf99d47 100644
--- a/java/com/android/incallui/res/values-af/strings.xml
+++ b/java/com/android/incallui/res/values-af/strings.xml
@@ -33,8 +33,8 @@
"Gemiste oproep vanaf %s"
"Oproep aan die gang"
"Voortdurende werkoproep"
- "Voortdurende Wi-Fi-oproep"
- "Voortdurende Wi-Fi-werkoproep"
+ "Voortdurende Wi-Fi-oproep"
+ "Voortdurende Wi-Fi-werkoproep"
"Hou aan"
"Inkomende oproep"
"Inkomende oproep met foto"
@@ -55,8 +55,8 @@
"Belangrike inkomende oproep met foto, boodskap en ligging"
"Belangrike inkomende oproep met aanhegsels"
"Inkomende werkoproep"
- "Inkomende Wi-Fi-oproep"
- "Inkomende Wi-Fi-werkoproep"
+ "Inkomende Wi-Fi-oproep"
+ "Inkomende Wi-Fi-werkoproep"
"Inkomende verdagte strooipos-oproep"
"Inkomende videoversoek"
"Geen diens nie"
@@ -73,7 +73,7 @@
"Neem video-oproep"
"Om \'n oproep te maak, skakel eers vliegtuigmodus af."
"Nie geregistreer op netwerk nie."
- "Sellulêre netwerk nie beskikbaar nie."
+ "Mobiele netwerk nie beskikbaar nie."
"Voer \'n geldige nommer in om \'n oproep te maak."
"Kan nie bel nie."
"Begin MMI-volgorde…"
@@ -134,8 +134,8 @@
"Beëindig oproep"
"Konferensie-oproep"
"Besig met oproep"
- "Gaan voort met oproep deur sellulêre data te gebruik …"
- "Kon nie na Wi-Fi-netwerk oorskakel nie"
- "Video-oproep sal op sellulêre netwerk bly. Standaard datakoste kan dalk geld."
+ "Gaan voort met oproep deur mobiele data te gebruik ..."
+ "Kon nie na Wi-Fi-netwerk oorskakel nie"
+ "Video-oproep sal op mobiele netwerk bly. Standaard datakoste kan dalk geld."
"Moenie dit weer wys nie"
diff --git a/java/com/android/incallui/res/values-am/strings.xml b/java/com/android/incallui/res/values-am/strings.xml
index 249447fee5e9164d6a14a2af5984fc3280ec9ea0..f09fd63e419dbac239ad30c745b55f6669353256 100644
--- a/java/com/android/incallui/res/values-am/strings.xml
+++ b/java/com/android/incallui/res/values-am/strings.xml
@@ -33,8 +33,8 @@
"ያልተመለሰ ጥሪ ከ%s"
"እየተካሄደ ያለ ጥሪ"
"በሂደት ላይ ያለ የሥራ ጥሪ"
- "በሂደት ላይ ያለ የWi-Fi ጥሪ"
- "በሂደት ላይ ያለ የWi-Fi የሥራ ጥሪ"
+ "በሂደት ላይ ያለ የWi-Fi ጥሪ"
+ "በሂደት ላይ ያለ የWi-Fi የሥራ ጥሪ"
"ያዝናቆይ"
"ገቢ ጥሪ"
"ገቢ ጥሪ ከፎቶ ጋር"
@@ -55,8 +55,8 @@
"አስፈላጊ ገቢ ጥሪ ከፎቶ፣ መልዕክት እና አካባቢ ጋር"
"አስፈላጊ ገቢ ጥሪ ከአባሪ ጋር"
"ገቢ የሥራ ጥሪ"
- "ገቢ የWi-Fi ጥሪ"
- "ገቢ የWi-Fi የሥራ ጥሪ"
+ "ገቢ የWi-Fi ጥሪ"
+ "ገቢ የWi-Fi የሥራ ጥሪ"
"መጪ የተጠረጠረ የአይፈለጌ መልዕክት ጥሪ"
"ገቢ የቪዲዮ ጥያቄ"
"ምንም አገልግሎት የለም"
@@ -73,7 +73,7 @@
"የቪዲዮ ጥሪ ውሰድ"
"ለመደወል፣ መጀመሪያየአውሮፕላኑን ሁነታ አጥፋ።"
"በአውታረ መረቡ ላይ አልተመዘገበም።"
- "የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም።"
+ "የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም።"
"አንድ ጥሪ ለማድረግ የሚሰራ ቁጥር ያስገቡ።"
"መደወል አልተቻለም።"
"የMMI sequence…"
@@ -134,8 +134,8 @@
"ጥሪ ጨርስ"
"የስብሰባ ጥሪ"
"በጥሪ ላይ"
- "ሴሉላር ውሂብ በመጠቀም ጥሪውን በመቀጠል ላይ…"
- "ወደ Wi-Fi አውታረ መረብ መቀየር አልተቻለም።"
- "የቪዲዮ ጥሪ በሴሉላር አውታረመረቡ ላይ ይቆያል። መደበኛ የውሂብ ክፍያዎች ተፈጻሚ ሊሆኑ ይችላሉ።"
+ "የተንቀሳቃሽ ስልክ ውሂብን በመጠቀም ጥሪውን በመቀጠል ላይ…"
+ "ወደ Wi-Fi አውታረ መረብ መቀየር አልተቻለም"
+ "የቪዲዮ ጥሪ በተንቀሳቃሽ ስልክ አውታረ መረብ ላይ ይቆያል። መደበኛ የውሂብ ክፍያዎች ተፈጻሚ ሊሆኑ ይችላሉ።"
"ይህን በድጋሚ አታሳይ"
diff --git a/java/com/android/incallui/res/values-ar/strings.xml b/java/com/android/incallui/res/values-ar/strings.xml
index 7c3585c7aa630da55743011465782ff46c06a5ff..392829114663f3c025195f31a028b803f80bd5e1 100644
--- a/java/com/android/incallui/res/values-ar/strings.xml
+++ b/java/com/android/incallui/res/values-ar/strings.xml
@@ -33,8 +33,8 @@
"مكالمة فائتة من %s"
"مكالمة حالية"
"مكالمة عمل جارية"
- "اتصال جارٍ عبر Wi-Fi"
- "مكالمة عمل جارية عبر اتصال Wi-Fi"
+ "اتصال جارٍ عبر Wi-Fi"
+ "مكالمة عمل جارية عبر اتصال Wi-Fi"
"معلقة"
"مكالمة واردة"
"مكالمة واردة مع صورة"
@@ -55,8 +55,8 @@
"مكالمة واردة مهمة مع صورة ورسالة وموقع"
"مكالمة واردة مهمة مع مرفقات"
"مكالمة عمل واردة"
- "اتصال وارد عبر Wi-Fi"
- "مكالمة عمل واردة عبر اتصال Wi-Fi"
+ "اتصال وارد عبر Wi-Fi"
+ "مكالمة عمل واردة عبر اتصال Wi-Fi"
"مكالمة واردة يشتبه في كونها غير مرغوب فيها"
"طلب فيديو وارد"
"لا خدمة"
@@ -73,7 +73,7 @@
"الرد على مكالمة فيديو"
"لإجراء مكالمة، أوقف تشغيل وضع الطائرة أولاً."
"غير مسجل على الشبكة."
- "شبكة الجوّال غير متاحة."
+ "شبكة الجوال غير متاحة."
"لإجراء مكالمة، أدخل رقمًا صالحًا."
"يتعذر الاتصال."
"جارٍ بدء تسلسل MMI..."
@@ -134,8 +134,8 @@
"إنهاء الاتصال"
"مكالمة جماعية"
"قيد الاتصال"
- "جارٍ استكمال المكالمة باستخدام بيانات الجوّال…"
- "تعذر التبديل إلى شبكة Wi-Fi"
- "ستظل مكالمة الفيديو على شبكة الجوّال. قد يتم فرض رسوم على البيانات القياسية للشبكة."
+ "جارٍ استكمال المكالمة باستخدام بيانات الجوّال…"
+ "تعذر التبديل إلى شبكة Wi-Fi"
+ "ستظل مكالمة الفيديو جارية على شبكة الجوال. قد يتم تطبيق رسوم قياسية على استخدام البيانات."
"عدم إظهار هذا مرة أخرى"
diff --git a/java/com/android/incallui/res/values-az/strings.xml b/java/com/android/incallui/res/values-az/strings.xml
index dc43014fbbe2590153d9e1d57179c159159b50cf..168dd07334c5b2cec06b3d4b228a96f72830a8ff 100644
--- a/java/com/android/incallui/res/values-az/strings.xml
+++ b/java/com/android/incallui/res/values-az/strings.xml
@@ -33,8 +33,8 @@
"%s tərəfindən zəng buraxılıb"
"Davam edən zəng"
"Davam edən iş çağrısı"
- "Davam edən Wi-Fi zəngi"
- "Davam edən Wi-Fi iş çağrısı"
+ "Davam edən Wi-Fi zəngi"
+ "Davam edən Wi-Fi iş zəngi"
"Gözləmə mövqeyində"
"Gələn zəng"
"Foto ilə gələn zəng"
@@ -55,8 +55,8 @@
"Foto, mesaj və məkan ilə gələn vacib zəng"
"Qoşma ilə gələn vacib zəng"
"Daxil olan iş çağrısı"
- "Gələn Wi-Fi zəngi"
- "Daxil olan Wi-Fi iş çağrısı"
+ "Gələn Wi-Fi zəngi"
+ "Gələn Wi-Fi iş zəngi"
"Şübhəli spam zəngi"
"Gələn video çağrı"
"Xidmət yoxdur"
@@ -73,7 +73,7 @@
"Video Zəngə cavab verin"
"Zəng etmək üçün ilk olaraq Uçuş Rejimini söndürün."
"Şəbəkədə qeydə alınmayıb."
- "Mobil şəbəkə əlçatan deyil"
+ "Mobil şəbəkə əlçatımlı deyil."
"Zəngi yerləşdirmək üçün düzgün nömrə daxil edin."
"Zəng etmək mümkün deyil."
"MMI başlanma ardıcıllığı…"
@@ -134,8 +134,8 @@
"Zəngi sonlandırın"
"Konfrans zəngi"
"Çağrıda"
- "Mobil data istifadə edərək zəng davam edir…"
- "Wi-Fi şəbəkəsinə qoşulmaq olmadı"
- "Video zəng mobil şəbəkə üzərində qalacaq. Standart data rüsumları tətbiq oluna bilər."
+ "Mobil data istifadə edərək zəngə davam edin…"
+ "Wi-Fi şəbəkəsinə qoşulmaq olmadı"
+ "Video zəng mobil şəbəkədə qalacaq. Standard data xərcləri tətbiq edilə bilər."
"Bunu bi rdaha göstərməyin"
diff --git a/java/com/android/incallui/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/res/values-b+sr+Latn/strings.xml
index 3dddf653ff4fdee8996166c38f3c488dfdb1ffd9..de2ad8642fa8d11f6a96059d5a78db86276fb3fe 100644
--- a/java/com/android/incallui/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/incallui/res/values-b+sr+Latn/strings.xml
@@ -33,8 +33,8 @@
"Propušten poziv od: %s"
"Aktuelni poziv"
"Tekući poziv za Work"
- "Tekući Wi-Fi poziv"
- "Tekući poziv za Work preko Wi-Fi-ja"
+ "Wi‑Fi poziv u toku"
+ "Wi‑Fi poslovni poziv u toku"
"Na čekanju"
"Dolazni poziv"
"Dolazni poziv sa slikom"
@@ -55,8 +55,8 @@
"Važan dolazni poziv sa slikom, porukom i lokacijom"
"Važan dolazni poziv sa prilozima"
"Dolazni poziv za Work"
- "Dolazni Wi-Fi poziv"
- "Dolazni poziv za Work preko Wi-Fi-ja"
+ "Dolazni Wi‑Fi poziv"
+ "Dolazni Wi‑Fi poslovni poziv"
"Sumnja na nepoželjan dolazni poziv"
"Zahtev za dolazni video poziv"
"Nema usluge"
@@ -73,7 +73,7 @@
"Preuzmi video poziv"
"Da biste uputili poziv, prvo isključite režim rada u avionu."
"Nije registrovano na mreži."
- "Mobilna mreža nije dostupna."
+ "Mobilna mreža nije dostupna."
"Da biste uputili poziv, unesite važeći broj."
"Poziv nije uspeo."
"Pokretanje MMI sekvence"
@@ -134,8 +134,8 @@
"Završite poziv"
"Konferencijski poziv"
"U pozivu"
- "Poziv se nastavlja pomoću mobilnih podataka…"
- "Prebacivanje na Wi-Fi mrežu nije uspelo"
- "Video poziv će ostati na mobilnoj mreži. Mogu da važe standardne naknade za prenos podataka."
+ "Poziv se nastavlja pomoću mobilnih podataka…"
+ "Prebacivanje na Wi‑Fi mrežu nije uspelo"
+ "Video poziv će ostati na mobilnoj mreži. Važe standardne naknade za prenos podataka."
"Ne prikazuj ovo ponovo"
diff --git a/java/com/android/incallui/res/values-be/strings.xml b/java/com/android/incallui/res/values-be/strings.xml
index 46b5d3941d5dc735d40ec1d25f9823504e364c96..274cac17faf614e8fe19fff7b1e5c7f3ebf25542 100644
--- a/java/com/android/incallui/res/values-be/strings.xml
+++ b/java/com/android/incallui/res/values-be/strings.xml
@@ -33,8 +33,8 @@
"Прапушчаны выклiк ад %s"
"Бягучы выклік"
"Бягучы выклік па працы"
- "Бягучы выклік праз Wi-Fi"
- "Бягучы выклік па працы праз Wi-Fi"
+ "Бягучы выклік праз Wi-Fi"
+ "Бягучы выклік па працы праз Wi-Fi"
"У чаканні"
"Уваходны выклік"
"Уваходны выклік з фота"
@@ -55,8 +55,8 @@
"Важны выклік з фота, паведамленнем і месцам"
"Важны ўваходны выклік з далучэннямі"
"Уваходны выклік па працы"
- "Уваходны выклік праз Wi-Fi"
- "Уваходны выклік па працы праз Wi-Fi"
+ "Уваходны выклік праз Wi-Fi"
+ "Уваходны выклік па працы праз Wi-Fi"
"Уваходны выклiк ад абанента, якога падазраваюць у спаме"
"Запыт уваходнага відэавыкліку"
"Не абслугоўваецца"
@@ -73,7 +73,7 @@
"Прыняць відэавыклік"
"Каб зрабіць выклік, спачатку выключыце рэжым \"У самалёце\"."
"Не зарэгістраваны ў сетцы."
- "Мабільная сетка недаступная."
+ "Мабільная сетка недаступная."
"Каб зрабіць выклік, увядзіце сапраўдны нумар."
"Выклік немагчымы."
"Пачатак паслядоўнасці MMI..."
@@ -134,8 +134,8 @@
"Завяршыць выклік"
"Канферэнц-выклік"
"У выкліку"
- "Працягваецца выклік з выкарыстаннем сотавай перадачы даных…"
- "Немагчыма пераключыцца на сетку Wi-Fi"
- "Відэавыклік застанецца ў мабільнай сетцы. Можа спаганяцца стандартная аплата за перадачу даных."
+ "Працягваецца выклік з выкарыстаннем мабільнай перадачы даных…"
+ "Немагчыма пераключыцца на сетку Wi-Fi"
+ "Відэавыклік застанецца ў мабільнай сетцы. Можа спаганяцца стандартная аплата за перадачу даных."
"Больш не паказваць"
diff --git a/java/com/android/incallui/res/values-bg/strings.xml b/java/com/android/incallui/res/values-bg/strings.xml
index 84bffa02c85693c8f7acb1a97b8ad5347766dc01..b3c1f3fd74a59776ead363f84107726ed4539378 100644
--- a/java/com/android/incallui/res/values-bg/strings.xml
+++ b/java/com/android/incallui/res/values-bg/strings.xml
@@ -33,8 +33,8 @@
"Пропуснато обаждане от %s"
"Текущо обаждане"
"Текущо служебно обаждане"
- "Текущо обаждане през Wi-Fi"
- "Текущо служебно обаждане през Wi-Fi"
+ "Текущо обаждане през Wi-Fi"
+ "Текущо служебно обаждане през Wi-Fi"
"Задържане на обаждането"
"Вх. обаждане"
"Входящо обаждане със снимка"
@@ -55,8 +55,8 @@
"Важно обаждане с местоположение, снимка, съобщение"
"Важно входящо обаждане с прикачени файлове"
"Входящо служебно обаждане"
- "Входящо обаждане през Wi-Fi"
- "Входящо служебно обаждане през Wi-Fi"
+ "Входящо обаждане през Wi-Fi"
+ "Входящо служебно обаждане през Wi-Fi"
"Входящо обаждане – възможен спам"
"Входяща заявка за видеовръзка"
"Няма покритие"
@@ -73,7 +73,7 @@
"Приемане на видеообаждането"
"Първо изключете самолетния режим, за да може да осъществите обаждане."
"Няма регистрация в мрежата."
- "Няма достъп до клетъчната мрежа."
+ "Няма мобилна мрежа."
"За да извършите обаждане, въведете валиден номер."
"Не може да се извърши обаждане."
"Стартира се последователността MMI…"
@@ -134,8 +134,8 @@
"Край на обаждането"
"Конферентно обаждане"
"В разговор"
- "Обаждането продължава през мобилната връзка за данни…"
- "Превключването към Wi-Fi мрежа не бе възможно"
- "Видеообаждането ще остане в мобилната мрежа. Важат стандартните тарифи за данни."
+ "Обаждането продължава през мобилната връзка за данни…"
+ "Превключването към Wi-Fi мрежа не бе възможно"
+ "Видеообаждането ще остане в мобилната мрежа. Важат стандартните тарифи за данни."
"Това да не се показва отново"
diff --git a/java/com/android/incallui/res/values-bn/strings.xml b/java/com/android/incallui/res/values-bn/strings.xml
index fc93830020e1adb42b2faaf32c5afbbcd68228dd..a964f81b1f9a3da68855a0f6a7ad24c3265bb418 100644
--- a/java/com/android/incallui/res/values-bn/strings.xml
+++ b/java/com/android/incallui/res/values-bn/strings.xml
@@ -33,8 +33,8 @@
"%s এর থেকে মিসড কল"
"চালু থাকা কল"
"চলমান কাজের কল"
- "চলমান ওয়াই-ফাই কল"
- "চলমান ওয়াই-ফাই কাজের কল"
+ "চালু থাকা ওয়াই-ফাই কল"
+ "চালু থাকা ওয়াই-ফাই কাজের কল"
"সাময়িকভাবে স্থগিত রাখা হয়েছে"
"ইনকামিং কল"
"ফটো সহ ইনকামিং কল"
@@ -55,8 +55,8 @@
"ফটো, বার্তা এবং অবস্থান সহ গুরুত্বপূর্ণ ইনকামিং কল"
"সংযুক্তিগুলি সহ গুরুত্বপূর্ণ ইনকামিং কল"
"আগত কাজের কল"
- "আগত ওয়াই-ফাই কল"
- "আগত ওয়াই-ফাই কাজের কল"
+ "আগত ওয়াই-ফাই কল"
+ "আগত ওয়াই-ফাই কাজের কল"
"আগত সন্দেহভাজন স্প্যাম কল"
"আগত ভিডিও অনুরোধ"
"কোনো পরিষেবা নেই"
@@ -73,7 +73,7 @@
"ভিডিও কলটি নিন"
"একটি কল করতে, প্রথমে বিমান মোড বন্ধ করুন৷"
"নেটওয়ার্কে নিবন্ধিত নয়৷"
- "সেলুলার নেটওয়ার্ক উপলব্ধ নয়।"
+ "মোবাইল নেটওয়ার্ক উপলব্ধ নয়৷"
"কোনো কল স্থাপন করতে, একটি বৈধ নম্বর লিখুন৷"
"কল করা যাবে না৷"
"MMI ক্রম চালু হচ্ছে…"
@@ -134,8 +134,8 @@
"কল কেটে দিন"
"কনফারেন্স কল"
"কলে থাকাকালীন"
- "সেলুলার ডেটা ব্যবহার করে কল করা চালিয়ে যান…"
- "Wi-Fi নেটওয়ার্কে পাল্টানো গেল না"
- "ভিডিও কল সেলুলার নেটওয়ার্কেই থাকবে৷ স্ট্যান্ডার্ড চার্জ প্রযোজ্য হতে পারে৷"
+ "মোবাইল ডেটা ব্যবহার করে কল করা চালিয়ে যান…"
+ "ওয়াই-ফাই নেটওয়ার্কে পাল্টানো গেল না"
+ "ভিডিও কল মোবাইল নেটওয়ার্কেই থাকবে৷ স্ট্যান্ডার্ড ডেটা চার্জ প্রযোজ্য হতে পারে৷"
"এটি আমাকে আর দেখাবেন না"
diff --git a/java/com/android/incallui/res/values-bs/strings.xml b/java/com/android/incallui/res/values-bs/strings.xml
index c6950802f76665daa9678df44c49e3b47f2d307a..996eb980cb5c2354766c1b40a2a8595452d246a4 100644
--- a/java/com/android/incallui/res/values-bs/strings.xml
+++ b/java/com/android/incallui/res/values-bs/strings.xml
@@ -33,8 +33,8 @@
"Propušteni poziv od kontakta %s"
"Poziv u toku"
"Poslovni poziv u toku"
- "Wi-Fi poziv u toku"
- "Wi-Fi poslovni poziv u toku"
+ "Wi-Fi poziv je u toku"
+ "Wi-Fi poslovni poziv je u toku"
"Na čekanju"
"Dolazni poziv"
"Dolazni poziv s fotografijom"
@@ -55,8 +55,8 @@
"Važan poziv s fotografijom, porukom i lokacijom"
"Važan dolazni poziv s prilozima"
"Dolazni poslovni poziv"
- "Dolazni Wi-Fi poziv"
- "Dolazni Wi-Fi poslovni poziv"
+ "Dolazni Wi-Fi poziv"
+ "Dolazni Wi-Fi poslovni poziv"
"Mogući neželjeni dolazni poziv"
"Zahtjev za dolazni videopoziv"
"Nema mreže"
@@ -73,7 +73,7 @@
"Primi videopoziv"
"Da uputite poziv, isključite Način rada u avionu."
"Nije registrirano na mreži."
- "Mobilna mreža nije dostupna."
+ "Mobilna mreža nije dostupna."
"Da uputite poziv, upišite važeći broj."
"Nije moguće pozvati."
"Pokretanje MMI sekvence u toku…"
@@ -134,8 +134,8 @@
"Prekini poziv"
"Konferencijski poziv"
"Poziv u toku"
- "Poziv se nastavlja pomoću mobilnih podataka…"
- "Prebacivanje na Wi-Fi mrežu nije moguće"
- "Videopoziv će ostati na mobilnoj mreži. Mogu nastati standardni troškovi prijenosa podataka."
+ "Nastavak poziva prijenosom mobilnih podataka…"
+ "Prebacivanje na Wi-Fi mrežu nije moguće"
+ "Videopoziv će ostati na mobilnoj mreži. Mogu nastati standardni troškovi prijenosa podataka."
"Ne prikazuj ponovo"
diff --git a/java/com/android/incallui/res/values-ca/strings.xml b/java/com/android/incallui/res/values-ca/strings.xml
index ad34b00ef9046b70547bca81833447c95310121e..f4d56a2a1e0789b175a28d1ea45a4bdfdf6b4544 100644
--- a/java/com/android/incallui/res/values-ca/strings.xml
+++ b/java/com/android/incallui/res/values-ca/strings.xml
@@ -33,8 +33,8 @@
"Trucada perduda de %s"
"Trucada en procés"
"Trucada de feina en curs"
- "Trucada Wi-Fi en curs"
- "Trucada de feina per Wi-Fi en curs"
+ "Trucada per Wi-Fi en curs"
+ "Trucada de feina per Wi-Fi en curs"
"En espera"
"Trucada entrant"
"Trucada entrant amb foto"
@@ -55,8 +55,8 @@
"Trucada entrant important amb foto, missatge i ubicació"
"Trucada entrant important amb fitxers adjunts"
"Trucada de feina entrant"
- "Trucada Wi-Fi entrant"
- "Trucada de feina per Wi-Fi entrant"
+ "Trucada per Wi-Fi entrant"
+ "Trucada de feina per Wi-Fi entrant"
"Presumpta trucada brossa entrant"
"Sol·licitud de vídeo entrant"
"Sense servei"
@@ -73,7 +73,7 @@
"Accepta la videotrucada"
"Per fer una trucada, primer apagueu el mode d\'avió."
"No registrat a la xarxa."
- "La xarxa mòbil no està disponible."
+ "La xarxa mòbil no està disponible."
"Per realitzar una trucada, introdueix un número vàlid."
"No es pot trucar."
"S\'està iniciant la seqüència MMI..."
@@ -125,7 +125,7 @@
"Segons les nostres sospites, l\'autor de la trucada és un emissor de contingut brossa. Si ens equivoquem, toca NO ÉS BROSSA per informar-nos-en."
"Bloqueja i marca"
"Afegeix un contacte"
- "No és contingut brossa"
+ "No és una trucada brossa"
"Bloqueja el número"
"Afegeix als contactes"
"Bloqueja i marca com a brossa"
@@ -134,8 +134,8 @@
"Finalitza la trucada"
"Conferència"
"En una trucada"
- "S\'està continuant la trucada mitjançant dades mòbils…"
- "No s\'ha pogut canviar a la xarxa Wi-Fi"
- "La videotrucada es mantindrà a la xarxa mòbil. És possible que s\'hi apliquin càrrecs de dades estàndard."
+ "S\'està continuant la trucada mitjançant dades mòbils…"
+ "No s\'ha pogut canviar a la xarxa Wi-Fi"
+ "La videotrucada continuarà a la xarxa mòbil. És possible que s\'hi apliquin càrrecs de dades estàndard."
"No ho tornis a mostrar"
diff --git a/java/com/android/incallui/res/values-cs/strings.xml b/java/com/android/incallui/res/values-cs/strings.xml
index 9d69cfac752f43914c1d04ac5e73faf6d71c80b3..e604a5249b1c2b4c86233ae7f4b22463b0bf43e9 100644
--- a/java/com/android/incallui/res/values-cs/strings.xml
+++ b/java/com/android/incallui/res/values-cs/strings.xml
@@ -33,8 +33,8 @@
"Zmeškaný hovor od volajícího %s"
"Probíhající hovor"
"Probíhající pracovní hovor"
- "Probíhající volání přes Wi-Fi"
- "Probíhající pracovní hovor (Wi-Fi)"
+ "Probíhající hovor přes Wi-Fi"
+ "Probíhající pracovní hovor přes Wi-Fi"
"Přidržený hovor"
"Příchozí hovor"
"Příchozí hovor s fotkou"
@@ -55,8 +55,8 @@
"Důležitý přích. hovor s fotkou, zprávou a polohou"
"Důležitý příchozí hovor s přílohami"
"Příchozí pracovní hovor"
- "Příchozí volání přes Wi-Fi"
- "Příchozí pracovní hovor (Wi-Fi)"
+ "Příchozí hovor přes Wi-Fi"
+ "Příchozí pracovní hovor přes Wi-Fi"
"U příchozího hovoru máme podezření, že se jedná o spam"
"Příchozí žádost o videohovor"
"Žádný signál"
@@ -73,7 +73,7 @@
"Převést videohovor sem"
"Chcete-li telefonovat, vypněte nejprve režim Letadlo."
"Přihlášení k síti nebylo úspěšné."
- "Mobilní síť je nedostupná."
+ "Mobilní síť je nedostupná."
"Chcete-li uskutečnit hovor, zadejte platné telefonní číslo."
"Hovor nelze uskutečnit."
"Spouštění sekvence MMI..."
@@ -134,8 +134,8 @@
"Ukončit hovor"
"Konferenční hovor"
"Probíhá hovor"
- "Hovor pokračuje přes mobilní data…"
- "Přepnutí na síť Wi-Fi se nezdařilo"
- "Videohovor zůstane na mobilní síti. Za datový přenos mohou být účtovány standardní poplatky."
+ "Hovor pokračuje přes mobilní data…"
+ "Přepnutí na síť Wi-Fi se nezdařilo"
+ "Videohovor zůstane na mobilní síti. Za datový přenos mohou být účtovány standardní poplatky."
"Tuto zprávu příště nezobrazovat"
diff --git a/java/com/android/incallui/res/values-da/strings.xml b/java/com/android/incallui/res/values-da/strings.xml
index 19de78382cb41fa223c2c28e9a2bf4beef40b10f..fbf7927a3796b4c0c4177d56126b96cb63600e0a 100644
--- a/java/com/android/incallui/res/values-da/strings.xml
+++ b/java/com/android/incallui/res/values-da/strings.xml
@@ -33,8 +33,8 @@
"Ubesvaret opkald fra %s"
"Igangværende opkald"
"Igangværende opkald i forbindelse med arbejde"
- "Igangværende opkald via Wi-Fi"
- "Igangværende Wi-Fi-opkald i forbindelse med arbejde"
+ "Igangværende Wi-Fi-opkald"
+ "Igangværende Wi-Fi-opkald i forbindelse med arbejde"
"Ventende"
"Indgående opkald"
"Indgående opkald med billede"
@@ -55,8 +55,8 @@
"Vigtigt opkald med billede, besked og placering"
"Vigtigt indgående opkald med vedhæftede filer"
"Indgående opkald i forbindelse med arbejde"
- "Indgående opkald via Wi-Fi"
- "Indgående Wi-Fi-opkald i forbindelse med arbejde"
+ "Indgående Wi-Fi-opkald"
+ "Indgående Wi-Fi-opkald i forbindelse med arbejde"
"Indgående formodet spamopkald"
"Indgående videoanmodning"
"Ingen dækning"
@@ -73,7 +73,7 @@
"Besvar videoopkald"
"Slå Flytilstand fra først for at foretage et opkald."
"Ikke registreret på netværk."
- "Mobilnetværket er ikke tilgængeligt."
+ "Mobilnetværket er ikke tilgængeligt."
"Indtast et gyldigt nummer for at foretage et opkald."
"Kan ikke ringe op."
"Starter MMI-sekvens ..."
@@ -134,8 +134,8 @@
"Afslut opkald"
"Telefonmøde"
"Opkald i gang"
- "Fortsætter opkaldet med mobildata…"
- "Der kan ikke skiftes til Wi-Fi-netværk"
- "Videoopkaldet bliver ved med at bruge mobilnetværket. Du skal muligvis betale et standardgebyr for data."
+ "Opkaldet fortsættes med mobildata…"
+ "Du kunne ikke skifte til Wi-Fi-netværk"
+ "Videoopkaldet bliver ved med at bruge mobilnetværket. Du skal muligvis betale et standardgebyr for data."
"Vis ikke dette igen"
diff --git a/java/com/android/incallui/res/values-de/strings.xml b/java/com/android/incallui/res/values-de/strings.xml
index a5f96027b0161900478dbbbbd233e479785cc50e..0dce3452a6d9758c89854aad9523a6cd27ce604a 100644
--- a/java/com/android/incallui/res/values-de/strings.xml
+++ b/java/com/android/incallui/res/values-de/strings.xml
@@ -33,8 +33,8 @@
"Verpasster Anruf von %s"
"Aktueller Anruf"
"Aktueller geschäftlicher Anruf"
- "Aktiver WLAN-Anruf"
- "Aktueller geschäftlicher WLAN-Anruf"
+ "Aktiver WLAN-Anruf"
+ "Aktiver geschäftlicher WLAN-Anruf"
"Gehaltener Anruf"
"Eingehender Anruf"
"Eingehender Anruf mit Foto"
@@ -55,8 +55,8 @@
"Wichtiger eingehender Anruf mit Foto, Nachricht und Standort"
"Wichtiger eingehender Anruf mit Anhängen"
"Eingehender geschäftlicher Anruf"
- "Eingehender WLAN-Anruf"
- "Eingehender geschäftlicher WLAN-Anruf"
+ "Eingehender WLAN-Anruf"
+ "Eingehender geschäftlicher WLAN-Anruf"
"Verdacht auf eingehenden Spam-Anruf"
"Eingehende Videoanfrage"
"kein Dienst"
@@ -73,7 +73,7 @@
"Videoanruf übernehmen"
"Deaktiviere zunächst den Flugmodus, um einen Anruf zu tätigen."
"Nicht in Netzwerk registriert."
- "Mobilfunknetz nicht verfügbar"
+ "Mobilfunknetz ist nicht verfügbar."
"Gib eine gültige Nummer ein."
"Anruf nicht möglich."
"MMI-Sequenz wird gestartet..."
@@ -134,8 +134,8 @@
"Anruf beenden"
"Telefonkonferenz"
"Anruf"
- "Anruf wird über Mobildaten fortgesetzt…"
- "Wechseln zu WLAN nicht möglich"
- "Der Videoanruf erfolgt weiter über das Mobilfunknetz. Es können Standardgebühren für die Datenübertragung anfallen."
+ "Anruf wird über mobile Daten fortgesetzt…"
+ "Wechseln zu WLAN nicht möglich"
+ "Der Videoanruf erfolgt weiter über das Mobilfunknetz. Es können Standardgebühren für die Datenübertragung anfallen."
"Meldung nicht mehr anzeigen"
diff --git a/java/com/android/incallui/res/values-el/strings.xml b/java/com/android/incallui/res/values-el/strings.xml
index 8ff6d2f5f6fbd814c34a5c5eb3f44f965b966e81..bc39e2ac998555789ca96b3cc78fa471f4bb7f73 100644
--- a/java/com/android/incallui/res/values-el/strings.xml
+++ b/java/com/android/incallui/res/values-el/strings.xml
@@ -33,8 +33,8 @@
"Αναπάντητη κλήση από %s"
"Κλήση σε εξέλιξη"
"Κλήση εργασίας σε εξέλιξη"
- "Κλήση Wi-Fi σε εξέλιξη"
- "Κλήση εργασίας μέσω Wi-Fi σε εξέλιξη"
+ "Κλήση Wi-Fi σε εξέλιξη"
+ "Κλήση εργασίας μέσω Wi-Fi σε εξέλιξη"
"Σε αναμονή"
"Εισερχόμενη κλήση"
"Εισερχόμενη κλήση με φωτογραφία"
@@ -55,8 +55,8 @@
"Σημαντική εισερχ. κλήση με φωτο, μήνυμα, τοποθεσία"
"Σημαντική εισερχόμενη κλήση με συνημμένα"
"Εισερχόμενη κλήση εργασίας"
- "Εισερχόμενη κλήση μέσω Wi-Fi"
- "Εισερχόμενη κλήση εργασίας μέσω Wi-Fi"
+ "Εισερχόμενη κλήση μέσω Wi-Fi"
+ "Εισερχόμενη κλήση εργασίας μέσω Wi-Fi"
"Πιθανώς ανεπιθύμητη εισερχόμενη κλήση"
"Αίτημα εισερχόμενου βίντεο"
"Δίκτυο μη διαθέσιμο"
@@ -73,7 +73,7 @@
"Λήψη βιντεοκλήσης"
"Για να πραγματοποιήσετε μια κλήση, απενεργοποιήστε πρώτα τη λειτουργία πτήσης."
"Δεν έχετε εγγραφεί στο δίκτυο."
- "Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο."
+ "Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο."
"Για να πραγματοποιήσετε μια κλήση, εισαγάγετε έναν έγκυρο αριθμό."
"Δεν είναι δυνατή η κλήση."
"Έναρξη ακολουθίας MMI..."
@@ -134,8 +134,8 @@
"Τερματισμός κλήσης"
"Κλήση συνδιάσκεψης"
"Σε κλήση"
- "Συνέχεια κλήσης με χρήση δεδομένων κινητής τηλεφωνίας…"
- "Δεν ήταν δυνατή η εναλλαγή σε δίκτυο Wi-Fi"
- "Η βιντεοκλήση θα παραμείνει σε δίκτυο δεδομένων κινητής τηλεφωνίας; Ενδέχεται να ισχύουν βασικές χρεώσεις δεδομένων."
+ "Συνέχιση κλήσης με χρήση δεδομένων κινητής τηλεφωνίας…"
+ "Δεν ήταν δυνατή η εναλλαγή σε δίκτυο Wi-Fi"
+ "Η βιντεοκλήση θα παραμείνει σε δίκτυο δεδομένων κινητής τηλεφωνίας; Ενδέχεται να ισχύουν βασικές χρεώσεις δεδομένων."
"Να μην εμφανιστεί ξανά αυτό"
diff --git a/java/com/android/incallui/res/values-en-rAU/strings.xml b/java/com/android/incallui/res/values-en-rAU/strings.xml
index 5e0d20737f39719a9f1d219383c4afe11c8180d8..68509f0806d3a339f3424e78b912c8b8dc11b72b 100644
--- a/java/com/android/incallui/res/values-en-rAU/strings.xml
+++ b/java/com/android/incallui/res/values-en-rAU/strings.xml
@@ -33,8 +33,8 @@
"Missed call from %s"
"On-going call"
"Ongoing work call"
- "Ongoing Wi-Fi call"
- "Ongoing Wi-Fi work call"
+ "Ongoing Wi‑Fi call"
+ "Ongoing Wi‑Fi work call"
"On hold"
"Incoming call"
"Incoming call with photo"
@@ -55,15 +55,15 @@
"Important call with photo, message and location"
"Important incoming call with attachments"
"Incoming work call"
- "Incoming Wi-Fi call"
- "Incoming Wi-Fi work call"
+ "Incoming Wi‑Fi call"
+ "Incoming Wi‑Fi work call"
"Incoming suspected spam call"
"Incoming video request"
"No service"
"Selected network (%s) unavailable"
"Answer"
"Hang up"
- "In-stream video"
+ "Video"
"Voice"
"Accept"
"Decline"
@@ -73,7 +73,7 @@
"Take video call"
"To place a call, first turn off Aeroplane mode."
"Not registered on network."
- "Mobile network not available."
+ "Mobile network not available."
"To place a call, enter a valid number."
"Can\'t call."
"Starting MMI sequence…"
@@ -134,8 +134,8 @@
"End call"
"Conference call"
"On a call"
- "Continuing call using mobile data…"
- "Couldn\'t switch to Wi-Fi network"
- "Video call will remain on mobile network. Standard data charges may apply."
+ "Continuing call using mobile data…"
+ "Couldn\'t switch to Wi‑Fi network"
+ "Video call will remain on the mobile network. Standard data charges may apply."
"Do not show this again"
diff --git a/java/com/android/incallui/res/values-en-rGB/strings.xml b/java/com/android/incallui/res/values-en-rGB/strings.xml
index 5e0d20737f39719a9f1d219383c4afe11c8180d8..68509f0806d3a339f3424e78b912c8b8dc11b72b 100644
--- a/java/com/android/incallui/res/values-en-rGB/strings.xml
+++ b/java/com/android/incallui/res/values-en-rGB/strings.xml
@@ -33,8 +33,8 @@
"Missed call from %s"
"On-going call"
"Ongoing work call"
- "Ongoing Wi-Fi call"
- "Ongoing Wi-Fi work call"
+ "Ongoing Wi‑Fi call"
+ "Ongoing Wi‑Fi work call"
"On hold"
"Incoming call"
"Incoming call with photo"
@@ -55,15 +55,15 @@
"Important call with photo, message and location"
"Important incoming call with attachments"
"Incoming work call"
- "Incoming Wi-Fi call"
- "Incoming Wi-Fi work call"
+ "Incoming Wi‑Fi call"
+ "Incoming Wi‑Fi work call"
"Incoming suspected spam call"
"Incoming video request"
"No service"
"Selected network (%s) unavailable"
"Answer"
"Hang up"
- "In-stream video"
+ "Video"
"Voice"
"Accept"
"Decline"
@@ -73,7 +73,7 @@
"Take video call"
"To place a call, first turn off Aeroplane mode."
"Not registered on network."
- "Mobile network not available."
+ "Mobile network not available."
"To place a call, enter a valid number."
"Can\'t call."
"Starting MMI sequence…"
@@ -134,8 +134,8 @@
"End call"
"Conference call"
"On a call"
- "Continuing call using mobile data…"
- "Couldn\'t switch to Wi-Fi network"
- "Video call will remain on mobile network. Standard data charges may apply."
+ "Continuing call using mobile data…"
+ "Couldn\'t switch to Wi‑Fi network"
+ "Video call will remain on the mobile network. Standard data charges may apply."
"Do not show this again"
diff --git a/java/com/android/incallui/res/values-en-rIN/strings.xml b/java/com/android/incallui/res/values-en-rIN/strings.xml
index 5e0d20737f39719a9f1d219383c4afe11c8180d8..68509f0806d3a339f3424e78b912c8b8dc11b72b 100644
--- a/java/com/android/incallui/res/values-en-rIN/strings.xml
+++ b/java/com/android/incallui/res/values-en-rIN/strings.xml
@@ -33,8 +33,8 @@
"Missed call from %s"
"On-going call"
"Ongoing work call"
- "Ongoing Wi-Fi call"
- "Ongoing Wi-Fi work call"
+ "Ongoing Wi‑Fi call"
+ "Ongoing Wi‑Fi work call"
"On hold"
"Incoming call"
"Incoming call with photo"
@@ -55,15 +55,15 @@
"Important call with photo, message and location"
"Important incoming call with attachments"
"Incoming work call"
- "Incoming Wi-Fi call"
- "Incoming Wi-Fi work call"
+ "Incoming Wi‑Fi call"
+ "Incoming Wi‑Fi work call"
"Incoming suspected spam call"
"Incoming video request"
"No service"
"Selected network (%s) unavailable"
"Answer"
"Hang up"
- "In-stream video"
+ "Video"
"Voice"
"Accept"
"Decline"
@@ -73,7 +73,7 @@
"Take video call"
"To place a call, first turn off Aeroplane mode."
"Not registered on network."
- "Mobile network not available."
+ "Mobile network not available."
"To place a call, enter a valid number."
"Can\'t call."
"Starting MMI sequence…"
@@ -134,8 +134,8 @@
"End call"
"Conference call"
"On a call"
- "Continuing call using mobile data…"
- "Couldn\'t switch to Wi-Fi network"
- "Video call will remain on mobile network. Standard data charges may apply."
+ "Continuing call using mobile data…"
+ "Couldn\'t switch to Wi‑Fi network"
+ "Video call will remain on the mobile network. Standard data charges may apply."
"Do not show this again"
diff --git a/java/com/android/incallui/res/values-es-rUS/strings.xml b/java/com/android/incallui/res/values-es-rUS/strings.xml
index d0167118f64cdf9eb09cd07b69e72084eab0c9bf..b8584c765db4d037b23746cbc22b69918139c0d3 100644
--- a/java/com/android/incallui/res/values-es-rUS/strings.xml
+++ b/java/com/android/incallui/res/values-es-rUS/strings.xml
@@ -33,8 +33,8 @@
"Llamada perdida de %s"
"Llamada en curso"
"Llamada de trabajo en curso"
- "Llamada por Wi-Fi en curso"
- "Llamada de trabajo con Wi-Fi en curso"
+ "Llamada Wi-Fi en curso"
+ "Llamada de trabajo Wi-Fi en curso"
"En espera"
"Llamada entrante"
"Llamada entrante con foto"
@@ -55,8 +55,8 @@
"Llamada importante con foto, mensaje y ubicación"
"Llamada entrante importante con archivos adjuntos"
"Llamada de trabajo entrante"
- "Llamada por Wi-Fi entrante"
- "Llamada de trabajo con Wi-Fi entrante"
+ "Llamada Wi-Fi entrante"
+ "Llamada de trabajo Wi-Fi entrante"
"Posible llamada entrante de spam"
"Solicitud de videollamada entrante"
"Sin servicio"
@@ -73,7 +73,7 @@
"Atender videollamada"
"Para realizar una llamada, primero debes desactivar el modo avión."
"No registrado en la red."
- "Red móvil no disponible"
+ "La red móvil no está disponible."
"Para realizar una llamada, ingresa un número válido."
"No se puede realizar la llamada."
"Iniciar la secuencia de MMI"
@@ -134,8 +134,8 @@
"Finalizar llamada"
"Conferencia"
"En llamada"
- "Continuando la llamada con datos móviles…"
- "No se pudo cambiar a la red Wi-Fi"
- "La videollamada permanecerá en la red móvil. Es posible que se te cobren cargos estándar por el uso de datos."
+ "Continuando la llamada con datos móviles…"
+ "No se pudo cambiar a la red Wi-Fi"
+ "La videollamada permanecerá en la red móvil. Es posible que se te cobren cargos estándar por el uso de datos."
"No volver a mostrar esto"
diff --git a/java/com/android/incallui/res/values-es/strings.xml b/java/com/android/incallui/res/values-es/strings.xml
index 472ea99cbedd615cba12019921429500f1fa6fe7..4dc2d725c57e496b4fae1d451e180ed88b98b93c 100644
--- a/java/com/android/incallui/res/values-es/strings.xml
+++ b/java/com/android/incallui/res/values-es/strings.xml
@@ -33,8 +33,8 @@
"Llamada perdida de %s"
"Llamada en curso"
"Llamada de trabajo en curso"
- "Llamada Wi-Fi en curso"
- "Llamada Wi-Fi de trabajo en curso"
+ "Llamada por Wi-Fi en curso"
+ "Llamada de trabajo por Wi-Fi en curso"
"En espera"
"Llamada entrante"
"Llamada entrante con foto"
@@ -55,8 +55,8 @@
"Llamada importante con foto, mensaje y ubicación"
"Llamada entrante importante con archivos adjuntos"
"Llamada de trabajo entrante"
- "Llamada Wi-Fi entrante"
- "Llamada Wi-Fi de trabajo entrante"
+ "Llamada por Wi-Fi entrante"
+ "Llamada de trabajo por Wi-Fi entrante"
"Llamada entrante sospechosa de spam"
"Solicitud de videollamada entrante"
"Sin servicio"
@@ -73,7 +73,7 @@
"Atender videollamada"
"Para realizar una llamada, primero debes desactivar el modo avión."
"No se ha podido conectar a la red"
- "La red móvil no está disponible."
+ "La red móvil no está disponible."
"Para realizar una llamada, introduce un número válido."
"No se puede establecer la llamada."
"Iniciando secuencia MMI..."
@@ -134,8 +134,8 @@
"Finalizar llamada"
"Conferencia telefónica"
"En una llamada"
- "Continuando la llamada con datos móviles…"
- "No se ha podido cambiar a la red Wi-Fi"
- "La videollamada seguirá mediante la red móvil. Es posible que se apliquen cargos por uso de datos."
+ "Continuando la llamada con los datos móviles…"
+ "No se ha podido cambiar a la red Wi-Fi"
+ "La videollamada seguirá a través de la red móvil. Es posible que se apliquen cargos por el uso de datos."
"No volver a mostrar"
diff --git a/java/com/android/incallui/res/values-et/strings.xml b/java/com/android/incallui/res/values-et/strings.xml
index 9eaa65f427b059983daaecdb906ecf0df525710b..ec1b230c52338e6dffa3f1c68b6f3d4fad6e8ede 100644
--- a/java/com/android/incallui/res/values-et/strings.xml
+++ b/java/com/android/incallui/res/values-et/strings.xml
@@ -33,8 +33,8 @@
"Vastamata kõne helistajalt %s"
"Käimasolev kõne"
"Käimasolev töökõne"
- "Pooleliolev WiFi-kõne"
- "Käimasolev töökõne WiFi kaudu"
+ "Käimasolev WiFi-kõne"
+ "Käimasolev WiFi-töökõne"
"Ootel"
"Sissetulev kõne"
"Sissetulev kõne koos fotoga"
@@ -55,8 +55,8 @@
"Tähtis sisset. kõne koos foto, sõnumi ja asukohaga"
"Tähtis sissetulev kõne koos manustega"
"Sissetulev töökõne"
- "Sissetulev WiFi-kõne"
- "Sissetulev töökõne WiFi kaudu"
+ "Sissetulev WiFi-kõne"
+ "Sissetulev WiFi-töökõne"
"Arvatav sissetulev rämpskõne"
"Sissetulev videotaotlus"
"Teenus puudub"
@@ -73,7 +73,7 @@
"Alusta videokõnet"
"Helistamiseks lülitage lennurežiim välja."
"Ei ole võrku registreeritud."
- "Mobiilsidevõrk pole saadaval."
+ "Mobiilsidevõrk pole saadaval."
"Helistamiseks sisestage kehtiv number."
"Ei saa helistada."
"MMI-jada alustamine ..."
@@ -134,8 +134,8 @@
"Kõne lõpetamine"
"Konverentskõne"
"Pooleliolev kõne"
- "Kõne jätkatakse mobiilse andmeside kaudu …"
- "Ei saanud WiFi-võrgule lülitada"
- "Videokõne jääb mobiilsidevõrku. Rakenduda võivad tavapärased andmetasud."
+ "Kõnet jätkatakse mobiilse andmeside kaudu …"
+ "WiFi-võrgule ei saanud lülituda"
+ "Videokõne jääb mobiilsidevõrku. Rakenduda võivad tavapärased andmesidetasud."
"Ära seda enam näita"
diff --git a/java/com/android/incallui/res/values-eu/strings.xml b/java/com/android/incallui/res/values-eu/strings.xml
index 4db9e10fee7325871feb4a1ac4980a1b1522d30a..c8fe005afcf401c91148238593cb7887d4bc5564 100644
--- a/java/com/android/incallui/res/values-eu/strings.xml
+++ b/java/com/android/incallui/res/values-eu/strings.xml
@@ -33,8 +33,8 @@
"Deitzaile honen dei bat galdu duzu: %s"
"Abian den deia"
"Laneko dei bat abian da"
- "Wi-Fi deia abian"
- "Wi-Fi bidezko laneko dei bat abian da"
+ "Wi-Fi bidezko deia"
+ "Wi-Fi bidezko laneko deia"
"Zain"
"Sarrerako deia"
"Jasotako deia, argazkia duena"
@@ -55,8 +55,8 @@
"Jasotako dei garrant., arg., mez. eta kok. dituena"
"Jasotako dei garrantzitsua, eranskinak dituena"
"Laneko dei bat jaso da"
- "Sarrerako Wi-Fi deia"
- "Wi-Fi bidezko laneko dei bat jaso da"
+ "Jasotako Wi-Fi bidezko deia"
+ "Jasotako Wi-Fi bidezko laneko deia"
"Ustezko spam-deia jaso duzu"
"Sarrerako bideo-eskaera"
"Ez dago zerbitzurik"
@@ -73,7 +73,7 @@
"Erantzun bideo-deiari"
"Dei bat egiteko, Hegaldi modua desaktibatu behar duzu."
"Ez dago sarean erregistratuta."
- "Sare mugikorra ez dago erabilgarri."
+ "Sare mugikorra ez dago erabilgarri."
"Deitzeko, idatzi balio duen zenbaki bat."
"Ezin da deitu."
"MMI sekuentzia hasten…"
@@ -134,8 +134,8 @@
"Amaitu deia"
"Konferentzia-deia"
"Deia abian da"
- "Datu-konexioren bidez jarraitzen ari da deia egiten…"
- "Ezin izan da aldatu Wi-Fi sarera"
- "Datu mugikorren bidez egiten jarraituko da bideo-deia. Baliteke datuak erabiltzearen ondorioz ohiko kostuak kobratzea."
+ "Datu-konexioaren bidez egiten jarraituko da deia…"
+ "Ezin izan da aldatu Wi-Fi sarera"
+ "Datu-konexioaren bidez egiten jarraituko da bideo-deia. Baliteke datuak erabiltzearen ondorioz ohiko kostuak kobratzea."
"Ez erakutsi berriro"
diff --git a/java/com/android/incallui/res/values-fa/strings.xml b/java/com/android/incallui/res/values-fa/strings.xml
index f816bd0638c6522668ef7b7083d88dbf2a472caa..a36d164bb525b2736576ee3abec051d72cc11422 100644
--- a/java/com/android/incallui/res/values-fa/strings.xml
+++ b/java/com/android/incallui/res/values-fa/strings.xml
@@ -33,8 +33,8 @@
"تماس بیپاسخ از %s"
"تماس جاری"
"تماس کاری خروجی"
- "تماس از طریق Wi-Fi در حال انجام است"
- "تماس کاری Wi-Fi خروجی"
+ "تماس Wi-Fi درحال انجام"
+ "تماس کاری Wi-Fi درحال انجام"
"در انتظار"
"تماس ورودی"
"تماس ورودی به همراه عکس"
@@ -55,8 +55,8 @@
"تماس ورودی مهم به همراه عکس، پیام و مکان"
"تماس ورودی مهم به همراه پیوست"
"تماس کاری ورودی"
- "تماس Wi-Fi ورودی"
- "تماس کاری Wi-Fi ورودی"
+ "تماس Wi-Fi ورودی"
+ "تماس کاری Wi-Fi ورودی"
"تماس هرزنامه احتمالی ورودی"
"درخواست تماس ویدئویی ورودی"
"بدون سرویس"
@@ -73,7 +73,7 @@
"انتقال تماس ویدئویی"
"برای برقراری یک تماس، ابتدا حالت هواپیما را خاموش کنید."
"در شبکه ثبت نشده است."
- "شبکه تلفن همراه در دسترس نیست."
+ "شبکه تلفن همراه دردسترس نیست."
"برای برقراری تماس، یک شماره معتبر وارد کنید."
"نمیتوانید تماس بگیرید."
"شروع ترتیب MMI..."
@@ -134,8 +134,8 @@
"پایان تماس"
"تماس کنفرانسی"
"در تماس"
- "ادامه تماس با استفاده از داده شبکه تلفن همراه..."
- "به شبکه Wi-Fi جابهجا نشد"
- "تماس ویدئویی همچنان از شبکه تلفن همراه استفاده میکند. هزینههای داده استاندارد اعمال میشود."
+ "ادامه تماس با استفاده از داده شبکه همراه…"
+ "جابجایی به شبکه Wi-Fi انجام نشد"
+ "تماس ویدیویی همچنان ازطریق شبکه تلفن همراه انجام میشود. ممکن است هزینههای استاندارد داده اعمال شود."
"دوباره نشان داده نشود"
diff --git a/java/com/android/incallui/res/values-fi/strings.xml b/java/com/android/incallui/res/values-fi/strings.xml
index 995e7a32827c042169960d01d47496592512b29e..f13ff26a5f43808c2d0e6d7a9b342cf25e98987e 100644
--- a/java/com/android/incallui/res/values-fi/strings.xml
+++ b/java/com/android/incallui/res/values-fi/strings.xml
@@ -33,8 +33,8 @@
"Vastaamaton puhelu: %s"
"Käynnissä oleva puhelu"
"Käynnissä oleva työpuhelu"
- "Käynnissä oleva Wi-Fi-puhelu"
- "Käynnissä oleva Wi-Fi-työpuhelu"
+ "Käynnissä oleva Wi-Fi-puhelu"
+ "Käynnissä oleva Wi-Fi-työpuhelu"
"Pidossa"
"Saapuva puhelu"
"Kuvan sisältävä saapuva puhelu"
@@ -55,8 +55,8 @@
"Tärkeä liitteitä sisältävä saapuva puhelu"
"Tärkeä liitteitä sisältävä saapuva puhelu"
"Saapuva työpuhelu"
- "Saapuva Wi-Fi-puhelu"
- "Saapuva Wi-Fi-työpuhelu"
+ "Saapuva Wi-Fi-puhelu"
+ "Saapuva Wi-Fi-työpuhelu"
"Tämä puhelu saattaa olla häirikköpuhelu."
"Saapuva videopyyntö"
"Katvealueella"
@@ -73,7 +73,7 @@
"Vastaa videopuheluun"
"Poista lentokonetila käytöstä ennen puhelun soittamista."
"Ei rekisteröity verkkoon."
- "Matkapuhelinverkko ei ole käytettävissä."
+ "Mobiilidataverkko ei ole käytettävissä."
"Soita antamalla kelvollinen numero."
"Puhelua ei voi soittaa."
"Aloitetaan MMI-koodisekvenssiä..."
@@ -134,8 +134,8 @@
"Päätä puhelu"
"Puhelinneuvottelu"
"Puhelu käynnissä"
- "Jatketaan puhelua mobiilitiedonsiirron avulla…"
- "Siirtyminen Wi-Fi-verkkoon epäonnistui."
- "Videopuhelu soitetaan matkapuhelinverkon kautta. Operaattori voi veloittaa tiedonsiirrosta hinnastonsa mukaan."
+ "Jatketaan puhelua mobiilidatayhteydellä…"
+ "Vaihto Wi-Fi-verkkoon epäonnistui."
+ "Videopuhelu soitetaan mobiilidatayhteyden kautta. Operaattori voi veloittaa tiedonsiirrosta."
"Älä näytä tätä uudelleen"
diff --git a/java/com/android/incallui/res/values-fr-rCA/strings.xml b/java/com/android/incallui/res/values-fr-rCA/strings.xml
index 6f4d8daa42c8ec08b85a63cc86879b060b8bc981..e83658d14457c01a971030cf3925bb705be10f15 100644
--- a/java/com/android/incallui/res/values-fr-rCA/strings.xml
+++ b/java/com/android/incallui/res/values-fr-rCA/strings.xml
@@ -33,8 +33,8 @@
"Appel manqué de %s"
"Appel en cours"
"Appel en cours - travail"
- "Appel Wi-Fi en cours"
- "Appel Wi-Fi en cours - travail"
+ "Appel Wi-Fi en cours"
+ "Appel professionnel Wi-Fi en cours"
"En attente"
"Appel entrant"
"Appel entrant avec photo"
@@ -55,8 +55,8 @@
"Appel important avec photo, message et position"
"Appel entrant important avec pièces jointes"
"Appel entrant - travail"
- "Appel Wi-Fi entrant"
- "Appel Wi-Fi entrant - travail"
+ "Appel Wi-Fi entrant"
+ "Appel professionnel Wi-Fi entrant"
"L\'appel entrant est suspect"
"Demande de vidéo reçue"
"Aucun service"
@@ -73,7 +73,7 @@
"Répondre à l\'appel vidéo"
"Veuillez désactiver le mode Avion avant de passer un appel."
"Non enregistré sur le réseau"
- "Réseau cellulaire non disponible."
+ "Réseau cellulaire non disponible."
"Pour faire un appel, entrez un numéro valide."
"Impossible d\'appeler."
"Lancement de la séquence IHM..."
@@ -134,8 +134,8 @@
"Mettre fin à l\'appel"
"Conférence téléphonique"
"Appel en cours"
- "Poursuite de l\'appel à l\'aide de données cellulaires en cours…"
- "Impossible de passer à un réseau Wi-Fi"
- "L\'appel vidéo restera sur le réseau cellulaire. Des frais de données standards peuvent s\'appliquer."
+ "Poursuite de l\'appel utilisant des données mobiles en cours…"
+ "Impossible de passer à un réseau Wi-Fi"
+ "L\'appel vidéo restera sur le réseau cellulaire. Des frais de données standards peuvent s\'appliquer."
"Ne plus afficher"
diff --git a/java/com/android/incallui/res/values-fr/strings.xml b/java/com/android/incallui/res/values-fr/strings.xml
index c77fc190ebf3cec68f29fb7a29acb09f4ea3f4cf..162c242bd2134c36ea786b3b5b1b868a54ee0ad7 100644
--- a/java/com/android/incallui/res/values-fr/strings.xml
+++ b/java/com/android/incallui/res/values-fr/strings.xml
@@ -33,8 +33,8 @@
"Appel manqué de %s"
"Appel en cours"
"Appel professionnel en cours"
- "Appel Wi-Fi en cours"
- "Appel Wi-Fi professionnel en cours"
+ "Appel Wi-Fi en cours"
+ "Appel Wi-Fi professionnel en cours"
"En attente"
"Appel entrant"
"Appel entrant avec photo"
@@ -55,8 +55,8 @@
"Appel important avec photo, message et position"
"Appel entrant important avec pièces jointes"
"Appel professionnel entrant"
- "Appel Wi-Fi entrant"
- "Appel Wi-Fi professionnel entrant"
+ "Appel Wi-Fi entrant"
+ "Appel Wi-Fi professionnel entrant"
"Appel entrant indésirable suspecté"
"Demande de vidéo reçue"
"Aucun service"
@@ -73,7 +73,7 @@
"Répondre à l\'appel vidéo"
"Veuillez d\'abord désactiver le mode Avion, afin d\'effectuer un appel."
"Non enregistré sur le réseau."
- "Réseau mobile non disponible."
+ "Réseau mobile non disponible"
"Pour émettre un appel, veuillez saisir un numéro valide."
"Impossible d\'émettre l\'appel."
"Lancement de la séquence IHM..."
@@ -134,8 +134,8 @@
"Mettre fin à l\'appel"
"Conférence téléphonique"
"Appel en cours"
- "Continuer l\'appel en utilisant les données mobiles…"
- "Impossible de passer au réseau Wi-Fi"
- "L\'appel vidéo va continuer sur le réseau mobile. Des frais standard liés à la consommation de données peuvent être facturés."
+ "Poursuite de l\'appel via les données mobiles…"
+ "Impossible de passer au réseau Wi-Fi"
+ "L\'appel vidéo va continuer sur le réseau mobile. Des frais standards liés à la consommation de données peuvent être facturés."
"Ne plus afficher"
diff --git a/java/com/android/incallui/res/values-gl/strings.xml b/java/com/android/incallui/res/values-gl/strings.xml
index 53278e58ec7fb2be27796fa630ed14f171ec1341..d926b1b1ebb5ee51c6df45ae95774b77419fc085 100644
--- a/java/com/android/incallui/res/values-gl/strings.xml
+++ b/java/com/android/incallui/res/values-gl/strings.xml
@@ -33,8 +33,8 @@
"Chamada perdida de %s"
"Chamada en curso"
"Chamada de traballo saínte"
- "Chamada wifi saínte"
- "Chamada wifi de traballo saínte"
+ "Chamada saínte por wifi"
+ "Chamada de traballo saínte por wifi"
"En espera"
"Chamada entrante"
"Chamada entrante con foto"
@@ -55,8 +55,8 @@
"Chamada entrante importante con foto, mensaxe e localización"
"Chamada entrante importante con anexos"
"Chamada de traballo entrante"
- "Chamada wifi entrante"
- "Chamada wifi de traballo entrante"
+ "Chamada entrante por wifi"
+ "Chamada de traballo entrante por wifi"
"Chamada entrante sospeitosa de spam"
"Solicitude de vídeo entrante"
"Sen servizo"
@@ -73,7 +73,7 @@
"Responder á videochamada"
"Para facer unha chamada, primeiro desactiva o modo avión."
"Sen rexistro na rede"
- "Rece móbil non dispoñible."
+ "A rede móbil non está dispoñible."
"Para realizar unha chamada, introduce un número válido."
"Non se pode chamar."
"Iniciando secuencia MMI..."
@@ -134,8 +134,8 @@
"Finalizar chamada"
"Conferencia telefónica"
"Chamada en curso"
- "Continuando a chamada con datos móbiles…"
- "Non se puido cambiar á rede wifi"
- "A videochamada permanecerá na rede móbil. É posible que o operador aplique tarifas de datos estándar."
+ "Continuando a chamada con datos móbiles…"
+ "Non se puido cambiar á rede wifi"
+ "A videochamada permanecerá na rede móbil. É posible que se apliquen tarifas de datos estándar."
"Non mostrar de novo"
diff --git a/java/com/android/incallui/res/values-gu/strings.xml b/java/com/android/incallui/res/values-gu/strings.xml
index 8b1ebe8e0120f7ab51364b5318f106a63dcebeb1..4a90fc5682e67a3d7f35fddff9aa22280fbc7516 100644
--- a/java/com/android/incallui/res/values-gu/strings.xml
+++ b/java/com/android/incallui/res/values-gu/strings.xml
@@ -33,8 +33,8 @@
"%s નો કૉલ ચૂકી ગયાં"
"ચાલી રહેલ કૉલ"
"ચાલી રહેલ કાર્ય કૉલ"
- "ચાલુ Wi-Fi કૉલ"
- "ચાલી રહેલ Wi-Fi કાર્ય કૉલ"
+ "ચાલી રહેલ Wi-Fi કૉલ"
+ "ચાલી રહેલ Wi-Fi કાર્ય કૉલ"
"હોલ્ડ પર"
"ઇનકમિંગ કૉલ"
"ફોટો સાથે ઇનકમિંગ કૉલ"
@@ -55,8 +55,8 @@
"ફોટો, સંદેશ અને સ્થાન સાથે મહત્વનો ઇનકમિંગ કૉલ"
"જોડાણો સાથે મહત્વનો ઇનકમિંગ કૉલ"
"ઇનકમિંગ કાર્ય કૉલ"
- "ઇનકમિંગ Wi-Fi કૉલ"
- "ઇનકમિંગ Wi-Fi કાર્ય કૉલ"
+ "ઇનકમિંગ Wi-Fi કૉલ"
+ "ઇનકમિંગ Wi-Fi કાર્ય કૉલ"
"ઇનકમિંગ શંકાસ્પદ સ્પામ કૉલ"
"આવનાર વિડિઓ વિનંતી"
"કોઈ સેવા નથી"
@@ -73,7 +73,7 @@
"વિડિઓ કૉલ લો"
"કૉલ કરવા માટે, પહેલાં એરપ્લેન મોડને બંધ કરો."
"નેટવર્ક પર નોંધણી કરાયેલ નથી."
- "સેલ્યુલર નેટવર્ક ઉપલબ્ધ નથી."
+ "મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી."
"કૉલ કરવા માટે, માન્ય નંબર દાખલ કરો."
"કૉલ કરી શકાતો નથી."
"MMI અનુક્રમ પ્રારંભ કરી રહ્યાં છે…"
@@ -134,8 +134,8 @@
"કૉલ સમાપ્ત કરો"
"કૉન્ફરન્સ કૉલ"
"કૉલમાં"
- "સેલ્યુલર ડેટાની મદદથી કૉલ ચાલુ રાખી રહ્યાં છે…"
- "Wi-Fi નેટવર્ક પર સ્વિચ કરી શક્યાં નથી"
- "વિડિઓ કૉલ સેલ્યુલર નેટવર્ક પર રહેશે. માનક ડેટા શુલ્ક લાગુ થઈ શકે છે."
+ "મોબાઇલ ડેટાની મદદથી કૉલ ચાલુ રાખી રહ્યાં છે…"
+ "Wi-Fi નેટવર્ક પર સ્વિચ કરી શક્યાં નથી"
+ "વિડિઓ કૉલ, મોબાઇલ નેટવર્ક પર રહેશે. માનક ડેટા શુલ્ક લાગુ થઈ શકે છે."
"આ ફરીથી બતાવશો નહીં"
diff --git a/java/com/android/incallui/res/values-hi/strings.xml b/java/com/android/incallui/res/values-hi/strings.xml
index 09563dfc42d14376f53628013325a15eb5604045..d3a4dcfa821676933b853dc5f15f7372f2a9f98a 100644
--- a/java/com/android/incallui/res/values-hi/strings.xml
+++ b/java/com/android/incallui/res/values-hi/strings.xml
@@ -33,8 +33,8 @@
"%s के छूटे कॉल"
"चल रही कॉल"
"कार्यस्थल की जारी कॉल"
- "चल रहा वाई-फ़ाई कॉल"
- "कार्यस्थल की जारी वाई-फ़ाई कॉल"
+ "जारी Wi‑Fi कॉल"
+ "जारी Wi‑Fi कार्य कॉल"
"होल्ड पर"
"इनकमिंग कॉल"
"फ़ोटो के साथ इनकमिंग कॉल"
@@ -55,8 +55,8 @@
"फोटो, संदेश और स्थान के साथ महत्वपूर्ण इनकमिंग कॉल"
"अटैचमेंट के साथ महत्वपूर्ण इनकमिंग कॉल"
"कार्यस्थल की आवक कॉल"
- "इनकमिंग वाई-फ़ाई कॉल"
- "कार्यस्थल की वाई-फ़ाई आवक कॉल"
+ "इनकमिंग Wi‑Fi कॉल"
+ "इनकमिंग Wi‑Fi कार्य कॉल"
"संदिग्ध आवक स्पैम कॉल"
"इनकमिंग वीडियो अनुरोध"
"कोई सेवा नहीं"
@@ -73,7 +73,7 @@
"वीडियो कॉल लें"
"कॉल करने के लिए, पहले विमान मोड बंद करें."
"नेटवर्क पर पंजीकृत नहीं."
- "सेल्युलर नेटवर्क उपलब्ध नहीं."
+ "मोबाइल नेटवर्क उपलब्ध नहीं है."
"कॉल करने के लिए, मान्य नंबर डालें."
"कॉल नहीं किया जा सकता."
"MMI अनुक्रम प्रारंभ हो रहा है…"
@@ -134,8 +134,8 @@
"कॉल समाप्त करें"
"कॉन्फ़्रेंस कॉल"
"कॉल में"
- "सेल्युलर डेटा का उपयोग करके कॉल जारी रखा जा रहा है…"
- "वाई-फ़ाई नेटवर्क में नहीं बदला जा सका"
- "वीडियो कॉल सेल्यूलर नेटवर्क पर बना रहेगा. मानक डेटा शुल्क लागू हो सकते हैं."
+ "मोबाइल डेटा का उपयोग करके कॉल जारी रखा जा रहा है…"
+ "Wi‑Fi नेटवर्क पर स्विच नहीं कर सका"
+ "वीडियो कॉल मोबाइल नेटवर्क पर बना रहेगा. मानक डेटा शुल्क लागू हो सकते हैं."
"इसे दोबारा न दिखाएं"
diff --git a/java/com/android/incallui/res/values-hr/strings.xml b/java/com/android/incallui/res/values-hr/strings.xml
index 7af16133ab1e62397ce74f40f6be0540223f8c1e..2d389e6664b8dca5a25c49eca0a6a26cc792bd9c 100644
--- a/java/com/android/incallui/res/values-hr/strings.xml
+++ b/java/com/android/incallui/res/values-hr/strings.xml
@@ -33,8 +33,8 @@
"Propušten poziv kontakta %s"
"Poziv u tijeku"
"Poslovni poziv u tijeku"
- "Wi-Fi poziv u tijeku"
- "Poslovni Wi-Fi poziv u tijeku"
+ "Wi-Fi poziv u tijeku"
+ "Poslovni Wi-Fi poziv u tijeku"
"Na čekanju"
"Dolazni poziv"
"Dolazni poziv s fotografijom"
@@ -55,8 +55,8 @@
"Važan poziv s fotografijom, porukom i lokacijom"
"Važan dolazni poziv s privicima"
"Dolazni poslovni poziv"
- "Dolazni Wi-Fi poziv"
- "Dolazni poslovni Wi-Fi poziv"
+ "Dolazni Wi-Fi poziv"
+ "Dolazni poslovni Wi-Fi poziv"
"Mogući neželjeni dolazni poziv"
"Dolazni zahtjev za videopoziv"
"Nema usluge"
@@ -73,7 +73,7 @@
"Preuzimanje videopoziva"
"Da biste uspostavili poziv, prvo isključite način rada u zrakoplovu."
"Nije registrirano na mreži."
- "Mobilna mreža nije dostupna."
+ "Mobilna mreža nije dostupna."
"Unesite važeći broj da biste uspostavili poziv."
"Pozivanje nije moguće."
"Pokretanje MMI sekvence…"
@@ -134,8 +134,8 @@
"Prekid poziva"
"Konferencijski poziv"
"Poziv u tijeku"
- "Poziv se nastavlja pomoću mobilnih podataka..."
- "Prebacivanje na Wi-Fi mrežu nije moguće"
- "Videopoziv će ostati na mobilnoj mreži. Možda ćete morati platiti podatkovni promet."
+ "Poziv se nastavlja pomoću mobilnih podataka..."
+ "Prebacivanje na Wi-Fi mrežu nije moguće"
+ "Videopoziv će ostati na mobilnoj mreži. Možda ćete morati platiti podatkovni promet."
"Ne prikazuj ponovno"
diff --git a/java/com/android/incallui/res/values-hu/strings.xml b/java/com/android/incallui/res/values-hu/strings.xml
index 08d374b419d2f04d1ae8628dbd32c68f32b82b05..fe524216c863208dec5480748380ebc6fe99c66e 100644
--- a/java/com/android/incallui/res/values-hu/strings.xml
+++ b/java/com/android/incallui/res/values-hu/strings.xml
@@ -33,8 +33,8 @@
"Nem fogadott hívás: %s"
"Hívás folyamatban"
"Folyamatban lévő munkahelyi hívás"
- "Folyamatban lévő Wi-Fi-hívás"
- "Folyamatban lévő munkahelyi hívás Wi-Fin keresztül"
+ "Folyamatban lévő Wi-Fi-hívás"
+ "Folyamatban lévő munkahelyi hívás Wi-Fin keresztül"
"Tartásban"
"Bejövő hívás"
"Bejövő hívás fotóval"
@@ -55,8 +55,8 @@
"Fontos bejövő hívás fotóval, üzenettel és hellyel"
"Fontos bejövő hívás mellékletekkel"
"Bejövő munkahelyi hívás"
- "Beérkező Wi-Fi-hívás"
- "Bejövő munkahelyi hívás Wi-Fin keresztül"
+ "Beérkező Wi-Fi-hívás"
+ "Bejövő munkahelyi hívás Wi-Fin keresztül"
"Bejövő gyanús spamhívás"
"Bejövő videokérés"
"Nincs szolgáltatás"
@@ -73,7 +73,7 @@
"Videohívás fogadása"
"Híváskezdeményezéshez kapcsolja ki a Repülőgép üzemmódot."
"Nincs regisztrálva a hálózaton."
- "A mobilhálózat nem érhető el."
+ "A mobilhálózat nem érhető el."
"Hívásindításhoz adjon meg egy érvényes számot."
"A hívás sikertelen."
"MMI-sorozat indítása..."
@@ -134,8 +134,8 @@
"Hívás befejezése"
"Konferenciahívás"
"Hívásban"
- "Hívás folytatása mobil-adatkapcsolaton keresztül…"
- "Nem sikerült Wi-Fi-hálózatra váltani"
- "A videohívást továbbra is a mobilhálózaton folytatja. A mobilszolgáltató a normál adatforgalmi díjat számítja fel."
+ "Hívás folytatása mobil-adatkapcsolaton keresztül…"
+ "Nem sikerült Wi-Fi-hálózatra váltani"
+ "A videohívást továbbra is a mobilhálózaton folytatja. A mobilszolgáltató a normál adatforgalmi díjat számítja fel."
"Ne jelenjen meg többé"
diff --git a/java/com/android/incallui/res/values-hy/strings.xml b/java/com/android/incallui/res/values-hy/strings.xml
index f6496d14d0923574b095d6fa7a7e6f82a690f1e7..4287820c2638903bdcd52a102d0f3ed0642ae47a 100644
--- a/java/com/android/incallui/res/values-hy/strings.xml
+++ b/java/com/android/incallui/res/values-hy/strings.xml
@@ -33,8 +33,8 @@
"Բաց թողնված զանգ %s-ից"
"Ընթացիկ զանգը"
"Ընթացիկ աշխատանքային զանգ"
- "Ընթացիկ զանգ Wi-Fi-ի միջոցով"
- "Ընթացիկ աշխատանքային Wi-Fi զանգ"
+ "Ընթացիկ զանգ Wi-Fi-ի միջոցով"
+ "Ընթացիկ աշխատանքային զանգ Wi-Fi-ի միջոցով"
"Սպասում"
"Մուտքային զանգ"
"Մուտքային զանգ՝ լուսանկարով"
@@ -55,8 +55,8 @@
"Կարևոր մուտքային զանգ՝ կցորդներով"
"Կարևոր մուտքային զանգ՝ կցորդներով"
"Մուտքային աշխատանքային զանգ"
- "Մուտքային զանգ Wi-Fi-ի միջոցով"
- "Մուտքային աշխատանքային Wi-Fi զանգ"
+ "Մուտքային զանգ Wi-Fi-ի միջոցով"
+ "Մուտքային աշխատանքային զանգ Wi-Fi-ի միջոցով"
"Մուտքային զանգը հավանաբար լցոն է"
"Մուտքային տեսազանգի հայցում"
"Ծառայություններ չկան"
@@ -73,7 +73,7 @@
"Ընդունել տեսազանգը"
"Զանգի կատարման համար նախ անջատեք թռիչքային ռեժիմը:"
"Ցանցում գրանցված չէ:"
- "Բջջային ցանցն անհասանելի է:"
+ "Բջջային ցանցն անհասանելի է:"
"Զանգ կատարելու համար մուտքագրեք ճիշտ համար:"
"Հնարավոր չէ զանգել:"
"Մեկնարկում է MMI հաջորդականությունը..."
@@ -134,8 +134,8 @@
"Ավարտել զանգը"
"Կոնֆերանս զանգ"
"Զանգ"
- "Զանգն այժմ բջջային ինտերնետով է ընթանում…"
- "Չհաջողվեց միանալ Wi-Fi ցանցին"
- "Տեսազանգը կշարունակվի բջջային ցանցով: Գանձումը կկատարվի ըստ ձեր սակագնային պլանի:"
+ "Զանգն այժմ բջջային ինտերնետով է ընթանում…"
+ "Չհաջողվեց միանալ Wi-Fi ցանցին"
+ "Տեսազանգը կշարունակվի բջջային ցանցով: Գանձումը կկատարվի ըստ ձեր սակագնային պլանի:"
"Այլևս ցույց չտալ"
diff --git a/java/com/android/incallui/res/values-in/strings.xml b/java/com/android/incallui/res/values-in/strings.xml
index 279e72d21e2fad24b6a0a976d61ab7575d1aa655..6de6136fb649937f314547c39077576e9980024f 100644
--- a/java/com/android/incallui/res/values-in/strings.xml
+++ b/java/com/android/incallui/res/values-in/strings.xml
@@ -33,8 +33,8 @@
"Panggilan tak terjawab dari %s"
"Panggilan yang sedang berlangsung"
"Panggilan telepon kerja yang sedang berlangsung"
- "Panggilan Wi-Fi keluar"
- "Panggilan Wi-Fi kerja yang sedang berlangsung"
+ "Panggilan Wi-Fi keluar"
+ "Panggilan kerja Wi-Fi yang berlangsung"
"Ditangguhkan"
"Panggilan masuk"
"Panggilan masuk dengan foto"
@@ -55,8 +55,8 @@
"Panggilan penting dengan foto, pesan, dan lokasi"
"Panggilan masuk penting dengan lampiran"
"Panggilan telepon kerja yang masuk"
- "Panggilan Wi-Fi masuk"
- "Panggilan telepon Wi-Fi kerja yang masuk"
+ "Panggilan Wi-Fi masuk"
+ "Panggilan kerja Wi-Fi masuk"
"Panggilan masuk yang diduga spam"
"Permintaan video masuk"
"Tidak ada layanan"
@@ -73,7 +73,7 @@
"Lakukan Video Call"
"Untuk melakukan panggilan, pertama-tama matikan mode Pesawat."
"Tidak terdaftar pada jaringan."
- "Jaringan seluler tidak tersedia."
+ "Jaringan seluler tidak tersedia."
"Untuk melakukan panggilan telepon, masukkan nomor yang valid."
"Tidak dapat menelepon."
"Memulai urutan MMI..."
@@ -134,8 +134,8 @@
"Akhiri panggilan"
"Telewicara"
"Sedang menelepon"
- "Melanjutkan panggilan menggunakan data seluler..."
- "Tidak dapat beralih ke jaringan Wi-Fi"
- "Video call akan tetap di jaringan seluler. Biaya data standar mungkin berlaku."
+ "Melanjutkan panggilan menggunakan data seluler..."
+ "Tidak dapat beralih ke jaringan Wi-Fi"
+ "Video call akan tetap di jaringan seluler. Tarif data standar mungkin berlaku."
"Jangan tampilkan ini lagi"
diff --git a/java/com/android/incallui/res/values-is/strings.xml b/java/com/android/incallui/res/values-is/strings.xml
index 795e952c6a875dcb82f1ba0fb651a97e57dbc82c..8393510c6540f7b32f70a79a65fdbf23ea846142 100644
--- a/java/com/android/incallui/res/values-is/strings.xml
+++ b/java/com/android/incallui/res/values-is/strings.xml
@@ -33,8 +33,8 @@
"Ósvarað símtal frá %s"
"Samtal í gangi"
"Vinnusímtal í gangi"
- "Wi-Fi símtal stendur yfir"
- "Vinnusímtal í gangi um Wi-Fi"
+ "Wi-Fi símtal stendur yfir"
+ "Vinnusímtal í gangi um Wi-Fi"
"Í bið"
"Móttekið símtal"
"Móttekið símtal með mynd"
@@ -55,8 +55,8 @@
"Mikilvægt móttekið símtal með mynd, skilaboðum og staðsetningu"
"Mikilvægt móttekið símtal með viðhengjum"
"Vinnusímtal berst"
- "Wi-Fi símtal berst"
- "Vinnusímtal berst um Wi-Fi"
+ "Wi-Fi símtal berst"
+ "Vinnusímtal berst um Wi-Fi"
"Símtal sem berst er hugsanlega úr ruslnúmeri"
"Myndbeiðni berst"
"Ekkert símasamband"
@@ -73,7 +73,7 @@
"Þiggja myndsímtal"
"Til að hringja símtal þarftu fyrst að slökkva á flugstillingu."
"Ekki skráð á símkerfi."
- "Farsímakerfi ekki til staðar."
+ "Farsímakerfi ekki tiltækt."
"Sláðu inn gilt númer til að hringja símtal."
"Ekki hægt að hringja."
"Ræsir MMI-runu…"
@@ -134,8 +134,8 @@
"Ljúka símtali"
"Símafundur"
"Í símtali"
- "Símtal heldur áfram og notar farsímagögn…"
- "Ekki var hægt að skipta yfir á Wi-Fi-net"
- "Myndsímtal verður áfram á farsímaneti. Stöðluð gjöld fyrir gagnaflutning kunna að eiga við."
+ "Símtal heldur áfram og notar farsímagögn…"
+ "Ekki var hægt að skipta yfir á Wi-Fi-net"
+ "Myndsímtal verður áfram á farsímaneti. Stöðluð gjöld fyrir gagnaflutning kunna að eiga við."
"Ekki birta þetta aftur"
diff --git a/java/com/android/incallui/res/values-it/strings.xml b/java/com/android/incallui/res/values-it/strings.xml
index 836b934525ce78c206f93d184d7b4442168a4e34..ca2b4b14ab190dcc91ac1f8a2b1ee5c4fe568611 100644
--- a/java/com/android/incallui/res/values-it/strings.xml
+++ b/java/com/android/incallui/res/values-it/strings.xml
@@ -33,8 +33,8 @@
"Chiamata senza risposta da %s"
"Chiamata in corso"
"Chiamata di lavoro in corso"
- "Chiamata Wi-Fi in corso"
- "Chiamata di lavoro tramite Wi-Fi in corso"
+ "Chiamata Wi-Fi in corso"
+ "Chiamata di lavoro tramite Wi-Fi in corso"
"In attesa"
"Chiamata in arrivo"
"Chiamata in arrivo con foto"
@@ -55,8 +55,8 @@
"Chiamata importante in arrivo con foto, messaggio e posizione"
"Chiamata importante in arrivo con allegati"
"Chiamata di lavoro in arrivo"
- "Chiamata Wi-Fi in arrivo"
- "Chiamata di lavoro in arrivo tramite Wi-Fi"
+ "Chiamata Wi-Fi in arrivo"
+ "Chiamata di lavoro tramite Wi-Fi in arrivo"
"Chiamata di presunto spam in arrivo"
"Richiesta video in arrivo"
"Nessun servizio"
@@ -73,7 +73,7 @@
"Ricevi videochiamata"
"Per fare una telefonata, disattiva la modalità aereo."
"Non registrato sulla rete."
- "Rete cellulare non disponibile."
+ "Rete mobile non disponibile."
"Per effettuare una chiamata, inserisci un numero valido."
"Impossibile chiamare."
"Inizio sequenza MMI..."
@@ -134,8 +134,8 @@
"Termina chiamata"
"Audioconferenza"
"Chiamata in corso"
- "Proseguimento della chiamata utilizzando la rete dati…"
- "Impossibile passare alla rete Wi-Fi"
- "La videochiamata rimarrà sulla rete cellulare. Potrebbero essere applicati costi standard per il traffico dati."
+ "Proseguimento della chiamata utilizzando i dati mobili…"
+ "Impossibile passare alla rete Wi-Fi"
+ "La videochiamata rimarrà sulla rete mobile. Potrebbero essere applicati costi standard per il traffico dati."
"Non mostrare più questo messaggio"
diff --git a/java/com/android/incallui/res/values-iw/strings.xml b/java/com/android/incallui/res/values-iw/strings.xml
index 195cb0f259f35205e9e5649113ce8e51c1e0fe70..326078ae81ab8ac574b1160fcf31fa4edd9bbab7 100644
--- a/java/com/android/incallui/res/values-iw/strings.xml
+++ b/java/com/android/incallui/res/values-iw/strings.xml
@@ -33,8 +33,8 @@
"שיחה שלא נענתה מאת %s"
"שיחה פעילה"
"שיחת עבודה פעילה"
- "שיחת Wi-Fi מתבצעת"
- "שיחת עבודה פעילה ברשת WiFi"
+ "שיחת Wi-Fi פעילה"
+ "שיחת עבודה פעילה ברשת Wi‑Fi"
"בהמתנה"
"שיחה נכנסת"
"שיחה נכנסת עם תמונה"
@@ -55,8 +55,8 @@
"שיחה נכנסת חשובה עם תמונה, הודעה ומיקום"
"שיחה נכנסת חשובה עם קבצים מצורפים"
"שיחת עבודה נכנסת"
- "שיחת Wi-Fi נכנסת"
- "שיחת עבודה נכנסת ברשת WiFi"
+ "שיחת Wi-Fi נכנסת"
+ "שיחת עבודה נכנסת ברשת Wi‑Fi"
"השיחה הנכנסת חשודה כספאם"
"בקשת וידאו נכנסת"
"אין שירות"
@@ -73,7 +73,7 @@
"קבל את שיחת הווידאו"
"כדי להתקשר, כבה תחילה את מצב טיסה."
"לא רשום ברשת."
- "רשת סלולרית אינה זמינה."
+ "הרשת הסלולרית אינה זמינה."
"כדי להתקשר, הזן מספר טלפון חוקי."
"לא ניתן להתקשר."
"מתחיל רצף MMI…"
@@ -134,8 +134,8 @@
"סיים שיחה"
"שיחת ועידה"
"בשיחה"
- "ממשיך את השיחה באמצעות הרשת הסלולרית..."
- "לא ניתן לעבור לרשת Wi-Fi"
- "שיחת הווידאו תמשיך להיות ברשת הסלולרית. ייתכן שתחויב על ידי הספק הסלולרי בגין צריכת נתונים."
+ "ממשיך את השיחה באמצעות הרשת הסלולרית…"
+ "לא ניתן לעבור לרשת Wi-Fi"
+ "שיחת הווידאו תמשיך להיות ברשת הסלולרית. ייתכן שתחויב על שימוש בנתונים."
"אל תציג זאת שוב"
diff --git a/java/com/android/incallui/res/values-ja/strings.xml b/java/com/android/incallui/res/values-ja/strings.xml
index 0e186fa3d02b37a2fe3d42a5fe9047f5b8a4cd76..a54c4e12ab5446395e2ac500a7c3bee4b59101fa 100644
--- a/java/com/android/incallui/res/values-ja/strings.xml
+++ b/java/com/android/incallui/res/values-ja/strings.xml
@@ -33,8 +33,8 @@
"%s さんからの不在着信"
"通話中"
"仕事の通話中"
- "Wi-Fi通話を発信中"
- "仕事の Wi-Fi 通話中"
+ "Wi-Fi 通話を発信中"
+ "仕事の Wi-Fi 通話を発信中"
"保留中"
"通話着信"
"着信(写真あり)"
@@ -55,8 +55,8 @@
"重要な着信(写真、メッセージ、位置情報あり)"
"重要な着信(添付ファイルあり)"
"仕事の通話が着信中"
- "Wi-Fi通話が着信中"
- "仕事の Wi-Fi 通話が着信中"
+ "Wi-Fi 通話が着信中"
+ "仕事の Wi-Fi 通話が着信中"
"迷惑電話の疑いがある通話を着信しています"
"ビデオハングアウトリクエスト着信"
"通信サービスなし"
@@ -73,7 +73,7 @@
"ビデオハングアウトを引き継ぐ"
"機内モードをOFFにしてから発信してください。"
"ご加入の通信サービスがありません"
- "モバイルネットワークが利用できません。"
+ "モバイル ネットワークを利用できません。"
"発信するには、有効な番号を入力してください。"
"発信できません。"
"MMIシーケンスを開始中..."
@@ -134,8 +134,8 @@
"通話を終了"
"グループ通話"
"通話中"
- "モバイルデータを使用して通話を継続しています…"
- "Wi-Fi ネットワークに切り替えることができませんでした"
- "引き続きモバイル ネットワークを使用してビデオ通話を続行します。通常のデータ通信料が適用される場合があります。"
+ "モバイルデータを使用して通話を継続しています…"
+ "Wi-Fi ネットワークに切り替えることができませんでした"
+ "引き続きモバイル ネットワークを使用してビデオハングアウトを続行します。通常のデータ通信料が適用される場合があります。"
"今後このメッセージを表示しない"
diff --git a/java/com/android/incallui/res/values-ka/strings.xml b/java/com/android/incallui/res/values-ka/strings.xml
index 6c46bd0c7b3385442b40a4a942e5bdbf685c18dd..fed398b493b31d63eec53ff179493fc70cae2091 100644
--- a/java/com/android/incallui/res/values-ka/strings.xml
+++ b/java/com/android/incallui/res/values-ka/strings.xml
@@ -33,8 +33,8 @@
"გამოტოვებული ზარი %s-ისგან"
"მიმდინარე ზარი"
"მიმდინარე ზარი (სამსახური)"
- "მიმდინარე Wi-Fi ზარი"
- "მიმდინარე Wi-Fi ზარი (სამსახური)"
+ "მიმდინარე Wi-Fi ზარი"
+ "მიმდინარე Wi-Fi ზარი (სამსახური)"
"შეყოვნების რეჟიმში"
"შემომავალი ზარი"
"შემომავალი ზარი ფოტოთი"
@@ -55,8 +55,8 @@
"ზარი ფოტოთი, შეტყობინებით და მდებარეობით"
"მნიშვნელოვანი შემომავალი ზარი დანართებით"
"შემომავალი ზარი (სამსახური)"
- "შემომავალი Wi-Fi ზარი"
- "შემომავალი Wi-Fi ზარი (სამსახური)"
+ "შემომავალი Wi-Fi ზარი"
+ "შემომავალი Wi-Fi ზარი (სამსახური)"
"შემომავალი ზარი - სავარაუდოდ სპამი"
"შემომავალი ვიდეოს მოთხოვნა"
"სერვისი არ არის"
@@ -73,7 +73,7 @@
"Take ვიდეო ზარი"
"ზარის განსახორციელებლად, ჯერ თვითმფრინავის რეჟიმი უნდა გამორთოთ."
"ქსელში რეგისტრირებული არ არის."
- "ფიჭური ქსელი მიუწვდომელია"
+ "მობილური ქსელი მიუწვდომელია."
"ზარის განხორციელებისათვის, შეიყვანეთ მოქმედი ნომერი."
"არ ირეკება."
"MMI თანმიმდევრობის დაწყება…"
@@ -134,8 +134,8 @@
"ზარის დასრულება"
"საკონფერენციო ზარი"
"მონაწილეობს ზარში"
- "ზარი გრძელდება მობილური ინტერნეტის გამოყენებით…"
- "Wi-Fi ქსელზე გადართვა ვერ მოხერხდა"
- "ვიდეოზარი ფიჭურ ქსელში დარჩება. შესაძლოა მოგიწიოთ მობილური ინტერნეტის სტანდარტული ფასის გადახდა."
+ "ზარი გრძელდება მობილური ინტერნეტის გამოყენებით…"
+ "Wi-Fi ქსელზე გადართვა ვერ მოხერხდა"
+ "ვიდეოზარი მობილური ინტერნეტის ქსელში დარჩება. შესაძლოა მოგიწიოთ მობილური ინტერნეტის სტანდარტული საფასურის გადახდა."
"აღარ მაჩვენო"
diff --git a/java/com/android/incallui/res/values-kk/strings.xml b/java/com/android/incallui/res/values-kk/strings.xml
index 310ba4d280ad3cb514e9a855021bb406c9ad0e03..42ac9b078ee784a0db50c273163819813ebc288a 100644
--- a/java/com/android/incallui/res/values-kk/strings.xml
+++ b/java/com/android/incallui/res/values-kk/strings.xml
@@ -33,8 +33,8 @@
"%s қоңырауы өткізіп алынған"
"Ағымдағы қоңырау"
"Ағымдағы жұмыс қоңырауы"
- "Ағымдық Wi-Fi қоңырауы"
- "Ағымдағы Wi-Fi жұмыс қоңырауы"
+ "Қазіргі Wi-Fi қоңырауы"
+ "Қазіргі Wi-Fi жұмыс қоңырауы"
"Күтуде"
"Келген қоңырау"
"Сурет тіркелген кіріс қоңырау"
@@ -55,8 +55,8 @@
"Сурет, хабар және орын дерегі тіркелген маңызды кіріс қоңырау"
"Тіркемелері бар маңызды кіріс қоңырау"
"Кіріс жұмыс қоңырауы"
- "Кіріс Wi-Fi қоңырауы"
- "Кіріс Wi-Fi жұмыс қоңырауы"
+ "Кіріс Wi-Fi қоңырауы"
+ "Кіріс Wi-Fi жұмыс қоңырауы"
"Кіріс қоңырауы спам болуы мүмкін"
"Кіріс бейне сұрау"
"Қызмет көрсетілмейді"
@@ -73,7 +73,7 @@
"Бейне қоңырауды бері бұру"
"Қоңырау шалу үшін алдымен Ұшақ режимін өшіріңіз."
"Желіде тіркелмеген."
- "Ұялы желі қол жетімді емес."
+ "Мобильдік желі қолжетімсіз."
"Қоңырау шалу үшін жарамды нөмірді енгізіңіз."
"Қоңырау шалу мүмкін емес."
"MMI қатарын бастау…"
@@ -134,8 +134,8 @@
"Қоңырауды аяқтау"
"Мәжіліс қоңырауы"
"Бос емес"
- "Қоңырау ұялы дерек арқылы жалғасады..."
- "Wi-Fi желісіне қосылу мүмкін болмады"
- "Бейне қоңырау ұялы байланыс желісінде қалады. Стандартты деректер ақысы алынуы мүмкін."
+ "Қоңырау мобильдік желі арқылы жалғасуда…"
+ "Wi-Fi желісіне қосылу мүмкін болмады"
+ "Бейне қоңырау мобильдік желіде қалады. Стандартты мобильдік байланыс ақысы алынуы мүмкін."
"Мұны қайтадан көрсетпеу"
diff --git a/java/com/android/incallui/res/values-km/strings.xml b/java/com/android/incallui/res/values-km/strings.xml
index 4fbafef71506feb1fdeefd9cd5ee1eec1e0d658d..c6238de2b47334a2a168e7dfb45a1a3cc0c7065f 100644
--- a/java/com/android/incallui/res/values-km/strings.xml
+++ b/java/com/android/incallui/res/values-km/strings.xml
@@ -33,8 +33,8 @@
"ខកខានទទួលពី %s"
"កំពុងបន្តការហៅ"
"ការហៅពីកន្លែងការងារកំពុងដំណើរការ"
- "ការហៅតាម Wi-Fi កំពុងបន្ត"
- "ការហៅតាម Wi-Fi ពីកន្លែងការងារកំពុងដំណើរការ"
+ "ការហៅតាម Wi-Fi កំពុងដំណើរការ"
+ "ការហៅតាម Wi-Fi ពីកន្លែងការងារកំពុងដំណើរការ"
"រង់ចាំ"
"ការហៅចូល"
"ការហៅចូលដែលមានរូបថត"
@@ -55,8 +55,8 @@
"ការហៅចូលដែលសំខាន់មានរូបថត សារ និងទីតាំង"
"ការហៅចូលដែលសំខាន់មានឯកសារភ្ជាប់"
"កំពុងហៅចូលពីកន្លែងការងារ"
- "មានការហៅចូលមកតាម Wi-Fi"
- "កំពុងហៅចូលពីកន្លែងការងារតាម Wi-Fi"
+ "មានការហៅចូលមកតាម Wi-Fi"
+ "មានការហៅចូលពីកន្លែងការងារតាម Wi-Fi"
"ការហៅបន្លំចូលដែលសង្ស័យ"
"សំណើការហៅជាវីដេអូចូល"
"គ្មានសេវា"
@@ -73,7 +73,7 @@
"ទទួលយកការហៅវីដេអូ"
"ដើម្បីកំណត់ការហៅ ដំបូងត្រូវបិទរបៀបនៅពេលជិះយន្តហោះ។"
"មិនបានចុះឈ្មោះនៅលើបណ្ដាញ។"
- "បណ្ដាញចល័តមិនអាចប្រើបាន។"
+ "សេវាទូរសព្ទចល័តមិនអាចប្រើប្រាស់បាន។"
"ដើម្បីធ្វើការហៅ បញ្ចូលលេខដែលមានសុពលភាព។"
"មិនអាចហៅបានទេ។"
"កំពុងចាប់ផ្ដើមលំដាប់ MMI ..."
@@ -134,8 +134,8 @@
"បញ្ចប់ការហៅ"
"ហៅជាសន្និសីទ"
"ស្ថិតក្នុងការហៅ"
- "កំពុងបន្តហៅទូរស័ព្ទដោយប្រើទិន្នន័យទូរស័ព្ទចល័ត..."
- "មិនអាចប្ដូរទៅបណ្ដាញ Wi-Fi"
- "ការហៅជាវីដេអូនឹងនៅតែស្ថិតលើបណ្ដាញទូរសព្ទចល័ត។ អាចនឹងគិតថ្លៃទិន្នន័យតាមតម្លៃស្តង់ដារ។"
+ "កំពុងបន្តការហៅទូរសព្ទ ដោយប្រើប្រាស់ទិន្នន័យចល័ត…"
+ "មិនអាចប្ដូរទៅបណ្ដាញ Wi-Fi បានទេ"
+ "ការហៅតាមវីដេអូនឹងនៅតែមាននៅលើបណ្ដាញទូរសព្ទ។ អាចនឹងគិតថ្លៃទិន្នន័យតាមតម្លៃស្តង់ដារ។"
"កុំបង្ហាញវាម្ដងទៀត"
diff --git a/java/com/android/incallui/res/values-kn/strings.xml b/java/com/android/incallui/res/values-kn/strings.xml
index 5d47c7e0eaf5e7bc5574717f55a28212b9951bdf..cb47e35d9544a49d3354dfd2f7567592c137b429 100644
--- a/java/com/android/incallui/res/values-kn/strings.xml
+++ b/java/com/android/incallui/res/values-kn/strings.xml
@@ -33,8 +33,8 @@
"%s ಅವರಿಂದ ಮಿಸ್ಡ್ ಕಾಲ್"
"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆ"
"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕೆಲಸದ ಕರೆ"
- "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕರೆ"
- "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ"
+ "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕರೆ"
+ "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ"
"ತಡೆಹಿಡಿಯಲಾಗಿದೆ"
"ಒಳಬರುವ ಕರೆ"
"ಫೋಟೋದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ"
@@ -55,8 +55,8 @@
"ಪೋಟೋ, ಸಂದೇಶ ಮತ್ತು ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ"
"ಲಗತ್ತುಗಳೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ"
"ಒಳಬರುವ ಕೆಲಸದ ಕರೆ"
- "ಒಳಬರುವ ವೈ-ಫೈ ಕರೆ"
- "ಒಳಬರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ"
+ "ಒಳಬರುವ ವೈ-ಫೈ ಕರೆ"
+ "ಒಳಬರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ"
"ಒಳಬರುವ ಶಂಕಿತ ಸ್ಪ್ಯಾಮ್ ಕರೆ"
"ಒಳಬರುವ ವೀಡಿಯೊ ವಿನಂತಿ"
"ಯಾವುದೇ ಸೇವೆಯಿಲ್ಲ"
@@ -73,7 +73,7 @@
"ವೀಡಿಯೊ ಕರೆ ತೆಗೆದುಕೊಳ್ಳಿ"
"ಕರೆ ಮಾಡಲು, ಮೊದಲು ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ."
"ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ಇನ್ನೂ ನೋಂದಣಿಯಾಗಿಲ್ಲ."
- "ಸೆಲ್ಯುಲಾರ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ."
+ "ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ."
"ಕರೆಯನ್ನು ಮಾಡಲು, ಮಾನ್ಯವಾದ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ."
"ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."
"MMI ಅನುಕ್ರಮ ಪ್ರಾರಂಭವಾಗುತ್ತಿದೆ…"
@@ -134,8 +134,8 @@
"ಕರೆ ಅಂತ್ಯಗೊಳಿಸಿ"
"ಕಾನ್ಫರೆನ್ಸ್ ಕರೆ"
"ಕರೆಯಲ್ಲಿ"
- "ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾ ಬಳಸಿಕೊಂಡು ಕರೆ ಮುಂದುವರಿಸಲಾಗುತ್ತಿದೆ…"
- "ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ಗೆ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"
- "ಸೆಲ್ಯುಲಾರ್ ನೆಟ್ವರ್ಕ್ಗೆ ವೀಡಿಯೊ ಕರೆ ಹಾಗೆಯೇ ಉಳಿಯುತ್ತದೆ. ಪ್ರಮಾಣಿತ ಡೇಟಾ ಶುಲ್ಕಗಳು ಅನ್ವಯಿಸಬಹುದು."
+ "ಮೊಬೈಲ್ ಡೇಟಾ ಬಳಸಿಕೊಂಡು ಕರೆ ಮುಂದುವರಿಸಲಾಗುತ್ತಿದೆ…"
+ "ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ಗೆ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"
+ "ವೀಡಿಯೊ ಕರೆ ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ಹಾಗೆಯೇ ಉಳಿಯುತ್ತದೆ. ಪ್ರಮಾಣಿತ ಡೇಟಾ ಶುಲ್ಕಗಳು ಅನ್ವಯಿಸಬಹುದು."
"ಮತ್ತೆ ಇದನ್ನು ತೋರಿಸಬೇಡ"
diff --git a/java/com/android/incallui/res/values-ko/strings.xml b/java/com/android/incallui/res/values-ko/strings.xml
index 44c53389a0348bd90f52ddbd33d40691a66d297d..676ba08f0806f5efcf661facbc9fc1aa5537a8d9 100644
--- a/java/com/android/incallui/res/values-ko/strings.xml
+++ b/java/com/android/incallui/res/values-ko/strings.xml
@@ -33,8 +33,8 @@
"%s의 부재중 전화"
"현재 통화"
"발신 업무 전화"
- "Wi-Fi 발신 전화"
- "발신 Wi-Fi 업무 전화"
+ "진행 중인 Wi-Fi 통화"
+ "진행 중인 Wi-Fi 업무 통화"
"대기 중"
"수신전화"
"사진이 있는 수신 전화"
@@ -55,8 +55,8 @@
"사진, 메시지, 위치가 있는 중요한 수신 전화"
"첨부파일이 있는 중요한 수신 전화"
"수신 업무 전화"
- "Wi-Fi 수신 전화"
- "수신 Wi-Fi 업무 전화"
+ "수신 Wi-Fi 통화"
+ "수신 Wi-Fi 업무 통화"
"의심스러운 스팸 발신자로부터 온 전화"
"수신 동영상 요청"
"서비스 불가"
@@ -73,7 +73,7 @@
"화상 통화 받기"
"전화를 걸려면 먼저 비행기 모드를 해제하세요."
"네트워크에서 등록되지 않았습니다."
- "사용 가능한 이동통신망이 없습니다."
+ "모바일 네트워크를 사용할 수 없습니다."
"전화를 걸려면 올바른 번호를 입력하세요."
"전화를 걸 수 없습니다."
"MMI 시퀀스 시작 중..."
@@ -134,8 +134,8 @@
"통화 종료"
"다자간 통화"
"통화 중"
- "모바일 데이터를 사용하여 계속 통화 중…"
- "Wi-Fi 네트워크로 전환할 수 없습니다."
- "화상 통화가 모바일 네트워크에서 유지됩니다. 표준 데이터 요금이 부과될 수 있습니다."
+ "모바일 데이터를 사용하여 통화를 계속합니다…"
+ "Wi-Fi 네트워크로 전환할 수 없습니다."
+ "화상 통화가 모바일 네트워크에서 계속됩니다. 표준 데이터 요금이 부과될 수 있습니다."
"다시 표시하지 않음"
diff --git a/java/com/android/incallui/res/values-ky/strings.xml b/java/com/android/incallui/res/values-ky/strings.xml
index 0f8ee3cd8d2e5aa09fa29b30f2a9d89df79d463b..1f6060412b7fedea7a75bcac79026a56b3eb6cbe 100644
--- a/java/com/android/incallui/res/values-ky/strings.xml
+++ b/java/com/android/incallui/res/values-ky/strings.xml
@@ -33,8 +33,8 @@
"%s дегенден кабыл алынбаган чалуу"
"Учурдагы чалуу"
"Учурда болуп жаткан чалуу (жумуш боюнча)"
- "Аткаруудагы Wi-Fi чалуу"
- "Учурда болуп жаткан Wi-Fi чалуу (жумуш боюнча)"
+ "Учурдагы Wi-Fi чалуу"
+ "Учурдагы Wi-Fi чалуу (жумуш боюнча)"
"Күтүлүүдө"
"Кирүүчү чалуу"
"Сүрөтү бар кирүүчү чалуу"
@@ -55,8 +55,8 @@
"Сүрөт, билдирүү жана жайгашкан жер бар маанилүү чалуу"
"Тиркемелери бар маанилүү кирүүчү чалуу"
"Жумуш боюнча келип жаткан чалуу"
- "Кирүүчү Wi-Fi чалуу"
- "Жумуш боюнча келип жаткан Wi-Fi чалуу"
+ "Келип жаткан Wi-Fi чалуу"
+ "Жумуш боюнча келип жаткан Wi-Fi чалуу"
"Келип жаткан чалуу спам окшойт"
"Келип жаткан видео сурамы"
"Байланыш жок"
@@ -73,7 +73,7 @@
"Видео чалууну кабыл алуу"
"Чалуу үчүн, адегенде учак режимин өчүрүңүз."
"Тармакта катталган эмес."
- "Мобилдик тармак жеткиликтүү эмес."
+ "Мобилдик тармак жок."
"Чалуу үчүн, жарактуу номер киргизиңиз."
"Чалынбай жатат."
"MMI кезеги башталууда…"
@@ -134,8 +134,8 @@
"Чалууну бүтүрүү"
"Конференц-чалуу"
"Чалууда"
- "Уюлдук дайындарды пайдалануу менен чалууну улантууда..."
- "Wi-Fi тармагына туташа албай койдук"
- "Видео чалуу уюлдук тармак аркылуу аткарылат. Стандарттык тариф боюнча акы алынышы мүмкүн."
+ "Мобилдик дайындарды пайдалануу менен чалууну улантууда…"
+ "Wi-Fi тармагына туташа албай койдук"
+ "Видео чалуу мобилдик тармак аркылуу аткарылат. Стандарттык тариф боюнча акы алынышы мүмкүн."
"Экинчи көрсөтүлбөсүн"
diff --git a/java/com/android/incallui/res/values-lo/strings.xml b/java/com/android/incallui/res/values-lo/strings.xml
index 56335d416b7b7c60768f9b5f20b05616f5e3fb87..45a2a40891cf15b1fed0376f74e28539cc9af7cd 100644
--- a/java/com/android/incallui/res/values-lo/strings.xml
+++ b/java/com/android/incallui/res/values-lo/strings.xml
@@ -33,8 +33,8 @@
"ສາຍບໍ່ໄດ້ຮັບຈາກ %s"
"ສາຍທີ່ກຳລັງໂທອອກ"
"ສາຍໂທອອກຈາກບ່ອນເຮັດວຽກ"
- "ການໂທ Wi-Fi ທີ່ດໍາເນີນຢູ່"
- "ສາຍໂທອອກ Wi-Fi ຈາກບ່ອນເຮັດວຽກ"
+ "ການໂທ Wi-Fi ທີ່ດໍາເນີນຢູ່"
+ "ການໂທ Wi-Fi ບ່ອນເຮັດວຽກທີ່ດໍາເນີນຢູ່"
"ພັກສາຍຊົ່ວຄາວ"
"ສາຍໂທເຂົ້າ"
"ສາຍໂທເຂົ້າພ້ອມຮູບພາບ"
@@ -55,8 +55,8 @@
"ສາຍໂທເຂົ້າສຳຄັນພ້ອມຮູບພາບ, ຂໍ້ຄວາມ ແລະ ສະຖານທີ່"
"ສາຍໂທເຂົ້າສຳຄັນພ້ອມໄຟລ໌ແນບ"
"ສາຍໂທເຂົ້າຈາກບ່ອນເຮັດວຽກ"
- "ສາຍໂທເຂົ້າ Wi-Fi"
- "ສາຍໂທເຂົ້າ Wi-Fi ຈາກບ່ອນເຮັດວຽກ"
+ "ສາຍໂທເຂົ້າ Wi-Fi"
+ "ສາຍໂທເຂົ້າ Wi-Fi ບ່ອນເຮັດວຽກ"
"ມີການໂທທີ່ຄາດວ່າເປັນສະແປມໂທເຂົ້າມາ"
"ຄຳຮ້ອງຂໍວິດີໂອເຂົ້າມາ"
"ບໍ່ມີບໍລິການ"
@@ -73,7 +73,7 @@
"ຮັບສາຍວິດີໂອ"
"ເພື່ອໂທລະສັບ, ໃຫ້ປິດໂໝດຢູ່ເທິງຍົນກ່ອນ."
"ບໍ່ໄດ້ລົງທະບຽນໃນເຄືອຂ່າຍ."
- "ບໍ່ມີເຄືອຂ່າຍມືຖືທີ່ສາມາດໃຊ້ໄດ້."
+ "ເຄືອຂ່າຍມືຖືບໍ່ສາມາດໃຊ້ໄດ້."
"ເພື່ອທີ່ຈະໂທ, ປ້ອນເບີໂທທີ່ໃຊ້ໄດ້ເຂົ້າໄປ."
"ບໍ່ສາມາດໂທໄດ້."
"ກຳລັງເລີ່ມຕົ້ນລຳດັບ MMI..."
@@ -134,8 +134,8 @@
"ວາງສາຍ"
"ການປະຊຸມທາງໂທລະສັບ"
"ຢູ່ໃນສາຍ"
- "ສືບຕໍ່ການໂທໂດຍໃຊ້ອິນເຕີເນັດມືຖື…"
- "ບໍ່ສາມາດສະຫຼັບໄປໃຊ້ເຄືອຂ່າຍ Wi-Fi ໄດ້"
- "ການໂທດ້ວຍວິດີໂອຈະຍັງໃຊ້ຜ່ານເຄືອຂ່າຍມືຖືຢູ່ ໂດຍອາດມີການຮຽກເກັບຄ່າບໍລິການຕາມປົກກະຕິ."
+ "ກຳລັງສືບຕໍ່ສາຍໂດຍໃຊ້ອິນເຕີເນັດມືຖື…"
+ "ບໍ່ສາມາດສະຫຼັບໄປໃຊ້ເຄືອຂ່າຍ Wi-Fi ໄດ້"
+ "ການໂທວິດີໂອຈະຍັງຄົງຢູ່ໃນເຄືອຂ່າຍມືຖືຕໍ່ໄປ. ອາດມີການຮຽກເກັບຄ່າບໍລິການມາດຕະຖານ."
"ບໍ່ຕ້ອງສະແດງຂໍ້ຄວາມນີ້ອີກ"
diff --git a/java/com/android/incallui/res/values-lt/strings.xml b/java/com/android/incallui/res/values-lt/strings.xml
index 4d4a0c098a523ebee2f919755818b035d1899595..e63ca7018a3ac77d6f0c3a99dd8f45d709fb2532 100644
--- a/java/com/android/incallui/res/values-lt/strings.xml
+++ b/java/com/android/incallui/res/values-lt/strings.xml
@@ -33,8 +33,8 @@
"Praleistas skambutis nuo %s"
"Vykstantis pokalbis"
"Vykstantis darbo skambutis"
- "Vykstantis „Wi-Fi“ skambutis"
- "Vykstantis „Wi-Fi“ darbo skambutis"
+ "Vykstantis „Wi-Fi“ skambutis"
+ "Vykstantis „Wi-Fi“ darbo skambutis"
"Sulaikyta"
"Gaunamasis skambutis"
"Gaunamasis skambutis su nuotrauka"
@@ -55,15 +55,15 @@
"Svarbus gaunam. skamb. su nuotr., praneš. ir viet."
"Svarbus gaunamasis skambutis su priedais"
"Gaunamasis darbo skambutis"
- "Gaunamasis „Wi-Fi“ skambutis"
- "Gaunamasis „Wi-Fi“ darbo skambutis"
+ "Gaunamasis „Wi-Fi“ skambutis"
+ "Gaunamasis „Wi-Fi“ darbo skambutis"
"Gaunamasis įtartinas šlamšto skambutis"
"Gaunama vaizdo skambučio užklausa"
"Nėra paslaugos"
"Pasirinktas tinklas (%s) negalimas"
"Atsakyti"
"Padėti ragelį"
- "Vaizdo skambutis"
+ "Vaizdo skam."
"Balsas"
"Atsiliepti"
"Atmesti"
@@ -73,7 +73,7 @@
"Atlikti vaizdo skambutį"
"Jei norite skambinti, išjunkite lėktuvo režimą."
"Neregistruota tinkle."
- "Korinis tinklas nepasiekiamas"
+ "Mobiliojo ryšio tinklas nepasiekiamas."
"Kad galėtumėte paskambinti, įveskite tinkamą numerį."
"Nepavyko paskambinti."
"Paleidžiama MMI seka..."
@@ -134,8 +134,8 @@
"Baigti skambutį"
"Konferencinis skambutis"
"Skambinant"
- "Skambutis tęsiamas naudojant mobiliojo ryšio duomenis…"
- "Nepavyko prisijungti prie „Wi-Fi“ tinklo"
- "Vaizdo skambutis ir toliau bus vykdomas naudojant mobiliojo ryšio tinklą. Gali būti taikomi įprasti duomenų mokesčiai."
+ "Skambutis tęsiamas naudojant mobiliojo ryšio duomenis…"
+ "Nepavyko prisijungti prie „Wi-Fi“ tinklo"
+ "Vaizdo skambutis ir toliau bus vykdomas naudojant mobiliojo ryšio tinklą. Gali būti taikomi įprasti duomenų mokesčiai."
"Daugiau to nerodyti"
diff --git a/java/com/android/incallui/res/values-lv/strings.xml b/java/com/android/incallui/res/values-lv/strings.xml
index 9be46c4fd8e79bf7fe8a29c8f15490c075bed476..441733a9b74f63e2d2eb941f76f8e029777c3d37 100644
--- a/java/com/android/incallui/res/values-lv/strings.xml
+++ b/java/com/android/incallui/res/values-lv/strings.xml
@@ -33,8 +33,8 @@
"Neatbildēts zvans no: %s"
"Pašreizējā saruna"
"Notiekošs darba zvans"
- "Notiekošs Wi-Fi zvans"
- "Notiekošs darba Wi-Fi zvans"
+ "Notiekošs Wi-Fi zvans"
+ "Notiekošs darba Wi-Fi zvans"
"Aizturēts"
"Ienākošais zvans"
"Ienākošais zvans ar fotoattēlu"
@@ -55,8 +55,8 @@
"Zvans ar fotoattēlu, ziņojumu un atrašanās vietu"
"Svarīgs ienākošais zvans ar pielikumiem"
"Ienākošs darba zvans"
- "Ienākošs Wi-Fi zvans"
- "Ienākošs darba Wi-Fi zvans"
+ "Ienākošs Wi-Fi zvans"
+ "Ienākošs darba Wi-Fi zvans"
"Ienākošs, iespējams, nevēlams zvans"
"Ienākošs video pieprasījums"
"Nav pakalpojuma"
@@ -73,7 +73,7 @@
"Pārsūtīt videozvanu"
"Lai veiktu zvanu, vispirms izslēdziet lidojuma režīmu."
"Tīklā nav reģistrēts."
- "Mobilais tīkls nav pieejams."
+ "Mobilais tīkls nav pieejams."
"Lai veiktu zvanu, ievadiet derīgu numuru."
"Nevar veikt zvanu."
"Notiek MMI secības startēšana…"
@@ -134,8 +134,8 @@
"Beigt zvanu"
"Konferences zvans"
"Notiek zvans"
- "Zvans tiek turpināts, izmantojot mobilos datus…"
- "Nevarēja pārslēgt uz Wi-Fi tīklu"
- "Videozvans tiks turpināts mobilo sakaru tīklā. Var tikt piemērota standarta maksa par datu pārraidi."
+ "Zvans tiek turpināts, izmantojot mobilos datus…"
+ "Nevarēja pārslēgt uz Wi-Fi tīklu"
+ "Videozvans tiks turpināts mobilo sakaru tīklā. Var tikt piemērota standarta maksa par datu pārraidi."
"Vairs nerādīt šo ziņojumu"
diff --git a/java/com/android/incallui/res/values-mcc262-mnc01/strings.xml b/java/com/android/incallui/res/values-mcc262-mnc01/strings.xml
deleted file mode 100644
index 2679653a7485e39cc53d626f13b3ac9de1f614aa..0000000000000000000000000000000000000000
--- a/java/com/android/incallui/res/values-mcc262-mnc01/strings.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
- Ongoing WLAN Call
-
- Ongoing WLAN work call
-
- Incoming WLAN Call
-
- Incoming WLAN work call
-
\ No newline at end of file
diff --git a/java/com/android/incallui/res/values-mk/strings.xml b/java/com/android/incallui/res/values-mk/strings.xml
index 03be1d951eb27be4f14adc307c1d00071c1ad0fc..b712fe03218a0864cc677651c00b9bb9fce2e91d 100644
--- a/java/com/android/incallui/res/values-mk/strings.xml
+++ b/java/com/android/incallui/res/values-mk/strings.xml
@@ -33,8 +33,8 @@
"Пропуштен повик од %s"
"Тековен повик"
"Тековен работен повик"
- "Појдовен повик преку Wi-Fi"
- "Тековен работен повик преку Wi-Fi"
+ "Тековен повик преку Wi-Fi"
+ "Тековен работен повик преку Wi-Fi"
"На чекање"
"Дојдовен повик"
"Дојдовен повик со фотографија"
@@ -55,8 +55,8 @@
"Важен дојдовен повик со фото., порака и локација"
"Важен дојдовен повик со прилози"
"Дојдовен работен повик"
- "Дојдовен повик преку Wi-Fi"
- "Дојдовен работен повик преку Wi-Fi"
+ "Дојдовен повик преку Wi-Fi"
+ "Дојдовен работен повик преку Wi-Fi"
"Дојдовниот повик може да е спам"
"Дојдовно побарување за видео"
"Нема услуга"
@@ -73,7 +73,7 @@
"Прифатете видеоповик"
"За да воспоставите повик, прво исклучете режим на работа во авион."
"Не е регистриран на мрежа."
- "Не е достапна мобилна мрежа."
+ "Нема достапна мобилна мрежа."
"За да повикате, внесете важечки број."
"Не може да повика."
"Започнува MMI низа..."
@@ -134,8 +134,8 @@
"Завршете го повикот"
"Конференциски повик"
"Повик во тек"
- "Повикот ќе продолжи преку мобилен интернет…"
- "Не можеше да се префрли на Wi-Fi-мрежа"
- "Видеоповикот ќе остане на мобилната мрежа. Може да се наплати за интернет-сообраќај."
+ "Повикот ќе продолжи преку мобилен интернет…"
+ "Не можеше да се префрли на Wi-Fi-мрежа"
+ "Видеоповикот ќе остане на мобилната мрежа. Може да се наплати за мобилен интернет."
"Не го прикажувај ова повторно"
diff --git a/java/com/android/incallui/res/values-ml/strings.xml b/java/com/android/incallui/res/values-ml/strings.xml
index e207ccd455172bca9880327c57b8b21c952f5ae6..db9f5601836bbd16cb9f2178b8a8c04c153baf79 100644
--- a/java/com/android/incallui/res/values-ml/strings.xml
+++ b/java/com/android/incallui/res/values-ml/strings.xml
@@ -33,8 +33,8 @@
"%s എന്നതിൽ നിന്നുള്ള മിസ്ഡ് കോൾ"
"കോൾ സജീവമാണ്"
"ഓൺഗോയിംഗ് ഔദ്യോഗിക കോൾ"
- "ഓൺഗോയിംഗ് വൈഫൈ കോൾ"
- "ഓൺഗോയിംഗ് വൈഫൈ ഔദ്യോഗിക കോൾ"
+ "നിലവിലുള്ള വൈഫൈ കോൾ"
+ "നിലവിലുള്ള വൈഫൈ ഔദ്യോഗിക കോൾ"
"ഹോള്ഡിലാണ്"
"ഇന്കമിംഗ് കോള്"
"ഫോട്ടോ ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ"
@@ -55,8 +55,8 @@
"ഫോട്ടോയും സന്ദേശവും ലൊക്കേഷനും ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ"
"അറ്റാച്ച്മെന്റുകൾ ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ"
"ഇൻകമിംഗ് ഔദ്യോഗിക കോൾ"
- "ഇൻകമിംഗ് വൈഫൈ കോൾ"
- "ഇൻകമിംഗ് വൈഫൈ ഔദ്യോഗിക കോൾ"
+ "ഇൻകമിംഗ് വൈഫൈ കോൾ"
+ "ഇൻകമിംഗ് വൈഫൈ ഔദ്യോഗിക കോൾ"
"സംശയാസ്പദമായ ഇൻകമിംഗ് സ്പാം കോൾ"
"ഇൻകമിംഗ് വീഡിയോ അഭ്യർത്ഥന"
"സേവനമില്ല"
@@ -73,7 +73,7 @@
"വീഡിയോ കോൾ അറ്റൻഡ് ചെയ്യുക"
"ഒരു കോൾ വിളിക്കാൻ, ആദ്യം ഫ്ലൈറ്റ് മോഡ് ഓഫുചെയ്യുക."
"നെറ്റ്വർക്കിൽ രജിസ്റ്റർ ചെയ്തിട്ടില്ല."
- "സെല്ലുലാർ നെറ്റ്വർക്ക് ലഭ്യമല്ല."
+ "മൊബൈൽ നെറ്റ്വർക്ക് ലഭ്യമല്ല."
"ഒരു കോൾ ചെയ്യുന്നതിന്, സാധുതയുള്ള നമ്പർ നൽകുക."
"കോൾ ചെയ്യാനായില്ല."
"MMI സീക്വൻസ് ആരംഭിക്കുന്നു…"
@@ -134,8 +134,8 @@
"കോള് അവസാനിപ്പിക്കൂ"
"കോൺഫറൻസ് കോൾ"
"കോളിലാണ്"
- "സെല്ലുലാർ ഡാറ്റ ഉപയോഗിച്ച് കോൾ തുടരുന്നു…"
- "Wi-Fi നെറ്റ്വർക്കിലേക്ക് മാറാനായില്ല"
- "സെല്ലുലാർ നെറ്റ്വർക്കിൽത്തന്നെ വീഡിയോ കോൾ തുടരും. സാധാരണ ഡാറ്റ നിരക്കുകൾ ബാധകമാകാം."
+ "മൊബൈൽ ഡാറ്റ ഉപയോഗിച്ച് കോൾ തുടരുന്നു…"
+ "വൈഫൈ നെറ്റ്വർക്കിലേക്ക് മാറാനായില്ല"
+ "മൊബൈൽ നെറ്റ്വർക്കിൽത്തന്നെ വീഡിയോ കോൾ തുടരും. സാധാരണ ഡാറ്റ നിരക്കുകൾ ബാധകമാകാം."
"ഇത് വീണ്ടും കാണിക്കരുത്"
diff --git a/java/com/android/incallui/res/values-mn/strings.xml b/java/com/android/incallui/res/values-mn/strings.xml
index 0e269170bdac0fb6f1f1161c9e4a851fad7bc364..7757af9ac823a43fc695b402b5b82eaf422b09a5 100644
--- a/java/com/android/incallui/res/values-mn/strings.xml
+++ b/java/com/android/incallui/res/values-mn/strings.xml
@@ -33,8 +33,8 @@
"%s-н аваагүй дуудлага"
"Хийгдэж буй дуудлага"
"Залгаж буй албаны дуудлага"
- "Ярьж буй Wi-Fi дуудлага"
- "Залгаж буй Wi-Fi албаны дуудлага"
+ "Холбогдсон Wi-Fi дуудлага"
+ "Холбогдсон Wi-Fi албаны дуудлага"
"Хүлээлгэнд"
"Ирж буй дуудлага"
"Зураг бүхий орж ирсэн дуудлага"
@@ -55,8 +55,8 @@
"Зураг, зурвас, байршилтай орж ирсэн чухал дуудлага"
"Хавсралт бүхий орж ирсэн чухал дуудлага"
"Ирж буй албаны дуудлага"
- "Орж ирсэн Wi-Fi дуудлага"
- "Ирж буй Wi-Fi албаны дуудлага"
+ "Ирж буй Wi-Fi дуудлага"
+ "Ирж буй Wi-Fi албаны дуудлага"
"Орж ирсэн сэжигтэй спам дуудлага"
"Ирж буй видео хүсэлт"
"Үйлчилгээ байхгүй"
@@ -73,7 +73,7 @@
"Видео дуудлага авах"
"Дуудлага хийхийн тулд юуны өмнө Нислэгийн төлвийг идэвхгүйжүүлнэ үү."
"Сүлжээнд бүртгэгдээгүй."
- "Үүрэн сүлжээ байхгүй."
+ "Мобайл сүлжээ байхгүй."
"Дуудлага хийхийн тулд хүчин төгөлдөр дугаар оруулна уу."
"Дуудлага хийх боломжгүй байна."
"MMI дарааллыг эхлүүлж байна…"
@@ -134,8 +134,8 @@
"Дуудлагыг таслах"
"Хурлын дуудлага"
"Ярьж байна"
- "Үүрэн дата ашиглан дуудлагыг үргэлжлүүлж байна..."
- "Wi-Fi сүлжээ рүү сэлгэж чадсангүй"
- "Видео дуудлага үүрэн сүлжээнд үлдэнэ. Стандарт датаны төлбөр тооцогдож магадгүй."
+ "Мобайл дата ашиглан дуудлагыг үргэлжлүүлж байна…"
+ "Wi-Fi сүлжээ рүү сэлгэж чадсангүй"
+ "Видео дуудлага мобайл сүлжээнд үлдэнэ. Стандарт датаны төлбөр тооцогдож магадгүй."
"Үүнийг дахин бүү үзүүл"
diff --git a/java/com/android/incallui/res/values-mr/strings.xml b/java/com/android/incallui/res/values-mr/strings.xml
index c56c6101245cafa943da4fdf82597e31bfac9c91..e422897b02c888a86ee4233855d5e05ddd7dc0bf 100644
--- a/java/com/android/incallui/res/values-mr/strings.xml
+++ b/java/com/android/incallui/res/values-mr/strings.xml
@@ -33,8 +33,8 @@
"%s कडील सुटलेला कॉल"
"सुरू असलेला कॉल"
"सुरु असलेला कार्य कॉल"
- "सुरु असलेला वाय-फाय कॉल"
- "सुरु असलेला वाय-फाय कार्य कॉल"
+ "सुरु असलेला वाय-फाय कॉल"
+ "सुरु असलेला वाय-फाय कार्य कॉल"
"होल्ड वर"
"येणारा कॉल"
"फोटोसह येणारा कॉल"
@@ -55,8 +55,8 @@
"फोटो, संदेश आणि स्थानासह महत्त्वाचा येणारा कॉल"
"संलग्नकांसह महत्त्वाचा येणारा कॉल"
"येणारा कार्य कॉल"
- "येणारा वाय-फाय कॉल"
- "येणारा वाय-फाय कार्य कॉल"
+ "येणारा वाय-फाय कॉल"
+ "येणारा वाय-फाय कार्य कॉल"
"येणारा संशयित स्पॅम कॉल"
"येणारी व्हिडिओ विनंती"
"सेवा नाही"
@@ -73,7 +73,7 @@
"व्हिडिओ कॉल घ्या"
"कॉल करण्यासाठी, प्रथम विमान मोड बंद करा."
"नेटवर्कवर नोंदणीकृत नाही."
- "सेल्युलर नेटवर्क उपलब्ध नाही."
+ "मोबाइल नेटवर्क उपलब्ध नाही."
"कॉल करण्यासाठी, एक वैध नंबर प्रविष्ट करा."
"कॉल करू शकत नाही."
"MMI क्रम प्रारंभ करीत आहे..."
@@ -134,8 +134,8 @@
"कॉल समाप्त करा"
"परिषद कॉल"
"कॉल मध्ये"
- "मोबाइल डेटा वापरून कॉल सुरू ठेवत आहेत…"
- "वाय-फाय नेटवर्कवर स्विच करणे शक्य झाले नाही"
- "व्हिडिओ कॉल मोबाईल नेटवर्कवर असेल. मानक डेटा शुल्क लागू होऊ शकतात."
+ "मोबाइल डेटा वापरून कॉल करणे सुरु ठेवत आहे..."
+ "वाय-फाय नेटवर्कवर स्विच करणे शक्य झाले नाही"
+ "व्हिडिओ कॉल मोबाइल नेटवर्कवर असेल. मानक डेटा शुल्क लागू शकतात."
"हे पुन्हा दर्शवू नका"
diff --git a/java/com/android/incallui/res/values-ms/strings.xml b/java/com/android/incallui/res/values-ms/strings.xml
index a5be5934d617763210d9e3e1372ca6719446e589..7a5900adbac5e69eaa4d55603fc6321795817a1d 100644
--- a/java/com/android/incallui/res/values-ms/strings.xml
+++ b/java/com/android/incallui/res/values-ms/strings.xml
@@ -33,8 +33,8 @@
"Panggilan tidak dijawab daripada %s"
"Panggilan sedang berjalan"
"Panggilan sedang berlangsung daripada tempat kerja"
- "Panggilan Wi-Fi sedang berlangsung"
- "Panggian Wi-Fi sedang berlangsung daripada tempat kerja"
+ "Panggilan Wi-Fi sedang berlangsung"
+ "Panggilan Wi-Fi daripada tempat kerja sedang berlangsung"
"Ditunda"
"Panggilan masuk"
"Panggilan masuk dengan foto"
@@ -55,15 +55,15 @@
"Panggilan masuk penting dengan foto, mesej dan lokasi"
"Panggilan masuk penting dengan lampiran"
"Panggilan masuk daripada tempat kerja"
- "Panggilan Wi-Fi masuk"
- "Panggilan masuk melalui Wi-Fi daripada tempat kerja"
+ "Panggilan masuk Wi-Fi"
+ "Panggilan masuk Wi-Fi daripada tempat kerja"
"Disyaki panggilan spam masuk"
"Permintaan video masuk"
"Tiada perkhidmatan"
"Rangkaian pilihan (%s) tidak tersedia"
"Jawapan"
"Letakkan gagang"
- "Video dalam strim"
+ "Video"
"Suara"
"Terima"
"Tolak"
@@ -73,7 +73,7 @@
"Jawab Panggilan Video"
"Untuk membuat panggilan, matikan mod Pesawat terlebih dahulu."
"Tidak didaftarkan pada rangkaian."
- "Rangkaian selular tidak tersedia."
+ "Rangkaian mudah alih tidak tersedia."
"Untuk membuat panggilan, masukkan nombor yang sah."
"Tidak dapat memanggil."
"Memulakan jujukan MMI..."
@@ -134,8 +134,8 @@
"Tamatkan panggilan"
"Panggilan sidang"
"Dalam panggilan"
- "Meneruskan panggilan menggunakan data selular…"
- "Tidak dapat beralih ke rangkaian Wi-Fi"
- "Panggilan video akan menggunakan rangkaian selular. Caj data standard boleh dikenakan."
+ "Meneruskan panggilan menggunakan data mudah alih…"
+ "Tidak dapat beralih ke rangkaian Wi-Fi"
+ "Panggilan video akan menggunakan rangkaian mudah alih. Caj data standard boleh dikenakan."
"Jangan tunjukkan ini lagi"
diff --git a/java/com/android/incallui/res/values-my/strings.xml b/java/com/android/incallui/res/values-my/strings.xml
index 5cca498743c40485314cb10c3c5eb9eaf6719ea6..5513b79751eacc7e3a2251228f10d391a82be5ca 100644
--- a/java/com/android/incallui/res/values-my/strings.xml
+++ b/java/com/android/incallui/res/values-my/strings.xml
@@ -33,8 +33,8 @@
"%s မှလွတ်သွားသော ခေါ်ဆိုမှု"
"ဆက်သွားနေသော ဖုန်းခေါ်မှု"
"ခေါ်နေဆဲ အလုပ်မှ ခေါ်ဆိုမှု"
- "ခေါ်နေဆဲ ဝိုင်ဖိုင်ခေါ်ဆိုမှု"
- "ခေါ်နေဆဲ Wi-Fi အလုပ်မှ ခေါ်ဆိုမှု"
+ "လက်ရှိ Wi-Fi ဖုန်းခေါ်ဆိုမှု"
+ "လက်ရှိ Wi-Fi အလုပ်ဖုန်းခေါ်ဆိုမှု"
"ခဏ ကိုင်ထားစဉ်"
"အဝင်ခေါ်ဆိုမှု"
"ဓာတ်ပုံဖြင့် အဝင်ခေါ်ဆိုမှု"
@@ -55,8 +55,8 @@
"ဓာတ်ပုံ၊မက်ဆေ့ဂျ်၊တည်နေရာဖြင့် အရေးကြီးခေါ်ဆိုမှု"
"ပူးတွဲပါဖိုင်များဖြင့် အရေးကြီးသော အဝင်ခေါ်ဆိုမှု"
"အဝင် ခေါ်ဆိုမှု"
- "ဝင်လာသော ဝိုင်ဖိုင်ခေါ်ဆိုမှု"
- "Wi-Fi အလုပ်မှ အဝင် ခေါ်ဆိုမှု"
+ "အဝင် Wi‑Fi ဖုန်းခေါ်ဆိုမှု"
+ "အဝင် Wi‑Fi အလုပ်ဖုန်းခေါ်ဆိုမှု"
"ခေါ်နေသော မသင်္ကာဖွယ်ရာ စပမ်းခေါ်ဆိုမှု"
"အသံ ခေါ်ဆိုမှုအဖြစ် တောင်းဆိုမှု"
"ဝန်ဆောင်မှု မရှိပါ"
@@ -73,7 +73,7 @@
"ဗီဒီယိုခေါ်ဆိုမှုလွှဲယူပါ"
"ဖုန်းခေါ်ဆိုမှုပြုရန်, လေယာဥ်ပျံပေါ်အသုံးပြုသောစနစ်ကို ပိတ်ပါ"
"ကွန်ယက်ပေါ်မှာ မှတ်ပုံတင်မှု မပြုလုပ်ထားပါ"
- "ဆဲလ်လူလာ ကွန်ရက် မရှိပါ။"
+ "မိုဘိုင်းကွန်ရက် မရနိုင်ပါ"
"ဖုန်းခေါ်ရန်အတွက်၊ သင့်လျော်သည့်နံပါတ် ရိုက်ထည့်ပါ။"
"မခေါ်ဆိုနိုင်ပါ။"
"MMI အမှတ်စဉ်ကို စတင်နေပါသည်…"
@@ -134,8 +134,8 @@
"ခေါ်ဆိုမှုအပြီးသတ်ရန်"
"အစည်းအဝေးခေါ်ဆိုမှု"
"ဖုန်းပြောနေသည်"
- "ဆယ်လူလာဒေတာသုံးပြီး ဆက်လက်ခေါ်ဆိုနေသည်…"
- "Wi-Fi ကွန်ရက်သို့ မပြောင်းနိုင်ပါ"
- "ဗီဒီယိုခေါ်ဆိုမှုသည် ဆယ်လူလာကွန်ရက်တွင် ဆက်ရှိနေပါမည်။ ပုံမှန်ဒေတာသုံးစွဲခများ ကျသင့်နိုင်ပါသည်။"
+ "မိုဘိုင်းဒေတာသုံးပြီး ဆက်လက်ခေါ်ဆိုနေသည်…"
+ "Wi‑Fi ကွန်ရက်သို့ မပြောင်းနိုင်ပါ"
+ "ဗီဒီယိုခေါ်ဆိုမှုသည် မိုဘိုင်းကွန်ရက်တွင် ဆက်ရှိနေပါမည်။ ပုံမှန်ဒေတာသုံးစွဲခများ ကျသင့်နိုင်ပါသည်။"
"ဤသည်ကို ထပ်မပြပါနှင့်"
diff --git a/java/com/android/incallui/res/values-nb/strings.xml b/java/com/android/incallui/res/values-nb/strings.xml
index d0883a2cc84af5f86763af6c9b385f72bde70ef9..4e8d796682ddb893c56a401ef3b358b39decabd2 100644
--- a/java/com/android/incallui/res/values-nb/strings.xml
+++ b/java/com/android/incallui/res/values-nb/strings.xml
@@ -33,8 +33,8 @@
"Tapt anrop fra %s"
"Pågående samtale"
"Pågående jobbanrop"
- "Pågående Wi-Fi-anrop"
- "Pågående jobbanrop via Wi-Fi"
+ "Pågående Wi-Fi-samtale"
+ "Pågående jobbsamtale via Wi-Fi"
"Parkert"
"Innkommende samtale"
"Innkommende anrop med bilde"
@@ -55,8 +55,8 @@
"Viktig anrop med bilde, melding og posisjon"
"Viktig innkommende anrop med vedlegg"
"Innkommende jobbanrop"
- "Innkommende anrop via Wi-Fi"
- "Innkommende jobbanrop via Wi-Fi"
+ "Innkommende anrop via Wi-Fi"
+ "Innkommende jobbanrop via Wi-Fi"
"Innkommende anrop fra en mulig useriøs oppringer"
"Innkommende videoforespørsel"
"Ingen tjeneste"
@@ -73,7 +73,7 @@
"Svar på videoanropet"
"For å ringe, slå av flymodus først."
"Ikke registrert på nettverket."
- "Mobilnettverket er ikke tilgjengelig."
+ "Mobilnettverket er ikke tilgjengelig."
"Skriv inn et gyldig nummer for å plassere en samtale."
"Kan ikke ringe."
"Begynner MMI-sekvens…"
@@ -134,8 +134,8 @@
"Avslutt samtalen"
"Telefonmøte"
"Samtale pågår"
- "Fortsetter samtalen via mobildata …"
- "Kan ikke bytte til Wi-Fi-nettverk"
- "Videosamtalen blir værende på mobilnettet. Standard datakostnader kan påløpe."
+ "Fortsetter samtalen via mobildata …"
+ "Kunne ikke bytte til Wi-Fi-nettverk"
+ "Videosamtalen blir værende på mobilnettverket. Standard datakostnader kan påløpe."
"Ikke vis dette igjen"
diff --git a/java/com/android/incallui/res/values-ne/strings.xml b/java/com/android/incallui/res/values-ne/strings.xml
index b5894797cbcfc9323ae8548fcfc34107f158260c..b19c2ae8011a615167a6de3fa20f4ed7ca2956fb 100644
--- a/java/com/android/incallui/res/values-ne/strings.xml
+++ b/java/com/android/incallui/res/values-ne/strings.xml
@@ -33,8 +33,8 @@
"%s बाट आएको छुटेको कल"
"चलिरहेको कल"
"चालू रहेको कार्यको कल"
- "चालु रहेको WI-Fi कल"
- "चालू रहेको Wi-Fi कार्यको कल"
+ "जारी रहेको WI-Fi कल"
+ "Wi-Fi मार्फत जारी रहेको कार्यालयको कल"
"होल्डमा"
"आगमन कल"
"तस्बिरसहितको आगमन कल"
@@ -55,8 +55,8 @@
"तस्बिर, सन्देश र स्थानसहितको महत्त्वपूर्ण आगमन कल"
"समावेश गरिएको वस्तुसहितको महत्त्वपूर्ण आगमन कल"
"आगमन कार्यको कल"
- "आगमन Wi-Fi कल"
- "आगमन Wi-Fi कार्यको कल"
+ "Wi-Fi मार्फत आगमन कल"
+ "Wi-Fi मार्फत कार्यालयबाट आएको कल"
"शंकास्पद आगमन स्प्याम कल"
"आगमन भिडियो अनुरोध"
"सेवा छैन"
@@ -73,7 +73,7 @@
"भिडियो कल लिनुहोस्"
"कल राख्नका लागि, पहिले हवाइजहाज मोड बन्द गर्नुहोस्।"
"नेटवर्कमा दर्ता भएको छैन।"
- "सेलुलर सञ्जाल उपलब्ध छैन।"
+ "मोबाइल नेटवर्क उपलब्ध छैन।"
"एक कल गर्नको लागि, एक वैध नम्बर प्रविष्ट गर्नुहोस्।"
"कल गर्न सक्दैन।"
"MMI अनुक्रम सुरु गर्दै..."
@@ -134,8 +134,8 @@
"कल अन्त्य गर्नुहोस्"
"सम्मेलन कल"
"कलमा"
- "सेलुलर डेटा प्रयोग गरी कललाई निरन्तरता दिइँदै…"
- "Wi-Fi नेटवर्कमा स्विच गर्न सकिएन"
- "भिडियो कल सेलुलर नेटवर्कमा रहने छ। मानक डेटा शुल्क लाग्न सक्छ।"
+ "मोबाइल डेटा प्रयोग गरी कललाई निरन्तरता दिइँदै…"
+ "Wi-Fi नेटवर्कमा स्विच गर्न सकिएन"
+ "भिडियो कल मोबाइल नेटवर्कमा रहने छ। मानक डेटा शुल्क लाग्न सक्छ।"
"यसलाई फेरि नदेखाउनुहोस्"
diff --git a/java/com/android/incallui/res/values-nl/strings.xml b/java/com/android/incallui/res/values-nl/strings.xml
index 930acdc86725ecf6d92e14e55a634fdf37feda8c..73508818e879d7868a764bf28be57f3a7e28b638 100644
--- a/java/com/android/incallui/res/values-nl/strings.xml
+++ b/java/com/android/incallui/res/values-nl/strings.xml
@@ -33,8 +33,8 @@
"Gemiste oproep van %s"
"Actieve oproep"
"Actieve zakelijke oproep"
- "Actieve wifi-oproep"
- "Actieve zakelijke oproep via wifi"
+ "Actieve wifi-oproep"
+ "Actieve zakelijke oproep via wifi"
"In de wacht"
"Inkomende oproep"
"Inkomende oproep met foto"
@@ -55,15 +55,15 @@
"Belangrijke oproep met foto, bericht en locatie"
"Belangrijke inkomende oproep met bijlagen"
"Inkomende zakelijke oproep"
- "Inkomende wifi-oproep"
- "Inkomende zakelijke oproep via wifi"
+ "Inkomende wifi-oproep"
+ "Inkomende zakelijke oproep via wifi"
"Inkomende vermoedelijke spamoproep"
"Binnenkomend videoverzoek"
"Geen service"
"Geselecteerd netwerk (%s) niet beschikbaar"
"Antwoord"
"Ophangen"
- "InStream-video"
+ "Video"
"Spraak"
"Accepteren"
"Weigeren"
@@ -73,7 +73,7 @@
"Videogesprek beantwoorden"
"Als je wilt bellen, moet je eerst de Vliegtuigmodus uitschakelen."
"Niet geregistreerd op netwerk."
- "Mobiel netwerk niet beschikbaar."
+ "Mobiel netwerk niet beschikbaar."
"Als je wilt bellen, moet je een geldig nummer invoeren."
"Kan niet bellen."
"MMI-reeks starten..."
@@ -134,8 +134,8 @@
"Oproep beëindigen"
"Telefonische vergadering"
"In gesprek"
- "Gesprek voortzetten via mobiele data…"
- "Overschakelen naar wifi-netwerk mislukt"
- "Videogesprek loopt via mobiel netwerk. Er kunnen standaard datakosten in rekening worden gebracht."
+ "Gesprek voortzetten via mobiele data…"
+ "Overschakelen naar wifi-netwerk mislukt"
+ "Videogesprek loopt via mobiel netwerk. Er kunnen standaard datakosten in rekening worden gebracht."
"Dit niet meer weergeven"
diff --git a/java/com/android/incallui/res/values-no/strings.xml b/java/com/android/incallui/res/values-no/strings.xml
index d0883a2cc84af5f86763af6c9b385f72bde70ef9..4e8d796682ddb893c56a401ef3b358b39decabd2 100644
--- a/java/com/android/incallui/res/values-no/strings.xml
+++ b/java/com/android/incallui/res/values-no/strings.xml
@@ -33,8 +33,8 @@
"Tapt anrop fra %s"
"Pågående samtale"
"Pågående jobbanrop"
- "Pågående Wi-Fi-anrop"
- "Pågående jobbanrop via Wi-Fi"
+ "Pågående Wi-Fi-samtale"
+ "Pågående jobbsamtale via Wi-Fi"
"Parkert"
"Innkommende samtale"
"Innkommende anrop med bilde"
@@ -55,8 +55,8 @@
"Viktig anrop med bilde, melding og posisjon"
"Viktig innkommende anrop med vedlegg"
"Innkommende jobbanrop"
- "Innkommende anrop via Wi-Fi"
- "Innkommende jobbanrop via Wi-Fi"
+ "Innkommende anrop via Wi-Fi"
+ "Innkommende jobbanrop via Wi-Fi"
"Innkommende anrop fra en mulig useriøs oppringer"
"Innkommende videoforespørsel"
"Ingen tjeneste"
@@ -73,7 +73,7 @@
"Svar på videoanropet"
"For å ringe, slå av flymodus først."
"Ikke registrert på nettverket."
- "Mobilnettverket er ikke tilgjengelig."
+ "Mobilnettverket er ikke tilgjengelig."
"Skriv inn et gyldig nummer for å plassere en samtale."
"Kan ikke ringe."
"Begynner MMI-sekvens…"
@@ -134,8 +134,8 @@
"Avslutt samtalen"
"Telefonmøte"
"Samtale pågår"
- "Fortsetter samtalen via mobildata …"
- "Kan ikke bytte til Wi-Fi-nettverk"
- "Videosamtalen blir værende på mobilnettet. Standard datakostnader kan påløpe."
+ "Fortsetter samtalen via mobildata …"
+ "Kunne ikke bytte til Wi-Fi-nettverk"
+ "Videosamtalen blir værende på mobilnettverket. Standard datakostnader kan påløpe."
"Ikke vis dette igjen"
diff --git a/java/com/android/incallui/res/values-pa/strings.xml b/java/com/android/incallui/res/values-pa/strings.xml
index 22cd7da3b22cf86fbb9ee17d3dfd6dd67a0c7e4f..b21cbd3a6ab9969bc84faa85a14e64d1f4e16a99 100644
--- a/java/com/android/incallui/res/values-pa/strings.xml
+++ b/java/com/android/incallui/res/values-pa/strings.xml
@@ -33,8 +33,8 @@
"%s ਤੋਂ ਖੁੰਝੀ ਹੋਈ ਕਾਲ"
"ਜਾਰੀ ਕਾਲ"
"ਕੰਮ ਸਬੰਧਿਤ ਜਾਰੀ ਕਾਲ"
- "ਜਾਰੀ Wi-Fi ਕਾਲ"
- "ਕੰਮ ਸਬੰਧਿਤ ਜਾਰੀ Wi-Fi ਕਾਲ"
+ "ਜਾਰੀ Wi‑Fi ਕਾਲ"
+ "ਕੰਮ ਸਬੰਧੀ ਜਾਰੀ Wi‑Fi ਕਾਲ"
"ਹੋਲਡ ਤੇ"
"ਇਨਕਮਿੰਗ ਕਾਲ"
"ਫ਼ੋਟੋ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ"
@@ -55,8 +55,8 @@
"ਫ਼ੋਟੋ, ਸੁਨੇਹੇ ਅਤੇ ਟਿਕਾਣੇ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ"
"ਅਟੈਚਮੈਂਟਾਂ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ"
"ਕੰਮ ਸਬੰਧਿਤ ਆ ਰਹੀ ਕਾਲ"
- "ਇਨਕਮਿੰਗ Wi-Fi ਕਾਲ"
- "ਕੰਮ ਸਬੰਧਿਤ ਆ ਰਹੀ Wi-Fi ਕਾਲ"
+ "ਆ ਰਹੀ Wi‑Fi ਕਾਲ"
+ "ਕੰਮ ਸਬੰਧੀ ਆ ਰਹੀ Wi‑Fi ਕਾਲ"
"ਸ਼ੱਕੀ ਸਪੈਮ ਕਾਲ ਆ ਰਹੀ ਹੈ"
"ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਬੇਨਤੀ"
"ਕੋਈ ਸੇਵਾ ਨਹੀਂ"
@@ -73,7 +73,7 @@
"ਵੀਡੀਓ ਕਾਲ ਲਓ"
"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"
"ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਨਹੀਂ ਕੀਤਾ।"
- "ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ"
+ "ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।"
"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਨੰਬਰ ਦਰਜ ਕਰੋ।"
"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ।"
"MMI ਕੜੀ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"
@@ -134,8 +134,8 @@
"ਕਾਲ ਸਮਾਪਤ ਕਰੋ"
"ਕਾਨਫਰੰਸ ਕਾਲ"
"ਕਾਲ ਵਿੱਚ"
- "ਸੈਲਿਊਲਰ ਡੈਟੇ ਦੀ ਵਰਤੋਂ ਨਾਲ ਕਾਲ ਜਾਰੀ ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ…"
- "Wi-Fi ਨੈੱਟਵਰਕ \'ਤੇ ਬਦਲੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
- "ਵੀਡੀਓ ਕਾਲ ਸੈਲਿਊਲਰ ਨੈੱਟਵਰਕ \'ਤੇ ਰਹੇਗੀ। ਸਧਾਰਨ ਡੈਟਾ ਖਰਚੇ ਲਾਗੂ ਹੋ ਸਕਦੇ ਹਨ।"
+ "ਮੋਬਾਈਲ ਡੈਟੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਾਲ ਜਾਰੀ ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ…"
+ "Wi‑Fi ਨੈੱਟਵਰਕ \'ਤੇ ਬਦਲੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
+ "ਵੀਡੀਓ ਕਾਲ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ \'ਤੇ ਜਾਰੀ ਰਹੇਗੀ। ਮਿਆਰੀ ਡੈਟਾ ਖਰਚੇ ਲਾਗੂ ਹੋ ਸਕਦੇ ਹਨ।"
"ਇਸ ਨੂੰ ਦੁਬਾਰਾ ਨਾ ਵਿਖਾਓ"
diff --git a/java/com/android/incallui/res/values-pl/strings.xml b/java/com/android/incallui/res/values-pl/strings.xml
index 77c83399f0b569de6d62160578b68542e6de493b..451c8ba73c456998dfe67d4e4132861c0a11357b 100644
--- a/java/com/android/incallui/res/values-pl/strings.xml
+++ b/java/com/android/incallui/res/values-pl/strings.xml
@@ -33,8 +33,8 @@
"Nieodebrane połączenie od: %s"
"Trwa połączenie"
"Trwa połączenie służbowe"
- "Trwające połączenie przez Wi-Fi"
- "Trwa połączenie służbowe przez Wi-Fi"
+ "Trwające połączenie przez Wi-Fi"
+ "Trwa połączenie służbowe przez Wi-Fi"
"Oczekujące"
"Połączenie"
"Połączenie przychodzące ze zdjęciem"
@@ -55,8 +55,8 @@
"Ważne połączenie przychodzące z załącznikami"
"Ważne połączenie przychodzące z załącznikami"
"Przychodzące połączenie służbowe"
- "Przychodzące połączenie przez Wi-Fi"
- "Przychodzące połączenie służbowe przez Wi-Fi"
+ "Przychodzące połączenie przez Wi-Fi"
+ "Przychodzące połączenie służbowe przez Wi-Fi"
"Przychodzące połączenie podejrzanie o spam"
"Przychodzące żądanie wideo"
"Brak usługi"
@@ -73,7 +73,7 @@
"Odbierz rozmowę wideo"
"Aby rozpocząć połączenie, wyłącz najpierw tryb samolotowy"
"Nie zarejestrowano w sieci"
- "Sieć komórkowa jest niedostępna."
+ "Sieć komórkowa jest niedostępna."
"Aby zadzwonić, wybierz prawidłowy numer."
"Nie można dzwonić."
"Rozpoczynanie sekwencji MMI..."
@@ -134,8 +134,8 @@
"Zakończ połączenie"
"Połączenie konferencyjne"
"W trakcie rozmowy"
- "Kontynuuję rozmowę przy użyciu transmisji danych komórkowych…"
- "Nie udało się przełączyć na sieć Wi-Fi"
- "Rozmowa wideo pozostanie w sieci komórkowej. Za transfer danych może zostać pobrana opłata."
+ "Kontynuuję rozmowę przy użyciu mobilnej transmisji danych…"
+ "Nie udało się przełączyć na sieć Wi-Fi"
+ "Rozmowa wideo będzie nadal prowadzona przez sieć komórkową. Za transfer danych może zostać pobrana opłata."
"Nie pokazuj ponownie tego komunikatu"
diff --git a/java/com/android/incallui/res/values-pt-rBR/strings.xml b/java/com/android/incallui/res/values-pt-rBR/strings.xml
index b0e46dfa3528ae795c14ff268c5036a8b2a024b1..f3c1b236736223abe6d31c7223878cc5e21940e1 100644
--- a/java/com/android/incallui/res/values-pt-rBR/strings.xml
+++ b/java/com/android/incallui/res/values-pt-rBR/strings.xml
@@ -33,8 +33,8 @@
"Chamada perdida de %s"
"Chamada em andamento"
"Chamada de trabalho em andamento"
- "Chamada Wi-Fi em andamento"
- "Chamada trabalho por Wi-Fi em andamento"
+ "Chamada por Wi-Fi em andamento"
+ "Chamada de trabalho por Wi-Fi em andamento"
"Em espera"
"Chamada recebida"
"Chamada recebida com foto"
@@ -55,8 +55,8 @@
"Chamada recebida importante com foto, mensagem e local"
"Chamada recebida importante com anexos"
"Chamada de trabalho recebida"
- "Chamada Wi-Fi recebida"
- "Chamada de trabalho recebida por Wi-Fi"
+ "Chamada recebida por Wi-Fi"
+ "Chamada de trabalho recebida por Wi-Fi"
"Chamada recebida suspeita (spam)"
"Recebendo solicitação de vídeo"
"Sem serviço"
@@ -73,7 +73,7 @@
"Atender à videochamada"
"Para fazer uma chamada, primeiro desative o modo avião."
"Não registrado na rede."
- "Rede celular não disponível."
+ "Rede móvel indisponível."
"Para realizar uma chamada, digite um número válido."
"Não é possível realizar chamadas."
"Iniciando sequência MMI…"
@@ -134,8 +134,8 @@
"Encerrar chamada"
"Teleconferência"
"Em chamada"
- "Continuando a chamada com dados da rede celular…"
- "Não foi possível alternar para a rede Wi-Fi"
- "A videochamada continuará via rede celular. Sujeito a cobranças por uso de dados."
+ "Continuando chamada por dados móveis…"
+ "Não foi possível alternar para a rede Wi-Fi"
+ "A videochamada continuará via rede móvel. O uso de dados está sujeito a cobranças padrão."
"Não exibir novamente"
diff --git a/java/com/android/incallui/res/values-pt-rPT/strings.xml b/java/com/android/incallui/res/values-pt-rPT/strings.xml
index b42b0e56cf11795ebd4c59de1813dd9fdfbfda37..1040432292c1716f7251c9943aef40b8df5777be 100644
--- a/java/com/android/incallui/res/values-pt-rPT/strings.xml
+++ b/java/com/android/incallui/res/values-pt-rPT/strings.xml
@@ -33,8 +33,8 @@
"Chamada não atendida de %s"
"Chamada em curso"
"Chamada de trabalho em curso"
- "Chamada Wi-Fi em curso"
- "Chamada de trabalho por Wi-Fi em curso"
+ "Chamada por Wi-Fi em curso"
+ "Chamada de trabalho por Wi-Fi em curso"
"Em espera"
"Chamada recebida"
"Chamada recebida com foto"
@@ -55,8 +55,8 @@
"."
"Chamada recebida importante com anexos"
"Chamada de trabalho recebida"
- "Chamada Wi-Fi recebida"
- "Chamada de trabalho recebida por Wi-Fi"
+ "Chamada por Wi-Fi recebida"
+ "Chamada de trabalho por Wi-Fi recebida"
"A receber chamada spam suspeita"
"Pedido de vídeo recebido"
"Nenhum serviço"
@@ -73,7 +73,7 @@
"Aceitar videochamada"
"Para efectuar uma chamada, desactive primeiro o modo para Avião."
"Sem registo na rede."
- "Rede móvel não disponível."
+ "Rede móvel não disponível."
"Para telefonar, introduza um número válido."
"Não é possível telefonar."
"A iniciar sequência de MMI..."
@@ -134,8 +134,8 @@
"Terminar chamada"
"Chamada de conferência"
"Numa chamada"
- "A continuar a chamada com dados móveis…"
- "Não foi possível mudar para a rede Wi-Fi"
- "As videochamadas continuarão a ser efetuadas através de rede móvel. Poderão ser aplicados custos de dados."
+ "A continuar a chamada com dados móveis…"
+ "Não foi possível mudar para a rede Wi-Fi."
+ "As videochamadas irão continuar a ser efetuadas através da rede móvel. Poderão ser aplicados custos de dados padrão."
"Não voltar a mostrar este aviso"
diff --git a/java/com/android/incallui/res/values-pt/strings.xml b/java/com/android/incallui/res/values-pt/strings.xml
index b0e46dfa3528ae795c14ff268c5036a8b2a024b1..f3c1b236736223abe6d31c7223878cc5e21940e1 100644
--- a/java/com/android/incallui/res/values-pt/strings.xml
+++ b/java/com/android/incallui/res/values-pt/strings.xml
@@ -33,8 +33,8 @@
"Chamada perdida de %s"
"Chamada em andamento"
"Chamada de trabalho em andamento"
- "Chamada Wi-Fi em andamento"
- "Chamada trabalho por Wi-Fi em andamento"
+ "Chamada por Wi-Fi em andamento"
+ "Chamada de trabalho por Wi-Fi em andamento"
"Em espera"
"Chamada recebida"
"Chamada recebida com foto"
@@ -55,8 +55,8 @@
"Chamada recebida importante com foto, mensagem e local"
"Chamada recebida importante com anexos"
"Chamada de trabalho recebida"
- "Chamada Wi-Fi recebida"
- "Chamada de trabalho recebida por Wi-Fi"
+ "Chamada recebida por Wi-Fi"
+ "Chamada de trabalho recebida por Wi-Fi"
"Chamada recebida suspeita (spam)"
"Recebendo solicitação de vídeo"
"Sem serviço"
@@ -73,7 +73,7 @@
"Atender à videochamada"
"Para fazer uma chamada, primeiro desative o modo avião."
"Não registrado na rede."
- "Rede celular não disponível."
+ "Rede móvel indisponível."
"Para realizar uma chamada, digite um número válido."
"Não é possível realizar chamadas."
"Iniciando sequência MMI…"
@@ -134,8 +134,8 @@
"Encerrar chamada"
"Teleconferência"
"Em chamada"
- "Continuando a chamada com dados da rede celular…"
- "Não foi possível alternar para a rede Wi-Fi"
- "A videochamada continuará via rede celular. Sujeito a cobranças por uso de dados."
+ "Continuando chamada por dados móveis…"
+ "Não foi possível alternar para a rede Wi-Fi"
+ "A videochamada continuará via rede móvel. O uso de dados está sujeito a cobranças padrão."
"Não exibir novamente"
diff --git a/java/com/android/incallui/res/values-ro/strings.xml b/java/com/android/incallui/res/values-ro/strings.xml
index db8be10e2654585bae2f1f7f304c0d8ede06730e..b78be2e6a2196d877c192fc4b3c68e517e7e354b 100644
--- a/java/com/android/incallui/res/values-ro/strings.xml
+++ b/java/com/android/incallui/res/values-ro/strings.xml
@@ -33,8 +33,8 @@
"Apel nepreluat de la %s"
"Apel în desfășurare"
"Apel de serviciu în desfășurare"
- "Apel Wi-Fi în desfășurare"
- "Apel de serviciu prin Wi-Fi în desfășurare"
+ "Apel Wi-Fi în desfășurare"
+ "Apel de serviciu prin Wi-Fi în desfășurare"
"În așteptare"
"Apel de intrare"
"Apel primit cu fotografie"
@@ -55,8 +55,8 @@
"Apel primit important cu poză, mesaj și locație"
"Apel primit important cu atașamente"
"Apel de serviciu primit"
- "Apel prin Wi-Fi primit"
- "Apel de serviciu prin Wi-Fi primit"
+ "Apel primit prin Wi-Fi"
+ "Apel de serviciu primit prin Wi-Fi"
"Un apel primit posibil spam"
"Solicitare de trecere la apel video"
"Fără serviciu"
@@ -73,7 +73,7 @@
"Preluați apelul video"
"Pentru a efectua un apel, mai întâi dezactivați modul Avion."
"Neînregistrat în rețea."
- "Rețeaua mobilă nu este disponibilă"
+ "Rețeaua mobilă nu este disponibilă."
"Pentru a apela, introduceți un număr valid."
"Nu se poate apela."
"Se pornește secvența MMI..."
@@ -134,8 +134,8 @@
"Încheiați apelul"
"Teleconferință"
"Apel în desfășurare"
- "Se continuă apelul folosind datele mobile…"
- "Nu s-a putut comuta la rețeaua Wi-Fi"
- "Apelul video rămâne în rețeaua mobilă. Se pot aplica tarife standard pentru date."
+ "Se continuă apelul folosind datele mobile…"
+ "Nu s-a putut comuta la rețeaua Wi-Fi"
+ "Apelul video continuă prin rețeaua mobilă. Se pot aplica tarife standard pentru date."
"Nu mai afișa acest mesaj"
diff --git a/java/com/android/incallui/res/values-ru/strings.xml b/java/com/android/incallui/res/values-ru/strings.xml
index 8fd924ec6ea468519fd834301e0563692f66b5f3..06276c601f551aa8e9890074bb1fe859db63d4aa 100644
--- a/java/com/android/incallui/res/values-ru/strings.xml
+++ b/java/com/android/incallui/res/values-ru/strings.xml
@@ -33,8 +33,8 @@
"Пропущенные вызовы от абонента %s"
"Текущий вызов"
"Текущий звонок (работа)"
- "Текущий Wi-Fi-звонок"
- "Текущий Wi-Fi-звонок (работа)"
+ "Текущий вызов по Wi-Fi"
+ "Текущий вызов по Wi-Fi (работа)"
"Ждет ответа"
"Входящий вызов"
"Входящий вызов с фотографией"
@@ -55,8 +55,8 @@
"Важный вызов с фото, сообщением и геоданными"
"Важный входящий вызов с прикрепленными файлами"
"Входящий звонок (работа)"
- "Входящий Wi-Fi-звонок"
- "Входящий Wi-Fi-звонок (работа)"
+ "Входящий вызов по Wi-Fi"
+ "Входящий вызов по Wi-Fi (работа)"
"Входящий вызов: подозрение на спам"
"Входящий видеовызов"
"Сеть не найдена"
@@ -73,7 +73,7 @@
"Продолжить на этом устройстве"
"Перед тем как звонить, отключите режим полета."
"Нет регистрации в сети."
- "Мобильная сеть недоступна."
+ "Мобильная сеть недоступна."
"Недействительный номер."
"Не удалось позвонить."
"Запуск последовательности MMI..."
@@ -134,8 +134,8 @@
"Завершить вызов"
"Конференц-вызов"
"Вызов"
- "Переключение на мобильные данные…"
- "Не удалось подключиться к сети Wi-Fi"
- "Видеовызов будет выполняться по мобильной сети. Может взиматься стандартная плата за передачу данных."
+ "Переключение на мобильный Интернет…"
+ "Не удалось переключиться на сеть Wi-Fi"
+ "Видеовызов будет выполняться по мобильной сети. Может взиматься стандартная плата за передачу данных."
"Больше не показывать"
diff --git a/java/com/android/incallui/res/values-si/strings.xml b/java/com/android/incallui/res/values-si/strings.xml
index 989879ae0b99ebefe071fc774fd9350dca5b43a2..0497b78313c7cf9d71b3534de7f971ec0810829a 100644
--- a/java/com/android/incallui/res/values-si/strings.xml
+++ b/java/com/android/incallui/res/values-si/strings.xml
@@ -33,8 +33,8 @@
"%s වෙතින් මඟ හැරුණු ඇමතුම"
"කරගෙනය යන ඇමතුම"
"කරගෙන යන කාර්යාල ඇමතුම"
- "දැනට ක්රියාත්මක Wi-Fi ඇමතුම"
- "කරගෙන යන Wi-Fi කාර්යාල ඇමතුම"
+ "කරගෙන යන Wi-Fi ඇමතුම"
+ "කරගෙන යන Wi-Fi කාර්යාල ඇමතුම"
"රඳවා ගනිමින්"
"එන ඇමතුම"
"ඡායාරූපය සමග එන ඇමතුම"
@@ -55,8 +55,8 @@
"ඡායාරූපය, පණිවිඩය සහ ස්ථානය සමග වැදගත් එන ඇමතුම"
"ඇමුණුම් සමග වැදගත් එන ඇමතුම"
"පැමිණෙන කාර්යාල ඇමතුම"
- "පැමිණෙන Wi-Fi ඇමතුම"
- "පැමිණෙන Wi-Fi කාර්යාල ඇමතුම"
+ "එන Wi-Fi ඇමතුම"
+ "එන Wi-Fi කාර්යාල ඇමතුම"
"එන සැකසහිත අයාචිත තැපැල් ඇමතුම"
"පැමිණෙන වීඩියෝ ඉල්ලීම"
"සේවාව නැත"
@@ -73,7 +73,7 @@
"වීඩියෝ ඇමතුම ගන්න"
"ඇමතුමක් ගැනීමට, මුලින්ම ගුවන්යානා ආකාරය අක්රිය කරන්න."
"ජාලය මත ලියාපදිංචි වී නැත."
- "සෙලියුලර් ජාලය නොමැත"
+ "ජංගම ජාලය නොමැත."
"ඇමතුමක් ලබාගැනීමට, වලංගු අංකයක් ලබාගන්න."
"ඇමතුම් ගැනීමට නොහැක."
"MMI අනුපිළිවෙල ආරම්භ කරමින්…"
@@ -134,8 +134,8 @@
"ඇමතුම අවසන් කරන්න"
"සම්මන්ත්රණ ඇමතුම"
"ඇමතුමක"
- "සෙලියුලර් දත්ත භාවිතයෙන් ඇමතුම දිගටම කරගෙන යමින්…"
- "Wi-Fi ජාලය වෙත මාරු කිරීමට නොහැකි විය"
- "වීඩියෝ ඇමතුම සෙලියුලර් ජාලයේ පවතිනු ඇත. සම්මත දත්ත ගාස්තු අදාළ විය හැකිය."
+ "ජංගම දත්ත භාවිතයෙන් ඇමතුම දිගටම කරගෙන යමින්…"
+ "Wi-Fi ජාලය වෙත මාරු කිරීමට නොහැකි විය"
+ "වීඩියෝ ඇමතුම ජංගම ජාලයේ පවතිනු ඇත. සම්මත දත්ත ගාස්තු අදාළ විය හැකිය."
"නැවත මෙය නොපෙන්වන්න"
diff --git a/java/com/android/incallui/res/values-sk/strings.xml b/java/com/android/incallui/res/values-sk/strings.xml
index d09ba44d09a222e4d2d9fac7b465aba97d534535..b83cd949b82f4d13981e72082c9fc4ce1824ede6 100644
--- a/java/com/android/incallui/res/values-sk/strings.xml
+++ b/java/com/android/incallui/res/values-sk/strings.xml
@@ -33,8 +33,8 @@
"Zmeškaný hovor od volajúceho %s"
"Prebiehajúci hovor"
"Prebiehajúci pracovný hovor"
- "Odchádzajúci hovor prostredníctvom siete Wi-Fi"
- "Prebiehajúci pracovný hovor cez Wi-Fi"
+ "Prebiehajúci hovor cez Wi‑Fi"
+ "Prebiehajúci pracovný hovor cez Wi‑Fi"
"Podržaný hovor"
"Prichádzajúci hovor"
"Prichádzajúci hovor s fotkou"
@@ -55,8 +55,8 @@
"Dôležitý prich. hovor s fotkou, správou a polohou"
"Dôležitý prichádzajúci hovor s prílohami"
"Prichádzajúci pracovný hovor"
- "Prichádzajúci hovor prostredníctvom siete Wi-Fi"
- "Prichádzajúci pracovný hovor cez Wi-Fi"
+ "Prichádzajúci hovor cez Wi‑Fi"
+ "Prichádzajúci pracovný hovor cez Wi‑Fi"
"Prichádzajúci hovor, pri ktorom je podozrenie, že ide o spam"
"Prichádzajúca žiadosť o video"
"Žiadny signál"
@@ -73,7 +73,7 @@
"Prevziať videohovor"
"Ak chcete telefonovať, vypnite najprv režim v lietadle."
"Prihlásenie do siete nebolo úspešné."
- "Mobilná sieť nie je k dispozícii."
+ "Mobilná sieť nie je k dispozícii."
"Ak chcete volať, zadajte platné číslo"
"Hovor nie je možné uskutočniť"
"Prebieha spúšťanie sekvencie MMI..."
@@ -134,8 +134,8 @@
"Ukončiť hovor"
"Konferenčný hovor"
"Prebieha hovor"
- "Pokračuje sa v hovore pomocou mobilných dát…"
- "Nepodarilo sa prepnúť na sieť Wi-Fi"
- "Videohovor bude pokračovať v mobilnej sieti. Môžu sa účtovať štandardné poplatky za prenos dát."
+ "Pokračuje sa v hovore pomocou mobilných dát…"
+ "Nepodarilo sa prepnúť na sieť Wi‑Fi"
+ "Videohovor bude pokračovať v mobilnej sieti. Môžu sa účtovať štandardné poplatky za prenos dát."
"Informácie nabudúce nezobrazovať"
diff --git a/java/com/android/incallui/res/values-sl/strings.xml b/java/com/android/incallui/res/values-sl/strings.xml
index b083e1bae53a14c8221302e4a49175c5c41b7952..cf51ff55b4427ab376291c76789eeba4e9d6a023 100644
--- a/java/com/android/incallui/res/values-sl/strings.xml
+++ b/java/com/android/incallui/res/values-sl/strings.xml
@@ -33,8 +33,8 @@
"Neodgovorjeni klic od: %s"
"Aktivni klic"
"Aktivni delovni klic"
- "Odhodni klic prek Wi-Fi-ja"
- "Aktivni delovni klic prek omrežja Wi-Fi"
+ "Aktivni klic prek omrežja Wi-Fi"
+ "Aktivni delovni klic prek omrežja Wi-Fi"
"Zadržano"
"Dohodni klic"
"Dohodni klic s fotografijo"
@@ -55,8 +55,8 @@
"Pomemben klic s fotografijo, sporočilom, lokacijo"
"Pomemben dohodni klic s prilogami"
"Dohodni delovni klic"
- "Dohodni klic prek Wi-Fi-ja"
- "Dohodni delovni klic prek omrežja Wi-Fi"
+ "Dohodni klic prek omrežja Wi-Fi"
+ "Dohodni delovni klic prek omrežja Wi-Fi"
"Domnevno neželeni dohodni klic"
"Dohodna zahteva za video"
"Ni storitve"
@@ -73,7 +73,7 @@
"Sprejmi videoklic"
"Če želite poklicati, najprej izklopite način za letalo."
"Ni registrirano v omrežju."
- "Mobilno omrežje ni na voljo."
+ "Mobilno omrežje ni na voljo."
"Če želite opraviti klic, vnesite veljavno številko."
"Klicanje ni mogoče."
"Začetek zaporedja MMI ..."
@@ -134,8 +134,8 @@
"Končaj klic"
"Konferenčni klic"
"Poteka klic"
- "Nadaljevanje klica prek prenosa podatkov v mobilnih omrežjih …"
- "Ni bilo mogoče preklopiti v omrežje Wi-Fi"
- "Videoklic bo še naprej potekal v mobilnem omrežju. Morda boste morali plačati standardne stroške prenosa podatkov."
+ "Nadaljevanje klica prek prenosa podatkov v mobilnem omrežju …"
+ "Ni bilo mogoče preklopiti v omrežje Wi-Fi"
+ "Videoklic bo še naprej potekal v mobilnem omrežju. Morda boste morali plačati standardne stroške prenosa podatkov."
"Tega ne kaži več"
diff --git a/java/com/android/incallui/res/values-sq/strings.xml b/java/com/android/incallui/res/values-sq/strings.xml
index fd196426607f13fa53d7ed2eb6d9840d6ad28bc2..76bb87b806d9c89113f9c23df03fd0ebd64ac074 100644
--- a/java/com/android/incallui/res/values-sq/strings.xml
+++ b/java/com/android/incallui/res/values-sq/strings.xml
@@ -33,8 +33,8 @@
"Telefonatë e humbur nga %s"
"Telefonatë në vazhdim"
"Telefonatë pune dalëse"
- "Telefonatë në vazhdim me Wi-Fi"
- "Telefonatë pune dalëse përmes Wi-Fi"
+ "Telefonatë në vazhdim me Wi-Fi"
+ "Telefonatë pune dalëse me Wi-Fi"
"Në pritje"
"Telefonatë hyrëse"
"Telefonatë hyrëse me fotografi"
@@ -55,8 +55,8 @@
"Tel. e rëndësishme me foto, mesazh e vendndodhje"
"Telefonatë hyrëse e rëndësishme me bashkëngjitje"
"Telefonatë pune hyrëse"
- "Telefonatë hyrëse Wi-Fi"
- "Telefonatë pune hyrëse përmes Wi-Fi"
+ "Telefonatë hyrëse me Wi-Fi"
+ "Telefonatë pune hyrëse me Wi-Fi"
"Telefonatë e dyshuar si e padëshiruar"
"Kërkesë për video hyrëse"
"Nuk ka shërbim"
@@ -73,7 +73,7 @@
"Prano telefonatën me video"
"Për të kryer telefonatë, së pari çaktivizo modalitetin e aeroplanit."
"I paregjistruar në rrjet."
- "Rrjeti celular nuk mundësohet."
+ "Rrjeti celular nuk mundësohet."
"Për të kryer një telefonatë, fut një numër të vlefshëm."
"Nuk mund të telefonojë."
"Po fillon sekuencën MMI…"
@@ -134,8 +134,8 @@
"Mbylle telefonatën"
"Telefonatë konferencë"
"Në telefonatë"
- "Po vazhdon telefonatën duke përdorur të dhënat celulare…"
- "Nuk mund të kalonte në rrjetin Wi-Fi"
- "Telefonata me video do të mbetet në rrjetin celular. Mund të zbatohen tarifat standarde."
+ "Po vazhdon telefonatën duke përdorur të dhënat celulare…"
+ "Nuk mund të kalonte në rrjetin Wi-Fi"
+ "Telefonata me video do të mbetet në rrjetin celular. Mund të zbatohen tarifat standarde të të dhënave."
"Mos e shfaq më këtë"
diff --git a/java/com/android/incallui/res/values-sr/strings.xml b/java/com/android/incallui/res/values-sr/strings.xml
index 4fa7a61335717b901e325181679ab88b519eaa5b..85e76a9e9d37534df3a8f398c9a5428b9c1a1909 100644
--- a/java/com/android/incallui/res/values-sr/strings.xml
+++ b/java/com/android/incallui/res/values-sr/strings.xml
@@ -33,8 +33,8 @@
"Пропуштен позив од: %s"
"Актуелни позив"
"Текући позив за Work"
- "Текући Wi-Fi позив"
- "Текући позив за Work преко Wi-Fi-ја"
+ "Wi‑Fi позив у току"
+ "Wi‑Fi пословни позив у току"
"На чекању"
"Долазни позив"
"Долазни позив са сликом"
@@ -55,8 +55,8 @@
"Важан долазни позив са сликом, поруком и локацијом"
"Важан долазни позив са прилозима"
"Долазни позив за Work"
- "Долазни Wi-Fi позив"
- "Долазни позив за Work преко Wi-Fi-ја"
+ "Долазни Wi‑Fi позив"
+ "Долазни Wi‑Fi пословни позив"
"Сумња на непожељан долазни позив"
"Захтев за долазни видео позив"
"Нема услуге"
@@ -73,7 +73,7 @@
"Преузми видео позив"
"Да бисте упутили позив, прво искључите режим рада у авиону."
"Није регистровано на мрежи."
- "Мобилна мрежа није доступна."
+ "Мобилна мрежа није доступна."
"Да бисте упутили позив, унесите важећи број."
"Позив није успео."
"Покретање MMI секвенце"
@@ -134,8 +134,8 @@
"Завршите позив"
"Конференцијски позив"
"У позиву"
- "Позив се наставља помоћу мобилних података…"
- "Пребацивање на Wi-Fi мрежу није успело"
- "Видео позив ће остати на мобилној мрежи. Могу да важе стандардне накнаде за пренос података."
+ "Позив се наставља помоћу мобилних података…"
+ "Пребацивање на Wi‑Fi мрежу није успело"
+ "Видео позив ће остати на мобилној мрежи. Важе стандардне накнаде за пренос података."
"Не приказуј ово поново"
diff --git a/java/com/android/incallui/res/values-sv/strings.xml b/java/com/android/incallui/res/values-sv/strings.xml
index 6d58d90f372016d4630df3b458e8dedc3718b1cd..4bbce1d6a190ec29af2c70e5d8cb55cf8e74a1af 100644
--- a/java/com/android/incallui/res/values-sv/strings.xml
+++ b/java/com/android/incallui/res/values-sv/strings.xml
@@ -33,8 +33,8 @@
"Missat samtal från %s"
"Pågående samtal"
"Pågående jobbsamtal"
- "Pågående Wi-Fi-samtal"
- "Pågående jobbsamtal via Wi-Fi"
+ "Pågående Wi-Fi-samtal"
+ "Pågående jobbsamtal på Wi-Fi"
"Parkerat"
"Inkommande samtal"
"Inkommande samtal med foto"
@@ -55,8 +55,8 @@
"Viktigt inkommande samtal med foto, meddelande och plats"
"Viktigt inkommande samtal med bilagor"
"Inkommande jobbsamtal"
- "Inkommande Wi-Fi-samtal"
- "Inkommande jobbsamtal via Wi-Fi"
+ "Inkommande Wi-Fi-samtal"
+ "Inkommande jobbsamtal på Wi-Fi"
"Inkommande misstänkt spamsamtal"
"Inkommande begäran om videosamtal"
"Ingen tjänst"
@@ -73,7 +73,7 @@
"Svara på videosamtal"
"Om du vill ringa ett samtal måste du först inaktivera flygplansläge."
"Inte registrerat på nätverk."
- "Det finns inget mobilnät tillgängligt."
+ "Inga tillgängliga mobilnätverk."
"Ange ett giltigt nummer om du vill ringa ett samtal."
"Det gick inte att ringa."
"Startar sekvens för MMI-kod…"
@@ -134,8 +134,8 @@
"Avsluta samtal"
"Konferenssamtal"
"I samtal"
- "Samtalet fortsätter med mobildata …"
- "Det gick inte att växla till Wi-Fi-nätverk"
- "Videosamtalet förblir i mobilnätverket. Vanliga dataavgifter kan tillkomma."
+ "Samtalet fortsätter med mobildata …"
+ "Det gick inte att växla till Wi-Fi-nätverk"
+ "Videosamtalet förblir i mobilnätverket. Vanliga dataavgifter kan tillkomma."
"Visa inte detta igen"
diff --git a/java/com/android/incallui/res/values-sw/strings.xml b/java/com/android/incallui/res/values-sw/strings.xml
index 0bb1b8cf067ab20d69ddf86f3c517ce41e347183..17c3a52ab6dd083638cbb415e990412b9fcad44c 100644
--- a/java/com/android/incallui/res/values-sw/strings.xml
+++ b/java/com/android/incallui/res/values-sw/strings.xml
@@ -33,8 +33,8 @@
"Simu ambayo hukujibu kutoka %s"
"Simu inayoendelea"
"Simu ya kazi inayoendelea"
- "Simu ya Wi-Fi inayoendelea"
- "Simu ya Wi-Fi ya kazi inayoendelea"
+ "Simu ya Wi-Fi inaendelea"
+ "Simu ya Wi-Fi ya kazi inaendelea"
"Inangoja"
"Unapigiwa simu"
"Simu inayoingia yenye picha"
@@ -55,8 +55,8 @@
"Simu muhimu yenye picha, ujumbe na mahali"
"Simu muhimu inayoingia yenye viambatisho"
"Simu ya kazi inayoingia"
- "Simu ya Wi-Fi inayoingia"
- "Simu ya Wi-Fi ya kazi inayoingia"
+ "Simu ya Wi-Fi inaingia"
+ "Simu ya Wi-Fi ya kazi inaingia"
"Simu inayoingia inashukiwa kuwa taka"
"Ombi linaloingia la video"
"Hakuna huduma"
@@ -73,7 +73,7 @@
"Pokea Simu ya Video"
"Kupiga simu, kwanza zima hali ya ndegeni."
"Haijasajiliwa kwa mitandao"
- "Mitandao ya simu za mkononi haipatikani"
+ "Mtandao wa simu haupatikani."
"Ili upige simu, weka nambari sahihi."
"Haiwezi kupiga simu."
"Inaanzisha msururu wa MMI…"
@@ -134,8 +134,8 @@
"Kata simu"
"Simu ya kongamano"
"Mazungumzo ya simu yanaendelea"
- "Endelea na mazungumzo ya simu ukitumia data ya kifaa cha mkononi…"
- "Imeshindwa kuhamia mtandao wa Wi-Fi"
- "Hangout ya video itaendelea kwenye mtandao wa simu. Huenda ukatozwa gharama za kawaida za data."
+ "Endelea na mazungumzo ya simu ukitumia data ya simu…"
+ "Imeshindwa kuhamia mtandao wa Wi-Fi"
+ "Hangout ya video itaendelea kwenye mtandao wa simu. Huenda ukatozwa gharama za kawaida za data."
"Usiionyeshe tena"
diff --git a/java/com/android/incallui/res/values-ta/strings.xml b/java/com/android/incallui/res/values-ta/strings.xml
index bae8d6a6749ac469fc5e3610adccbbe6e19b5a88..bb228a0e2b21d4bcd24fd34020f344d73ddf48bd 100644
--- a/java/com/android/incallui/res/values-ta/strings.xml
+++ b/java/com/android/incallui/res/values-ta/strings.xml
@@ -33,8 +33,8 @@
"%s இடமிருந்து தவறிய அழைப்பு"
"செயலில் இருக்கும் அழைப்பு"
"வெளிச்செல்லும் அழைப்பு (பணி)"
- "வெளிச்செல்லும் வைஃபை அழைப்பு"
- "வெளிச்செல்லும் வைஃபை அழைப்பு (பணி)"
+ "செயலில் இருக்கும் வைஃபை அழைப்பு"
+ "செயலில் இருக்கும் வைஃபை அழைப்பு (பணி)"
"காத்திருப்பில்"
"உள்வரும் அழைப்பு"
"படத்துடன் உள்வரும் அழைப்பு"
@@ -55,8 +55,8 @@
"படம், செய்தி, இருப்பிடத்துடன் உள்வரும் முக்கியமான அழைப்பு"
"இணைப்புகளுடன் உள்வரும் முக்கியமான அழைப்பு"
"உள்வரும் அழைப்பு (பணி)"
- "உள்வரும் வைஃபை அழைப்பு"
- "உள்வரும் வைஃபை அழைப்பு (பணி)"
+ "உள்வரும் வைஃபை அழைப்பு"
+ "உள்வரும் வைஃபை அழைப்பு (பணி)"
"உள்வரும் சந்தேகத்திற்குரிய ஸ்பேம் அழைப்பு"
"உள்வரும் வீடியோ கோரிக்கை"
"சேவை இல்லை"
@@ -73,7 +73,7 @@
"வீடியோ அழைப்பை எடு"
"அழைப்பதற்கு, முதலில் விமானப் பயன்முறையை முடக்கவும்."
"நெட்வொர்க்கில் பதிவுசெய்யப்படவில்லை."
- "செல்லுலார் நெட்வொர்க் கிடைக்கவில்லை."
+ "மொபைல் நெட்வொர்க் கிடைக்கவில்லை."
"அழைக்க, சரியான எண்ணை உள்ளிடவும்."
"அழைக்க முடியாது."
"MMI வரிசையைத் தொடங்குகிறது..."
@@ -134,8 +134,8 @@
"அழைப்பைத் துண்டிக்கும்"
"குழு அழைப்பு"
"அழைப்பில்"
- "செல்லுலார் தரவைப் பயன்படுத்தி அழைப்பைத் தொடர்கிறது…"
- "வைஃபை நெட்வொர்க்கிற்கு மாற முடியவில்லை"
- "செல்லுலார் நெட்வொர்க்கைப் பயன்படுத்தி தொடர்ந்து வீடியோ அழைப்பைச் செய்யலாம். வழக்கமான தரவுக் கட்டணங்கள் விதிக்கப்படக்கூடும்."
+ "மொபைல் தரவைப் பயன்படுத்தி அழைப்பைத் தொடர்கிறது…"
+ "வைஃபை நெட்வொர்க்கிற்கு மாற முடியவில்லை"
+ "மொபைல் நெட்வொர்க்கைப் பயன்படுத்தி தொடர்ந்து வீடியோ அழைப்பைச் செய்யலாம். வழக்கமான தரவுக் கட்டணங்கள் விதிக்கப்படக்கூடும்."
"இதை மீண்டும் காட்டாதே"
diff --git a/java/com/android/incallui/res/values-te/strings.xml b/java/com/android/incallui/res/values-te/strings.xml
index 6b833886b2201369357f87c79156338472c33831..a5da32a01fc4f2399e39cb9f7879a83fa978bbf2 100644
--- a/java/com/android/incallui/res/values-te/strings.xml
+++ b/java/com/android/incallui/res/values-te/strings.xml
@@ -33,8 +33,8 @@
"%s నుండి సమాధానం ఇవ్వని కాల్"
"కాల్ కొనసాగుతోంది"
"కార్యాలయ కాల్ కొనసాగుతోంది"
- "Wi-Fi కాల్ కొనసాగుతోంది"
- "Wi-Fi కార్యాలయ కాల్ కొనసాగుతోంది"
+ "మాట్లాడుతున్న Wi‑Fi కాల్"
+ "మాట్లాడుతున్న Wi‑Fi కార్యాలయ కాల్"
"హోల్డ్లో ఉంది"
"ఇన్కమింగ్ కాల్"
"ఫోటోతో ఇన్కమింగ్ కాల్"
@@ -55,8 +55,8 @@
"ఫోటో, సందేశం, స్థానంతో ముఖ్యమైన ఇన్కమింగ్ కాల్"
"జోడింపులతో ముఖ్యమైన ఇన్కమింగ్ కాల్"
"ఇన్కమింగ్ కార్యాలయ కాల్"
- "Wi-Fi కాల్ వస్తోంది"
- "ఇన్కమింగ్ Wi-Fi కార్యాలయ కాల్"
+ "ఇన్కమింగ్ Wi-Fi కాల్"
+ "ఇన్కమింగ్ Wi-Fi కార్యాలయ కాల్"
"అనుమానాస్పద స్పామ్ కాల్ వస్తోంది"
"ఇన్కమింగ్ వీడియో అభ్యర్థన"
"సేవ లేదు"
@@ -73,7 +73,7 @@
"వీడియో కాల్ను తీయి"
"కాల్ చేయడానికి, మొదట ఎయిర్ప్లైన్ మోడ్ను ఆపివేయండి."
"నెట్వర్క్లో నమోదు కాలేదు."
- "సెల్యులార్ నెట్వర్క్ అందుబాటులో లేదు."
+ "మొబైల్ నెట్వర్క్ అందుబాటులో లేదు."
"కాల్ చేయడానికి, చెల్లుబాటు అయ్యే నంబర్ను నమోదు చేయండి."
"కాల్ చేయలేరు."
"MMI శ్రేణిని ప్రారంభిస్తోంది…"
@@ -134,8 +134,8 @@
"కాల్ను ముగిస్తుంది"
"కాన్ఫరెన్స్ కాల్"
"కాల్లో ఉన్నారు"
- "సెల్యులార్ డేటాను ఉపయోగించి కాల్ను కొనసాగిస్తోంది…"
- "Wi-Fi నెట్వర్క్కి మార్చలేకపోయింది"
- "వీడియో కాల్ సెల్యులార్ నెట్వర్క్లో కొనసాగుతుంది. ప్రామాణిక డేటా ఛార్జీలు వర్తించవచ్చు."
+ "మొబైల్ డేటాను ఉపయోగించి కాల్ను కొనసాగిస్తోంది…"
+ "Wi-Fi నెట్వర్క్కి మార్చడం సాధ్యపడలేదు"
+ "వీడియో కాల్ మొబైల్ నెట్వర్క్లో కొనసాగుతుంది. ప్రామాణిక డేటా ఛార్జీలు వర్తించవచ్చు."
"దీన్ని మళ్లీ చూపవద్దు"
diff --git a/java/com/android/incallui/res/values-th/strings.xml b/java/com/android/incallui/res/values-th/strings.xml
index 11023b93a015abb446f3e9285725032f0d1c62a7..102faf20adef15c734fcd0f7a35c12652627908b 100644
--- a/java/com/android/incallui/res/values-th/strings.xml
+++ b/java/com/android/incallui/res/values-th/strings.xml
@@ -33,8 +33,8 @@
"สายที่ไม่ได้รับจาก %s"
"โทรต่อเนื่อง"
"กำลังอยู่ในสายจากที่ทำงาน"
- "กำลังโทรผ่าน Wi-Fi"
- "กำลังอยู่ในสายจากที่ทำงานผ่าน Wi-Fi"
+ "กำลังโทรผ่าน Wi-Fi"
+ "กำลังอยู่ในสายจากที่ทำงานผ่าน Wi-Fi"
"พักสาย"
"สายเรียกเข้า"
"สายเรียกเข้าพร้อมรูปภาพ"
@@ -55,8 +55,8 @@
"สายเรียกเข้าที่สำคัญพร้อมรูปภาพ ข้อความ และตำแหน่ง"
"สายเรียกเข้าที่สำคัญพร้อมไฟล์แนบ"
"มีสายเรียกเข้าจากที่ทำงาน"
- "สายโทรเข้าผ่าน Wi-Fi"
- "มีสายเรียกเข้าจากที่ทำงานผ่าน Wi-Fi"
+ "สายโทรเข้าผ่าน Wi-Fi"
+ "มีสายเรียกเข้าจากที่ทำงานผ่าน Wi-Fi"
"สายเรียกเข้าที่สงสัยว่าเป็นสแปม"
"คำขอโทรเข้าเป็นวิดีโอ"
"ไม่มีบริการ"
@@ -73,7 +73,7 @@
"รับสายแฮงเอาท์วิดีโอ"
"หากต้องการโทรออก ให้ปิดโหมดใช้งานบนเครื่องบินก่อน"
"ยังไม่ได้ลงทะเบียนบนเครือข่าย"
- "เครือข่ายมือถือใช้งานไม่ได้"
+ "เครือข่ายมือถือใช้งานไม่ได้"
"หากต้องการโทรออก โปรดป้อนหมายเลขที่ถูกต้อง"
"ไม่สามารถโทรได้"
"กำลังเริ่มต้นลำดับ MMI..."
@@ -134,8 +134,8 @@
"วางสาย"
"การประชุมสาย"
"อยู่ในสาย"
- "กำลังทำการโทรต่อโดยใช้ข้อมูลเครือข่ายมือถือ…"
- "ไม่สามารถเปลี่ยนไปใช้เครือข่าย Wi-Fi"
- "แฮงเอาท์วิดีโอจะยังคงอยู่ในเครือข่ายมือถือ อาจมีการเรียกเก็บค่าบริการข้อมูลมาตรฐาน"
+ "โทรต่อโดยใช้อินเทอร์เน็ตมือถือ..."
+ "ไม่สามารถเปลี่ยนไปใช้เครือข่าย Wi-Fi"
+ "แฮงเอาท์วิดีโอจะยังคงอยู่ในเครือข่ายมือถือ อาจมีการเรียกเก็บค่าบริการข้อมูลมาตรฐาน"
"อย่าแสดงสิ่งนี้อีก"
diff --git a/java/com/android/incallui/res/values-tl/strings.xml b/java/com/android/incallui/res/values-tl/strings.xml
index 00a4623b54a68f2d393324b2ac535d394c45a8aa..9cc2f543e73370ad391f68e5c48f0361c891827e 100644
--- a/java/com/android/incallui/res/values-tl/strings.xml
+++ b/java/com/android/incallui/res/values-tl/strings.xml
@@ -33,8 +33,8 @@
"Hindi nasagot ang tawag mula kay %s"
"Kasalukuyang tawag"
"Kasalukuyang tawag sa trabaho"
- "Isinasagawang tawag sa Wi-Fi"
- "Kasalukuyang tawag sa trabaho sa pamamagitan ng Wi-Fi"
+ "Kasalukuyang isinasagawang tawag sa Wi-Fi"
+ "Kasalukuyang isinasagawang tawag sa trabaho gamit ang Wi-Fi"
"Naka-hold"
"Papasok na tawag"
"Papasok na tawag na may larawan"
@@ -55,8 +55,8 @@
"Mahalagang papasok na tawag na may larawan, mensahe, at lokasyon"
"Mahalagang papasok na tawag na may mga attachment"
"Papasok na tawag sa trabaho"
- "Papasok na tawag sa Wi-Fi"
- "Papasok na tawag sa trabaho sa pamamagitan ng Wi-Fi"
+ "Papasok na tawag sa Wi-Fi"
+ "Papasok na tawag sa trabaho gamit ang Wi-Fi"
"Papasok na pinaghihinalaang spam na tawag"
"Papasok na kahilingan ng video"
"Walang serbisyo"
@@ -73,7 +73,7 @@
"Sagutin ang Video Call"
"Upang tumawag, paki-off ang Airplane mode."
"Hindi nakarehistro sa network."
- "Hindi available ang cellular network"
+ "Hindi available ang mobile network."
"Upang tumawag, maglagay ng wastong numero."
"Hindi makatawag."
"Sinisimulan ang pagkakasunud-sunod ng MMI…"
@@ -134,8 +134,8 @@
"Tapusin ang tawag"
"Conference call"
"Nasa tawag"
- "Ipinagpapatuloy ang tawag gamit ang cellular data…"
- "Hindi makalipat sa Wi-Fi network"
- "Mananatili sa cellular network ang video call. Maaaring may mga babayaran sa data."
+ "Ipinagpapatuloy ang tawag gamit ang mobile data…"
+ "Hindi makalipat sa Wi-Fi network"
+ "Mananatili sa mobile network ang video call. Maaaring may mga babayaran sa data."
"Huwag itong ipakitang muli"
diff --git a/java/com/android/incallui/res/values-tr/strings.xml b/java/com/android/incallui/res/values-tr/strings.xml
index 9820a6989f1ba8ceba185d36750c84316c0af57a..9126624cf1dc7993252687e3c5b35b9a2bc6a43a 100644
--- a/java/com/android/incallui/res/values-tr/strings.xml
+++ b/java/com/android/incallui/res/values-tr/strings.xml
@@ -33,8 +33,8 @@
"Cevapsız çağrı: %s"
"Devam eden çağrılar"
"Süren iş çağrısı"
- "Giden kablosuz çağrı"
- "Süren kablosuz iş çağrısı"
+ "Devam eden kablosuz çağrı"
+ "İşle ilgili devam eden kablosuz çağrı"
"Beklemede"
"Gelen çağrı"
"Fotoğraf eklenmiş gelen çağrı"
@@ -55,8 +55,8 @@
"Fotoğraf, mesaj ve konum eklenmiş önemli çağrı"
"Ek iliştirilmiş önemli gelen çağrı"
"Gelen iş çağrısı"
- "Gelen kablosuz çağrı"
- "Gelen kablosuz iş çağrısı"
+ "Gelen kablosuz çağrı"
+ "İşle ilgili gelen kablosuz çağrı"
"Spam olabilecek gelen arama"
"Gelen video isteği"
"Hizmet yok"
@@ -73,7 +73,7 @@
"Video Görüşmesini Al"
"Bir çağrı yapmak için öncelikle Uçak modunu kapatın."
"Ağda kayıtlı değil."
- "Hücresel ağ kullanılamıyor."
+ "Mobil ağ kullanılamıyor."
"Telefon etmek için geçerli bir numara girin."
"Arama yapılamıyor."
"MMI dizisi başlatılıyor..."
@@ -134,8 +134,8 @@
"Çağrı sonlandırılır"
"Konferans çağrısı"
"Konferans çağrısında"
- "Görüşmeye hücresel veri kullanılarak devam ediliyor…"
- "Kablosuz ağa geçilemedi"
- "Video görüşmesi hücresel ağda devam edecek. Standart veri ücretleri alınabilir."
+ "Görüşmeye mobil veri kullanılarak devam ediliyor…"
+ "Kablosuz ağa geçilemedi"
+ "Görüntülü görüşme mobil ağda devam edecek. Standart veri ücretleri alınabilir."
"Bunu bir daha gösterme"
diff --git a/java/com/android/incallui/res/values-uk/strings.xml b/java/com/android/incallui/res/values-uk/strings.xml
index b3b297dc7b018cf7ca3c2246f5180fa45f295581..30c202c7661abf264d0b7bc14c7b20f3ef3429db 100644
--- a/java/com/android/incallui/res/values-uk/strings.xml
+++ b/java/com/android/incallui/res/values-uk/strings.xml
@@ -33,8 +33,8 @@
"Пропущений виклик: %s"
"Поточний виклик"
"Поточний дзвінок на робочий телефон"
- "Активний дзвінок через Wi-Fi"
- "Поточний дзвінок на робочий телефон через Wi-Fi"
+ "Поточний дзвінок через Wi-Fi"
+ "Поточний дзвінок на робочий телефон через Wi-Fi"
"Очікує"
"Вхідний виклик"
"Вхідний дзвінок із фото"
@@ -55,8 +55,8 @@
"Важливий дзвінок із фото, повідомленням і адресою"
"Важливий вхідний дзвінок із вкладеними файлами"
"Вхідний дзвінок на робочий телефон"
- "Вхідний дзвінок через Wi-Fi"
- "Вхідний дзвінок на робочий телефон через Wi-Fi"
+ "Вхідний дзвінок через Wi-Fi"
+ "Вхідний дзвінок на робочий телефон через Wi-Fi"
"Цей дзвінок може бути спамом"
"Запит на вхідний відеодзвінок"
"Нема служби"
@@ -73,7 +73,7 @@
"Прийняти відеодзвінок"
"Щоб установ. з\'єднання, споч. вимк. режим польоту."
"Не зареєстровано в мережі."
- "Мобільна мережа недоступна."
+ "Мобільна мережа недоступна."
"Щоб зателефонувати, введіть дійсний номер."
"Неможливо зателефонувати."
"Запуск ряду MMI..."
@@ -134,8 +134,8 @@
"Завершити виклик"
"Конференц-зв’язок"
"Триває виклик"
- "Продовження виклику через мобільний трафік…"
- "Не вдалося перейти в мережу Wi-Fi"
- "Відеодзвінок продовжиться в мобільній мережі. Діють стандартні тарифи."
+ "Продовження виклику з використанням мобільного Інтернету…"
+ "Не вдалося перейти на мережу Wi-Fi"
+ "Відеодзвінок продовжиться з використанням мобільного Інтернету. Діють стандартні тарифи."
"Більше не показувати це"
diff --git a/java/com/android/incallui/res/values-ur/strings.xml b/java/com/android/incallui/res/values-ur/strings.xml
index e3326a27e9aadf8297779f7cf399e2844e5da0aa..8e70bad8bdca7e18f18af14e4461a59a6b93c3a0 100644
--- a/java/com/android/incallui/res/values-ur/strings.xml
+++ b/java/com/android/incallui/res/values-ur/strings.xml
@@ -33,8 +33,8 @@
"%s کی جانب سے چھوٹی ہوئی کال"
"جاری کال"
"کام سے متعلق جاری کال"
- "Wi-Fi کال جاری ہے"
- "کام سے متعلق جاری Wi-Fi کال"
+ "جاری Wi-Fi کال"
+ "کام سے متعلق جاری Wi-Fi کال"
"ہولڈ پر"
"آنے والی کال"
"تصویر کے ساتھ آنے والی کال"
@@ -55,8 +55,8 @@
"تصویر، پیغام اور مقام کے ساتھ آنے والی اہم کال"
"منسلکات کے ساتھ آنے والی اہم کال"
"کام سے متعلق آنے والی کال"
- "Wi-Fi کال آ رہی ہے"
- "کام سے متعلق آنے والی Wi-Fi کال"
+ "Wi-Fi کال آ رہی ہے"
+ "کام سے متعلق آنے والی Wi-Fi کال"
"آنے والی مشتبہ سپام کال"
"اِن کمنگ ویڈیو درخواست"
"کوئی سروس نہیں ہے"
@@ -73,7 +73,7 @@
"ویڈیو کال لیں"
"کال کرنے کیلئے، پہلے ہوائی جہاز طرز کو آف کریں۔"
"نیٹ ورک پر رجسٹرڈ نہیں ہے۔"
- "سیلولر نیٹ ورک دستیاب نہیں ہے۔"
+ "موبائل نیٹ ورک دستیاب نہیں ہے۔"
"کال کرنے کیلئے، ایک درست نمبر درج کریں۔"
"کال نہیں کر سکتے۔"
"MMI ترتیب شروع ہو رہی ہے…"
@@ -134,8 +134,8 @@
"کال ختم کریں"
"کانفرنس کال"
"کال میں"
- "سیلولر ڈیٹا استعمال کرکے کال جاری ہے"
- "Wi-Fi نیٹ ورک پر سوئچ نہیں ہو سکا"
- "ویڈیو کال سیلولر نیٹ ورک پر رہے گی۔ ڈیٹا کے معیاری چارجز کا اطلاق ہو سکتا ہے۔"
+ "موبائل ڈیٹا استعمال کرکے کال جاری ہے"
+ "Wi-Fi نیٹ ورک پر سوئچ نہیں ہو سکا"
+ "ویڈیو کال موبائل نیٹ ورک پر رہے گی۔ ڈیٹا کے معیاری چارجز کا اطلاق ہو سکتا ہے۔"
"اسے دوبارہ مت دکھائیں"
diff --git a/java/com/android/incallui/res/values-uz/strings.xml b/java/com/android/incallui/res/values-uz/strings.xml
index b04972ffd10687fe2bd205a897db0d4e8cf07d68..c460f9504212d137a36eb57a2ae8a9191b185e47 100644
--- a/java/com/android/incallui/res/values-uz/strings.xml
+++ b/java/com/android/incallui/res/values-uz/strings.xml
@@ -33,8 +33,8 @@
"%s chaqiruvi javobsiz qoldi"
"Joriy qo‘ng‘iroq"
"Chiquvchi ishchi qo‘ng‘irog‘i"
- "Chiquvchi Wi-Fi qo‘ng‘irog‘i"
- "Chiquvchi Wi-Fi ishchi qo‘ng‘irog‘i"
+ "Joriy Wi-Fi qo‘ng‘iroq"
+ "Joriy Wi-Fi qo‘ng‘iroq (ish)"
"Kutmoqda"
"Kiruvchi chaqiruv"
"Suratga ega kiruvchi chaqiruv"
@@ -55,8 +55,8 @@
"Surat, xabar va joy. ax. ega muhim kiruv. chaqiruv"
"Biriktirmalarga ega muhim kiruvchi chaqiruv"
"Kiruvchi ishchi qo‘ng‘irog‘i"
- "Kiruvchi Wi-Fi qo‘ng‘irog‘i"
- "Kiruvchi Wi-Fi ishchi qo‘ng‘irog‘i"
+ "Kiruvchi Wi-Fi qo‘ng‘iroq"
+ "Kiruvchi Wi-Fi qo‘ng‘iroq (ish)"
"Shubhali kiruvchi qo‘ng‘iroq"
"Kiruvchi video so\'rovi"
"Xizmat mavjud emas"
@@ -73,7 +73,7 @@
"Video qo‘ng‘iroq. qabul qilish"
"Qo‘ng‘iroq qilish uchun, avval \"Parvoz rejimi\" o‘chirilishi kerak."
"Tarmoqda ro‘yxatdan o‘tmagan."
- "Mobil tarmoq mavjud emas."
+ "Uyali aloqa tarmog‘i mavjud emas."
"Qo‘ng‘iroq qilish uchun raqamni to‘g‘ri kiriting."
"Qo‘ng‘iroq qilib bo‘lmadi."
"MMI tartibi ishga tushmoqda..."
@@ -134,8 +134,8 @@
"Qo‘ng‘iroqni tugatish"
"Konferens-aloqa"
"Qo‘ng‘iroq davom etmoqda"
- "Qo‘ng‘iroq mobil internet orqali davom ettirilmoqda…"
- "Wi-Fi tarmog‘iga o‘tib bo‘lmadi"
- "Video qo‘ng‘iroq uyali tarmoqda davom etilaveradi. Internet uchun operator tarifi bo‘yicha haq olinishi mumkin."
+ "Qo‘ng‘iroq mobil internetga o‘tkazilmoqda…"
+ "Wi-Fi tarmog‘iga o‘tib bo‘lmadi"
+ "Video qo‘ng‘iroq mobil internet orqali davom ettiriladi. Internet uchun operator tarifi bo‘yicha haq olinishi mumkin."
"Bu xabar boshqa ko‘rsatilmasin"
diff --git a/java/com/android/incallui/res/values-vi/strings.xml b/java/com/android/incallui/res/values-vi/strings.xml
index b466b020de75b13f2af99bad205de6181e00d7ec..8c0dbceeb4aaf9552d37554b206b0dafb153a040 100644
--- a/java/com/android/incallui/res/values-vi/strings.xml
+++ b/java/com/android/incallui/res/values-vi/strings.xml
@@ -33,8 +33,8 @@
"Cuộc gọi nhỡ từ %s"
"Cuộc gọi đang thực hiện"
"Cuộc gọi đang diễn ra về công việc"
- "Cuộc gọi đang diễn ra qua Wi-Fi"
- "Cuộc gọi đang diễn ra qua Wi-Fi về công việc"
+ "Cuộc gọi đang diễn ra qua Wi-Fi"
+ "Cuộc gọi về công việc đang diễn ra qua Wi-Fi"
"Đang chờ"
"Cuộc gọi đến"
"Cuộc gọi đến có ảnh"
@@ -55,8 +55,8 @@
"Cuộc gọi đến quan trọng có ảnh, tin nhắn và vị trí"
"Cuộc gọi đến quan trọng có tệp đính kèm"
"Cuộc gọi đến về công việc"
- "Cuộc gọi đến qua Wi-Fi"
- "Cuộc gọi đến qua Wi-Fi về công việc"
+ "Cuộc gọi đến qua Wi-Fi"
+ "Cuộc gọi đến về công việc qua Wi-Fi"
"Cuộc gọi spam đến bị nghi ngờ"
"Yêu cầu video đến"
"Không có dịch vụ nào"
@@ -73,7 +73,7 @@
"Nhận cuộc gọi điện video"
"Để thực hiện cuộc gọi, trước tiên, hãy tắt chế độ trên Máy bay."
"Chưa được đăng ký trên mạng."
- "Không có mạng di động."
+ "Mạng di động không khả dụng."
"Để thực hiện cuộc gọi, hãy nhập một số hợp lệ."
"Không thực hiện được cuộc gọi."
"Khởi động chuỗi MMI…"
@@ -134,8 +134,8 @@
"Kết thúc cuộc gọi"
"Cuộc gọi nhiều bên"
"Đang trong cuộc gọi"
- "Đang tiếp tục cuộc gọi bằng cách sử dụng dữ liệu di động…"
- "Không thể chuyển sang mạng Wi-Fi"
- "Cuộc gọi điện video sẽ duy trì trên mạng di động. Có thể áp dụng phí dữ liệu chuẩn."
+ "Đang tiếp tục cuộc gọi bằng cách sử dụng dữ liệu di động…"
+ "Không thể chuyển sang mạng Wi-Fi"
+ "Cuộc gọi điện video sẽ tiếp tục trên mạng di động. Bạn có thể phải trả phí dữ liệu chuẩn."
"Không hiển thị lại"
diff --git a/java/com/android/incallui/res/values-zh-rCN/strings.xml b/java/com/android/incallui/res/values-zh-rCN/strings.xml
index e26ab0ca28a0fd0ef859d8dd6c298fd200f279aa..4ede0cb3ec03568a52bfa9f0397d05bf3da70646 100644
--- a/java/com/android/incallui/res/values-zh-rCN/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rCN/strings.xml
@@ -33,8 +33,8 @@
"来自%s的未接电话"
"当前通话"
"工作通话进行中"
- "正在进行 WLAN 通话"
- "WLAN 工作通话进行中"
+ "正在进行 WLAN 通话"
+ "正在进行 WLAN 工作通话"
"保持"
"来电"
"包含照片的来电"
@@ -55,8 +55,8 @@
"包含照片、讯息和位置信息的重要来电"
"包含附件的重要来电"
"工作来电"
- "WLAN 来电"
- "WLAN 工作来电"
+ "WLAN 来电"
+ "WLAN 工作来电"
"有疑似骚扰来电"
"收到视频通话邀请"
"无服务"
@@ -73,7 +73,7 @@
"接通视频通话"
"要进行呼叫,请先关闭飞行模式。"
"尚未注册网络。"
- "无法连接到移动网络。"
+ "无法连接到移动网络。"
"要拨打电话,请输入有效的电话号码。"
"无法拨打该电话。"
"正在启动 MMI 序列..."
@@ -134,8 +134,8 @@
"结束通话"
"电话会议"
"正在通话"
- "正在使用移动数据网络继续通话…"
- "无法切换到 WLAN 网络"
- "系统将使用移动网络继续视频通话。这可能会产生标准数据流量费。"
+ "正在使用移动数据继续通话…"
+ "无法切换到 WLAN 网络"
+ "系统将使用移动网络继续视频通话。这可能会产生标准数据流量费。"
"不再显示"
diff --git a/java/com/android/incallui/res/values-zh-rHK/strings.xml b/java/com/android/incallui/res/values-zh-rHK/strings.xml
index 5eb8892e9973f4a8b6ebd561144aa4229931bbc4..c4934eade7cc4609614db22532412ff4737c9d8c 100644
--- a/java/com/android/incallui/res/values-zh-rHK/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rHK/strings.xml
@@ -33,8 +33,8 @@
"來自 %s 的未接來電"
"通話中"
"正在進行工作通話"
- "正在進行 Wi-Fi 通話"
- "正在進行 Wi-Fi 工作通話"
+ "正在進行 Wi-Fi 通話"
+ "正在進行 Wi-Fi 工作通話"
"保留通話"
"來電"
"附有相片的來電"
@@ -55,8 +55,8 @@
"附有相片、訊息和位置的重要來電"
"附有附件的重要來電"
"工作來電"
- "Wi-Fi 來電"
- "Wi-Fi 工作來電"
+ "Wi-Fi 來電"
+ "Wi-Fi 工作來電"
"疑似收到垃圾來電"
"收到視像要求"
"沒有服務"
@@ -73,7 +73,7 @@
"接受視像通話"
"請先關閉飛行模式後再撥打電話。"
"未在網絡上完成註冊。"
- "無法連線至流動網絡。"
+ "無法使用流動網絡。"
"要撥打電話,請輸入有效的號碼。"
"無法通話。"
"開始 MMI 序列..."
@@ -134,8 +134,8 @@
"結束通話"
"會議通話"
"正在通話"
- "使用流動數據繼續通話…"
- "無法切換為 Wi-Fi 網絡"
- "視像通話仍會使用流動網絡 (可能需要支付標準數據用量費用)。"
+ "使用流動數據繼續通話…"
+ "無法切換為 Wi-Fi 網絡"
+ "視像通話仍會使用流動網絡 (可能需要支付標準數據用量費用)。"
"不要再顯示此訊息"
diff --git a/java/com/android/incallui/res/values-zh-rTW/strings.xml b/java/com/android/incallui/res/values-zh-rTW/strings.xml
index 9f028661e950db845ee62818de83da86bd2e5e5c..9b85a2862871c5804fc73a936b5a7cdd37dcfd57 100644
--- a/java/com/android/incallui/res/values-zh-rTW/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rTW/strings.xml
@@ -33,8 +33,8 @@
"來自 %s 的未接來電"
"通話中"
"進行中的公司通話"
- "撥出的 Wi-Fi 電話"
- "進行中的公司通話 (透過 Wi-Fi)"
+ "進行中的通話 (透過 Wi-Fi)"
+ "進行中的公司通話 (透過 Wi-Fi)"
"通話保留"
"來電"
"包含相片的來電"
@@ -55,8 +55,8 @@
"包含相片、訊息和位置資訊的重要來電"
"包含附件的重要來電"
"公司來電"
- "撥入的 Wi-Fi 電話"
- "公司來電 (透過 Wi-Fi)"
+ "來電 (透過 Wi-Fi)"
+ "公司來電 (透過 Wi-Fi)"
"可疑的騷擾/廣告來電"
"收到視訊要求"
"沒有服務"
@@ -73,7 +73,7 @@
"接聽視訊通話"
"撥號前,請先關閉飛航模式。"
"尚未註冊網路。"
- "無法連線到行動網路。"
+ "無法使用行動網路。"
"如要撥打電話,請輸入有效的號碼。"
"無法通話。"
"開始 MMI 序列…"
@@ -134,8 +134,8 @@
"結束通話"
"電話會議"
"通話中"
- "使用行動數據繼續進行通話…"
- "無法切換至 Wi-Fi 網路"
- "視訊通話將繼續透過行動網路進行 (可能需支付一般數據傳輸費用)。"
+ "使用行動網路繼續進行通話…"
+ "無法切換至 Wi-Fi 網路"
+ "視訊通話將繼續透過行動網路進行 (可能需支付一般數據傳輸費用)。"
"不要再顯示這項說明"
diff --git a/java/com/android/incallui/res/values-zu/strings.xml b/java/com/android/incallui/res/values-zu/strings.xml
index db415cc4553bd8a9ac44b286690b81d47f270438..bc5a92735820770640cf7e97ec4afca7c501bd37 100644
--- a/java/com/android/incallui/res/values-zu/strings.xml
+++ b/java/com/android/incallui/res/values-zu/strings.xml
@@ -33,8 +33,8 @@
"Uphuthelwe ikholi kusukela ku-%s"
"Ikholi eqhubekayo"
"Ikholi yomsebenzi eqhubekayo"
- "Ikholi ye-Wi-Fi eqhubekayo"
- "Ikholi yomsebenzi eqhubekayo ye-Wi-Fi"
+ "Ikholi ye-Wi-Fi eqhubekayo"
+ "Ikholi yomsebenzi eqhubekayo ye-Wi-Fi"
"Ibambile"
"Ikholi engenayo"
"Ikholi engenayo enesithombe"
@@ -55,8 +55,8 @@
"Ikholi engenayo ebalulekile enesithombe, umlayezo nendawo"
"Ikholi engenayo ebalulekile enokunamathiselwe kwi-imeyili"
"Ikholi engenayo yomsebenzi"
- "Ikholi ye-Wi-Fi engenayo"
- "Ikholi engenayo yomsebenzi ye-Wi-Fi"
+ "Ikholi ye-Wi-Fi engenayo"
+ "Ikholi engenayo yomsebenzi ye-Wi-Fi"
"Ikholi engenayo osolisayo kagaxekile"
"Isicelo sevidiyo engenayo"
"Ayikho isevisi"
@@ -73,7 +73,7 @@
"Thatha ikholi yevidiyo"
"Ukwenza ikholi, vala kuqala imodi Yendiza."
"Ayibhalisiwe kwinethiwekhi."
- "Inethiwekhi yeselula ayitholakali."
+ "Inethiwekhi yefoni ayitholakali"
"Ukuze wenze ikholi, faka inombolo evumelekile."
"Ayikwazi ukushaya."
"Iqalisa ukulandelana kwe-MMI..."
@@ -134,8 +134,8 @@
"Qeda ikholi"
"Ikholi yengqungquthela"
"Isecingweni"
- "Iqhuba ikholi isebenzisa idatha yeselula…"
- "Ayikwazanga ukushintshela kunethiwekhi ye-Wi-Fi"
- "Ikholi yevidiyo izohlala kunethiwekhi yeselula. Izindleko zedatha ejwayelekile zingasebenza."
+ "Iqhubekisa ikholi isebenzisa idatha yeselula…"
+ "Ayikwazanga ukushintshela kunethiwekhi ye-Wi-Fi"
+ "Ikholi yevidiyo izohlala ikunethiwekhi yeselula. Amashaji edatha avamile angasebenza."
"Ungabonisi lokhu futhi"
diff --git a/java/com/android/incallui/res/values/dimens.xml b/java/com/android/incallui/res/values/dimens.xml
index fb4934d015ad9677d8cb3c7de0709df41e430749..56b9ae158ed851401da72c2b86d688344f780588 100644
--- a/java/com/android/incallui/res/values/dimens.xml
+++ b/java/com/android/incallui/res/values/dimens.xml
@@ -58,6 +58,8 @@
48dp
+ 120dp
+
false
diff --git a/java/com/android/incallui/res/values/strings.xml b/java/com/android/incallui/res/values/strings.xml
index aede4289b08180cb6094c0c1755a65f2f811ba0a..4113313dff7c676a27fbf9a54f14d58a1a4b3741 100644
--- a/java/com/android/incallui/res/values/strings.xml
+++ b/java/com/android/incallui/res/values/strings.xml
@@ -78,10 +78,10 @@
Ongoing work call
- Ongoing Wi-Fi call
+ Ongoing Wi\u2011Fi call
- Ongoing Wi-Fi work call
+ Ongoing Wi\u2011Fi work call
On hold
@@ -126,10 +126,10 @@
Incoming work call
- Incoming Wi-Fi call
+ Incoming Wi\u2011Fi call
- Incoming Wi-Fi work call
+ Incoming Wi\u2011Fi work call
Incoming suspected spam call
@@ -190,7 +190,7 @@
This string is currently unused (see comments in InCallActivity.java.) -->
Not registered on network.
- Cellular network not available.
+ Mobile network not available.
To place a call, enter a valid number.
@@ -349,11 +349,11 @@
In call
- Continuing call using cellular data…
+ Continuing call using mobile data\u2026
- Couldn\'t switch to Wi-Fi network
- Video call will remain on cellular network. Standard
+ Couldn\'t switch to Wi\u2011Fi network
+ Video call will remain on the mobile network. Standard
data charges may apply.
Do not show this again
diff --git a/java/com/android/incallui/sessiondata/MultimediaFragment.java b/java/com/android/incallui/sessiondata/MultimediaFragment.java
index 85a60b6e3ae2e949f00e69dba1aecb0782ea14d7..3e6cdbbe00cf6b1285d25697d7ec9eeb0ae7bb7c 100644
--- a/java/com/android/incallui/sessiondata/MultimediaFragment.java
+++ b/java/com/android/incallui/sessiondata/MultimediaFragment.java
@@ -107,6 +107,7 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter {
public View onCreateView(
LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
if (isSpam) {
+ LogUtil.i("MultimediaFragment.onCreateView", "show spam layout");
return layoutInflater.inflate(R.layout.fragment_spam, viewGroup, false);
}
@@ -116,23 +117,30 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter {
if (hasMap && MapsComponent.get(getContext()).getMaps().isAvailable()) {
if (hasImage) {
if (hasSubject) {
+ LogUtil.i("MultimediaFragment.onCreateView", "show text, image, location layout");
return layoutInflater.inflate(
R.layout.fragment_composer_text_image_frag, viewGroup, false);
} else {
+ LogUtil.i("MultimediaFragment.onCreateView", "show image, location layout");
return layoutInflater.inflate(R.layout.fragment_composer_image_frag, viewGroup, false);
}
} else if (hasSubject) {
+ LogUtil.i("MultimediaFragment.onCreateView", "show text, location layout");
return layoutInflater.inflate(R.layout.fragment_composer_text_frag, viewGroup, false);
} else {
+ LogUtil.i("MultimediaFragment.onCreateView", "show location layout");
return layoutInflater.inflate(R.layout.fragment_composer_frag, viewGroup, false);
}
} else if (hasImage) {
if (hasSubject) {
+ LogUtil.i("MultimediaFragment.onCreateView", "show text, image layout");
return layoutInflater.inflate(R.layout.fragment_composer_text_image, viewGroup, false);
} else {
+ LogUtil.i("MultimediaFragment.onCreateView", "show image layout");
return layoutInflater.inflate(R.layout.fragment_composer_image, viewGroup, false);
}
} else {
+ LogUtil.i("MultimediaFragment.onCreateView", "show text layout");
return layoutInflater.inflate(R.layout.fragment_composer_text, viewGroup, false);
}
}
@@ -155,11 +163,11 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter {
((TextView) view.findViewById(R.id.spam_text)).setText(R.string.spam_message_text);
}
- TextView messageText = (TextView) view.findViewById(R.id.answer_message_text);
+ TextView messageText = view.findViewById(R.id.answer_message_text);
if (messageText != null) {
messageText.setText(getSubject());
}
- ImageView mainImage = (ImageView) view.findViewById(R.id.answer_message_image);
+ ImageView mainImage = view.findViewById(R.id.answer_message_image);
if (mainImage != null) {
Glide.with(this)
.load(getImageUri())
@@ -185,6 +193,7 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter {
Target target,
DataSource dataSource,
boolean isFirstResource) {
+ LogUtil.enterBlock("MultimediaFragment.onResourceReady");
view.findViewById(R.id.loading_spinner).setVisibility(View.GONE);
return false;
}
@@ -192,7 +201,7 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter {
.into(mainImage);
mainImage.setClipToOutline(true);
}
- FrameLayout fragmentHolder = (FrameLayout) view.findViewById(R.id.answer_message_frag);
+ FrameLayout fragmentHolder = view.findViewById(R.id.answer_message_frag);
if (fragmentHolder != null) {
fragmentHolder.setClipToOutline(true);
Fragment mapFragment =
@@ -202,7 +211,7 @@ public class MultimediaFragment extends Fragment implements AvatarPresenter {
.replace(R.id.answer_message_frag, mapFragment)
.commitNow();
}
- avatarImageView = ((ImageView) view.findViewById(R.id.answer_message_avatar));
+ avatarImageView = view.findViewById(R.id.answer_message_avatar);
if (avatarImageView != null) {
avatarImageView.setVisibility(showAvatar ? View.VISIBLE : View.GONE);
}
diff --git a/java/com/android/incallui/spam/SpamCallListListener.java b/java/com/android/incallui/spam/SpamCallListListener.java
index 547337eda0a59f9c8cc54a4cbdf4c1132aa69bfe..b9c70ebd06f28d4b851776868f7473ad8673ba71 100644
--- a/java/com/android/incallui/spam/SpamCallListListener.java
+++ b/java/com/android/incallui/spam/SpamCallListListener.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Icon;
import android.support.annotation.NonNull;
+import android.support.v4.os.BuildCompat;
import android.telecom.DisconnectCause;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
@@ -35,8 +36,7 @@ import com.android.dialer.location.GeoUtil;
import com.android.dialer.logging.ContactLookupResult;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
-import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.notification.NotificationChannelManager.Channel;
+import com.android.dialer.notification.NotificationChannelId;
import com.android.dialer.spam.Spam;
import com.android.incallui.R;
import com.android.incallui.call.CallList;
@@ -49,9 +49,8 @@ import java.util.Random;
* etc).
*/
public class SpamCallListListener implements CallList.Listener {
+ static final int NOTIFICATION_ID = 1;
- static final int NOTIFICATION_ID = R.id.notification_spam_call;
- private static final String TAG = "SpamCallListListener";
private final Context context;
private final Random random;
@@ -65,10 +64,6 @@ public class SpamCallListListener implements CallList.Listener {
this.random = rand;
}
- private static String pii(String pii) {
- return com.android.incallui.Log.pii(pii);
- }
-
@Override
public void onIncomingCall(final DialerCall call) {
String number = call.getNumber();
@@ -127,7 +122,6 @@ public class SpamCallListListener implements CallList.Listener {
if (call.isSpam()) {
maybeShowSpamCallNotification(call);
} else {
- LogUtil.d(TAG, "Showing not spam notification for number=" + pii(call.getNumber()));
maybeShowNonSpamCallNotification(call);
}
}
@@ -161,7 +155,7 @@ public class SpamCallListListener implements CallList.Listener {
if (callHistoryStatus == DialerCall.CALL_HISTORY_STATUS_PRESENT) {
return false;
} else if (callHistoryStatus == DialerCall.CALL_HISTORY_STATUS_UNKNOWN) {
- LogUtil.i(TAG, "DialerCall history status is unknown, returning false");
+ LogUtil.i("SpamCallListListener.shouldShowAfterCallNotification", "history status unknown");
return false;
}
@@ -171,7 +165,7 @@ public class SpamCallListListener implements CallList.Listener {
return false;
}
- LogUtil.i(TAG, "shouldShowAfterCallNotification, returning true");
+ LogUtil.i("SpamCallListListener.shouldShowAfterCallNotification", "returning true");
return true;
}
@@ -179,7 +173,7 @@ public class SpamCallListListener implements CallList.Listener {
* Creates a notification builder with properties common among the two after call notifications.
*/
private Notification.Builder createAfterCallNotificationBuilder(DialerCall call) {
- Builder builder =
+ Notification.Builder builder =
new Builder(context)
.setContentIntent(
createActivityPendingIntent(call, SpamNotificationActivity.ACTION_SHOW_DIALOG))
@@ -187,7 +181,9 @@ public class SpamCallListListener implements CallList.Listener {
.setPriority(Notification.PRIORITY_DEFAULT)
.setColor(context.getColor(R.color.dialer_theme_color))
.setSmallIcon(R.drawable.ic_call_end_white_24dp);
- NotificationChannelManager.applyChannel(builder, context, Channel.DEFAULT, null);
+ if (BuildCompat.isAtLeastO()) {
+ builder.setChannelId(NotificationChannelId.DEFAULT);
+ }
return builder;
}
@@ -234,21 +230,20 @@ public class SpamCallListListener implements CallList.Listener {
int thresholdForShowing = Spam.get(context).percentOfSpamNotificationsToShow();
if (thresholdForShowing == 0) {
LogUtil.d(
- TAG,
- "shouldThrottleSpamNotification, not showing - percentOfSpamNotificationsToShow is 0");
+ "SpamCallListListener.shouldThrottleSpamNotification",
+ "not showing - percentOfSpamNotificationsToShow is 0");
return true;
} else if (randomNumber < thresholdForShowing) {
LogUtil.d(
- TAG,
- "shouldThrottleSpamNotification, showing " + randomNumber + " < " + thresholdForShowing);
+ "SpamCallListListener.shouldThrottleSpamNotification",
+ "showing " + randomNumber + " < " + thresholdForShowing);
return false;
} else {
LogUtil.d(
- TAG,
- "shouldThrottleSpamNotification, not showing "
- + randomNumber
- + " >= "
- + thresholdForShowing);
+ "SpamCallListListener.shouldThrottleSpamNotification",
+ "not showing %d >= %d",
+ randomNumber,
+ thresholdForShowing);
return true;
}
}
@@ -257,15 +252,23 @@ public class SpamCallListListener implements CallList.Listener {
int randomNumber = random.nextInt(100);
int thresholdForShowing = Spam.get(context).percentOfNonSpamNotificationsToShow();
if (thresholdForShowing == 0) {
- LogUtil.d(TAG, "Not showing non spam notification: percentOfNonSpamNotificationsToShow is 0");
+ LogUtil.d(
+ "SpamCallListListener.shouldThrottleNonSpamNotification",
+ "not showing non spam notification: percentOfNonSpamNotificationsToShow is 0");
return true;
} else if (randomNumber < thresholdForShowing) {
LogUtil.d(
- TAG, "Showing non spam notification: " + randomNumber + " < " + thresholdForShowing);
+ "SpamCallListListener.shouldThrottleNonSpamNotification",
+ "showing non spam notification: %d < %d",
+ randomNumber,
+ thresholdForShowing);
return false;
} else {
LogUtil.d(
- TAG, "Not showing non spam notification:" + randomNumber + " >= " + thresholdForShowing);
+ "SpamCallListListener.shouldThrottleNonSpamNotification",
+ "not showing non spam notification: %d >= %d",
+ randomNumber,
+ thresholdForShowing);
return true;
}
}
diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java
index 6e45f928a56e42bd7cddacd048acee6b705acc7d..609cb691ecf2579835e749b7ebeb81401c0a9532 100644
--- a/java/com/android/incallui/video/impl/VideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/VideoCallFragment.java
@@ -122,6 +122,10 @@ public class VideoCallFragment extends Fragment
outline.setOval(x - radius, y - radius, x + radius, y + radius);
}
};
+
+ // Must use a named method reference as otherwise they do not match.
+ // https://stackoverflow.com/questions/28190304/two-exact-method-references-are-not-equal
+ private final Runnable updatePreviewVideoIfSafe = this::updatePreviewVideoScaling;
private InCallScreenDelegate inCallScreenDelegate;
private VideoCallScreenDelegate videoCallScreenDelegate;
private InCallButtonUiDelegate inCallButtonUiDelegate;
@@ -350,6 +354,9 @@ public class VideoCallFragment extends Fragment
super.onPause();
LogUtil.i("VideoCallFragment.onPause", null);
inCallScreenDelegate.onInCallScreenPaused();
+
+ // If this is scheduled we should remove it
+ ThreadUtil.getUiThreadHandler().removeCallbacks(updatePreviewVideoIfSafe);
}
@Override
@@ -1050,7 +1057,7 @@ public class VideoCallFragment extends Fragment
previewOffBlurredImageView.setClipToOutline(true);
// Wait until the layout pass has finished before updating the scaling
- ThreadUtil.postOnUiThread(this::updatePreviewVideoScaling);
+ ThreadUtil.postOnUiThread(updatePreviewVideoIfSafe);
}
private void updateVideoOffViews() {
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index 7da74c057be6fa51b86d0858aad5deed7f67420e..34c3e2ca9bd009e33bbb7757f2e6e7a4102bbabd 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -17,6 +17,7 @@
package com.android.incallui.videotech;
import android.content.Context;
+import android.support.annotation.Nullable;
import com.android.incallui.video.protocol.VideoCallScreen;
import com.android.incallui.video.protocol.VideoCallScreenDelegate;
import com.android.incallui.videotech.utils.SessionModificationState;
@@ -41,6 +42,8 @@ public interface VideoTech {
void onCallStateChanged(Context context, int newState);
+ void onRemovedFromCallList();
+
@SessionModificationState
int getSessionModificationState();
@@ -62,7 +65,7 @@ public interface VideoTech {
void unpause();
- void setCamera(String cameraId);
+ void setCamera(@Nullable String cameraId);
void setDeviceOrientation(int rotation);
diff --git a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
index d0a111d62c08d18be513b042469bab86706e3b04..85eb64ee45ca0cea77443cd11d691141f289aea0 100644
--- a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
+++ b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
@@ -17,6 +17,7 @@
package com.android.incallui.videotech.empty;
import android.content.Context;
+import android.support.annotation.Nullable;
import com.android.dialer.common.Assert;
import com.android.incallui.video.protocol.VideoCallScreen;
import com.android.incallui.video.protocol.VideoCallScreenDelegate;
@@ -55,6 +56,9 @@ public class EmptyVideoTech implements VideoTech {
@Override
public void onCallStateChanged(Context context, int newState) {}
+ @Override
+ public void onRemovedFromCallList() {}
+
@Override
public int getSessionModificationState() {
return SessionModificationState.NO_REQUEST;
@@ -90,7 +94,7 @@ public class EmptyVideoTech implements VideoTech {
public void unpause() {}
@Override
- public void setCamera(String cameraId) {}
+ public void setCamera(@Nullable String cameraId) {}
@Override
public void setDeviceOrientation(int rotation) {}
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 2a0b7c50414bac4e118cc4ac8eb16ec2dbd06857..a6cef7b816ab5c3c5f32a13e4dd2e2af6e4b2042 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -18,6 +18,7 @@ package com.android.incallui.videotech.ims;
import android.content.Context;
import android.os.Build;
+import android.support.annotation.Nullable;
import android.telecom.Call;
import android.telecom.Call.Details;
import android.telecom.VideoProfile;
@@ -119,6 +120,9 @@ public class ImsVideoTech implements VideoTech {
previousVideoState = newVideoState;
}
+ @Override
+ public void onRemovedFromCallList() {}
+
@Override
public int getSessionModificationState() {
return sessionModificationState;
@@ -233,7 +237,7 @@ public class ImsVideoTech implements VideoTech {
}
@Override
- public void setCamera(String cameraId) {
+ public void setCamera(@Nullable String cameraId) {
call.getVideoCall().setCamera(cameraId);
call.getVideoCall().requestCameraCapabilities();
}
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
index 386afdc455f8b0b1657da16c7e0614866ab18ae6..55ee2db2181ac0e9eac0f73b011168993086244c 100644
--- a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -17,10 +17,13 @@
package com.android.incallui.videotech.lightbringer;
import android.content.Context;
+import android.os.Build;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.telecom.Call;
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.lightbringer.Lightbringer;
import com.android.dialer.lightbringer.LightbringerListener;
import com.android.incallui.video.protocol.VideoCallScreen;
@@ -31,15 +34,18 @@ import com.android.incallui.videotech.utils.SessionModificationState;
public class LightbringerTech implements VideoTech, LightbringerListener {
private final Lightbringer lightbringer;
private final VideoTechListener listener;
+ private final Call call;
private final String callingNumber;
private int callState = Call.STATE_NEW;
public LightbringerTech(
@NonNull Lightbringer lightbringer,
@NonNull VideoTechListener listener,
+ @NonNull Call call,
@NonNull String callingNumber) {
this.lightbringer = Assert.isNotNull(lightbringer);
this.listener = Assert.isNotNull(listener);
+ this.call = Assert.isNotNull(call);
this.callingNumber = Assert.isNotNull(callingNumber);
lightbringer.registerListener(this);
@@ -47,10 +53,11 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
@Override
public boolean isAvailable(Context context) {
- return ConfigProviderBindings.get(context)
- .getBoolean("enable_lightbringer_video_upgrade", false)
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
+ && ConfigProviderBindings.get(context).getBoolean("enable_lightbringer_video_upgrade", true)
&& callState == Call.STATE_ACTIVE
- && lightbringer.isReachable(context, callingNumber);
+ && lightbringer.supportsUpgrade(context, callingNumber)
+ && TelecomManagerCompat.supportsHandover();
}
@Override
@@ -83,6 +90,9 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
callState = newState;
}
+ @Override
+ public void onRemovedFromCallList() {}
+
@Override
public int getSessionModificationState() {
return SessionModificationState.NO_REQUEST;
@@ -90,7 +100,7 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
@Override
public void upgradeToVideo() {
- // TODO: upgrade to a video call
+ lightbringer.requestUpgrade(call);
}
@Override
@@ -124,17 +134,13 @@ public class LightbringerTech implements VideoTech, LightbringerListener {
}
@Override
- public void pause() {
- throw Assert.createUnsupportedOperationFailException();
- }
+ public void pause() {}
@Override
- public void unpause() {
- throw Assert.createUnsupportedOperationFailException();
- }
+ public void unpause() {}
@Override
- public void setCamera(String cameraId) {
+ public void setCamera(@Nullable String cameraId) {
throw Assert.createUnsupportedOperationFailException();
}
diff --git a/java/com/android/voicemail/impl/TelephonyVvmConfigManager.java b/java/com/android/voicemail/impl/TelephonyVvmConfigManager.java
index b4def2fc3dd417d014cdcca039116237fe65f483..046113c26a4160f4dcb0bfd9fd86283dec8019a4 100644
--- a/java/com/android/voicemail/impl/TelephonyVvmConfigManager.java
+++ b/java/com/android/voicemail/impl/TelephonyVvmConfigManager.java
@@ -21,7 +21,7 @@ import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.util.ArrayMap;
-import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.voicemail.impl.utils.XmlUtils;
import java.io.IOException;
import java.util.ArrayList;
diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index 83c0523bfa49e63bb02cc2314a09245a64f94674..83ce6c58886c6710294d9f05bc70ec9b85a0276e 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -24,8 +24,8 @@ import android.support.v4.os.BuildCompat;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.voicemail.VisualVoicemailTypeExtensions;
import com.android.voicemail.VoicemailClient;
import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
diff --git a/java/com/android/voicemail/impl/VoicemailModule.java b/java/com/android/voicemail/impl/VoicemailModule.java
index 5a4e739f5b10ca8d8a4a3c0d277bd9e781f2b8e3..e689e47d2e77b3d488b8aea417ec21312bfd0565 100644
--- a/java/com/android/voicemail/impl/VoicemailModule.java
+++ b/java/com/android/voicemail/impl/VoicemailModule.java
@@ -18,6 +18,7 @@ package com.android.voicemail.impl;
import android.content.Context;
import android.support.v4.os.BuildCompat;
+import com.android.dialer.inject.ApplicationContext;
import com.android.voicemail.VoicemailClient;
import com.android.voicemail.VoicemailPermissionHelper;
import com.android.voicemail.stub.StubVoicemailClient;
@@ -31,7 +32,7 @@ public final class VoicemailModule {
@Provides
@Singleton
- static VoicemailClient provideVoicemailClient(Context context) {
+ static VoicemailClient provideVoicemailClient(@ApplicationContext Context context) {
if (!BuildCompat.isAtLeastO()) {
VvmLog.i("VoicemailModule.provideVoicemailClient", "SDK below O");
return new StubVoicemailClient();
diff --git a/java/com/android/voicemail/impl/imap/ImapHelper.java b/java/com/android/voicemail/impl/imap/ImapHelper.java
index f1bc8b221f1c99e63ef97e5b072d86294bba8a91..94abe9badcae99da00348e811e0d00124825c405 100644
--- a/java/com/android/voicemail/impl/imap/ImapHelper.java
+++ b/java/com/android/voicemail/impl/imap/ImapHelper.java
@@ -251,13 +251,18 @@ public class ImapHelper implements Closeable {
long time = messageDetails.getSentDate().getTime();
String number = getNumber(messageDetails.getFrom());
boolean isRead = Arrays.asList(messageDetails.getFlags()).contains(Flag.SEEN);
- return Voicemail.createForInsertion(time, number)
- .setPhoneAccount(mPhoneAccount)
- .setSourcePackage(mContext.getPackageName())
- .setSourceData(messageDetails.getUid())
- .setIsRead(isRead)
- .setTranscription(listener.getVoicemailTranscription())
- .build();
+ Long duration = messageDetails.getDuration();
+ Voicemail.Builder builder =
+ Voicemail.createForInsertion(time, number)
+ .setPhoneAccount(mPhoneAccount)
+ .setSourcePackage(mContext.getPackageName())
+ .setSourceData(messageDetails.getUid())
+ .setIsRead(isRead)
+ .setTranscription(listener.getVoicemailTranscription());
+ if (duration != null) {
+ builder.setDuration(duration);
+ }
+ return builder.build();
}
/**
diff --git a/java/com/android/voicemail/impl/mail/Message.java b/java/com/android/voicemail/impl/mail/Message.java
index aea5d3eadaeb7fad8188a12669d88e57413fc5de..ca65d3d73cbe474b7677c78908c7792ff9a6d2d0 100644
--- a/java/com/android/voicemail/impl/mail/Message.java
+++ b/java/com/android/voicemail/impl/mail/Message.java
@@ -15,6 +15,7 @@
*/
package com.android.voicemail.impl.mail;
+import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import java.util.Date;
import java.util.HashSet;
@@ -64,6 +65,9 @@ public abstract class Message implements Part, Body {
public abstract void setSentDate(Date sentDate) throws MessagingException;
+ @Nullable
+ public abstract Long getDuration() throws MessagingException;
+
public abstract Address[] getRecipients(String type) throws MessagingException;
public abstract void setRecipients(String type, Address[] addresses) throws MessagingException;
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeHeader.java b/java/com/android/voicemail/impl/mail/internet/MimeHeader.java
index d41cdb3e4e52a2edce84c80f2fde1c16bf90b8e2..8f0817650ae902ae065545844fa49d9b6a069647 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeHeader.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeHeader.java
@@ -36,6 +36,7 @@ public class MimeHeader {
public static final String HEADER_CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
public static final String HEADER_CONTENT_DISPOSITION = "Content-Disposition";
public static final String HEADER_CONTENT_ID = "Content-ID";
+ public static final String HEADER_CONTENT_DURATION = "Content-Duration";
/** Fields that should be omitted when writing the header using writeTo() */
private static final String[] WRITE_OMIT_FIELDS = {
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
index 58972066035056b17f5d28312a98f9b7b07383e6..39378a092754d3bbf02ecda03c393aaab2c5de36 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
@@ -15,7 +15,9 @@
*/
package com.android.voicemail.impl.mail.internet;
+import android.support.annotation.Nullable;
import android.text.TextUtils;
+import com.android.voicemail.impl.VvmLog;
import com.android.voicemail.impl.mail.Address;
import com.android.voicemail.impl.mail.Body;
import com.android.voicemail.impl.mail.BodyPart;
@@ -196,6 +198,28 @@ public class MimeMessage extends Message {
this.mSentDate = sentDate;
}
+ @Override
+ @Nullable
+ public Long getDuration() {
+ String durationHeader = null;
+ try {
+ durationHeader = getFirstHeader(MimeHeader.HEADER_CONTENT_DURATION);
+ } catch (MessagingException e) {
+ VvmLog.e("MimeMessage.getDuration", "cannot retrieve header: ", e);
+ return null;
+ }
+ if (durationHeader == null) {
+ VvmLog.w("MimeMessage.getDuration", "message missing Content-Duration header");
+ return null;
+ }
+ try {
+ return Long.valueOf(durationHeader);
+ } catch (NumberFormatException e) {
+ VvmLog.w("MimeMessage.getDuration", "cannot parse duration " + durationHeader);
+ return null;
+ }
+ }
+
@Override
public String getContentType() throws MessagingException {
final String contentType = getFirstHeader(MimeHeader.HEADER_CONTENT_TYPE);
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java b/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java
index 88ec0ed903df9d5c077cd5dfee7b45b89adaff23..fd56952d7c2f062c82bf61988d34cff56c6f3219 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java
@@ -27,7 +27,7 @@ public final class ImapConstants {
public static final String FETCH_FIELD_BODY_PEEK_SANE =
String.format(Locale.US, "BODY.PEEK[]<0.%d>", ImapStore.FETCH_BODY_SANE_SUGGESTED_SIZE);
public static final String FETCH_FIELD_HEADERS =
- "BODY.PEEK[HEADER.FIELDS (date subject from content-type to cc message-id)]";
+ "BODY.PEEK[HEADER.FIELDS (date subject from content-type to cc message-id content-duration)]";
public static final String ALERT = "ALERT";
public static final String APPEND = "APPEND";
diff --git a/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java b/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
index 1cdbbfbca038e346d4f84c23bc0a8315bf60e82d..d9a06494e49cec522192ac1e893a821471ebc320 100644
--- a/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
+++ b/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
@@ -31,7 +31,7 @@ import android.text.Html;
import android.text.Spanned;
import android.text.style.URLSpan;
import android.util.ArrayMap;
-import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.voicemail.impl.ActivationTask;
import com.android.voicemail.impl.Assert;
import com.android.voicemail.impl.OmtpEvents;
diff --git a/java/com/android/voicemail/impl/res/xml/vvm_config.xml b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
index b03115abb7b87d3ed9786a4a88f86afdee27e56c..2bac66be54dfa320086e57b37e4c47aa27d7408f 100644
--- a/java/com/android/voicemail/impl/res/xml/vvm_config.xml
+++ b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
@@ -21,75 +21,6 @@
-
-
-
- vvm_carrier_flag_20610
-
-
-
-
-
- 8082
- vvm_type_omtp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 21101
-
-
-
- vvm_type_omtp
-
-
-
-
-
-
-
-
-
- vvm_carrier_flag_27099
-
-
-
-
-
- 64085
- vvm_type_omtp
-
-
-
-
-
-
-
-
diff --git a/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java b/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
index ac5f3cac98ea50233dc8a4bde1e7a6795fdf48b1..4860649b350b8a880a2e3ea0498ce33a908d8cc7 100644
--- a/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
+++ b/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
@@ -22,6 +22,7 @@ import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
+import android.provider.Settings;
import android.support.annotation.Nullable;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
@@ -29,7 +30,6 @@ import com.android.dialer.common.Assert;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.notification.NotificationChannelManager.Channel;
import com.android.voicemail.VoicemailClient;
import com.android.voicemail.VoicemailComponent;
import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
@@ -43,8 +43,7 @@ import com.android.voicemail.impl.sync.VvmAccountManager;
*/
@TargetApi(VERSION_CODES.O)
public class VoicemailSettingsFragment extends PreferenceFragment
- implements Preference.OnPreferenceChangeListener,
- VvmAccountManager.Listener {
+ implements Preference.OnPreferenceChangeListener, VvmAccountManager.Listener {
private static final String TAG = "VmSettingsActivity";
@@ -83,9 +82,8 @@ public class VoicemailSettingsFragment extends PreferenceFragment
voicemailNotificationPreference =
findPreference(getString(R.string.voicemail_notifications_key));
- voicemailNotificationPreference.setIntent(
- NotificationChannelManager.getInstance()
- .getSettingsIntentForChannel(getContext(), Channel.VOICEMAIL, phoneAccountHandle));
+ voicemailNotificationPreference.setIntent(getNotificationSettingsIntent());
+
voicemailNotificationPreference.setOnPreferenceClickListener(
new OnPreferenceClickListener() {
@Override
@@ -233,4 +231,12 @@ public class VoicemailSettingsFragment extends PreferenceFragment
updateChangePin();
}
}
+
+ private Intent getNotificationSettingsIntent() {
+ String channelId =
+ NotificationChannelManager.getVoicemailChannelId(getContext(), phoneAccountHandle);
+ return new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
+ .putExtra(Settings.EXTRA_CHANNEL_ID, channelId)
+ .putExtra(Settings.EXTRA_APP_PACKAGE, getContext().getPackageName());
+ }
}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
index 17c9be73bfa76075798245a552242ee3c0800929..0c83615b46b0947ffcac779144bdb81633b62f4f 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
@@ -16,7 +16,7 @@
package com.android.voicemail.impl.transcribe;
import android.content.Context;
-import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.configprovider.ConfigProviderBindings;
/** Provides configuration values needed to connect to the transcription server. */
public class TranscriptionConfigProvider {