my application records the location of gps with the click of a button; however, when I do this, I am talking about three blocks and is extremely inaccurate. Can you take a look at my code to see how I can improve it? Thanks
@Override protected Void doInBackground(Void... arg0) { SharedPreferences prefs = getSharedPreferences("Settings", 0); final String id = prefs.getString("ID", ""); DefaultHttpClient httpclient = new DefaultHttpClient(); HttpPost httpost = new HttpPost( "http://iphone-radar.com/gps/gps_locations"); JSONObject holder = new JSONObject(); try { holder.put("id", id); LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); String bestProvider = locationManager.getBestProvider(criteria, false); LocationListener loc_listener=new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub } }; try{ Looper.prepare(); locationManager.requestLocationUpdates(bestProvider, 0, 0, loc_listener); }catch(Exception e){ e.printStackTrace(); } Location location=locationManager. getLastKnownLocation(bestProvider); Calendar c = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("hh:mmaa dd'/'MM'/'yyyy"); holder.put("time", sdf.format(c.getTime())); holder.put("time_since_epoch", System.currentTimeMillis()); try { holder.put("lat", location.getLatitude()); holder.put("lon", location.getLongitude()); } catch (NullPointerException e) { try { holder.put("lat", -1.0); holder.put("lon", -1.0); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } StringEntity se = new StringEntity(holder.toString()); httpost.setEntity(se); httpost.setHeader("Accept", "application/json"); httpost.setHeader("Content-type", "application/json"); ResponseHandler responseHandler = new BasicResponseHandler(); String response = httpclient.execute(httpost, responseHandler); org.json.JSONObject obj; obj = new org.json.JSONObject(response); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
source share