Ich mache eine App, mit der man Wikipedia-Seiten lesen kann.
Ich möchte jedes Mal ein Symbol anzeigen, wenn das Telefon vom Hoch- ins Querformat oder umgekehrt gedreht wird. Damit kann der Benutzer die Bildschirmausrichtung sperren, wenn er das möchte, oder der Bildschirm wird anhand der Sensordaten ausgerichtet. Dies ist Funktionalität wird von einigen der App in der Google Play, zum Beispiel implementiert - Pocket
Um dies zu tun, habe ich die
public void onConfigurationChanged(Configuration newConfig)
Nun, wenn ich die gesperrte Konfiguration mit (orientation_dir ist die Ausrichtung Wert in den gemeinsamen Einstellungen gespeichert und es ist richtig, wie ich durch den Code für sie debuggt haben).
if(orientation_dir == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
else if(orientation_dir == Configuration.ORIENTATION_PORTRAIT)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
dann wird die Ausrichtung korrekt eingestellt, aber die Methode onConfigurationChanged() wird nicht aufgerufen, wenn das Telefon gedreht wird.
Wenn ich die Ausrichtung auf diese Weise einstelle
if(orientation_dir == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(orientation_dir == Configuration.ORIENTATION_PORTRAIT)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
dann ist die gewünschte Ausrichtung nicht eingestellt. Das Telefon setzt die Ausrichtung entsprechend den Sensordaten zurück.
Ich habe versucht, auch durch nicht Aufruf der Super in der Methode, wie ich dachte, es könnte es falsch eingestellt werden, aber dann gibt es mir die Ausnahme "Super nicht aufgerufen".
Ich versuche es schon seit 2 Tagen und habe keine Lösung für dieses Problem gefunden.