¿Es posible detectar cuando cualquier aplicación está en pantalla completa en android?
Me gustaría saber si hay algún tipo de forma de utilizar las vistas tal vez o algo para tener un servicio de fondo detectar si la aplicación de primer plano está en pantalla completa o no. Lo que significa que la barra de estado está oculta o no oculta.
¿Pensé quizá usando secuencias constantes para detectar si una visión se demuestra o no? Pero no estoy seguro exactamente. Root es una opción si es necesario.
- ¿Crear una vista personalizada inflando un diseño?
- Equivalencia de setTag (clave, valor) en XML
- Android: cómo deshabilitar todos los clics en una vista
- ¿Cómo obtener una vista más grande que su padre?
- Ver redibujado en la posición equivocada después de cerrar el teclado - Cordova / PhoneGap - Android
¡¡Gracias chicos!!
- Android: necesita devolver la llamada cuando se muestra la vista
- Android - cómo quitar la vista en disposición (la visión agregó dinámicamente)
- No es posible establecer dinámicamente el parámetro setVisibility ()
- Cómo establecer la unidad para Paint.setTextSize ()
- GetWidth y getHeight devuelven un cero
- Cambiar retardo de clic largo
- ¿Examinar todas las sub-vistas de una vista de Android?
- Cómo ocultar / deshabilitar adview admob?
¿Qué tal usar un receptor de difusión o algo así. Eso sería ideal, sin embargo no hay tal transmisión para una solicitud de pantalla completa.
Aquí es lo que hice hacer sin embargo.
He creado una superposición invisible, esta superposición invisible es 0 x 0 en tamaño 🙂
A continuación, utilizar View.getLocationOnScreen(int[]);
Esto devuelve la matriz int con los valores de las coordenadas en x e y. Entonces pruebo estas coordenadas (sólo realmente enfocando el valor de y) si es igual a 0, entonces la actividad visible actual está en pantalla completa (porque está en el área más alta de la pantalla) si la barra de estado está mostrando, entonces La vista volverá con (50 píxeles en mi dispositivo) lo que significa que la vista es de 50 píxeles de la parte superior del borde de las pantallas.
Coloco todo esto en un servicio que tiene un temporizador y cuando el temporizador expira, obtiene la ubicación, ejecuta las pruebas, y hace lo que tengo que hacer. El temporizador se cancela cuando la pantalla se apaga. Al encender la pantalla, el temporizador se reinicia.
Comprobé la cantidad de CPU que usa, y dice un 0,0% en System Tuner.
¿Has intentado getWindow().getAttributes().flags
?
public static boolean fullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0; public static boolean forceNotFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0; public static boolean actionbarVisible = getActionBar().isShowing();
Referencia:
if( MyActivity.fullScreen){ // full screen } else{ // not full screen }
Me gusta la idea de Seth, así que hice el fragmento de código:
/** * Check if fullscreen is activated by a position of a top left View * @param topLeftView View which position will be compared with 0,0 * @return */ public static boolean isFullscreen(View topLeftView) { int location[] = new int[2]; topLeftView.getLocationOnScreen(location); return location[0] == 0 && location[1] == 0; }
- Cómo centrar un Imageview en la pantalla con un FrameLayout? (Con código java)
- ¿Cómo puedo calcular el hash SHA-256 de una cadena con una clave secreta en Android?