Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


La cámara se bloquea inesperadamente en el nexo de la galaxia

Tengo un extraño problema en mi aplicación de cámara cuando se prueba con galaxia nexus .. Simplemente se bloquea cuando intenta iniciar la actividad de la cámara .. Pero funciona bien con casi todos los otros dispositivos .. Estas son mis funciones …..

@Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub try { camera = Camera.open(); camera.setPreviewDisplay(holder); Camera.Parameters parameters = camera.getParameters(); if (Integer.parseInt(Build.VERSION.SDK) >= 8) setDisplayOrientation(camera, 90); else parameters.set("orientation", "portrait"); parameters.setPictureFormat(PixelFormat.JPEG); camera.setParameters(parameters); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub if(previewing){ camera.stopPreview(); previewing = false; } if (camera != null){ try { camera.setPreviewDisplay(surfaceHolder); camera.startPreview(); previewing = true; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

Alguien puede ayudarme ?

  • Animación suave de una ruta de cámara en una vista de mapa
  • TakePicture falla con error relacionado con heap
  • Detección de latidos cardíacos con cámara
  • Datos Exif TAG_ORIENTATION siempre 0
  • Problema de cierre de cámara en Samsung Galaxy S3 versión 4.1.1
  • Android: onPreviewFrame nunca llamado sin SurfaceView
  • Android - ¿Cómo funciona la carga instantánea de Google+?
  • Mi cámara Android Uri está devolviendo un valor nulo, pero el arreglo de Samsung está en su lugar, ¿ayuda?
  • One Solution collect form web for “La cámara se bloquea inesperadamente en el nexo de la galaxia”

    Finalmente me dieron la respuesta.Nexus tiene tanto frontal y cámaras finales.Luego, el problema era el código que utiliza para abrir la cámara (es necesario configurar la cámara id para la cámara frontal) y también tenemos que establecer la vista previa adecuada Tamaño .. Aquí está el código modificado ..

     @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { List<Size> sizes = parameters.getSupportedPreviewSizes(); Size optimalSize = getOptimalPreviewSize(sizes, width, height); parameters.setPreviewSize(optimalSize.width, optimalSize.height); camera.setParameters(parameters); camera.startPreview(); startPreview(); } @Override public void surfaceCreated(SurfaceHolder holder) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { Camera.CameraInfo info=new Camera.CameraInfo(); for (int i=0; i < Camera.getNumberOfCameras(); i++) { Camera.getCameraInfo(i, info); if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { camera=Camera.open(i); defaultCameraId = i; } } } if (camera == null) { camera=Camera.open(); } try { camera.setPreviewDisplay(surfaceHolder); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Camera.Parameters parameters = camera.getParameters(); android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); android.hardware.Camera.getCameraInfo(defaultCameraId, info); int rotation = this.getWindowManager().getDefaultDisplay() .getRotation(); if (Integer.parseInt(Build.VERSION.SDK) >= 8) { int degrees = 0; switch (rotation) { case Surface.ROTATION_0: degrees = 0; break; case Surface.ROTATION_90: degrees = 90; break; case Surface.ROTATION_180: degrees = 180; break; case Surface.ROTATION_270: degrees = 270; break; } int result; if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { result = (info.orientation + degrees) % 360; result = (360 - result) % 360; } else { // back-facing result = (info.orientation - degrees + 360) % 360; } camera.setDisplayOrientation(result); } else { parameters.set("orientation", "portrait"); } camera.setParameters(parameters); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) { final double ASPECT_TOLERANCE = 0.1; double targetRatio = (double) w / h; if (sizes == null) return null; Size optimalSize = null; double minDiff = Double.MAX_VALUE; int targetHeight = h; for (Size size : sizes) { double ratio = (double) size.width / size.height; if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue; if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } if (optimalSize == null) { minDiff = Double.MAX_VALUE; for (Size size : sizes) { if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } } return optimalSize; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.