2016-05-24 13 views
0

Ich habe eine Android-App entwickelt, um Essen im Laufe des Tages zu verfolgen. Wir haben noch nicht entschieden, welche Sensoren wir verwenden sollen. Die App kann also alle Sensoren eines Dienstes verbinden und sie für eine unbestimmte Zeit streamen, je nachdem, wann das Telefon beschließt, die Ressourcen der App zu bereinigen. Was ich während des Zuverlässigkeitstests festgestellt habe, ist, dass Beschleunigungsmesser und Gyroskop nach zwei bis drei Minuten abgeschnitten haben, wenn sie beide mit mittlerer oder hoher Frequenz strömen. Ich habe einen Timeout-Thread implementiert, der nach den zuletzt empfangenen Beschleunigungs- oder Kreiseldaten sucht (abhängig davon, ob sie streamen sollen) und neue Listener neu registriert, wenn sie nicht mehr streamen. Hat jemand dieses Problem und/oder hat jemand Empfehlungen für eine weniger batterieintensive Art von zuverlässigem Accu/Gyro Streaming?Microsoft Band 2 Data stoppt Streaming für Beschleunigungsmesser und Gyroskop

Fassen wir zusammen:

  • Registrierte Beschleunigungsmesser und Gyroskop Zuhörer nach 2-3 Minuten Empfangen von Daten stoppen
  • Dies geschieht nur, wenn sie bei den mittleren und hohen Frequenzeinstellungen Beschleunigungs-/Gyro-Streaming und nur dann, wenn accel und Kreisel beide Streaming
  • sind geschieht Dies unabhängig davon, ob andere Sensoren strömen oder nicht
  • keine Ausnahme ausgelöst, wenn diese
  • Subscript geschieht ion/Abmelde sowie eingehenden Daten werden alle
  • Ich habe Thread eine hacky Timeout auf neue Themen behandelt, die hebt die Registrierung und accel/Gyro für neue Zuhörer registriert, wenn sie

Fragen Streaming-Stop:

  1. Ist noch jemand auf dieses Problem gestoßen?
  2. Gibt es ein Problem bei der Verwendung neuer Threads, um die Daten zu behandeln, die dazu führen würden, dass die Listener nicht registriert werden (unwahrscheinlich, weil andere Daten auf diese Weise implementiert werden)?
  3. Gibt es eine bessere (batteriesparendere) Möglichkeit, ein nicht aufgetretenes Ereignis zu erkennen und darauf zu reagieren, als eine Thread-Überprüfung auf ein Timeout zu haben?

Vielen Dank im Voraus!

Antwort

0

Vier Dinge.

1) Die Daten des Microsoft Band-Gyrosensors auf dem SDK enthalten die Daten des Beschleunigungsmessers. Sie sollten daher niemals beide gleichzeitig abonnieren müssen.

2) Das Abonnieren über einen längeren Zeitraum führt zu einer drastischen Verringerung der Batterielebensdauer des jeweils angeschlossenen Bandes und wird daher nicht empfohlen.

3) Streaming erfordert, dass eine Verbindung zu Microsoft Health BandService aktiv bleibt. Und wenn diese Verbindung verloren geht, erhalten Sie keine Daten mehr. (Wahrscheinlich ist das, was in Ihrem Fall passiert)

4) Microsoft hat eine Cloud-API, die nützlicher für das sein könnte, was Sie tun möchten. http://developer.microsoftband.com/cloudAPI

+0

Vielen Dank für die informative Antwort! Ich werde in die Cloud-API und das BandService-Problem schauen (Ich weiß, wo diese Ausnahme ausgelöst würde). Ich bin jedoch am ersten Punkt verwirrt. Ich hatte den Eindruck, dass man Winkelgeschwindigkeit oder Winkelbeschleunigung vom Gyroskop bekommen kann und ich kann es in der Dokumentation nicht finden. Kannst du mich auf deine Quelle hinweisen? Danke noch einmal. –

0

Haben Sie andere Geräte über Bluetooth mit Ihrem Telefon verbunden? Falls ja, versuchen Sie, alles außer dem Band zu trennen.

Aus meiner Erfahrung führt das Koppeln und Kommunizieren eines anderen Geräts mit dem Telefon dazu, dass die Zuhörer ohne Vorankündigung abgeschaltet werden, was oft einen Neustart der App oder des Telefons erfordert. Mein Telefon sammelte gleichzeitig Daten von einem Tablet und den Sensoren, und ich entdeckte, dass die Sensoren mehr als 2-3 Minuten dauern würden, wenn ich überhaupt keine Verbindung zum Tablet herstellen würde.

Hoffe, das hilft!