Zur Verwendung des Sensors für den Beschleunigungsmesser instanziieren Sie ein Accelerometer-Objekt und registrieren Sie die von diesem Objekt ausgelösten
update
-Ereignisse. Das
update
-Ereignis ist ein Accelerometer-Ereignisobjekt. Das Ereignis hat vier Eigenschaften, bei denen es sich jeweils um Zahlen handelt:
-
accelerationX
– Beschleunigung entlang der x-Achse, gemessen in G. Die x-Achse verläuft von der linken zur rechten Seite des Geräts, wenn es sich in der aufrechten Position befindet. (Das Gerät befindet sich in der aufrechten Position, wenn die Oberseite des Geräts nach oben zeigt.) Die Beschleunigung ist positiv, wenn das Gerät sich nach rechts bewegt.
-
accelerationY
– Beschleunigung entlang der y-Achse, gemessen in G. Die y-Achse verläuft von der unteren zur oberen Seite des Gerät, wenn es sich in der aufrechten Position befindet. (Das Gerät befindet sich in der aufrechten Position, wenn die Oberseite des Geräts nach oben zeigt.) Die Beschleunigung ist positiv, wenn sich das Gerät in Relation zu dieser Achse nach oben bewegt.
-
accelerationZ
– Beschleunigung entlang der z-Achse, gemessen in G. Die z-Achse verläuft senkrecht zur Oberfläche des Geräts. Die Beschleunigung ist positiv, wenn Sie das Gerät so halten, dass seine Oberseite nach oben zeigt. Die Beschleunigung ist negativ, wenn die Oberseite des Geräts zum Boden zeigt.
-
timestamp
– Die Anzahl der Millisekunden seit der Initialisierung der Laufzeitumgebung bis zum Auftreten des Ereignisses.
1 g ist die Standardbeschleunigung aufgrund der Schwerkraft, ungefähr 9,8 m/s
2.
.
Im Folgenden sehen Sie ein einfaches Beispiel zur Anzeige von Daten des Beschleunigungsmessers in einem Textfeld:
var accl:Accelerometer;
if (Accelerometer.isSupported)
{
accl = new Accelerometer();
accl.addEventListener(AccelerometerEvent.UPDATE, updateHandler);
}
else
{
accTextField.text = "Accelerometer feature not supported";
}
function updateHandler(evt:AccelerometerEvent):void
{
accTextField.text = "acceleration X: " + evt.accelerationX.toString() + "\n"
+ "acceleration Y: " + evt.accelerationY.toString() + "\n"
+ "acceleration Z: " + evt.accelerationZ.toString()
}
Bevor Sie diesen Code verwenden können, müssen Sie das
accTextField
-Textfeld erstellen und der Anzeigeliste hinzufügen.
Sie können das gewünschte Zeitintervall für Ereignisse des Beschleunigungsmessers anpassen, indem Sie die
setRequestedUpdateInterval()
-Methode für das Accelerometer-Objekt aufrufen. Diese Methode akzeptiert einen Parameter,
interval
. Dies ist das angeforderte Aktualisierungsintervall in Millisekunden:
var accl:Accelerometer;
accl = new Accelerometer();
accl.setRequestedUpdateInterval(1000);
Die tatsächliche Zeitspanne zwischen Aktualisierungen des Beschleunigungsmessers kann größer oder kleiner als dieser Wert sein. Änderungen am Aktualisierungsintervall betreffen alle registrierten Listener. Wenn Sie die
setRequestedUpdateInterval()
-Methode nicht aufrufen, werden die Aktualisierungen in der Anwendung gemäß dem Standardintervall des Geräts durchgeführt.
Die Accelerometer-Daten sind nicht hundertprozentig genau. Sie können einen gleitenden Mittelwert der neuesten Daten verwenden, um Ungenauigkeiten auszugleichen. Im folgenden Beispiel werden beispielsweise kürzlich erhaltene Daten des Beschleunigungsmessers bei den aktuellen Daten berücksichtigt, um ein gerundetes Ergebnis zu erhalten:
var accl:Accelerometer;
var rollingX:Number = 0;
var rollingY:Number = 0;
var rollingZ:Number = 0;
const FACTOR:Number = 0.25;
if (Accelerometer.isSupported)
{
accl = new Accelerometer();
accl.setRequestedUpdateInterval(200);
accl.addEventListener(AccelerometerEvent.UPDATE, updateHandler);
}
else
{
accTextField.text = "Accelerometer feature not supported";
}
function updateHandler(event:AccelerometerEvent):void
{
accelRollingAvg(event);
accTextField.text = rollingX + "\n" + rollingY + "\n" + rollingZ + "\n";
}
function accelRollingAvg(event:AccelerometerEvent):void
{
rollingX = (event.accelerationX * FACTOR) + (rollingX * (1 - FACTOR));
rollingY = (event.accelerationY * FACTOR) + (rollingY * (1 - FACTOR));
rollingZ = (event.accelerationZ * FACTOR) + (rollingZ * (1 - FACTOR));
}
Ein solcher gleitender Mittelwert wird jedoch nur bei einem kurzen Aktualisierungsintervall des Beschleunigungsmessers empfohlen.