summaryrefslogtreecommitdiff
path: root/InCallUI
diff options
context:
space:
mode:
Diffstat (limited to 'InCallUI')
-rw-r--r--InCallUI/Android.mk18
-rw-r--r--InCallUI/src/com/android/incallui/AudioModeProvider.java3
-rw-r--r--InCallUI/src/com/android/incallui/CallButtonPresenter.java19
-rw-r--r--InCallUI/src/com/android/incallui/CallHandlerService.java5
-rw-r--r--InCallUI/src/com/android/incallui/CallList.java8
-rw-r--r--InCallUI/src/com/android/incallui/CallerInfo.java67
-rw-r--r--InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java19
-rw-r--r--InCallUI/src/com/android/incallui/ContactInfoCache.java10
-rw-r--r--InCallUI/src/com/android/incallui/InCallActivity.java2
-rw-r--r--InCallUI/src/com/android/incallui/InCallPresenter.java2
10 files changed, 61 insertions, 92 deletions
diff --git a/InCallUI/Android.mk b/InCallUI/Android.mk
deleted file mode 100644
index 74c91ebfd..000000000
--- a/InCallUI/Android.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := com.android.services.telephony.common \
- guava \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := InCallUI
-LOCAL_CERTIFICATE := platform
-LOCAL_PRIVELEGED_MODULE := false
-
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-
-include $(BUILD_PACKAGE)
-
-# Build the test package
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/InCallUI/src/com/android/incallui/AudioModeProvider.java b/InCallUI/src/com/android/incallui/AudioModeProvider.java
index 870087565..407aa3a0f 100644
--- a/InCallUI/src/com/android/incallui/AudioModeProvider.java
+++ b/InCallUI/src/com/android/incallui/AudioModeProvider.java
@@ -16,13 +16,12 @@
package com.android.incallui;
-import com.google.android.collect.Lists;
+import com.google.common.collect.Lists;
import com.android.services.telephony.common.AudioMode;
import java.util.List;
-
/**
* Proxy class for getting and setting the audio mode.
*/
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index be257378f..67a642b06 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -16,6 +16,8 @@
package com.android.incallui;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.contacts.common.util.TelephonyManagerUtils;
import com.android.incallui.AudioModeProvider.AudioModeListener;
import com.android.incallui.InCallPresenter.InCallState;
import com.android.incallui.InCallPresenter.InCallStateListener;
@@ -24,7 +26,7 @@ import com.android.services.telephony.common.AudioMode;
import com.android.services.telephony.common.Call;
import com.android.services.telephony.common.Call.Capabilities;
-import android.telephony.PhoneNumberUtils;
+import android.app.Fragment;
/**
* Logic for call buttons.
@@ -66,6 +68,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
@Override
public void onStateChange(InCallState state, CallList callList) {
+ CallButtonUi ui = getUi();
if (state == InCallState.OUTGOING) {
mCall = callList.getOutgoingCall();
@@ -76,12 +79,18 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
// (On previous releases we showed it when in-call shows up, before waiting for
// OUTGOING. We may want to do that once we start showing "Voice mail" label on
// the dialpad too.)
- if (mPreviousState == InCallState.OUTGOING
- && mCall != null && PhoneNumberUtils.isVoiceMailNumber(mCall.getNumber())) {
- getUi().displayDialpad(true);
+ if (ui != null) {
+ final Fragment callButtonFragment = (Fragment) ui;
+ if (mPreviousState == InCallState.OUTGOING && mCall != null
+ && TelephonyManagerUtils.isVoiceMailNumber(mCall.getNumber(),
+ callButtonFragment.getActivity())) {
+ ui.displayDialpad(true);
+ }
}
} else if (state == InCallState.INCOMING) {
- getUi().displayDialpad(false);
+ if (ui != null) {
+ ui.displayDialpad(false);
+ }
mCall = null;
} else {
mCall = null;
diff --git a/InCallUI/src/com/android/incallui/CallHandlerService.java b/InCallUI/src/com/android/incallui/CallHandlerService.java
index 06b10ab23..ebd20c307 100644
--- a/InCallUI/src/com/android/incallui/CallHandlerService.java
+++ b/InCallUI/src/com/android/incallui/CallHandlerService.java
@@ -233,7 +233,10 @@ public class CallHandlerService extends Service {
*/
private class MainHandler extends Handler {
MainHandler() {
- super(getApplicationContext().getMainLooper(), null, true);
+ // TODO: Evaluate whether we need to send messages asynchronously. The Handler
+ // implementation in the public API handles message sending synchronously, which may
+ // cause deadlocks.
+ super(getApplicationContext().getMainLooper());
}
@Override
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java
index ba123b0c1..125ec164d 100644
--- a/InCallUI/src/com/android/incallui/CallList.java
+++ b/InCallUI/src/com/android/incallui/CallList.java
@@ -16,9 +16,9 @@
package com.android.incallui;
-import com.google.android.collect.Lists;
-import com.google.android.collect.Maps;
-import com.google.android.collect.Sets;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import com.google.common.base.Preconditions;
import android.os.Handler;
@@ -49,7 +49,7 @@ public class CallList {
private final HashMap<Integer, Call> mCallMap = Maps.newHashMap();
private final HashMap<Integer, ArrayList<String>> mCallTextReponsesMap =
Maps.newHashMap();
- private final Set<Listener> mListeners = Sets.newArraySet();
+ private final Set<Listener> mListeners = Sets.newHashSet();
private final HashMap<Integer, List<CallUpdateListener>> mCallUpdateListenerMap = Maps
.newHashMap();
diff --git a/InCallUI/src/com/android/incallui/CallerInfo.java b/InCallUI/src/com/android/incallui/CallerInfo.java
index ea6ebd9f3..2e89e48d9 100644
--- a/InCallUI/src/com/android/incallui/CallerInfo.java
+++ b/InCallUI/src/com/android/incallui/CallerInfo.java
@@ -16,29 +16,27 @@
package com.android.incallui;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.contacts.common.util.TelephonyManagerUtils;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
-import android.location.Country;
-import android.location.CountryDetector;
import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.PhoneLookup;
import android.provider.ContactsContract.RawContacts;
import android.telephony.PhoneNumberUtils;
-import android.telephony.TelephonyManager;
import android.text.TextUtils;
-import com.android.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
-import com.android.i18n.phonenumbers.NumberParseException;
-import com.android.i18n.phonenumbers.PhoneNumberUtil;
-import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
+import com.google.i18n.phonenumbers.NumberParseException;
+import com.google.i18n.phonenumbers.PhoneNumberUtil;
+import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
import java.util.Locale;
-
/**
* Looks up caller information for the given phone number.
*
@@ -195,7 +193,7 @@ public class CallerInfo {
if (typeColumnIndex != -1) {
info.numberType = cursor.getInt(typeColumnIndex);
info.numberLabel = cursor.getString(columnIndex);
- info.phoneLabel = Phone.getDisplayLabel(context,
+ info.phoneLabel = Phone.getTypeLabel(context.getResources(),
info.numberType, info.numberLabel)
.toString();
}
@@ -274,10 +272,10 @@ public class CallerInfo {
// Change the callerInfo number ONLY if it is an emergency number
// or if it is the voicemail number. If it is either, take a
// shortcut and skip the query.
- if (PhoneNumberUtils.isLocalEmergencyNumber(number, context)) {
+ if (PhoneNumberHelper.isLocalEmergencyNumber(number, context)) {
return new CallerInfo().markAsEmergency(context);
- } else if (PhoneNumberUtils.isVoiceMailNumber(number)) {
- return new CallerInfo().markAsVoiceMail();
+ } else if (TelephonyManagerUtils.isVoiceMailNumber(number, context)) {
+ return new CallerInfo().markAsVoiceMail(context);
}
Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
@@ -307,8 +305,8 @@ public class CallerInfo {
static CallerInfo doSecondaryLookupIfNecessary(Context context,
String number, CallerInfo previousResult) {
if (!previousResult.contactExists
- && PhoneNumberUtils.isUriNumber(number)) {
- String username = PhoneNumberUtils.getUsernameFromUriNumber(number);
+ && PhoneNumberHelper.isUriNumber(number)) {
+ String username = PhoneNumberHelper.getUsernameFromUriNumber(number);
if (PhoneNumberUtils.isGlobalPhoneNumber(username)) {
previousResult = getCallerInfo(context,
Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
@@ -396,13 +394,14 @@ public class CallerInfo {
*/
// TODO: As in the emergency number handling, we end up writing a
// string in the phone number field.
- /* package */ CallerInfo markAsVoiceMail() {
+ /* package */ CallerInfo markAsVoiceMail(Context context) {
mIsVoiceMail = true;
try {
- String voiceMailLabel = TelephonyManager.getDefault().getVoiceMailAlphaTag();
-
- phoneNumber = voiceMailLabel;
+ // For voicemail calls, we display the voice mail tag
+ // instead of the real phone number in the "number"
+ // field.
+ phoneNumber = TelephonyManagerUtils.getVoiceMailAlphaTag(context);
} catch (SecurityException se) {
// Should never happen: if this process does not have
// permission to retrieve VM tag, it should not have
@@ -534,7 +533,7 @@ public class CallerInfo {
PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
Locale locale = context.getResources().getConfiguration().locale;
- String countryIso = getCurrentCountryIso(context, locale);
+ String countryIso = TelephonyManagerUtils.getCurrentCountryIso(context, locale);
PhoneNumber pn = null;
try {
Log.v(TAG, "parsing '" + number
@@ -550,37 +549,9 @@ public class CallerInfo {
String description = geocoder.getDescriptionForNumber(pn, locale);
Log.v(TAG, "- got description: '" + description + "'");
return description;
- } else {
- return null;
}
- }
-
- /**
- * @return The ISO 3166-1 two letters country code of the country the user
- * is in.
- */
- private static String getCurrentCountryIso(Context context, Locale locale) {
- String countryIso = null;
- CountryDetector detector = (CountryDetector) context.getSystemService(
- Context.COUNTRY_DETECTOR);
- if (detector != null) {
- Country country = detector.detectCountry();
- if (country != null) {
- countryIso = country.getCountryIso();
- } else {
- Log.e(TAG, "CountryDetector.detectCountry() returned null.");
- }
- }
- if (countryIso == null) {
- countryIso = locale.getCountry();
- Log.w(TAG, "No CountryDetector; falling back to countryIso based on locale: "
- + countryIso);
- }
- return countryIso;
- }
- protected static String getCurrentCountryIso(Context context) {
- return getCurrentCountryIso(context, Locale.getDefault());
+ return null;
}
/**
diff --git a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
index c09baf210..a186d37fe 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
@@ -27,9 +27,13 @@ import android.os.Message;
import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.PhoneLookup;
-import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.contacts.common.util.TelephonyManagerUtils;
+
+import java.util.Locale;
+
/**
* Helper class to make it easier to run asynchronous caller-id lookup queries.
* @see CallerInfo
@@ -231,7 +235,7 @@ public class CallerInfoAsyncQuery {
// comments at the top of CallerInfo class).
mCallerInfo = new CallerInfo().markAsEmergency(mQueryContext);
} else if (cw.event == EVENT_VOICEMAIL_NUMBER) {
- mCallerInfo = new CallerInfo().markAsVoiceMail();
+ mCallerInfo = new CallerInfo().markAsVoiceMail(mQueryContext);
} else {
mCallerInfo = CallerInfo.getCallerInfo(mQueryContext, mQueryUri, cursor);
Log.d(this, "==> Got mCallerInfo: " + mCallerInfo);
@@ -268,9 +272,10 @@ public class CallerInfoAsyncQuery {
// Use the number entered by the user for display.
if (!TextUtils.isEmpty(cw.number)) {
- mCallerInfo.phoneNumber = PhoneNumberUtils.formatNumber(cw.number,
+ mCallerInfo.phoneNumber = PhoneNumberHelper.formatNumber(cw.number,
mCallerInfo.normalizedNumber,
- CallerInfo.getCurrentCountryIso(mQueryContext));
+ TelephonyManagerUtils.getCurrentCountryIso(mQueryContext,
+ Locale.getDefault()));
}
}
@@ -343,7 +348,7 @@ public class CallerInfoAsyncQuery {
String selection;
String[] selectionArgs;
- if (PhoneNumberUtils.isUriNumber(number)) {
+ if (PhoneNumberHelper.isUriNumber(number)) {
// "number" is really a SIP address.
Log.d(LOG_TAG, " - Treating number as a SIP address: " + /* number */"xxxxxxx");
@@ -396,9 +401,9 @@ public class CallerInfoAsyncQuery {
cw.number = number;
// check to see if these are recognized numbers, and use shortcuts if we can.
- if (PhoneNumberUtils.isLocalEmergencyNumber(number, context)) {
+ if (PhoneNumberHelper.isLocalEmergencyNumber(number, context)) {
cw.event = EVENT_EMERGENCY_NUMBER;
- } else if (PhoneNumberUtils.isVoiceMailNumber(number)) {
+ } else if (TelephonyManagerUtils.isVoiceMailNumber(number, context)) {
cw.event = EVENT_VOICEMAIL_NUMBER;
} else {
cw.event = EVENT_NEW_QUERY;
diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java
index 45a38c7cf..c950ed417 100644
--- a/InCallUI/src/com/android/incallui/ContactInfoCache.java
+++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java
@@ -25,17 +25,17 @@ import android.net.Uri;
import android.os.Looper;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
+import com.android.contacts.common.util.PhoneNumberHelper;
import com.android.incallui.service.PhoneNumberService;
import com.android.incalluibind.ServiceFactory;
import com.android.services.telephony.common.Call;
import com.android.services.telephony.common.CallIdentification;
import com.android.services.telephony.common.MoreStrings;
-import com.google.android.collect.Lists;
-import com.google.android.collect.Maps;
-import com.google.android.collect.Sets;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
@@ -375,7 +375,7 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete
String number = info.phoneNumber;
if (!TextUtils.isEmpty(number)) {
- isSipCall = PhoneNumberUtils.isUriNumber(number);
+ isSipCall = PhoneNumberHelper.isUriNumber(number);
if (number.startsWith("sip:")) {
number = number.substring(4);
}
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index 58db132a6..d018b9d8a 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -259,7 +259,7 @@ public class InCallActivity extends Activity {
// Dump starting from the top-level view of the entire activity:
Window w = this.getWindow();
View decorView = w.getDecorView();
- decorView.debug();
+ Log.d(this, "View dump:" + decorView);
return true;
}
break;
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 5830e726c..27dd569fc 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -17,7 +17,7 @@
package com.android.incallui;
import com.android.incallui.service.PhoneNumberService;
-import com.google.android.collect.Sets;
+import com.google.common.collect.Sets;
import com.google.common.base.Preconditions;
import android.content.Context;