Nicht auf G-Sensor reagieren

M

muck

Ambitioniertes Mitglied
7
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.
 
Im Manifest bei deiner Activity

android:screenOrientation="portrait"

einfügen (bzw. ="landscape" für Querformat).
 
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:
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:
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:
 
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 :)
 
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.
 
muck schrieb:
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:

Edit: ups, hab erst jetzt verstanden was du meinst ;) orientation und screenOrientation sind nicht dasselbe :D

muck schrieb:
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.

nein dann sollte die Activity bestehen bleiben, funktioniert bei mir wunderbar.
 
Zuletzt bearbeitet:
muck schrieb:
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.

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.
 
Hast du denn die screenOrientation tatsächlih für deine Hauptaktivität gesetzt?
 
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ß
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
114
swa00
swa00
B
Antworten
4
Aufrufe
470
bb321
B
M
  • maksimilian
Antworten
7
Aufrufe
1.041
maksimilian
M
Zurück
Oben Unten