Bewegung mit Accelerometer in Android genau erkennen

8

Ich implementiere einen Demo TIMER, mit Vibration (unter bestimmten Bedingungen), Wenn ich auf Start drücke startet mein Timer und wenn ich den Stop Knopf drücke stoppt er einfach.

Jetzt muss ich eine Funktionalität integrieren, wenn die Person das Gerät verschiebt (während der Timer läuft) , sollte es den Timer zurücksetzen. Es funktioniert ziemlich gut, aber die Beschleunigungssensorfunktion funktioniert nicht absolut genau. Es braucht einen schnellen Ruck, um den Timer zurückzusetzen.

Schlage mir eine gute Lösung für das gleiche vor.

Hier ist mein Code

%Vor%

}

Timer-Aktivität

%Vor%     
Gaurav Arora 15.05.2013, 11:44
quelle

3 Antworten

6

Ich denke, die nächste Stufe in der Entwicklung Ihrer App besteht darin, die Beschleunigungswerte zu betrachten, die in einer Tabelle erzeugt werden. Ich benutze dafür Excel, aber jedes Werkzeug, das Graphen produzieren kann, wird tun. Also ändere onSensorChanged() in etwas wie

%Vor%

und dann können Sie currentTime, mAccelCurrent und mAccel in den Android Logging-Mechanismus aufnehmen. Erstellen Sie alternativ Ihre eigene Textdatei, schreiben Sie die Werte dort und öffnen Sie die Datei in einem Werkzeug, das Diagramme erzeugen kann. Aus den Diagrammen können Sie dann entscheiden, welche Werte für Ihren Trigger verwendet werden sollen.

    
Stochastically 16.05.2013, 07:59
quelle
2

Zwei Vorschläge und ein Gedanke:

  1. Für konsistentes Verhalten sollten Sie die Länge des event.values-Vektors, d. h. Math.sqrt(x*x+y*y+z*z) , und nicht die einzelnen Werte betrachten. Mathematisch ist Math.sqrt(x*x+y*y+z*z) unabhängig von Ihrem Koordinatensystem, d. H. Wie das Gerät relativ zum Boden usw. ausgerichtet ist, während die einzelnen Zahlen x, y, z nicht sind.
  2. Ihre aktuelle App sucht nach Änderungen in der Beschleunigung. Stattdessen sollten Sie nach einer hohen Beschleunigung suchen, d. H. Große Werte von Math.sqrt(x*x+y*y+z*z) .
  3. Ich schrieb vor kurzem diese Antwort über die Verwendung von Beschleunigungssensoren für einen Schrittzähler, und ich denke Sie könnten es interessant finden.
Stochastically 15.05.2013 17:50
quelle
1

Um lineare Beschleunigung in einer bestimmten Richtung zu finden, können Sie auch diesen Code verwenden:

%Vor%

Nach dem Berechnen der linearen Beschleunigung können Sie einfach eine "if" -Anweisung verwenden, um zu überprüfen, ob Sie mächtig waren oder nicht! [Höherer Wert = stärkerer Ruck]

    
Siddharth Arora 04.04.2018 17:22
quelle

Tags und Links