2016-09-18 4 views
-1

私はデバイスのシムの位置を使ってデバイスから国名を得ることができますが、シムのないタブレットの場合は動作しません。インターネットに接続しているときに、デバイスのIPアドレスから国コードや国名を取得するにはどうすればよいですか?デバイスIPアドレスから国名を知るには?

答えて

0

これは、あなたがどれくらい正確にしたいかによって決まります。この手法はあまり正確ではありません。地理的位置をIPアドレスで打ち負かすには、いろいろな方法があります。

ただし、IPアドレスを使用してクエリを実行できるウェブサイトがあり、それは共謀を返します。

しかし、調べるためにオンラインにしたくない場合は、現在のリストをダンプしてルックアップテーブルにエンコードし、プログラム内に格納する必要があります。

あなたはすべてのアドレスを保存することはできません - 可能なものは40億ありますが、代わりに大きな範囲を保存します。これにより、表のサイズが大幅に縮小されます。

0

ここには、あなたのプロジェクトで使用できるAndroid用のGeoIPライブラリがあります。 オンラインAPIを使用して、IPアドレスから国を取得します。ここで

https://github.com/seventhmoon/GeoIp-android

がそれを使用する方法の抜粋です:

ApiManager apiManager = new ApiManager(Volley.newRequestQueue(context)); 
    apiManager.getGeoIpInfo(new Response.Listener<GeoIpResponseModel>() { 
     @Override 
     public void onResponse(GeoIpResponseModel response) { 
      //This is how you get the information. 
      //not all attribute are listed 
      String country = response.getCountry(); 
      String city = response.getCity(); 
      String countryCode = resopnse.getCountryCode(); 
      double latitude = response.getLatitude(); 
      double longtidue = response.getLongitude(); 
      String region = response.getRegion(); 
      String timezone = response.getTimezone(); 
      String isp = response.getIsp(); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      String errorMessage = error.toString(); 
     } 
    }); 
+0

感謝marmor、私はエミュレータを使用してこのコードをテストしているが、結果はNULLです。 – hawkeye

+0

私は実際のデバイスでまだそれが動作していないチェックした! null値が表示されます。 – hawkeye

関連する問題