title: Why does Android FusedLocationProviderApi requestLocationUpdates send updates with weird keys?
body: <p>I'm using com.google.android.gms:play-services:7.3.0. This did not happen with 6.5.</p>
  
  <p>The <a href="https://developer.android.com/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient,%20com.google.android.gms.location.LocationRequest,%20android.app.PendingIntent)" rel="nofollow">documentation</a> says:</p>
  
  <blockquote>
    <p>Location updates are sent with a key of KEY_LOCATION_CHANGED and a Location value on the intent.</p>
  </blockquote>
  
  <p>Well, that much is true. It also sends updates with key:
  com.google.android.gms.location.EXTRA_LOCATION_RESULT</p>
  
  <p>and another update with key:
  com.google.android.gms.location.EXTRA_LOCATION_AVAILABILITY</p>
  
  <p>What are these for? Where are they documented?</p>
  
  <p>Here's my code:</p>
  
  <pre><code>// Needed for all API calls
  mClient = new GoogleApiClient.Builder(this)
          .addApi(LocationServices.API)
          .addConnectionCallbacks(this)
          .addOnConnectionFailedListener(this)
          .build();
  mClient.connect();
  
  // Create the LocationRequest object
  mLocationRequest = LocationRequest.create();
  // Use high accuracy
  mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
  // Set the update interval to 5 seconds
  mLocationRequest.setInterval(5000);
  // Set the fastest update interval
  mLocationRequest.setFastestInterval(5000);
  
  Intent locationIntent = new Intent(this, LocationReceiver.class);
  
  @Override
  public void onConnected(Bundle connectionHint) {
      Intent locationIntent = new Intent(this, LocationReceiver.class);
      // Set up periodic location updates
      mLocationPendingIntent = PendingIntent.getBroadcast(this, 0, locationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
      mFusedLocationProviderApi.requestLocationUpdates(mClient, mLocationRequest, mLocationPendingIntent);
  }
  </code></pre>
  
  <p>And then this is my LocationReceiver:</p>
  
  <pre><code>public class LocationReceiver extends BroadcastReceiver {
  
      private static final String TAG = "LocationReceiver";
  
      @Override
      public void onReceive(Context context, Intent intent) {
          android.os.Debug.waitForDebugger();  // this line is key
          Log.w(TAG, "received location!");
  
          Bundle extras = intent.getExtras();
  
          // Log intent details
          for (String key : extras.keySet()) {
              Object value = extras.get(key);
              Log.d(TAG, String.format("%s %s (%s)", key,
                      value.toString(), value.getClass().getName()));
          }
      }
  }
  </code></pre>