Update: -
First, you need to define a LocationClient in your OnCreate (), which will call your onConnected () ...
Define your locationClient as follows.
locationClient = new LocationClient(this, this, this); locationClient.connect();
Now in your onConnected () .. Just request a location update like this.
@Override public void onConnectionFailed(ConnectionResult arg0) { // TODO Auto-generated method stub } @Override public void onConnected(Bundle arg0) { src = locationClient.getLastLocation(); System.out.println("======================location 1==" + src); LocationRequest lrequest = new LocationRequest(); lrequest.setInterval(0); lrequest.setSmallestDisplacement(0); lrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); locationClient.requestLocationUpdates(lrequest, new LocationListener() { @Override public void onLocationChanged(Location arg0) { System.out.println("======================location 1233==" + arg0); /*Toast.makeText(getApplicationContext(), "Location is 12" + arg0.getLatitude(), Toast.LENGTH_SHORT).show();*/ } }); } @Override public void onDisconnected() { // TODO Auto-generated method stub }
*************** BEFORE ************
If your main problem is constantly looking for your location update, then U can be used below.
Use this :: (This will periodically update the user's location based on GPS)
For OnCreate():: ---------------------- @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.speed); initui(); lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); provider = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); if(!provider){ String text = "ENABLE GPS TO ACCESS SPEEDO METER!"; Toast.makeText(Speedometer.this, text, Toast.LENGTH_LONG).show(); Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); } if (location != null) { /*lat = (int) (location.getLatitude() * 1E6); longi = (int)(location.getLongitude() * 1E6);*/ String text = "Got Coordinates"; Toast.makeText(Speedometer.this, text, Toast.LENGTH_SHORT).show(); } //lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 2, this); } Now use onLocationChanged() --------------------------- @Override public void onLocationChanged(Location loc) { // TODO Auto-generated method stub float distance = 0; //float prevDis = 0; try{ if(prevLoc==null) { prevLoc = loc; //Toast.makeText(MainActivity.this, "PrevLOC" + prevLoc, Toast.LENGTH_SHORT).show(); Log.i("Main Activity", "Prev LOC" + prevLoc); } else { try{ Runtime r = Runtime.getRuntime(); r.gc(); }catch(Exception e){ e.printStackTrace(); } // When prevLoc is not null Log.i("Main Activity", "Prev LOC in new LOC BLAH BLAH BLAH" + prevLoc); newLoc = loc; //Toast.makeText(MainActivity.this, "NewLoc" + newLoc, Toast.LENGTH_SHORT).show(); Log.i("Main Activity", "New LOC" + newLoc); distance = prevLoc.distanceTo(newLoc); Log.i("Main Activity", "New DISTANCE DISTANCE DISTANCE DISTANCE DISTANCE DISTANCE " + distance); distance = (float) (3.6*distance); speed = distance; prevLoc = newLoc; Log.i("Main Activity", "New Coordinates set to PrevLoc" + prevLoc); } }catch(Exception e){ e.printStackTrace(); } if(speed <= 160){ try { mView.calculateAngleOfDeviation(speed); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } }else { Toast.makeText(Speedometer.this, "CONTROL SPEED", Toast.LENGTH_SHORT).show(); } } You can also utilize same in your activity :: ----------------------------------------------- @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override protected void onPause() { // TODO Auto-generated method stub stopListening(); super.onPause(); } private void stopListening() { // TODO Auto-generated method stub try{ if(lm != null){ lm.removeUpdates(this); }else{ lm.removeUpdates(this); } }catch(Exception e){ e.printStackTrace(); } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); startListening(); } private void startListening() { // TODO Auto-generated method stub try{ lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this); }catch(Exception e){ e.printStackTrace(); } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); lm.removeUpdates(Speedometer.this); //System.exit(0); finish(); } Finally there always a lot of way to do single thing. Hope it helps... Cheers!