Merge "Suppress DTMF tone start when a call is already held."
am: 948bfab80a
Change-Id: I66c159687b9352c279f057d3fd92505c93282108
diff --git a/res/xml/layout_blocked_number.xml b/res/xml/layout_blocked_number.xml
index 94cdbae..fbd7de3 100644
--- a/res/xml/layout_blocked_number.xml
+++ b/res/xml/layout_blocked_number.xml
@@ -28,8 +28,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
- android:layout_toStartOf="@+id/delete_blocked_number"
- android:paddingTop="@dimen/blocked_numbers_delete_icon_padding" />
+ android:paddingTop="@dimen/blocked_numbers_delete_icon_padding"
+ android:textDirection="ltr" />
<ImageView
android:id="@+id/delete_blocked_number"
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index cdda387..58f489c 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -756,6 +756,10 @@
// We are bound, and we are connected.
adjustServiceBindingsForEmergency();
+ // This is in case an emergency call is added while there is an existing call.
+ mEmergencyCallHelper.maybeGrantTemporaryLocationPermission(call,
+ mCallsManager.getCurrentUserHandle());
+
Log.i(this, "onCallAdded: %s", call);
// Track the call if we don't already know about it.
addCall(call);
@@ -807,6 +811,8 @@
// Check again to make sure there are no active calls.
if (mCallsManager.getCalls().isEmpty()) {
unbindFromServices();
+
+ mEmergencyCallHelper.maybeRevokeTemporaryLocationPermission();
}
}
}.prepare(), mTimeoutsAdapter.getCallRemoveUnbindInCallServicesDelay(
diff --git a/src/com/android/server/telecom/settings/BlockedNumbersAdapter.java b/src/com/android/server/telecom/settings/BlockedNumbersAdapter.java
index 705e031..1278a4b 100644
--- a/src/com/android/server/telecom/settings/BlockedNumbersAdapter.java
+++ b/src/com/android/server/telecom/settings/BlockedNumbersAdapter.java
@@ -41,12 +41,9 @@
super.bindView(view, context, cursor);
final String rawNumber = cursor.getString(cursor.getColumnIndex(
BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER));
- String formattedNumber = PhoneNumberUtils.formatNumber(rawNumber,
- BlockedNumbersUtil.getLocaleDefaultToUS());
- final String finalFormattedNumber = formattedNumber == null ? rawNumber : formattedNumber;
-
+ final String formattedNumber = BlockedNumbersUtil.formatNumber(rawNumber);
TextView numberView = (TextView) view.findViewById(R.id.blocked_number);
- Spannable numberSpannable = new SpannableString(finalFormattedNumber);
+ Spannable numberSpannable = new SpannableString(formattedNumber);
PhoneNumberUtils.addTtsSpan(numberSpannable, 0, numberSpannable.length());
numberView.setText(numberSpannable);
@@ -54,7 +51,7 @@
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- showDeleteBlockedNumberDialog(context, rawNumber, finalFormattedNumber);
+ showDeleteBlockedNumberDialog(context, rawNumber, formattedNumber);
}
});
}
diff --git a/src/com/android/server/telecom/settings/BlockedNumbersUtil.java b/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
index 5d2e238..b75c4b3 100644
--- a/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
+++ b/src/com/android/server/telecom/settings/BlockedNumbersUtil.java
@@ -18,11 +18,11 @@
import android.content.Context;
import android.telephony.PhoneNumberUtils;
+import android.text.BidiFormatter;
import android.text.Spannable;
import android.text.SpannableString;
+import android.text.TextDirectionHeuristics;
import android.widget.Toast;
-import com.android.server.telecom.R;
-
import java.util.Locale;
public final class BlockedNumbersUtil {
@@ -40,18 +40,28 @@
}
/**
+ * Attempts to format the number, or returns the original number if it is not formattable. Also
+ * wraps the returned number as LTR.
+ */
+ public static String formatNumber(String number){
+ String formattedNumber = PhoneNumberUtils.formatNumber(number, getLocaleDefaultToUS());
+ return BidiFormatter.getInstance().unicodeWrap(
+ formattedNumber == null ? number : formattedNumber,
+ TextDirectionHeuristics.LTR);
+ }
+
+ /**
* Formats the number in the string and shows a toast for {@link Toast#LENGTH_SHORT}.
*
* <p>Adds the number in a TsSpan so that it reads as a phone number when talk back is on.
*/
public static void showToastWithFormattedNumber(Context context, int stringId, String number) {
- String formattedNumber = PhoneNumberUtils.formatNumber(number, getLocaleDefaultToUS());
- String finalFormattedNumber = formattedNumber == null ? number : formattedNumber;
- String message = context.getString(stringId, finalFormattedNumber);
- int startingPosition = message.indexOf(finalFormattedNumber);
+ String formattedNumber = formatNumber(number);
+ String message = context.getString(stringId, formattedNumber);
+ int startingPosition = message.indexOf(formattedNumber);
Spannable messageSpannable = new SpannableString(message);
PhoneNumberUtils.addTtsSpan(messageSpannable, startingPosition,
- startingPosition + finalFormattedNumber.length());
+ startingPosition + formattedNumber.length());
Toast.makeText(
context,
messageSpannable,
diff --git a/testapps/src/com/android/server/telecom/testapps/TestRttActivity.java b/testapps/src/com/android/server/telecom/testapps/TestRttActivity.java
index 9bb6977..78ebbe5 100644
--- a/testapps/src/com/android/server/telecom/testapps/TestRttActivity.java
+++ b/testapps/src/com/android/server/telecom/testapps/TestRttActivity.java
@@ -93,7 +93,8 @@
}
// inner read loop
while (true) {
- String receivedText = rttCall.read();
+ String receivedText;
+ receivedText = rttCall.read();
if (receivedText == null) {
if (Thread.currentThread().isInterrupted()) {
break begin;