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