En primer lugar, piense detenidamente si realmente desea deshabilitar el Home
botón o cualquier otro botón (por ejemplo, elBack
botón), esto no es algo que deba hacerse (al menos la mayoría de las veces, este es un mal diseño ). Solo puedo hablar por mí mismo, pero si descargué una aplicación que no me permite hacer algo como hacer clic en un botón del sistema operativo, lo siguiente que hago es desinstalar esa aplicación y dejar una muy mala reseña. También creo que su aplicación no aparecerá en la App Store.
Ahora...
Tenga en cuenta que MX Player
está pidiendo permiso para dibujar sobre otras aplicaciones:
ya que no puede anular el Home
botón en el Android
dispositivo (al menos no en las últimas versiones del sistema operativo). MX Player
se dibuja en la parte superior de su lanzador cuando "bloquea" la aplicación y hace clic en el Home
botón.
Para ver un ejemplo de que es un poco más simple y sencillo de entender, puede ver la aplicación Facebook Messenger .
Como se me pidió que proporcionara más información sobre MX Player Status Bar
y Navigation Bar
"overriding", estoy editando mi respuesta para incluir estos temas también.
Lo primero es lo primero, MX Player está usando el modo inmersivo de pantalla completa ( DevBytes Video ) KitKat
.
Android 4.4 (API nivel 19) introduce un nuevo indicador SYSTEM_UI_FLAG_IMMERSIVE para setSystemUiVisibility () que permite que su aplicación funcione realmente en "pantalla completa". Esta bandera, cuando se combina con las banderas SYSTEM_UI_FLAG_HIDE_NAVIGATION y SYSTEM_UI_FLAG_FULLSCREEN , oculta las barras de navegación y de estado y permite que su aplicación capture todos los eventos táctiles en la pantalla.
Cuando se habilita el modo inmersivo de pantalla completa, su actividad continúa recibiendo todos los eventos táctiles. El usuario puede revelar las barras del sistema con un deslizamiento hacia adentro a lo largo de la región donde normalmente aparecen las barras del sistema. Esto borra el indicador SYSTEM_UI_FLAG_HIDE_NAVIGATION (y el indicador SYSTEM_UI_FLAG_FULLSCREEN , si se aplica) para que las barras del sistema sean visibles. Esto también activa su View.OnSystemUiVisibilityChangeListener , si está configurado. Sin embargo, si desea que las barras del sistema se oculten automáticamente nuevamente después de unos momentos, puede usar la marca SYSTEM_UI_FLAG_IMMERSIVE_STICKY . Tenga en cuenta que la versión "pegajosa" de la bandera no activa ningún oyente, ya que las barras del sistema que se muestran temporalmente en este modo están en un estado transitorio.
Segundo: Ocultar la barra de estado
Tercero: Ocultar la barra de navegación
Tenga en cuenta que aunque el uso de pantalla completa inmersiva es solo para KitKat
, ocultar Status Bar
y Navigation Bar
no es solo para KitKat
.
No tengo mucho que decir sobre el 2º y el 3º. Creo que me entiendes, es una lectura rápida en cualquier caso. Solo asegúrese de prestar mucha atención a View.OnSystemUiVisibilityChangeListener .
Agregué un Gist que explica lo que quise decir, no está completo y necesita algunas correcciones, pero entenderás la idea. https://gist.github.com/Epsiloni/8303531
¡Buena suerte implementando esto y diviértete!