benutzen des G Sensors

J

jim

Ambitioniertes Mitglied
0
Hallo liebes Forum,

ich würde gern die Daten des G Sensors benutzen um mein "Raumschiff" durch bewegen des Telefons fliegen zu lassen. Ich benutze opengl und ein zeichne somit in einer drwa Methode. In der activity welchen diesen View besitz habe ich folgendes implementiert.

Code:
      manager = (SensorManager) getSystemService(this.SENSOR_SERVICE);
         Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
         manager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_NORMAL);


    private SensorEventListener listener = new SensorEventListener() {
    
    
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == SensorManager.SENSOR_ACCELEROMETER) {
            float x = event.values[0];
            float y = event.values[1];
            float z = event.values[2];
       
        
        Log.i(Float.toString(x),Float.toString(y));
        
        }

        
    };

    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub
        

    }
        
    };
könnte mir da jemand weiterhelfen? irgendwie bekomm ich nie werte und leider finde ich kaum beispiele.. . Links sind willkommen und Hinweise natürlich auch.

LG Marcel
 
Hast du mal einen Breakpoint auf dein onSensorChanged gesetzt?

Du darfst in der Zeile
if (event.sensor.getType() == SensorManager.SENSOR_ACCELEROMETER) {
nicht mit SensorManager.SENSOR_ACCELEROMETER vergleichen sondern mit Sensor.TYPE_ACCELEROMETER, dann sollte das auch funktionieren.

Die Benutzung von Log.i(String tag, String msg) sieht auch ein bisschen anders aus. Normalerweise sollte der erste Parameter ein Tag sein (Bspw. "Meine App") und der zweite die Werte beinhalten. Dann kannst du den Log im DDMS nach "Meine App" filtern und siehtst nur deine Ausgaben.
 
Zuletzt bearbeitet:
Hey, vielen dank für deine Antwort! Ja mit den Logs arbeite ich auch anders wenn es notwenidg ist. ein Test test kann ich dann noch filtern, wenn ich nicht mehr brauche ;-) . (aber du hast natürlich vollkommen recht!) will gerade dein hinweisausprobieren leider springt der debugger die stellen nicht an bzw. es passiert nix. 1. setze Point im Code 2. debug as android application Da müsste doch eigetnlich der Debugger zu mein Breakpoint springen(weis gerade nicht warum er einfach weiter läuft). Ist den mein beispiel eigentlich richtig? wollte es später in die activity implementieren(sprich implements SensorEventListener). weist du was ich beim debuggen falsch mache?sonst funktioniert es eigentlich, habe auch mehrer points gesetzt....
(ein davon muss er anspringen)
LG marcel
 
Hast du im application-Tag im Manifest debuggable auf true gesetzt?

Und wie gesagt, deine IF-Abfrage kann (derzeit, wer weiß ob Konstanten mal geändert werden) nur false ergeben, du vergleichst momentan 1 == 2.
 
  • Danke
Reaktionen: jim
Das Debug fehlte in der Manifest... (Danke 1)
Was ich nicht verstehe ist das ich ja beim sensor sage welchen ich benutzen will
Code:
 Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
und dessen ID (int) ja eigetnlich beim vergleich benutzt wird
Code:
 if (event.sensor.getType() == SensorManager.SENSOR_ACCELEROMETER)
Die Abfrage(If) im Listener, zumindest dachte ich wäre reine formsache, um sicherzustellen welcher sensor das ist(man könnte ja weitere hinzunehmen).
Ohne if funktioniert es.. . Was ist also an der Ifabfrage falsch wenn ich nur den Lagesensor wissen will . hmm bin mir auch nicht sicher ob ich gyroscope oder accelerometer verwenden muss/will um mein raumschiff durch neigen zu steuern.

LG Marcel
 
Lies dir nochmal meinen ersten Beitrag durch. Du vergleichst eine Konstante von SensorManager mit einer Konstante von Sensor, das funktioniert nicht. Der Compiler meckert nicht, weil beides int ist.

Das Gyroskop bestimmt die Lage deines Phones, das Accelerometer die Beschleunigung.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: jim
Da alles wunderbar klappt,nochmal vielen Dank!!!! Mein Erstgeborenen habe ich schon einem anderen Forummitglied versprochen aber sollte es noch mehr nachwuchs geben werde ich an dich denken :)


Danke! LG Jim
 
jim schrieb:
Da alles wunderbar klappt,nochmal vielen Dank!!!! Mein Erstgeborenen habe ich schon einem anderen Forummitglied versprochen aber sollte es noch mehr nachwuchs geben werde ich an dich denken :)


Danke! LG Jim
Das ist nett! Bittschön und danke auch!
 
Hallo Zusammen,

kleine Verständnisfrage:
ich habe eine Test-App, die die event values
x = event.values[0];
y = event.values[1];
z = event.values[2];
des Accelerometer Sensors ausgibt.

Liegt das Handy auf dem Tisch,sind die besagten Values:
x um 0.16...
y um 0.51...
z um 10.92...

drehe ich das Handy auf die Seite folgt
~ -10
~ 0
~ 0

Ich hatte bei einem Beschleunigungssensor eher etwas erwartet, wie:
ziehe ich das Handy ruckartig nach oben (z-achse) bekomme ich kurz einen Ausschlag, der dann wieder verebbt.

So kläre man mich doch auf :D
 
Willkommen im Forum.

Deine Werte liegen an den physikalischen Hintergründen.
Die Gravitation ist dummerweise auch eine Beschleunigung. Wenn du Werte von überall null haben willst musst du das Gerät im luftleeren Raum loslassen. Wenn du es einfach so mal hochwirfst und wieder fängst bekommst du während dem freien Flug nahezu null hin.
Die 10 die du bekommst sollten (denke ich mal) eigentlich 9,81 m/sec² sein.

Das was du dir so vorstellst bekommst du auch raus, allerdings eben immer überlagert von der Gravitation (solange du dieser nicht freien Lauf lässt ;))
 
  • Danke
Reaktionen: RaRu
Vielen Dank! ;-)
 
Immer gerne! :)

Kannst ja das Handy einfach mal über den Tisch ziehen (ich übernehme keine Verantwortung für Kratzer auf der Rückseite).
Dann bekommst du genau deinen Ausschlag am Anfang und am Ende.
 
FelixL schrieb:
Immer gerne! :)

Kannst ja das Handy einfach mal über den Tisch ziehen (ich übernehme keine Verantwortung für Kratzer auf der Rückseite).
Dann bekommst du genau deinen Ausschlag am Anfang und am Ende.
Handy auf ein Blatt Papier legen und damit über den Tisch ziehen. So gibts definitiv keine Kratzer.:thumbsup:
 

Ähnliche Themen

A
Antworten
1
Aufrufe
641
swa00
swa00
J
Antworten
5
Aufrufe
846
swa00
swa00
R
Antworten
4
Aufrufe
941
R1Snake
R
Zurück
Oben Unten