diff options
Diffstat (limited to 'java/com/android/dialer/oem')
10 files changed, 167 insertions, 85 deletions
diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java index 095ee4e66..7b6ddbc3a 100644 --- a/java/com/android/dialer/oem/CequintCallerIdManager.java +++ b/java/com/android/dialer/oem/CequintCallerIdManager.java @@ -18,7 +18,6 @@ package com.android.dialer.oem; import android.annotation.TargetApi; import android.content.Context; import android.content.pm.PackageManager; -import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Build.VERSION_CODES; @@ -29,9 +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.util.PermissionsUtil; +import com.android.dialer.configprovider.ConfigProviderBindings; import java.util.concurrent.ConcurrentHashMap; /** @@ -73,17 +71,12 @@ public class CequintCallerIdManager { private static final String IMAGE = "cid_pLogo"; private static final String DISPLAY_NAME = "cid_pDisplayName"; - // TODO: Revisit it and maybe remove it if it's not necessary. - private static final ConcurrentHashMap<String, CequintCallerIdContact> callLogCache = - new ConcurrentHashMap<>(); - private static final ConcurrentHashMap<String, CequintCallerIdContact> incallIncomingCallCache = - new ConcurrentHashMap<>(); - private static final ConcurrentHashMap<String, CequintCallerIdContact> incallOutgoingCallCache = - new ConcurrentHashMap<>(); - private static boolean hasRegisteredContentObserver; private static boolean hasAlreadyCheckedCequintCallerIdPackage; private static boolean isCequintCallerIdEnabled; + // TODO(wangqi): Revisit it and maybe remove it if it's not necessary. + private final ConcurrentHashMap<String, CequintCallerIdContact> callLogCache; + /** Cequint caller id contact information. */ public static class CequintCallerIdContact { public final String name; @@ -117,27 +110,8 @@ public class CequintCallerIdManager { return isCequintCallerIdEnabled; } - @WorkerThread - @Nullable - public static CequintCallerIdContact getCequintCallerIdContact(Context context, String number) { - Assert.isWorkerThread(); - LogUtil.d( - "CequintCallerIdManager.getCequintCallerIdContact", - "number: %s", - LogUtil.sanitizePhoneNumber(number)); - if (callLogCache.containsKey(number)) { - return callLogCache.get(number); - } - CequintCallerIdContact cequintCallerIdContact = - lookup( - context, - CONTENT_URI, - PhoneNumberUtils.stripSeparators(number), - new String[] {"system"}); - if (cequintCallerIdContact != null) { - callLogCache.put(number, cequintCallerIdContact); - } - return cequintCallerIdContact; + public static CequintCallerIdManager createInstanceForCallLog() { + return new CequintCallerIdManager(); } @WorkerThread @@ -151,12 +125,6 @@ public class CequintCallerIdManager { LogUtil.sanitizePhoneNumber(number), LogUtil.sanitizePii(cnapName), isIncoming); - registerContentObserver(context); - if (isIncoming && incallIncomingCallCache.containsKey(number)) { - return incallIncomingCallCache.get(number); - } else if (!isIncoming && incallOutgoingCallCache.containsKey(number)) { - return incallOutgoingCallCache.get(number); - } int flag = 0; if (isIncoming) { flag |= CALLER_ID_LOOKUP_INCOMING_CALL; @@ -165,14 +133,28 @@ public class CequintCallerIdManager { flag |= CALLER_ID_LOOKUP_USER_PROVIDED_CID; } String[] flags = {cnapName, String.valueOf(flag)}; + return lookup(context, CONTENT_URI_FOR_INCALL, number, flags); + } + + @WorkerThread + @Nullable + public CequintCallerIdContact getCequintCallerIdContact(Context context, String number) { + Assert.isWorkerThread(); + LogUtil.d( + "CequintCallerIdManager.getCequintCallerIdContact", + "number: %s", + LogUtil.sanitizePhoneNumber(number)); + if (callLogCache.containsKey(number)) { + return callLogCache.get(number); + } CequintCallerIdContact cequintCallerIdContact = - lookup(context, CONTENT_URI_FOR_INCALL, number, flags); + lookup( + context, + CONTENT_URI, + PhoneNumberUtils.stripSeparators(number), + new String[] {"system"}); if (cequintCallerIdContact != null) { - if (isIncoming) { - incallIncomingCallCache.put(number, cequintCallerIdContact); - } else { - incallOutgoingCallCache.put(number, cequintCallerIdContact); - } + callLogCache.put(number, cequintCallerIdContact); } return cequintCallerIdContact; } @@ -285,33 +267,7 @@ public class CequintCallerIdManager { return geoDescription; } - private static synchronized void registerContentObserver(Context context) { - if (!PermissionsUtil.hasCequintPermissions(context)) { - LogUtil.i("CequintCallerIdManager.registerContentObserver", "no cequint permissions"); - return; - } - - if (hasRegisteredContentObserver) { - return; - } - ContentObserver contentObserver = - new ContentObserver(null) { - @Override - public void onChange(boolean selfChange) { - invalidateCache(); - } - }; - - context - .getContentResolver() - .registerContentObserver(CONTENT_URI_FOR_INCALL, true, contentObserver); - hasRegisteredContentObserver = true; - } - - private static void invalidateCache() { - incallIncomingCallCache.clear(); - incallOutgoingCallCache.clear(); + private CequintCallerIdManager() { + callLogCache = new ConcurrentHashMap<>(); } - - private CequintCallerIdManager() {} } diff --git a/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java b/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java index 9cf145b7a..79abff08e 100644 --- a/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java +++ b/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java @@ -67,9 +67,7 @@ public class MotorolaHiddenMenuKeySequence { } private MotorolaHiddenMenuKeySequence(Context context) { - featureHiddenMenuEnabled = - MotorolaUtils.isSpnMatched(context) - && context.getResources().getBoolean(R.bool.motorola_feature_hidden_menu); + featureHiddenMenuEnabled = MotorolaUtils.isSupportingHiddenMenu(context); // In case we do have a SPN from resource we need to match from service; otherwise we are // free to go if (featureHiddenMenuEnabled) { diff --git a/java/com/android/dialer/oem/MotorolaUtils.java b/java/com/android/dialer/oem/MotorolaUtils.java index db2b8909a..ffab8ea23 100644 --- a/java/com/android/dialer/oem/MotorolaUtils.java +++ b/java/com/android/dialer/oem/MotorolaUtils.java @@ -18,8 +18,11 @@ 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; /** Util class for Motorola OEM devices. */ public class MotorolaUtils { @@ -39,6 +42,8 @@ public class MotorolaUtils { // This is used to check if a Motorola device supports WiFi call feature, by checking if a certain // package is enabled. private static final String WIFI_CALL_PACKAGE_NAME = "com.motorola.sprintwfc"; + // Thi is used to check if a Motorola device supports hidden menu feature. + private static final String HIDDEN_MENU_FEATURE = "com.motorola.software.sprint.hidden_menu"; // Feature flag indicates it's a HD call, currently this is only used by Motorola system build. // TODO(b/35359461): Use reference to android.provider.CallLog once it's in new SDK. @@ -64,6 +69,10 @@ public class MotorolaUtils { } } + static boolean isSupportingHiddenMenu(Context context) { + return context.getPackageManager().hasSystemFeature(HIDDEN_MENU_FEATURE); + } + public static boolean shouldBlinkHdIconWhenConnectingCall(Context context) { return ConfigProviderBindings.get(context) .getBoolean(CONFIG_HD_CODEC_BLINKING_ICON_WHEN_CONNECTING_CALL_ENABLED, true) @@ -102,6 +111,22 @@ public class MotorolaUtils { return MotorolaHiddenMenuKeySequence.handleCharSequence(context, input); } + public static boolean isWifiCallingAvailable(Context context) { + if (!isSupportingSprintWifiCall(context)) { + return false; + } + TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); + try { + Method method = TelephonyManager.class.getMethod("isWifiCallingAvailable"); + boolean isWifiCallingAvailable = (boolean) method.invoke(telephonyManager); + LogUtil.d("MotorolaUtils.isWifiCallingAvailable", "%b", isWifiCallingAvailable); + return isWifiCallingAvailable; + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + LogUtil.e("MotorolaUtils.isWifiCallingAvailable", "", e); + } + return false; + } + private static boolean isSupportingSprintHdCodec(Context context) { return isSpnMatched(context) && context.getResources().getBoolean(R.bool.motorola_sprint_hd_codec) diff --git a/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml index 7f63bee75..ac3397520 100644 --- a/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc310-mnc000/motorola_config.xml @@ -1,6 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> + <resources> <bool name="motorola_sprint_hd_codec">true</bool> - <bool name="motorola_feature_hidden_menu">true</bool> <string name="motorola_enabled_spn">Sprint</string> </resources>
\ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml index 39b72cdd1..c5cb0d1f7 100644 --- a/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc310-mnc120/motorola_config.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> + <resources> <bool name="motorola_sprint_hd_codec">true</bool> - <bool name="motorola_feature_hidden_menu">true</bool> </resources>
\ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml index 39b72cdd1..c5cb0d1f7 100644 --- a/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc311-mnc490/motorola_config.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> + <resources> <bool name="motorola_sprint_hd_codec">true</bool> - <bool name="motorola_feature_hidden_menu">true</bool> </resources>
\ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml index 39b72cdd1..c5cb0d1f7 100644 --- a/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc311-mnc870/motorola_config.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> + <resources> <bool name="motorola_sprint_hd_codec">true</bool> - <bool name="motorola_feature_hidden_menu">true</bool> </resources>
\ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml index 39b72cdd1..c5cb0d1f7 100644 --- a/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc312-mnc530/motorola_config.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> + <resources> <bool name="motorola_sprint_hd_codec">true</bool> - <bool name="motorola_feature_hidden_menu">true</bool> </resources>
\ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml b/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml index 39b72cdd1..c5cb0d1f7 100644 --- a/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values-mcc316-mnc010/motorola_config.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> + <resources> <bool name="motorola_sprint_hd_codec">true</bool> - <bool name="motorola_feature_hidden_menu">true</bool> </resources>
\ No newline at end of file diff --git a/java/com/android/dialer/oem/res/values/motorola_config.xml b/java/com/android/dialer/oem/res/values/motorola_config.xml index f875d573d..46e7a16b6 100644 --- a/java/com/android/dialer/oem/res/values/motorola_config.xml +++ b/java/com/android/dialer/oem/res/values/motorola_config.xml @@ -1,12 +1,25 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- + ~ 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 + --> + <resources> <!-- Flag to control if HD codec is supported by Sprint. --> <bool name="motorola_sprint_hd_codec">false</bool> <!-- Hidden menu configuration for Motorola. --> - <!-- Flag to control if the Hidden Menu sequence will be supported by Sprint. --> - <bool name="motorola_feature_hidden_menu">false</bool> - <!-- This defines the specific key seuquence that will be catched in the SpecialCharSequenceMgr such as, ##OMADM# --> <string-array name="motorola_hidden_menu_key_sequence"> |