1. Nimm jetzt an unserem Geotel Note - Gewinnspiel teil - Informationen zum Note findest Du hier!
  1. jim, 16.09.2010 #1
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    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
     
  2. BenOtto, 16.09.2010 #2
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    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: 16.09.2010
  3. jim, 16.09.2010 #3
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    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
     
  4. BenOtto, 16.09.2010 #4
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    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.
     
    jim bedankt sich.
  5. jim, 16.09.2010 #5
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    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
     
  6. BenOtto, 16.09.2010 #6
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    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: 16.09.2010
    jim bedankt sich.
  7. jim, 18.09.2010 #7
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    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
     
  8. BenOtto, 20.09.2010 #8
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Das ist nett! Bittschön und danke auch!
     
  9. RaRu, 26.09.2010 #9
    RaRu

    RaRu Neuer Benutzer

    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
     
  10. FelixL, 26.09.2010 #10
    FelixL

    FelixL Ehrenmitglied

    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 ;))
     
    RaRu bedankt sich.
  11. RaRu, 26.09.2010 #11
    RaRu

    RaRu Neuer Benutzer

    Vielen Dank! ;-)
     
  12. FelixL, 26.09.2010 #12
    FelixL

    FelixL Ehrenmitglied

    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.
     
  13. BenOtto, 27.09.2010 #13
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

  14. geminga, 27.09.2010 #14
    geminga

    geminga Android-Lexikon

    Handy auf ein Blatt Papier legen und damit über den Tisch ziehen. So gibts definitiv keine Kratzer.:thumbsup:
     
Die Seite wird geladen...
Ähnliche Themen - benutzen des Sensors Forum Datum
SQLite asynchron benutzen Android App Entwicklung 26.02.2017
Brauche Vorschläge welche GUI Elemente ich benutzen soll in meiner App Android App Entwicklung 24.12.2016
Eigene App - Darf man Library benutzen Android App Entwicklung 18.08.2016
Wie SQLite Primärschlüssel sinnvoll benutzen? Android App Entwicklung 22.06.2016
[OFFEN] Barcodescan und Übergabe an Webseite Android App Entwicklung Donnerstag um 14:10 Uhr
[OFFEN] Verhalten des Backbuttons bei VideoView in ListFragment Android App Entwicklung 11.05.2017
[ERLEDIGT] Existierendes Objekt immer NULL Android App Entwicklung 10.05.2017
[ERLEDIGT] Landscape-Darstellung nach Entsperrung des Geräts Android App Entwicklung 27.03.2017
[ERLEDIGT] App stürzt neuerdings beim anzeigen des eigenen Standorts ab Android App Entwicklung 19.03.2017
[ERLEDIGT] Layout (Design) erkennt style nicht? Android App Entwicklung 13.03.2017