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)
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.
ReplyDeleteTo 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().