Cómo encontrar el mejor PixelFormat para un Android SurfaceView
He encontrado que el cambio del formato del pixel en un SurfaceView tiene un impacto grande en tarifas del marco. Sin embargo no puedo encontrar una manera de seleccionar el mejor formato en una base por dispositivo.
Ejemplo:
- Pantalla en blanco / negro en la galaxia S3 con jell bean v4.1.1
- PreviewCallback onPreviewFrame no cambia los datos
- WaitingInMainSignalCatcherLoop Error en la aplicación de Android
- ¿Cómo se relacionan las devoluciones de llamada de SurfaceHolder con el ciclo de vida de la actividad?
- Android ANR SurfaceView
@Override public void surfaceCreated(final SurfaceHolder holder) { //This line seems to fix speed issue with his res devices holder.setFormat(PixelFormat.RGBA_8888); androidGame.setSurfaceHolder(holder); }
Esto hace que mi juego funcione mucho más rápido en un Galaxy Nexus (ICS 4.0) pero lento en un Motorola Xoom (3.2.1).
Si cambio a PixelFormat.OPAQUE la situación se invierte. El Nexus es lento y el Xoom ahora es rápido. Así que tengo que ser capaz de determinar el mejor formato por dispositivo. He intentado usar getWindow (). GetAttributes (). Formato, pero siempre devuelve -1 (OPAQUE).
- Agregar de forma programática SurfaceView a un FrameLayout que está ordenado por Z en ImageView
- Null Canvas en SurfaceView Thread, a pesar de detener Thread en surfaceDestroyed () - sólo en Android 4 / ICS
- Antialiasing en TextureView
- Surface Flinger, SurfaceView, Surface, SurfaceHolder y Bitmap es Android
- Tutorial de cámara para Android (con vista de superficie)
- Get " conectar: ya conectado" error si dibujo un mapa de bits como el fondo de SurfaceView y luego reproducir vídeo
- Vista superficial + glsurfaceview + framelayout
- SurfaceCreated no se llama
Pude hablar con Romain Guy en Google IO 2012 durante las horas de oficina. Desafortunadamente no hay manera razonable de detectar el mejor formato del pixel a utilizar. Usted tendría que ejecutar una prueba de referencia en cada dispositivo para encontrar su mejor formato.
Display.getPixelFormat () obtendrá el formato de píxel para su pantalla. Yo recomendaría hacerlo de esa manera.
Este método ya no es compatible y siempre devolverá RGBA_8888.
/** * Gets the pixel format of the display. * @return One of the constants defined in {@link android.graphics.PixelFormat}. * * @deprecated This method is no longer supported. * The result is always {@link PixelFormat#RGBA_8888}. */ @Deprecated public int getPixelFormat() { return PixelFormat.RGBA_8888; }
- Actividad de inicio de la URL
- ¿Cómo obtener vídeo de la intención de la cámara y guardarlo en un directorio?