作为标题的指导,尝试将位置置于异步任务中但是,到目前为止,我已经失败。我正在使用替补和长度获得null异常 这是我的代码。
public class AsyncLocation extends AsyncTask<String, Integer, MyLocation> {
private Context _cntx=null;
AsyncLocation(Context cntx){
_cntx= cntx;
}
public AsyncResponse delegate;
MyLocation myLocation =null;
public LocationManager mLocationManager;
@Override
protected MyLocation doInBackground(String... arg0) {
Log.d("GtLocation", "ICERDE");
mLocationManager = (LocationManager)_cntx.getSystemService(Context.LOCATION_SERVICE);
Location location = mLocationManager.getLastKnownLocation( LocationManager.NETWORK_PROVIDER);
double latitude = location.getLatitude();
double longitude = location.getLongitude();
Log.d("onPreExecute", "ICERDE");
MyLocation mylc= new MyLocation();
mylc.Lat=latitude;
mylc.Lng=longitude;
return mylc;
}
@Override
protected void onPostExecute(MyLocation rsp) {
Log.d("onPostExecute", "ICERDE");
Log.d("vvvvresponse", rsp.toString());
Toast.makeText(_cntx,
"LATITUDE :" + rsp.Lat + " LONGITUDE :" + rsp.Lng,
Toast.LENGTH_LONG).show();
// delegate.processFinish(rsp);
super.onPostExecute(rsp);
}
}
任何有用的帮助,谢谢
答案 0 :(得分:0)
我做过类似的事情。 我已经在OnCreate()方法中对位置管理器进行了初始化,并在OnPostExecute()方法中调用了另一种将当前位置保存到类型为Location的变量的方法,从而解决了这个问题。
curPos = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
之后,您可以通过curPos.getLatitude()
获取LatLng坐标希望它有点帮助你