2016-04-03 4 views
12

Ich entwickle eine Anwendung für Android Wear. Er überwacht Koordinaten von einem Beschleunigungssensor und findet ein Muster.Beschleunigungssensor verursachen Verluste in einem Dienst

Um dies zu tun, wenn der Benutzer auf eine Schaltfläche klickt, beginnt der Dienst und beginnt, Koordinaten in einer Liste zu speichern. Üblicherweise zeichnet der Beschleunigungssensor 4 bis 5 Koordinaten pro Sekunde auf.

Das Problem ist, dass die onSensorChanged() -Methode manchmal Daten während einiger Sekunden nicht empfängt, was zu Datenverlusten und Problemen beim Suchen eines Musters führt.

ist hier ein Kern meines Service: https://gist.github.com/cpalosrejano/8f0e59e47124275136fc3d5d941faa07

Dinge, die ich versucht habe:

  • I android bin mit: stopWithTask = false den Dienst zu verhindern zu stoppen, wenn die Aktivität stirbt.
  • Ich habe auch eine WakeLock verwendet, um zu verhindern, dass das Gerät schlafen gehen, während die Dienste Koordinaten aufzeichnen.

Was mache ich falsch? Gibt es eine andere Möglichkeit, Callbacks vom Beschleunigungssensor zu empfangen, ohne Datenverlust zu verursachen?

Vielen Dank im Voraus.

+0

Haben Sie versucht, eine andere 'SensorManager.SENSOR_DELAY_ *' Konstante zu verwenden? Irgendwelche Auswirkungen auf das Problem? – String

Antwort

0

Es ist ein bisschen spät, aber Finnaly fand ich die Lösung.

Ich starte den Dienst im Vordergrund, mit der Methode startForeground(int, Notification), so dass der Dienst nie aufhören wird. Mit diesem Fix werden Sie niemals ein SensorEvent verlieren.

0

Sie können die Daten in eine Datei auf dem Gerät schreiben und aus der Datei lesen.

Verwandte Themen