title: OnLocationChanged is not called
body: <p><code>OnLocationChanged()</code> is not called though requestLocationUpdates is added and so, map is not showing its current location.<br>
  Map is always showing its default mock location. Please suggest to overcome the issue. I have added all the necessary permissions in manifest file.<br>
  Note: I don't want last location using getLastKnownLocation, instead I want current location. I waited for the device get the fix, sometimes the GPS needs more time than usual, but still no improvement. I traveled almost 10 kilometers with the device on too. :-).<br>
  Here is the code which I used.</p>
  
  <pre><code>public class TestingmapActivity extends MapActivity implements LocationListener {
  
  private MapController myMapController;
  private MapView mapView;
  private LocationManager myLocationManager;
  private double m_dLati = 12.913469, m_dLongi = 77.609761;
  String provider;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      myLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
      mapView = (MapView) findViewById(R.id.mapview);
      myMapController = mapView.getController();
      provider = LocationManager.GPS_PROVIDER;
      mapView.setBuiltInZoomControls(true);
      mapView.setStreetView(true);
      myMapController.setZoom(14); // Zoon 1 is world view
      myLocationManager.requestLocationUpdates(provider, 0, 0,this);
      setMockLocation(m_dLati, m_dLongi, 500);
  }
  
  @Override
  protected void onResume() {
      startListening();
      super.onResume();
  }
  
  @Override
  protected void onPause() {
      stopListening();
      super.onResume();
  }
  
  @Override
  protected void onStop() {
      stopListening();
      super.onStop();
  }
  
  private void startListening() {
      if (myLocationManager != null) {
          myLocationManager.requestLocationUpdates(
                  LocationManager.GPS_PROVIDER, 0, 0, this);
      }
  }
  
  private void stopListening() {
      if (myLocationManager != null)
          myLocationManager.removeUpdates(this);
  }
  
  @Override
  protected boolean isRouteDisplayed() {
      // TODO Auto-generated method stub
      return false;
  }
  
  private void setMockLocation(double latitude, double longitude,
          float accuracy) {
      Log.v("", "provider name= " + provider);
      myLocationManager.addTestProvider(provider, "requiresNetwork" == "",
              "requiresSatellite" == "", "requiresCell" == "",
              "hasMonetaryCost" == "", "supportsAltitude" == "",
              "supportsSpeed" == "", "supportsBearing" == "",
              android.location.Criteria.POWER_LOW,
              android.location.Criteria.ACCURACY_FINE);
      Location newLocation = new Location(provider);
      newLocation.setLatitude(latitude);
      newLocation.setLongitude(longitude);
      newLocation.setAccuracy(accuracy);
      Toast.makeText(
              getApplicationContext(),
              "Mock: New Latitude = " + newLocation.getLatitude()
                      + " New Longitude = " + newLocation.getLongitude(),
              Toast.LENGTH_LONG).show();
      myLocationManager.setTestProviderEnabled(provider, true);
      myLocationManager.setTestProviderStatus(provider,
              LocationProvider.AVAILABLE, null, System.currentTimeMillis());
      myLocationManager.setTestProviderLocation(provider, newLocation);
  }
  
  @Override
  public void onLocationChanged(Location location) {
      Log.v("LocationListener", "onLocationChanged " + location.getLatitude()
              + " , " + location.getLongitude());
      int lat = (int) (location.getLatitude() * 1E6);
      int lng = (int) (location.getLongitude() * 1E6);
      GeoPoint point = new GeoPoint(lat, lng);
      myMapController.animateTo(point);       
  }
  
  @Override
  public void onProviderDisabled(String provider) {}
  
  @Override
  public void onProviderEnabled(String provider) {}
  
  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {}
  }
  </code></pre>
  
  <p>Manifest permissions:</p>
  
  <pre><code>&lt;uses-permission android:name="android.permission.ACCESS_GPS" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;
  &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
  &lt;uses-permission android:name="android.permission.LOCATION" /&gt;
  </code></pre>
  
  <p>Thanks,
  Biplab</p>