110b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian/*
210b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * Copyright (C) 2012 The Android Open Source Project
310b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian *
410b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License");
510b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * you may not use this file except in compliance with the License.
610b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * You may obtain a copy of the License at
710b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian *
810b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian *      http://www.apache.org/licenses/LICENSE-2.0
910b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian *
1010b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * Unless required by applicable law or agreed to in writing, software
1110b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS,
1210b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1310b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * See the License for the specific language governing permissions and
1410b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian * limitations under the License
1510b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian */
1610b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian
1710b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianpackage com.android.dialer.location;
1810b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian
1910b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianimport android.content.Context;
2010b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianimport com.google.i18n.phonenumbers.NumberParseException;
2110b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianimport com.google.i18n.phonenumbers.PhoneNumberUtil;
2210b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianimport com.google.i18n.phonenumbers.Phonenumber;
2310b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianimport com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
2410b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianimport java.util.Locale;
2510b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian
2610b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian/** Static methods related to Geo. */
2710b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanianpublic class GeoUtil {
2810b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian
2910b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian  /** @return the ISO 3166-1 two letters country code of the country the user is in. */
3010b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian  public static String getCurrentCountryIso(Context context) {
3110b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian    // The {@link CountryDetector} should never return null so this is safe to return as-is.
3210b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian    return CountryDetector.getInstance(context).getCurrentCountryIso();
3310b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian  }
3410b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian
3510b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian  public static String getGeocodedLocationFor(Context context, String phoneNumber) {
3610b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian    final PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
3710b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian    final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
3810b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian    try {
3910b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian      final Phonenumber.PhoneNumber structuredPhoneNumber =
4010b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian          phoneNumberUtil.parse(phoneNumber, getCurrentCountryIso(context));
4110b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian      final Locale locale = context.getResources().getConfiguration().locale;
4210b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian      return geocoder.getDescriptionForNumber(structuredPhoneNumber, locale);
4310b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian    } catch (NumberParseException e) {
4410b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian      return null;
4510b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian    }
4610b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian  }
4710b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian}
48