3

How can I reduce the power usage in my application? What code can I use to implement this?

dcharles
  • 4,822
  • 2
  • 32
  • 29
Narasimha
  • 3,802
  • 11
  • 55
  • 83

1 Answers1

8

There are a couple different ways to reduce the power used when trying to get location information.

  1. Use the last known location instead of trying to determine the current location.

    // Get a Location Manager
    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    
    // Try to get the last GPS based location
    Location l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    
    // Fall back to cell tower based location if no prior GPS location
    if (l == null) {
        l = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    }
    
  2. Use a less expensive location provider. You can pick LocationManager.NETWORK_PROVIDER directly or specify the criteria you care about and let Android tell you which location provider to use.

    // Select the criteria you care about
    Criteria c = new Criteria();
    c.setAccuracy(Criteria.ACCURACY_COARSE);
    c.setPowerRequirement(Criteria.POWER_LOW);
    
    // Let the system tell you what provider you should use for your criteria
    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    String p = lm.getBestProvider(c, true);
    
    // Call other Location Manager functions using the above provider...
    
Tim Kryger
  • 11,166
  • 4
  • 52
  • 41