Android: vista de la cámara: la aplicación se bloquea cuando no utilizo un método obsoleto
En mi aplicación, estoy tratando de configurar la cámara. Mi clase extiende SurfaceView e implementa los métodos SurfaceHolder.Callback.
Aquí hay algunos de mi clase:
- Diseño con posición dinámica
- ¿Debería el renderingThread de un SurfaceView tener el mismo ciclo de vida que la vista o la actividad?
- ¿Cómo utilizar el feed de cámara en vivo como un fondo de actividad?
- Android IllegalArgumentException lockCanvas ()
- Android: creación de un mapa de bits con contenido de SurfaceView
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback{ private SurfaceHolder mHolder; private Camera.Parameters cameraParameters; private Camera camera; public CameraPreview(Context context) { super(context); mHolder = this.getHolder(); mHolder.addCallback(this); // If this is deprecated, why do I still need it? // It says deprecated, but app crashes when removed. mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Camera.Parameters parameters = camera.getParameters(); List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); Camera.Size previewSize = previewSizes.get(0); parameters.setPreviewSize(previewSize.width, previewSize.height); camera.setParameters(parameters); try { camera.stopPreview(); camera.setPreviewDisplay(mHolder); camera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceCreated(SurfaceHolder holder) { camera = Camera.open(); cameraParameters = camera.getParameters(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { camera.stopPreview(); camera.release(); camera = null; } }
Mi pregunta involucra el método "setType" en el constructor. La API afirma que el método está obsoleto e ignorado. Sin embargo, si comento que una línea, la aplicación entera se bloquea cuando llamo a camera.startPreview (). Estoy tratando de averiguar por qué es esto. Si se ignora, entonces no debería importar lo que hice con ese método. Esto implica que hay algo muy malo en esta implementación.
Estoy ejecutando el software Android 2.2.
Cualquier ayuda sería apreciada.
- Se ha abandonado BufferQueue: Al reproducir vídeo con TextureView
- Malo rendimiento al dibujar continuamente en CustomView
- Android translate ImageView sobre SurfaceView
- Evitar el "parpadeo" al llamar a Drawable.draw ()
- GetSupportedPictureSize () devuelve un valor que no es realmente compatible con Nexus4
- Grafika's CameraCaptureActivity - vista previa de la cámara distorsionada en vista previa tamaño cambiar
- Android Cámara de visión de superficie cámara recreada cuando presiono botón de nuevo en la tableta de Archos en jellybean
- SurfaceView for Camera Preview no se destruye cuando se pulsa el botón de encendido
Con Android 2.2 sdk método setType no está obsoleto como ya he utilizado que.
Por lo tanto, puede haber cambios con otros escenarios.
(1) Compruebe que el paquete que ha importado es android.hardware.Camera. (2) Compruebe todos los permisos agregados en el archivo de manifiesto para la cámara.
- Cómo almacenar datos que permanecen después de desinstalar
- Cómo abrir un servidor HTTP en reaccionar nativo