アプリを実行するときに、現在の場所の国名を検出し、その特定の国名に対していくつかの処理を実行したいのですが、ジオコーダー、gpsを使用して簡単に実行できます。しかし、私はそれをロケールから取得したいのですが、それ以上のものがあれば入手したいと思います。
3 に答える
このリンクhttp://ip-api.com/jsonを使用してください。これにより、すべての情報がjsonとして提供されます。このjsonから、国を簡単に取得できます。このサイトは現在のIPを使用して機能し、IPとセンドバックの詳細を自動的に検出します。
ドキュメントhttp://ip-api.com/docs/api:jsonお 役に立てば幸いです。
これは私が得たものです。
{
"as": "AS55410 C48 Okhla Industrial Estate, New Delhi-110020",
"city": "Kochi",
"country": "India",
"countryCode": "IN",
"isp": "Vodafone India",
"lat": 9.9667,
"lon": 76.2333,
"org": "Vodafone India",
"query": "123.63.81.162",
"region": "KL",
"regionName": "Kerala",
"status": "success",
"timezone": "Asia/Kolkata",
"zip": ""
}
Android APIで、関連するGSMネットワークのプロバイダーコードを確認できるかどうかはわかりません。これが可能な場合は、このコードを使用して、このリストをチェックすることができます:http ://www.techgsm.com/page/gsm-provider-codes/network-provider-identify-codes.html携帯電話です。
Androidの国別検出サービスを使用できます(使用する必要があります)。このサービスは3つのメソッドで構成されており、すべて.aidlで定義されています。これらのメソッドを使用すると、国コードを取得したり、リスナーを登録したり、削除したりできます。具体的には、最初Country detectCountry();
の-android.location.Countryオブジェクト(AOSPのframeworks / base / location / java / android / location / Country.java)を返します。プログラムでメソッドを呼び出す方法を知っていることを前提としています(getSystemService( "country_detector")が必要です)。
コマンドラインからテストするには、次のことを試してください。
shell@flounder:/ $ service call country_detector 1
Result: Parcel(
0x00000000: 00000000 00000001 00000002 00530055 '............U.S.'
0x00000010: 00000000 00000003 1d809dda 00000000 '................')
オブジェクトのシリアル化は、基本的に2文字の国コード(ここでは米国)、ソース(ここでは、3、これはロケールから収集されたことを意味します)、およびタイムスタンプ(1d809dda ...)にすぎません。重要。オブジェクトはParcelableであるため、シリアル化について心配する必要はありません。