Я работал над приложением, которое отправляет пользователю по электронной почте местоположение телефона по GPS, и очень важно, чтобы телефон отправлял текущее местоположение, а не местоположение того времени.
Я попробовал пару исправлений, таких как изменение minTime и minDist, а также удаление (или не удаление) слушателя, когда закончите. Однако, это приложение должно использоваться только в определенное время, и я хочу минимального использования батареи, поэтому оставить его включенным - не лучший вариант.
Мне повезло с некоторым обновлением, если я установил minTime на небольшое количество и никогда не удалял LocationListener, в этом случае второе отправленное мной сообщение будет обновлено, но кроме этого ...
Это заставляет меня думать, что мне нужно дать ему больше времени для точного определения местоположения GPS, но как я заставлю его это сделать?
Имея это в виду, я пробовал этот фрагмент:
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
};
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, (long)(.000001), (float)(0),
locationListener);
String s = "";
SimpleDateFormat timingFormat = new SimpleDateFormat("hh:mm");
timingFormat.format(new Date());
s += "The current time according to the clock is: "
+ timingFormat.format(new Date()) + "\n";
Location location = lm
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
lm.removeUpdates(locationListener);
(возвращает строку s с добавленным адресом)