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:

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.

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.

  • MediaServer Remote Binder Objeto de cámara muerto - sólo en KITKAT
  • El lienzo SurfaceView de Android produce colores incorrectos
  • escala de previsualización de la cámara para adaptarse a la mitad de la pantalla
  • Combinación de SurfaceView con otras vistas, como TextView y botones
  • SlidingDrawer ocultado por la imagen en SurfaceView
  • Android OpenGL que extiende las excepciones de puntero nulo de GLSurfaceView
  • Cámara de conmutación de adelante hacia atrás en pjsip android
  • Android: holder.getSurface () devuelve siempre null
  • Teclado Android: no inicializa el cliente de búfer compartido porque token = -12
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.