1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Nicht auf G-Sensor reagieren

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von muck, 09.01.2011.

  1. muck, 09.01.2011 #1
    muck

    muck Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    7
    Registriert seit:
    07.11.2010
    Hallo zusammen,

    folgendes Problem:

    Ich habe eine Anwendung in welcher ich einstellen kann ob sie im Hochformat, Querformat oder Autoausrichtung laufen soll.

    Im Debugger habe ich festgestellt das wenn das Handy gedreht wird die Aktivity immer neu erstellt wird. Das ist bei festeingestelltem Hoch- / Quer- Format unnötig. Kann ich verhindern das die Anwendung auf die Drehung reagiert?

    Im Voraus vielen Dank.
     
  2. miha, 10.01.2011 #2
    miha

    miha Fortgeschrittenes Mitglied

    Beiträge:
    294
    Erhaltene Danke:
    43
    Registriert seit:
    12.01.2010
    Im Manifest bei deiner Activity

    android:screenOrientation="portrait"

    einfügen (bzw. ="landscape" für Querformat).
     
  3. muck, 10.01.2011 #3
    muck

    muck Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    7
    Registriert seit:
    07.11.2010
    Nein, das reicht nicht !!!

    Zudem ist der Zustand dann dauerhaft gesetzt und kann nicht vom User geändert werden.

    Ich habe den Modus in den Settings gespeichert und setze ihn in
    public void onStart() {
    this.setRequestedOrientation(rotation_modus);
    }

    Dreht man das Handy, reagiert die Anwendung trotzdem auf das Drehen und OnCreate() wird ausgeführt.
     
    Zuletzt bearbeitet: 10.01.2011
  4. Zoopa, 10.01.2011 #4
    Zoopa

    Zoopa Android-Experte

    Beiträge:
    599
    Erhaltene Danke:
    173
    Registriert seit:
    28.07.2010
    Eine Möglichkeit (ungetestet und nur Theorie :)) wäre eventuell, im Manifest im Activity Tag folgendes Attribut hinzuzufügen:

    <activity ... android:configChanges="orientation" ...>

    Dadurch sagst du, dass du die Orientation-Änderungen selber bearbeiten willst.
    Jedes mal, wenn sich nun die Orientation ändert, wird die Methode public void onConfigurationChanged (Configuration newConfig) aufgerufen.

    Dort drin müsstest du dann halt prüfen, wie die Settings eingestellt sind, und dann:

    1) Nichts tun, falls "Nur Landscape" eingestellt ist und das Handy wechselt auf Portrait (und umgekehrt)
    2) Orientation selber wechseln, wenn "Autoausrichtung" eingestellt ist. (evtl. mit setRequestedOrientation() oder so)

    (Die neue Orientation sollte im Parameter newConfig zu finden sein)
     
    Zuletzt bearbeitet: 10.01.2011
  5. muck, 11.01.2011 #5
    muck

    muck Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    7
    Registriert seit:
    07.11.2010
    Nein auch nicht. :(

    Das wir ausgelöst wenn sich die Orientierung des Aktivities ändert, also wenn es von Quer- nach Längs- Format dreht oder umgekehrt.

    Trotzdem Danke, das brauch ich nämlich an anderer Stelle. :smile:
     
  6. miha, 11.01.2011 #6
    miha

    miha Fortgeschrittenes Mitglied

    Beiträge:
    294
    Erhaltene Danke:
    43
    Registriert seit:
    12.01.2010
    Nochmal meine erste Antwort ... Nur brauchst du zwei (Basis-)Activities. Eine Portrait und eine Landscape. Nicht schön aber keine Schalterei es sei denn von dir gewollt über Activity-Wechsel :)
     
  7. muck, 11.01.2011 #7
    muck

    muck Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    7
    Registriert seit:
    07.11.2010
    Das nützt nichts. Auch wenn ich im Manifest
    android:screenOrientation="portrait"
    setzte wird beim drehen des Handys darauf reagiert. Es wird onCreate () ausgeführt aber das Activity eben nicht gedreht.
     
  8. Zoopa, 12.01.2011 #8
    Zoopa

    Zoopa Android-Experte

    Beiträge:
    599
    Erhaltene Danke:
    173
    Registriert seit:
    28.07.2010
    Edit: ups, hab erst jetzt verstanden was du meinst ;) orientation und screenOrientation sind nicht dasselbe :D

    nein dann sollte die Activity bestehen bleiben, funktioniert bei mir wunderbar.
     
    Zuletzt bearbeitet: 12.01.2011
  9. miha, 12.01.2011 #9
    miha

    miha Fortgeschrittenes Mitglied

    Beiträge:
    294
    Erhaltene Danke:
    43
    Registriert seit:
    12.01.2010
    Dann muss irgendwas anderes falsch sein. Neues Projekt, portrait gesetzt - kein onCreate() ... wäre auch schlimm dann würden z.B. Spiele die mit Accelerometer gesteuert werden ständig neu aufgebaut weil onCreate kommt beim Steuern.
     
  10. Rotesmofa, 14.01.2011 #10
    Rotesmofa

    Rotesmofa Fortgeschrittenes Mitglied

    Beiträge:
    279
    Erhaltene Danke:
    20
    Registriert seit:
    08.08.2010
    Hast du denn die screenOrientation tatsächlih für deine Hauptaktivität gesetzt?
     
  11. muck, 16.01.2011 #11
    muck

    muck Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    7
    Registriert seit:
    07.11.2010
    Hallo zusammen,

    Problem gelöst, bzw. es gab keines.
    Ich habe die ganze Zeit auf dem Emulator getestet und der verhält sich beim drehen anders als wenn die App auf einem echten Gerät läuft. Also mit this.setRequestedOrientation(rotation_modus); reagiert die App nicht mehr auf das drehen des Handys.

    Gruß
     

Diese Seite empfehlen