Ich denke darüber nach, zwei separate Alarme zu haben, um die Standortdaten eines Benutzers stündlich zu erfassen, eine, die alle 59 Minuten abläuft, um den Client zu verbinden und eine Sekunde, um den Standort zu ermitteln und anschließend den Client zu trennen.Was ist der effizienteste Ansatz, um mit LocationClient regelmäßig Updates zu erhalten?
In Bezug auf die Lebensdauer der Batterie, sollte ich noch etwas tun, wenn der Standort des Benutzers der primäre Abfluss der App sein wird? Oder gibt es einen anderen Ansatz, um zwei Alarme zu haben? Ich hatte ursprünglich nur einen einzigen Alarm, aber die Durchführung einer (! MlocationClient.isConnected) und dann Verbindungsüberprüfung gibt dem Client nicht genug Zeit, um sich zu verbinden.
Danke für Ihre Einsicht.
private int PERIODIC_UPDATE = 60000*60; //gets location and disconnects every hour
private int PERIODIC_RECONNECTION_UPDATE = 60000*59; //connects 1 minute before getLocation call
Timer toReconnect = new Timer();
toReconnect.schedule(new TimerTask() {
@Override
public void run() {
mLocationClient.connect();
}
}, 5000, PERIODIC_RECONNECTION_UPDATE);
Timer theTimer = new Timer();
theTimer.schedule(new TimerTask(){
@Override
public void run() {
try {
if(!mLocationClient.isConnected()) {
mLocationClient.connect();
//This will not have much affect because cannot so quickly, will remove.
}
Location theLocation = mLocationClient.getLastLocation();
if(theLocation!=null) {
checkPostLocation(theLocation);
mLocationClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}}, 5000, PERIODIC_UPDATE);
Der effektivste Weg ist, alle Messenger Apps zu deaktivieren und das Display auszuschalten. Dann können Sie GPS für mehr als 8 Stunden einmal pro Sekunde aufzeichnen. – AlexWien
@ jsc123 Beachten Sie, dass die Verwendung des Fused Location Providers mit "getLastLocation()" keine Garantie für einen GPS-Standort ist. Sie können einen Standort erhalten, der hauptsächlich auf Sensoren, WLAN oder Mobilfunkverbindungen basiert. Außerdem erzwingen Sie nicht unbedingt einen neuen Standort, sodass Sie möglicherweise den gleichen Speicherort erhalten, den Sie beim letzten Mal erhalten haben, wenn keine andere App, einschließlich Google Services, einen aktualisierten Speicherort angefordert hat. –
@SeanBarbeau, wäre meine Implementierung nicht die beste, wenn ich immer versuche, den genauesten Standort in regelmäßigen Abständen zu erhalten, obwohl es ein größerer Abfluss ist? – NumenorForLife