Lo que me gustaría hacer:¿Cómo detectar el paisaje a la izquierda (normal) frente al paisaje a la derecha (inversa) con soporte para dispositivos de paisajes naturales?
- Detectar la orientación diseño actual del dispositivo (retrato, paisaje-Izquierda, Retrato (boca abajo), Paisaje-derecha)
- diferenciar entre los dos posibles modos horizontal (apoyado en el lado izquierdo, apoyándose en el lado derecho)
- dispositivos de apoyo que tienen el paisaje como su estado natural (for example, discussed here)
- < Apoyo 2.2 (no se puede utilizar getRotation())
Solo para aclarar, quiero saber en qué orientación se encuentra actualmente el diseño. ¿Qué dirección está en la parte inferior del diseño? ¿Está en retrato? ¿Está en el paisaje? ¿El paisaje está a la izquierda o a la derecha? etc.
Lo más cercano que puedo encontrar es Activity.getResources().getConfiguration().orientation, pero solo devuelve tres valores posibles. ORIENTATION_LANDSCAPE, ORIENTATION_PORTRAIT u ORIENTATION_SQUARE. No dice qué tipo de paisaje.
Entonces, entonces pensé, bueno, si puedo obtener el valor de orientación (como 90, 180, 270, etc.) del dispositivo y compararlo con el valor de configuración anterior, podría resolverlo. Por ejemplo, si el valor de configuración era ORIENTATION_LANDSCAPE y la orientación era 270, podría decir que estaba en el modo de paisaje inverso. Sin embargo, no parece haber una manera fácil de obtener el valor de orientación. Podría implementar un OrientationEventListener, pero eso parece exagerado ya que solo necesito obtener el valor una vez en un momento específico, no constantemente.
Hay dos valores en la clase de pantalla, pero getOrientation está en desuso y getRotation solo está disponible para 2.2 y superiores.
Ahora, incluso si obtuve este valor, todavía existe el problema de los dispositivos que son naturalmente horizontales. Lo que significa que su valor 0 sería landscape en lugar de portrait. Así que también necesito una manera segura de decir cuál (paisaje -izquierda, horizontal-derecha o vertical) corresponde a 0.
Hay muchas publicaciones en SO sobre orientación y problemas similares, pero no he visto ninguna que toman todos estos problemas en consideración. ¿Alguien ha descubierto esto?
Cuando todo esté dicho y hecho, me gustaría algo como Activity.getResources(). GetConfiguration(). Orientation pero ser capaz de decir qué modo de paisaje es.
¿Qué quiere decir con compatible? Tengo un dispositivo 2.1 (y el emulador) que se puede girar en cualquier modo horizontal. – cottonBallPaws
@littleFluffyKitty Es una pena que esta sea la respuesta aceptada, porque realmente no responde la pregunta (y es una buena pregunta). FWIW, 'getOrientation' es equivalente a' getRotation', la desaprobación es simplemente porque se renombró en 2.2. La funcionalidad ha estado allí desde el nivel 1 de la API. –