Obtener orientación del teléfono cuando está bloqueado en una orientación

Esto podría ser fácilmente un duplicado de otra pregunta, simplemente estoy luchando para averiguar qué buscar.

Mi aplicación de cámara está bloqueada en modo horizontal (en el manifiesto) de esta manera:

android:screenOrientation="landscape"

Sin embargo, todavía quiero rotar algunos elementos de la interfaz de usuario cuando el dispositivo se gira en vertical (aunque Android aún pensará que está en el paisaje, pero eso es a propósito).

Así que he intentado esto para comprobar la orientación

int rotation = this.getWindowManager().getDefaultDisplay()
            .getRotation();
    int degrees = 0;
    switch (rotation) {
        case Surface.ROTATION_0:
            Log.d("Rotation", "0");
            break;
        case Surface.ROTATION_90:
            Log.d("Rotation", "90");
            break;
        case Surface.ROTATION_180:
            Log.d("Rotation", "180");
            break;
        case Surface.ROTATION_270:
            Log.d("Rotation", "270");
            break;
    }

Y, por desgracia, siempre devuelve 90, independientemente de cómo gire el teléfono. ¿Existe una forma más sólida de obtener orientación, independientemente de lo que Android "piense" que es la orientación?

Respuestas a la pregunta(5)

Su respuesta a la pregunta