title: on locaton changed never gets called in android google client api
body: <p>I am developing app which require location  services my code is as follow.
  The main problem is on location changed never gets called</p>
  
  <pre><code>public class MainActivity extends ActionBarActivity implements
      ConnectionCallbacks, OnConnectionFailedListener, LocationListener {
  protected GoogleApiClient mGoogleApiClient;
  public static final long UPDATE_INTERVAL_IN_MILLISECONDS = 100;
  public static final long FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS =
          UPDATE_INTERVAL_IN_MILLISECONDS / 2;
  protected LocationRequest mLocationRequest;
  protected static final String TAG = "location-updates-sample";
  protected Location mCurrentLocation;
  
  Button btn;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  
  
      btn=(Button)findViewById(R.id.button);
      btn.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              Log.i(TAG,"btn is clicked");
              buildGoogleApiClient();
              Log.i(TAG,"build google api completed");
              mGoogleApiClient.connect();
              Log.i(TAG,"client conneted");
  
          }
      });
  }
  
  protected synchronized void buildGoogleApiClient() {
      Log.i(TAG, "Building GoogleApiClient");
      mGoogleApiClient = new GoogleApiClient.Builder(this)
              .addConnectionCallbacks(this)
              .addOnConnectionFailedListener(this)
              .addApi(LocationServices.API)
              .build();
      createLocationRequest();
  }
  protected void createLocationRequest() {
      mLocationRequest = new LocationRequest();
   mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
   mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
      mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
  }
  protected void startLocationUpdates() {
   LocationServices.FusedLocationApi.requestLocationUpdates(
       mGoogleApiClient, mLocationRequest, this);
  }
  @Override
  public void onConnected(Bundle bundle) {
      startLocationUpdates();
      Log.i(TAG,"from onconnected method");
  }
  
  @Override
  public void onConnectionSuspended(int i) {
      mGoogleApiClient.connect();
  
  }
  
  @Override
  public void onLocationChanged(Location location) {
      mCurrentLocation = location;
      Log.i(TAG,"on location changed");
      Log.i(TAG,String.valueOf(mCurrentLocation.getLongitude()));
      Log.i(TAG,String.valueOf(mCurrentLocation.getLatitude()));
      Toast.makeText(this,"liocation changed", Toast.LENGTH_SHORT).show();
  
  }
  
  @Override
  public void onConnectionFailed(ConnectionResult connectionResult) {
  
  }
  </code></pre>
  
  <p>}</p>
  
  <p>I have done "ACCESS_FINE_LOCATION" in manifest. also set the setting to be ''gps'' device only.
  i am getting the result when i click on button</p>
  
  <pre><code>location-updates-sample﹕ btn is clicked
  location-updates-sample﹕ Building GoogleApiClient
  location-updates-sample﹕ build google api completed
  location-updates-sample﹕ client conneted
  location-updates-sample﹕ from onconnected method
  </code></pre>
  
  <p>whats wrong with my code</p>