private void updateSolution(int state) {
   logger.info("Update Solution");
   currentState = state;
   if ((System.currentTimeMillis() - lastFixTimestamp) > 3000) {
     hasFix = false;
   }
   // locationUpdated(locationManager, locationManager.getLastKnownLocation(provider), true);
   if (state == LocationProvider.OUT_OF_SERVICE) {
     if (receiverList != null) {
       receiverList.receiveStatus(LocationMsgReceiver.STATUS_OFF, 0);
       receiverList.receiveMessage(
           Locale.get("androidlocationinput.ProviderStopped") /*provider stopped*/);
     }
     // some devices, e.g. Samsung Galaxy Note will claim LocationProvider.AVAILABLE
     // even when there's no fix, so use a timestamp to detect
   } else if (state == LocationProvider.TEMPORARILY_UNAVAILABLE || !hasFix) {
     if (receiverList != null) {
       receiverList.receiveStatus(LocationMsgReceiver.STATUS_NOFIX, numSatellites);
     }
   } else if (state == LocationProvider.AVAILABLE || hasFix) {
     if (receiverList != null) {
       receiverList.receiveStatus(LocationMsgReceiver.STATUS_ON, numSatellites);
     }
   }
 }