2010-07-09 10 views
26

me dieron el tamaño de pantalla mediante el uso de lo siguiente de una actividad,Android dimensiones jugar a pantalla de Servicio

Display display = getWindowManager().getDefaultDisplay(); 

Pero lo mismo no está funcionando de un servicio (por razones obvias, lo sé!) Pero necesita desesperadamente obtener el tamaño de visualización de un servicio. ¿Puede alguien1 explicarme de otra manera para obtener ScreenSize?

Supongo que, por lo que veo, no hay manera de que podamos obtener el tamaño de pantalla del servicio. Wat lo he hecho a partir de ahora es comenzar la actividad al menos 1ce por defecto y almacenar el tamaño de pantalla real en píxeles en las preferencias compartidas. Utilizo las preferencias compartidas para obtener el valor cuando se inicia el servicio.

¿Es esta la única forma en que funcionará? ¿No podemos de ninguna manera obtener el tamaño de pantalla del servicio?

+2

revise esto: http: //stackoverflow.com/questions/3166501/getting-the-screen-density-programmatically-in-android – Praveen

+0

hola gracias Praveen por su respuesta, pero como he explicado anteriormente, el getWindowsManager() es una función que necesita actividad como contexto! ¡y estoy tratando de hacer lo mismo con un servicio! El enlace anterior no ayuda a obtener el tamaño de visualización de un servicio. Y además de eso tu pregunta es acerca de la densidad mientras necesito los píxeles ... – JaVadid

+0

ambos están en mis enlaces. Tengo que decirte que la altura y el ancho son píxeles. compruebe esta respuesta a mi pregunta: http://stackoverflow.com/questions/3166501/getting-the-screen-density-programmatically-in-android/3166551#3166551 – Praveen

Respuesta

-3

Ok chicos Supongo que realmente no hay forma de obtener las dimensiones de pantalla mediante un servicio. Actualmente he accedido a las dimensiones de la pantalla guardando las dimensiones en las Preferencias compartidas cuando la actividad se inicia por primera vez. Más tarde, cuando el servicio tiene que usarlo, puede acceder a las dimensiones desde las preferencias compartidas ... Supongo que esta es la única salida a partir de ahora ... Gracias a todos por su valiosa ayuda !!!

+0

Si está iniciando el servicio al arrancar (o automáticamente de cualquier otra forma), las preferencias compartidas son una buena forma. Sin embargo, si la única forma de iniciar el servicio es llamando a 'Context.startService()', entonces tiene más sentido colocar un extra en el Intent que usa para iniciar el servicio. – Hamy

+0

Realmente debería ver la respuesta más popular aquí. Definitivamente está funcionando. –

+0

Lea las otras respuestas y actualice la respuesta aceptada si es posible. –

0

Si está iniciando el servicio al arrancar (o automáticamente de otra manera), las preferencias compartidas son una buena forma. Sin embargo, si la única forma de iniciar el servicio es llamando a Context.startService(), entonces tiene más sentido simplemente colocar un extra en la intención que utiliza para iniciar el servicio.

+0

Bien, muchas gracias Hamy, pero el servicio es más de un tipo programado ...No decido cuándo comienza, el usuario decide el momento ... Por lo tanto, no puedo pasar la información en intenciones ... Gracias por su respuesta amigo ... ¡Me moría por escuchar de alguien más que yo acerca de ideas que puedo implementar! – JaVadid

+0

En segundo lugar, corrígeme si estoy equivocado, pero he oído que en el caso de los servicios, los extras de intención no se pueden recuperar ... no sé si es cierto porque nunca lo intenté ... – JaVadid

64

no totalmente es una manera de obtenerla de un servicio:

WindowManager window = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
    Display display = window.getDefaultDisplay(); 
    int width = display.getWidth(); 
    int height = display.getHeight(); 
+2

me funciona ... –

+0

+1 para esta respuesta buena y detallada. Estaba buscando cómo llamar a 'Display.getRotation()' desde un servicio. Muchas gracias. – eternay

12

Se trabajó para mí!

DisplayMetrics metrics = getApplicationContext().getResources().getDisplayMetrics(); 
int width = metrics.widthPixels; 
int height = metrics.heightPixels; 

Solo necesitabas el contexto.

Cuestiones relacionadas