使用位置管理器在Async任务中获取位置

时间:2015-03-04 07:21:54

标签: android android-asynctask locationmanager

作为标题的指导,尝试将位置置于异步任务中但是,到目前为止,我已经失败。我正在使用替补和长度获得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);

    }
    }

任何有用的帮助,谢谢

1 个答案:

答案 0 :(得分:0)

我做过类似的事情。 我已经在OnCreate()方法中对位置管理器进行了初始化,并在OnPostExecute()方法中调用了另一种将当前位置保存到类型为Location的变量的方法,从而解决了这个问题。

     curPos = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

之后,您可以通过curPos.getLatitude()

获取LatLng坐标

希望它有点帮助你