Java Android Bewegungssensor

ali7566

Lieutenant
Dabei seit
Feb. 2007
Beiträge
874
Hallo Leute,

ich habe da mal eine Frage bezüglich der Bewegungsensoren zu Android:

Ich schreibe aktuell eine App bei der ich Bewegungssensoren einsetzen möchte damit wenn ich das Telefon nach vorne/hinten kippe sich der Y-Achsen Wert verändert und wenn ich es nach links oder rechts bewege ein X-Achsen wert sich ändert.

Ich habe meine App soweit schon fertig und hatte zuvor den Beschleunigungsensor genutzt und dessen X und Y Werte ausgewertet. Jedoch habe ich hier das Problem das wenn ich einmal nach vorne gekippt habe und die Position so behalte, das die Beschleunigung ja logischerweise nicht vorhanden ist und ich keinen Y-Wert habe. Gleiches Spiel beim X-Wert.

Mein Ziel ist es das wenn ich das Handy im Querformat gerade halte, X= 0 und Y= 0 ist und je nachdem wie ich das Handy bewege ich den aktuellen X und Y Wert bekomme in relation zu X= 0 und Y= 0.

Ich habe mir auch schon den Gyroskop angeschaut und ihn auch schon implementiert, jedoch nicht mit dem erwünschten Erfolg.

In den Google Beispielcode -> ApiDemos/OS/Sensors ist im prinzip genau das enthalten was ich möchte, jedoch ist dieser Code unkommentiert und wirklich zäh zu verstehen.

Über Hilfe wäre ich dankbar.

Gruß Ali.
 

Gandalf2210

Captain
Dabei seit
Mai 2010
Beiträge
3.566
rein physikalisch müsste die beschleunigung doch vorhanden sein. Es ist ja kein richtiger beschleunigungsmesser, sondern nur ein lagesensor (Er misst die Erdbeschleunigung, nciht die beschleunigung des handys).
Wenn das Telefon geneigt ist misst der eine konstante beschleunigung in die entsprechende Richtung, da eine konstante Kraft auf ihn wirkt.

Wenn du eine ÄNDERUNG haben willst, eine Rotation in Rad/s, dann musst du das Gyroskop nehmen, aber für reine Kraft/Lage Messung sollte der Beschleunigungssensor ausreichen.

Ist auch in der App AndroSensor schön zu sehen. bringst du das Handy in eine andere Lage, dann geben die sensoren auch einen konstanten, veränderten Wert wieder.
 
Zuletzt bearbeitet:

ali7566

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2007
Beiträge
874
Danke für die Antwort...aber irgendwie komme ich trotzdem nicht so ganz voran wie ich es mir vorstelle:

Ich habe es mal mit dem Gyroskop versucht und zudem mal die Code Beispiele von Google genutzt aber trotzdem nicht die Daten bekommen die ich brauche.

Meine App ist eine reine Landscape App, wenn ich das Telefon nach vorne und hinten schwenke möchte ich die genaue Y-Achsen veränderung ermitteln, wenn ich nach links oder rechts kippe möchte ich die X-Achsen veränderungen haben. Wenn das Telefon im Landscape auf den Tisch liegt bzw. wenn ich es in der gleichen Position in der Hand halte möchte ich ca. X ungefähr 0 und Y ungefähr 0.

Wer hat da einen brauchbaren Ansatz für mich?

Gruß Ali.
 

Gandalf2210

Captain
Dabei seit
Mai 2010
Beiträge
3.566
sicher das deine Hardware funktioniert und keinen Fehler hat?
Installier mal andro Sensor, und guck mal, ob die Sensoren so ausschlagen, wie du es dir vorstelltst (was sie tun sollten, wenn die funktionieren)
 

ali7566

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2007
Beiträge
874
Hi Gandalf,

habe nun AndroSensor getestet und da passten die Werte so wie ich sie wollte.

Dann bin ich aber auch auf den Fehler gekommen. Normalerweise wollte ich die Sensorwerte gar nicht als Text ausgeben, da die Sensorwerte sich in Form von Pfeilanimationen für die Steuerung sichtbar machen. Um aber die Werte trotzdem zu sehen habe ich sie mal schnell in ein Toast gepackt und wollte x und y haben. Nur blöd das eine Toast Notification viel langsamer ist als das ständige aufrufen von "onSensorChanged(...)"

Nun hab ich dann einfach mal zwei Textviews in die GUI eingefügt und dann die Sensorwerte anzeigen lassen, und schon hatte ich auch die gleichen Werte wie bei AndroSensor.

Gruß Ali.
 
Top