Intereting Posts
Как проигрывать потоковое аудио в фоновом режиме на Android? Можно ли использовать приложение HTTP REST API для чата? Android Лучший способ обнаружить и обработать пользователя НЕАКТИВНОСТЬ Можно ли установить CursorAdapter в recycleview, как и ListView? Как заставить панель действий быть внизу в ICS? Фрагмент инициализируется дважды при перезагрузке с помощью вкладок при изменении ориентации Проблемы с диалоговыми кнопками оповещения в Android L Как создать полную функциональность календаря в android? Трудности с импортом facebook-android-sdk в eclipse Как добавить меню переполнения на панель инструментов? Что сообщение logcat: «E / MoreInfoHPW_ViewGroup (2905): Родительский взгляд не является TextView» означает? Открытое приложение для Android-разработчиков google для Android, получающее инструкции, начиная с текущей позиции «Adb devices» показывает фиктивное устройство JQuery preventDefault не работает в браузере браузера android 4.4 по умолчанию Как запретить AndroidStudio открывать LogCat (вкладку) при нажатии «Выполнить»?

Как определить местоположение устройства в Android с использованием IP-адреса

Я разрабатываю приложение для Android. Я хочу определить местоположение устройства, используя его IP-адрес. С чего начать? Ссылки на API Google не являются достаточно убедительными. Благодарю.

Solutions Collecting From Web of "Как определить местоположение устройства в Android с использованием IP-адреса"

Вы должны использовать затем API для получения местоположения с использованием ip.

API Ip2Location

Проверка API геолокации Google Maps

Пример:

https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY 

Пример ответа:

 { "location": { "lat": 51.0, "lng": -0.1 }, "accuracy": 1200.4 } 

Ограничения:

Пользователи стандартного API:

2500 бесплатных запросов в день 10 запросов в секунду, для каждого пользователя Включите оплату по мере того, как разблокировать более высокие квоты:

$ 0.50 USD / 1000 дополнительных запросов, до 100 000 в день.

БОЛЬШЕ

Существует несколько веб-сервисов, которые предоставляют вам значение широты и долготы с IP-адреса.

Одним из таких является api.ipinfodb.com

Например, вы можете определить широту и долготу, отправив запрос, например

  http://api.ipinfodb.com/v3/ip-city/?key=<your_api_key> &ip=74.125.45.100&format=json 

Это возвращает данные в формате json, и вы можете получить ответ в XML, установив format = xml (вам нужно зарегистрироваться, чтобы получить ключ API).

Или вы можете загрузить базу данных по этой и этой ссылке.

Вы можете загружать наборы данных, но у вас постоянно его обновлять.

Я использую это, чтобы получить ip, страну и город устройства

Для проверки вы можете использовать RESTCLIENT , аддон firefox для создания HTTP-запросов.

Просто скопируйте https://addons.mozilla.org/en-us/firefox/addon/restclient/ этот URL-адрес и протестируйте его в RESTCLIENT или просто в адресной строке браузера

Надеюсь это поможет!

Вы можете использовать freegeoip.net .

Это бесплатный сервис с открытым исходным кодом. Вы можете использовать услугу напрямую или запустить ее на своем личном сервере. Он также может легко развертываться в Heroku.

Чтобы получить IP-адрес, просто используйте OkHttp для отправки запроса http / https:

 String url = "https://freegeoip.net/json/" Request mRequest = new Request.Builder() .url(url) .build(); Context mContext // A UI context new OkHttpClient().newCall(mRequest).enqueue(new Callback() { Handler mainHandler = new Handler(mContext.getApplicationContext().getMainLooper()); @Override public void onResponse(Call call, Response response) { String responseBody = null; try { responseBody = response.body().string(); } catch (final IOException e) { mainHandler.post(new Runnable() { @Override public void run() { // handle error } }); } final String finalResponseBody = responseBody; mainHandler.post(new Runnable() { @Override public void run() { // handle response body try { JSONObject locationObject = new JSONObject(finalResponseBody); } catch (JSONException e) { e.printStackTrace(); } } }); } @Override public void onFailure(Call call, final IOException e) { mainHandler.post(new Runnable() { @Override public void run() { mNetworkListener.onNetworkError(e.getMessage()); } }); } }); 

И ответ будет выглядеть примерно так:

 { "ip": "192.30.253.113", "country_code": "US", "country_name": "United States", "region_code": "CA", "region_name": "California", "city": "San Francisco", "zip_code": "94107", "time_zone": "America/Los_Angeles", "latitude": 37.7697, "longitude": -122.3933, "metro_code": 807 }