Wasserwaage mit Windows Phone

Dieser Artikel ist ein Gastbeitrag von Kalle. In dem heutigen Artikel beschreibe ich wie man sich schnell und einfach eine App programmieren kann, um sein Handy als Wasserwaage nutzen zu können. Dafür werden wir einen eingebauten Sensor unseres Windows Phones verwenden. Am Ende des Artikels findet ihr darüber hinaus den gesamten Sourcecode als kostenlosen Download.

Wasserwaage

Preis: Kostenlos

Als erstes muss in den Projekteinstellungen sichergestellt werden, dass die App auf die Sensoren des Handys zugreifen darf, dafür muss die Datei “WMAppManifest.xml” im Ordner Properties geöffnet werden und unter “Capabilities” muss das Häkchen bei “ID_CAP_SENSORS” gesetzt werden.

Capabilities

Capabilities-Einstellung anpassen

Mit dieser Berechtigung darf die App jetzt auf Sensoren im Smartphone zugreifen, die Klassen die dazu benötigt werden, findet man im Namspace “Microsoft.Devices.Sensors“. Für die Wasserwaage wird allerdings nur die Klasse “Accelerometer” benötigt, diese ist dafür da die aktuellen Beschleunigungskräfte auf das Handy darzustellen.

Um jetzt tatsächlich auf den Beschleunigungssensor zuzugreifen wird natürlich ein Objekt der Accelerometer-Klasse benötigt. Nachdem das Objekt erstellt ist muss dem Sensor aber noch gesagt werden, dass er anfangen soll Messdaten zu produzieren. Das einfach mit der Methode “Start()” gemacht.

So alleine bringt das Accelerometer-Objekt allerdings noch nicht viel, um die Werte in regelmäßigen Zeitabständen auszulesen wird noch ein <a
href=”http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatchertimer.aspx”>Timer Objekt benötigt. Die Timer Klasse bietet, wie der Name schon vermuten lässt, die Möglichkeit in einem Festgelegten Zeitabstand eine Aktion auszuführen. Das Intervall legt man einfach über die Eigenschaft “Interval” fest und die Methode die man wiederholt ausführen will fügt man als Eventhandler dem “Tick“-Property an. Der Timer muss natürlich auch noch mit der “Start()“-Methode gestartet werden.

Damit die Methode mit einem EventHandler übergeben werden kann, muss beachtet werden, dass die Parameter stimmen, es müssen ein Sender-Objekt und Event-Argumente entgegen genommen werden. Die Methode selbst liest hier nur die Beschleunigungswerte für die X- und Y-Richtung aus und speichert diese in den eigenen Properties. Der Sensor bietet auch noch Werte für die Z-Richtung also aus dem Bildschirm heraus, aber die werden hier nicht benötigt.

Der Sensor liefert float-Werte zwischen -1 und 1, damit die Darstellung und das Databinding einfacher ist multipliziere ich den Rückgabewert der Properties mit 200. So kann ein GUI Objekt anhand von Databinding einfach um -200 bis 200 Pixel in die jeweilige Richtung verschoben werden.

Als grafische Oberfläche habe ich einfach nur einen Kreis, der die Blase in der Wasserwaage darstellt, und ein paar Hilfslinien erstellt.

GUI

fertige UI unserer App

Als letztes muss jetzt nur noch die Datenbindung bzw. das Databinding erstellt werden. Das kann entweder über Blend gemacht werden, indem man die “Bubble” auswählt und unter der Eigenschaft Transform den X- und Y-Wert an das entsprechende Property bindet.

DatabindingBlend

Oder man fügt die entsprechenden Zeilen im XAML-Code ein:

Im Einsatz sieht das ganze dann folgendermaßen aus:

WasserwaageTest

fertige App

Wie auch schon bei der Münzwurf-App gibt es auch hier wieder den gesamten Code als Download:

  Wasserwaage – Anwendung (84,0 KiB)

One Response to Wasserwaage mit Windows Phone

  • Siburunghantu
    9 / 9 / 2013

    Finding this post has solved my problem!

    Siburunghantu 9 / 9 / 2013

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *