package com.example.adrress;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Locale;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.HttpParams;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class MainActivity extends Activity {
private String TAG = "test";
private double latitude = 22.5362079;
private double longtitude = 113.9423168;
private Handler mHandler;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textView1);
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
String respone = (String) msg.obj;
String result = parseJson(respone);
mTextView.setText(result);
Log.d(TAG, "您所在的地址是:" + result);
break;
}
}
};
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread() {
public void run() {
String respone = getRespone(Locale.TRADITIONAL_CHINESE);
if (respone != null) {
Message msg = mHandler.obtainMessage();
msg.obj = respone;
msg.what = 0;
mHandler.sendMessage(msg);
}
};
}.start();
}
});
}
private String getRespone(Locale locale) {
try {
String url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + ","
+ longtitude + "&sensor=false&language=" + locale;
// 1、设置httpclient对象
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpParams params = httpclient.getParams();
params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);
params.setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
// 2、设置请求方式
HttpGet request = new HttpGet(url);
// 3、执行请求
HttpResponse response = httpclient.execute(request);
// 4、获得响应
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
StringBuilder out = new StringBuilder();
String line = null;
while ((line = in.readLine()) != null) {
out.append(line);
}
Log.d(TAG, "out: " + out.toString().trim());
in.close();
is.close();
return out.toString();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private String parseJson(String respone) {
try {
JSONObject jsonObject = new JSONObject(respone);
String status = jsonObject.getString("status");
if ("OK".equals(status)) {
String results = jsonObject.getString("results");
JSONArray jsonArray = new JSONArray(results);
int length = jsonArray.length();
Log.d(TAG, "jsonArray.length(): " + jsonArray.length());
String addrress = null;
for (int i = 0; i < length; i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
String formatted_address = jsonObject2.getString("formatted_address");
Log.i(TAG, "formatted_address: " + formatted_address);
if (i == 0) {
addrress = formatted_address;
}
}
return addrress;
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}
日志: 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省深圳市南山區科技南一路 邮政编码: 518057 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國深圳市南山區深大地鐵站 邮政编码: 518057 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省深圳市南山區 邮政编码: 518057 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省深圳市南山區 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省深圳市 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國 12-27 11:25:07.910: D/test(28487): 您所在的地址是:中華人民共和國廣東省深圳市南山區科技南一路 邮政编码: 518057