Friday, January 20, 2012

Android: Prevent GPS from stopping


I have an issue with the GPS on Android. I am using the onStatusChanged(int status) with the GPSListener to read the status of the GPS. However, I notice that after some point, the GPS stops since the status returns:



GpsStatus.GPS_EVENT_STOPPED



How can I prevent the GPS from stopping at all? (Eventually I will stop it manually, but having it on when needed is very crucial)

1 comment:

  1. If you are running your LocationListener in a Service it will be stopped eventually unless you set the wake lock. This has nothing to do with the GPS itself.

    To acquire and release the wake lock I use the following code in my service:

    /**
    * Acquire a wake lock.
    * Ensure the CPU remains on and the screen is at least dim.
    */
    private void aquireWakeLock() {
    final PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
    this.wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG);
    this.wakeLock.acquire();
    if( DEBUG )
    Log.d( TAG, "Wake lock aquired:" + this.wakeLock);
    }

    /**
    * Release the wake lock.
    */
    private void releaseWakeLock() {
    if( this.wakeLock == null )
    return;
    this.wakeLock.release();
    this.wakeLock = null;
    if( DEBUG )
    Log.d( TAG, "Wake lock release");
    }


    The methods are called in onCreate() resp. onDestroy().

    ReplyDelete