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% 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
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.
Zwei Vorschläge und ein Gedanke:
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. Math.sqrt(x*x+y*y+z*z)
. 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]
Tags und Links android accelerometer