Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ip2Location API

Ответ 2

Оформить заказ API геолокации Google Maps

Пример POST:

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 в день.

БОЛЬШЕ

Ответ 3

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

один такой api.ipinfodb.com

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

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

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

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

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

Ответ 4

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

чтобы проверить, вы можете использовать RESTCLIENT, аддон Firefox для запросов HTTP.

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

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

Ответ 5

Вы можете использовать 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
}