Forma fácil de ocultar la barra del sistema en Android ICS

Daré mis tabletas ICS para que los usuarios completen una encuesta, por lo que me gustaría que el usuario trabaje solo con mi aplicación. No deberían poder cambiar a la pantalla de inicio, presionar los botones hacia atrás, etc., así que me gustaría ocultar la barra del sistema por completo.

Mi tableta está rooteada y sé que algunas aplicaciones como esta pueden ayudarme, pero no necesito todas las funciones adicionales de esta aplicación.

Encontré este tutorial que podría ayudarme, pero si puedo agregar el código para hacer el mío, sería genial.

HideBar tiene un modo de kiosco especialmente para este caso de uso.

Una descarga gratuita está disponible en http://ppareit.github.com/HideBar/ . También puede encontrarlo en el mercado en https://play.google.com/store/apps/details?id=be.ppareit.hidebar .

Si desea incorporarlo a su propia aplicación de prueba / encuesta, siempre puede ponerse en contacto con el desarrollador (consulte los enlaces de un correo electrónico). Se podría explicar el código o se podría proporcionar una Intent para ocultarlo.

Después de una gran cantidad de búsquedas en Internet, logré que la barra del sistema se oculte y aparezca en un dispositivo 4.2 usando:

Esconder:

 Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui"); 

O use 79 en lugar de 42 para API menor que 14. También es posible que deba incluir el permiso SET_DEBUG_APP, en cuyo caso debe tener la aplicación firmada con la clave del sistema o instalada en el directorio / system / app /.

Mostrar:

 Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService"); 

Alternativamente, algunas personas han usado la opción -a (en lugar de -n), aunque esto estaba causando un error en mi dispositivo:

Error no encontrado; ningún servicio comenzó.

Para Android 4.4, hay una nueva característica llamada modo inmersivo que oculta tanto el sistema como las barras de estado. La interfaz de usuario del sistema la conmuta el usuario mediante un deslizamiento desde la parte superior o inferior de la pantalla. Para más detalles eche un vistazo a:

http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)

Usando el nuevo modo INMERSIVO en Android Kitkat

Por ejemplo:

 getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE) 

mira este enlace: (requiere root) http://android.serverbox.ch/?p=306

pregunta similar fue publicada aquí también: ¿Hay alguna manera de ocultar la barra del sistema en Android 3.0? Es un dispositivo interno y manejo la navegación

o prueba HideBar http://ppareit.github.com/HideBar/

En realidad, puede simplemente poner la barra del sistema en modo “apagado”, los botones de la barra del sistema y las notificaciones se atenúan.

 View v = findViewById(R.id.view_id); v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN); 

Quiero agregar algo de información a las respuestas existentes esperando que sea útil para alguien.

Para obtener una pantalla completa trabajando en mi tableta china de bajo costo , necesito editar un archivo ubicado en

 system/build.prop 

reemplazar el texto

 ro.property.tabletUI=true 

con

 #ro.property.tabletUI=true 

(Yo comento la línea). Después de eso, puedo obtener una pantalla completa usando

 android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 

para cada actividad en minfest.xml

Esta solución solo es válida si vende tabletas con su aplicación y necesita privilegios de system/build.prop para editar el system/build.prop . Por lo tanto, no es una solución para todos , así que no desestimen este pequeño aporte.

EDITAR: Noté que mis tabletas tienen botones de hardware (Inicio, menú y posterior) en los marcos. Entonces Android me permite ocultar la barra del sistema. Intenté con otras tabletas que no tienen botones de hardware sin éxito .

Google tiene la intención de Android para ser utilizado solo por los consumidores. Integraron la barra de interfaz de usuario del sistema más estrechamente en Android ICS (4.0) para evitar que las personas rooteen el dispositivo y maten la barra de esa manera. Si intenta eliminar el proceso de barra del sistema, evitará que el sistema operativo arranque completamente.

Si desea restringir el acceso de los usuarios a la pantalla de inicio, no tiene suerte con Android ICS. Sugeriría encontrar un fabricante de tableta que precargará el dispositivo con Android 2.3. O eso, o usa un dispositivo rooteado de Android 3.x.

Si tiene la intención de usar Android para kiosco o dispositivos bloqueados, entonces sería mejor que se centrara en un sistema operativo que es un poco más abierto.

Encontré una solución que, en mi caso de uso, funciona como un amuleto ocultando la barra de menú incluso en un dispositivo NO ENRAIZADO:

poniendo esta bandera

 layoutparams.flags = 0x80000000 | layoutparams.flags; 

a los parámetros de diseño de mi ventana simplemente hace el truco!

Aquí está el fragmento completo que utilicé:

  Window window = getWindow(); android.view.WindowManager.LayoutParams layoutparams = window.getAttributes(); layoutparams.flags = 0x80000000 | layoutparams.flags; window.setAttributes(layoutparams); 

en mi actividad onCreate.

Para averiguarlo, reinicé un Apk no de sistema que encontré que de alguna manera era capaz de hacer eso.

De acuerdo con la documentación oficial:

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS

que “0x80000000” es FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS introducido como una constante del sistema en Api nivel 21, y básicamente indica que “esta ventana es responsable de dibujar el fondo de las barras del sistema”. y como no estoy dibujando manualmente ninguna barra de sistema, no se muestra ninguna barra de menú.

Solo probé esto en un par de Moverio BT-200 con Android ICS 4.0.3 porque ese es el dispositivo en el que estoy trabajando actualmente y también porque ahora mismo no tengo otro dispositivo corriendo niveles Api antes del 19 bajo mis manos para probarlo

Existe una solución alternativa para deshabilitar la barra de menús (no ocultar) en todas las tabletas, sin rooting. Pero esto es un poco complicado, pero funciona limpio. Varias aplicaciones bien conocidas en el mercado en este momento usan esta estrategia para lograr esta característica de la barra de menú de inhabilitación para sus aplicaciones.

  • Otorgar privilegio de administrador (necesita una participación del usuario una vez para activar).
  • Establezca la contraseña y bloquee el dispositivo usando el perfil de administrador del dispositivo api programáticamente.
  • A continuación, cargue lo que sea, las IU en la parte superior de la pantalla de locking nativa. (Por supuesto, esto mostrará la pantalla de locking de fondo cada vez que ocurra una transición entre actividades, pero si la lógica está bien organizada, el usuario la utilizará sin problemas).
  • Cuando necesite habilitar de nuevo, restablezca la contraseña a “” utilizando resetPassword (“”, 0) del objeto del administrador de políticas del dispositivo.

Para complementar las respuestas ya dadas, y en caso de que sea útil para alguien que necesita un comportamiento similar, existe este tutorial para dispositivos Android 4.0 y posteriores, que le dice cómo ocultar la barra de navegación y la barra de estado (reaparecerán cuando el la pantalla se toca de nuevo):

https://developer.android.com/training/system-ui/navigation.html

Me doy cuenta de que no es exactamente lo que necesita, pero podría ser útil para otra persona que vea este problema.

Intereting Posts