android - sola - porque no gira la pantalla de mi celular
Android ICS Launcher 4.0.x no puede mantener la orientaciĆ³n de la pantalla (2)
El lanzador de ICS original tiene algunos lugares donde establecerá la orientación a no especificado. Simplemente busque Launcher.java para setRequestedOrientation
, pero específicamente está en compilaciones "eng" o en tabletas. Lo hace en onCreate, pero también después de arrastrar y soltar desde la aplicación personalizar.
Desde Launcher.java''s onCreate:
// On large interfaces, we want the screen to auto-rotate based on the current orientation
if (LauncherApplication.isScreenLarge() || Build.TYPE.contentEquals("eng")) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
Tengo un caso extraño para Android ICS Launcher 4.0.x.
Condición previa:
Un dispositivo ICS con permiso de root
Descargue el código fuente de Android ICS Launcher 4.0.3 / 4 (para modificar y ejecutar)
Procedimiento:
Vaya al mercado (Play Store), descargue "Go Task Manager"
Abra la pestaña Widgets en Launcher, encuentre "Mem Optimize", arrastre a la pantalla de inicio (área de trabajo)
Descargue e instale "Fruit Ninja"
Crea un acceso directo "Fruit Ninja" junto al widget "Mem Optimize" en la pantalla de inicio.
Ejecute "Fruit Ninja" y mantenga su teléfono en LANDSCAPE (manténgalo en su mano en esta posición, no lo cambie)
En la pantalla de menú de "Fruit Ninja", corte "Salir", seleccione "Sí"
Ahora, de vuelta en la pantalla de inicio de Launcher, toque el widget "Mem Optimize"
Resultado actual:
- Después del paso 7, la pantalla se gira a LANDSCAPE por un tiempo y regresa a RETRATO.
Expectativa:
- Después del paso 7, la pantalla debe mantenerse en RETRATO.
Mis intentos (modifique el código fuente de Launcher ICS):
Agregar a "Manifest.xml":
android:screenOrientation="portrait"
=> todavía no se puede solucionar el problema.Manejar el cambio de configuración,
android:configChanges="orientation|screenSize"
=> todavía no puede solucionar el problema.Utilice:
setRequestedScreenOrientation(PORTRAIT)
=> todavía no puede solucionar el problema.
Lo que he probado funcionó en Android 2.x; sin embargo, desde 4.0.3+, de alguna manera no está funcionando como se esperaba. ¿Alguien tiene alguna idea de esto?
El problema no está en el Launcher. El problema es que una única configuración (y que incluye la orientación) se comparte entre todas las actividades en el teléfono.
Entonces, si tiene una actividad que establece la orientación a Landspace, por ejemplo, Cámara (este es un ejemplo clásico en el que trabajo), esto "hará" que todas las demás actividades estén también en el paisaje, porque como dije, la información es única en el sistema. y compartido entre todos.
Esto sucede desde el principio de Android, aunque a veces no lo notará porque los cambios son bastante rápidos.
Para comprobar lo que estoy diciendo, haz lo siguiente. Escriba una actividad con un tema de diálogo como @android:style/Theme.Holo.Dialog
, para que no cubra toda la pantalla y aún podrá ver la actividad que se muestra a continuación. Esa actividad debe tener una orientación fija. Digamos que lo configuras al paisaje. Luego use am start
en el shell de Android para poder iniciar la actividad que acaba de crear sobre cualquier otra actividad. Verá que no importa la orientación que haya tenido la actividad anterior, tan pronto como inicie la actividad de prueba, la actividad anterior asumirá la misma orientación que la actividad de prueba. Cuando devuelva el golpe, la actividad anterior restaurará la orientación. Pero a veces puede tomar un tiempo, por lo que ve cosas como su resultado actual.