title: Android: Google Maps location with low battery usage
body: <p>My app is currently using Maps by <code>Google Play Services</code></p>
  
  <p>speficying:</p>
  
  <p><code>mMap.setMyLocationEnabled(true);</code></p>
  
  <p>I realize each time I am displaying the map in my app:</p>
  
  <ul>
  <li>the location is indicated on the map by a blue dot</li>
  <li>a location icon is displaying in the top bar</li>
  <li>if I go into Settings/Location of the phone, my app is reported as "High battery use"</li>
  </ul>
  
  <p>However, I can see there are apps that use Maps and still show the location blue dot, but the location icon doesn't appear in top bar and their battery usage is low.</p>
  
  <p>My app currently grants both permissions:</p>
  
  <ul>
  <li><code>android.permission.ACCESS_COARSE_LOCATION</code></li>
  <li><code>android.permission.ACCESS_FINE_LOCATION</code></li>
  </ul>
  
  <p>My question is:</p>
  
  <p><strong>how can I show the location blue dot with low battery usage?</strong></p>
  
  <p>is it possible to specify the accuracy/battery usage by code?</p>
  
  <p><strong>UPDATE</strong></p>
  
  <p>Actually I realized that the way to do it is to use the <code>GoogleApiClient</code>'s <code>FusedLocationApi</code></p>
  
  <pre><code>    mGoogleApiClient = new GoogleApiClient.Builder(context)
              .addApi(LocationServices.API)
              .addConnectionCallbacks(this)
              .addOnConnectionFailedListener(this)
              .build();
  </code></pre>
  
  <p>I have configured the GoogleApiClient inside my Activity, calling:</p>
  
  <ul>
  <li><code>GoogleApiClient.connect()</code> on the Activity's start</li>
  <li><code>GoogleApiClient.disconnect()</code> on the Activity's stop</li>
  </ul>
  
  <p>on the <code>onConnected</code> callback I set the criteria for the location updates: fastest interval of 1 minute with low power priority:</p>
  
  <pre><code>    private static final LocationRequest REQUEST = LocationRequest.create()
          .setFastestInterval(60000)   // in milliseconds
          .setInterval(180000)         // in milliseconds
          .setPriority(LocationRequest.PRIORITY_LOW_POWER);
  
      @Override
      public void onConnected(Bundle bundle) {
          LocationServices.FusedLocationApi.requestLocationUpdates(
              mGoogleApiClient,
              REQUEST,
              this);  // LocationListener
      }
  </code></pre>
  
  <p>I have tested that the GoogleApiClient connects correctly at start, but for some reasons whenever I visit the fragment with the embedded MapView, I still get the <strong>high battery use</strong> for my app on the Settings/Location screen!</p>
  
  <p>It seems the MapView is ignoring these low power criterias!</p>