1

Ich entwickle Anwendung, wo ich in einer Serviceklasse WindowManager zum Aufblasen einer Ansicht verwende. Normalerweise ändert das Ansichtslayout seine Ausrichtung entsprechend der Geräteausrichtung, aber wenn ich meine Kameraanwendung öffne, ändert sich die Ausrichtung nicht. Wie in Abbildung unten dargestellt: -Android Geräteausrichtung mit Sensons erhalten

Figure 1

Figure 2

So wie die Ansichten Orientierung zu ändern, wie pro-Geräte Orientierung.

Dank

+0

die Floating-Aktivität nicht in den offiziellen Android unterstützt wird, so ist es hängt von Ihrem Anbieter. –

+0

Ich dachte an die Verwendung von SensonEventListner, aber haben Zweifel, dass die Anwendung langsam und Android-Handy schnell aufheizen wird? –

Antwort

1

Es gibt einen Unterschied, ob in Landschaft/Porträt, oder ob Ihre App-Ressourcen korrekt wiedergegeben werden in der Landschaft/Porträt des Geräts natürliche Ausrichtung zwischen bestimmen. Es klingt wie Sie die ehemalige wollen:

int getNaturalOrientation() { 
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
    Display defaultDisplay = windowManager.getDefaultDisplay(); 
    int rotation = defaultDisplay.getRotation(); 
    if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) { 
     if (display.getDisplayHeight() >= display.getDisplayWidth()) { 
      return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; 
     } 
     return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; 
    } else { 
     if (display.getDisplayHeight() < display.getDisplayWidth()) { 
      return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; 
     } 
     return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; 
    } 
} 

~ Inspiriert von Code in Chromium src: https://chromium.googlesource.com/chromium/src/+/aca91b5d8a53d77e98021d560305a996864df5e8/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationListenerTest.java