Chiao Cheng | 8661800 | 2012-10-16 13:21:10 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2012 The Android Open Source Project |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License |
| 15 | */ |
| 16 | |
Gary Mai | 0a49afa | 2016-12-05 15:53:58 -0800 | [diff] [blame^] | 17 | package com.android.contacts; |
Chiao Cheng | 8661800 | 2012-10-16 13:21:10 -0700 | [diff] [blame] | 18 | |
Yorke Lee | 6a29fcb | 2014-06-13 16:54:50 -0700 | [diff] [blame] | 19 | import android.app.Application; |
Chiao Cheng | 8661800 | 2012-10-16 13:21:10 -0700 | [diff] [blame] | 20 | import android.content.Context; |
Yorke Lee | 6a29fcb | 2014-06-13 16:54:50 -0700 | [diff] [blame] | 21 | |
Gary Mai | 69c182a | 2016-12-05 13:07:03 -0800 | [diff] [blame] | 22 | import com.android.contacts.location.CountryDetector; |
Chiao Cheng | 8661800 | 2012-10-16 13:21:10 -0700 | [diff] [blame] | 23 | |
Yorke Lee | 5cdc7fe | 2013-11-25 11:35:09 -0800 | [diff] [blame] | 24 | import com.google.i18n.phonenumbers.NumberParseException; |
| 25 | import com.google.i18n.phonenumbers.PhoneNumberUtil; |
| 26 | import com.google.i18n.phonenumbers.Phonenumber; |
Gary Mai | 0a49afa | 2016-12-05 15:53:58 -0800 | [diff] [blame^] | 27 | import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder; |
Alon Albert | 368cae8 | 2013-09-03 12:31:31 -0700 | [diff] [blame] | 28 | |
Jay Shrauner | f5d04d2 | 2013-08-14 12:48:16 -0700 | [diff] [blame] | 29 | import java.util.Locale; |
| 30 | |
Chiao Cheng | 8661800 | 2012-10-16 13:21:10 -0700 | [diff] [blame] | 31 | /** |
| 32 | * Static methods related to Geo. |
| 33 | */ |
| 34 | public class GeoUtil { |
| 35 | |
| 36 | /** |
Yorke Lee | 6a29fcb | 2014-06-13 16:54:50 -0700 | [diff] [blame] | 37 | * Returns the country code of the country the user is currently in. Before calling this |
| 38 | * method, make sure that {@link CountryDetector#initialize(Context)} has already been called |
| 39 | * in {@link Application#onCreate()}. |
Chiao Cheng | 8661800 | 2012-10-16 13:21:10 -0700 | [diff] [blame] | 40 | * @return The ISO 3166-1 two letters country code of the country the user |
| 41 | * is in. |
| 42 | */ |
Alon Albert | 368cae8 | 2013-09-03 12:31:31 -0700 | [diff] [blame] | 43 | public static String getCurrentCountryIso(Context context) { |
Yorke Lee | 6a29fcb | 2014-06-13 16:54:50 -0700 | [diff] [blame] | 44 | // The {@link CountryDetector} should never return null so this is safe to return as-is. |
| 45 | return CountryDetector.getInstance(context).getCurrentCountryIso(); |
Chiao Cheng | 8661800 | 2012-10-16 13:21:10 -0700 | [diff] [blame] | 46 | } |
Alon Albert | 368cae8 | 2013-09-03 12:31:31 -0700 | [diff] [blame] | 47 | |
| 48 | public static String getGeocodedLocationFor(Context context, String phoneNumber) { |
| 49 | final PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance(); |
| 50 | final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance(); |
Alon Albert | 368cae8 | 2013-09-03 12:31:31 -0700 | [diff] [blame] | 51 | try { |
| 52 | final Phonenumber.PhoneNumber structuredPhoneNumber = |
| 53 | phoneNumberUtil.parse(phoneNumber, getCurrentCountryIso(context)); |
| 54 | final Locale locale = context.getResources().getConfiguration().locale; |
| 55 | return geocoder.getDescriptionForNumber(structuredPhoneNumber, locale); |
| 56 | } catch (NumberParseException e) { |
| 57 | return null; |
| 58 | } |
| 59 | } |
Chiao Cheng | 8661800 | 2012-10-16 13:21:10 -0700 | [diff] [blame] | 60 | } |