80,337
社区成员
发帖
与我相关
我的任务
分享
public String returnLocation() {
// System.out.println("FallLocation "+mlatitude);
Handler mNetHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
double latitude = (double) (msg.arg1) / 1000000f;
double longitude = (double) (msg.arg2) / 1000000f;
//开启网络线程
NetThread mNetThread = new NetThread(latitude,longitude);
mNetThread.start();
}
};
mMainHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
// 接收网络线程的消息
if(msg.what == ADDRESS){
address = (String) msg.obj;
}
}
};
try {
// 发送给子线程的消息
mNetHandler.sendMessage(mNetHandler.obtainMessage(COORD,
(int) (mlatitude * 1000000),
(int) (mlongitude * 1000000)));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return address;
}
class NetThread extends Thread {
double latitude ,longitude;
public NetThread(double latitude,double longitude){
this.latitude = latitude;
this.longitude = longitude;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("handleMessage " + latitude);
System.out.println("handleMessage " + longitude);
// 耗时的操作
String strResult = null;
// 获取json数据
try {
String httpUrl = "http://api.map.baidu.com/geocoder/v2/?ak=0KCws1IBokt9kvmoV0IT1gS3&callback=renderReverse&location="
+ latitude + "," + longitude + "&output=json&pois=0";
// HttpGet连接对象
HttpGet httpRequest = new HttpGet(httpUrl);
// 取得HttpClient对象
HttpClient httpclient = new DefaultHttpClient();
// 请求HttpClient,取得HttpResponse
HttpResponse httpResponse = httpclient.execute(httpRequest);
// 请求成功
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 取得返回的字符串
strResult = EntityUtils.toString(httpResponse.getEntity());
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// 解析json
try {
JSONTokener jsonParser = new JSONTokener(strResult);
JSONObject js = (JSONObject) jsonParser.nextValue();
JSONObject result = js.getJSONObject("result");
formatted_address = result.getString("formatted_address");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
mMainHandler.sendMessage(mMainHandler.obtainMessage(ADDRESS,
formatted_address));
}
}
package cn.edu.nuist.Test14081300;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.json.JSONTokener;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
public class FallLocation {
private String formatted_address;
private double mlatitude, mlongitude;
private int ADDRESS = 1;
private int COORD = 2;
private String address;
private Handler mMainHandler, mNetHandler;
public FallLocation(double lati, double longi) {
// TODO Auto-generated constructor stub
mlatitude = lati;
mlongitude = longi;
}
public String returnLocation() {
// System.out.println("FallLocation "+mlatitude);
Handler mNetHandler = new Handler();
//开启网络线程
NetThread mNetThread = new NetThread();
mNetThread.start();
mMainHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
// 接收网络线程的消息
if(msg.what == ADDRESS){
address = (String) msg.obj;
}
}
};
try {
// 发送给子线程的消息
mNetHandler.sendMessage(mNetHandler.obtainMessage(COORD,
(int) (mlatitude * 1000000),
(int) (mlongitude * 1000000)));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return address;
}
class NetThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
Looper.prepare();
mNetHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
double latitude = (double) (msg.arg1) / 1000000f;
double longitude = (double) (msg.arg2) / 1000000f;
System.out.println("handleMessage " + latitude);
System.out.println("handleMessage " + longitude);
// 耗时的操作
String strResult = null;
// 获取json数据
try {
String httpUrl = "http://api.map.baidu.com/geocoder/v2/?ak=0KCws1IBokt9kvmoV0IT1gS3&callback=renderReverse&location="
+ latitude + "," + longitude + "&output=json&pois=0";
// HttpGet连接对象
HttpGet httpRequest = new HttpGet(httpUrl);
// 取得HttpClient对象
HttpClient httpclient = new DefaultHttpClient();
// 请求HttpClient,取得HttpResponse
HttpResponse httpResponse = httpclient.execute(httpRequest);
// 请求成功
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 取得返回的字符串
strResult = EntityUtils.toString(httpResponse.getEntity());
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// 解析json
try {
JSONTokener jsonParser = new JSONTokener(strResult);
JSONObject js = (JSONObject) jsonParser.nextValue();
JSONObject result = js.getJSONObject("result");
formatted_address = result.getString("formatted_address");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
mMainHandler.sendMessage(mMainHandler.obtainMessage(ADDRESS,
formatted_address));
}
};
Looper.loop();
}
}
}