W / CameraBase: Se ha producido un error al conectar a la cámara: 0 en camera.open () call

Estoy escribiendo una aplicación de cámara y cada vez que llamo camera.open () la aplicación se bloquea y, a continuación, obtengo este error:

W/CameraBase﹕ An error occurred while connecting to camera: 0

Aquí es cómo estoy abriendo la cámara:

 public void getCameraInstance(){ mCamera = null; try { mCamera = Camera.open(); // attempt to get a Camera instance } catch (Exception e) { // Camera is not available (in use or does not exist) } } 

ACTUALIZAR:

Si está leyendo esto, tenga en cuenta que esto es para la API original de la cámara y ya no aplica la última versión de la cámara api (cámara2).

Debe utilizar la cámara 2 api desde este punto en adelante, ya que tiene una mayor funcionalidad y también tiene una mejor procesamiento de imagen de tuberías.

NOTA ÚNICAMENTE VÁLIDA HASTA excluir la API 21 (Lolipop), es decir, no se aplica para Lolipop y superiores.

Para utilizar el siguiente método

 android.hardware.Camera.open(int cameraId) 

Debe pasar cameraId, Si desea que la cámara frontal Id que puede utilizar el siguiente método

 private int findFrontFacingCamera() { // Search for the front facing camera int numberOfCameras = Camera.getNumberOfCameras(); for (int i = 0; i < numberOfCameras; i++) { CameraInfo info = new CameraInfo(); Camera.getCameraInfo(i, info); if (info.facing == CameraInfo.CAMERA_FACING_FRONT) { cameraId = i; cameraFront = true; break; } } return cameraId; } 
  1. Si la misma cámara es abierta por otras aplicaciones, lanzará una RuntimeException.

  2. Debe llamar a release () cuando haya terminado de usar la cámara, de lo contrario permanecerá bloqueado y no estará disponible para otras aplicaciones.

  3. Su aplicación sólo debe tener un objeto Cámara activo a la vez para una cámara de hardware en particular.

En Android 6, asegúrese de solicitar permiso para la cámara. El acceso a la cámara se considera uno de los "permisos peligrosos" .

Manualy ha subido su aplicación al teléfono. Por eso no se aprueba el permiso de la cámara. Tienes que abrir la configuración-> aplicaciones (o algo así) y manualmente aprobar este permiso.

Asegúrese de que su aplicación tenga permiso para la cámara, por ejemplo

 <uses-permission android:name="android.permission.CAMERA"/> 

En AndroidManifest.xml

Tengo la respuesta para esto: esto es para el problema de permiso marshmallow: añadir esto en su proyecto:

paso 1:

  private static final int REQUEST_GET_ACCOUNT = 112; private static final int PERMISSION_REQUEST_CODE = 200; 

paso 2:

  int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= android.os.Build.VERSION_CODES.M) { if (checkPermission()) { Toast.makeText(getApplicationContext(), "Permission already granted", Toast.LENGTH_LONG).show(); } else { requestPermission(); } } 

paso 3:

 private boolean checkPermission() { int result = ContextCompat.checkSelfPermission(getApplicationContext(), GET_ACCOUNTS); int result1 = ContextCompat.checkSelfPermission(getApplicationContext(), CAMERA); return result == PackageManager.PERMISSION_GRANTED && result1 == PackageManager.PERMISSION_GRANTED; } private void requestPermission() { ActivityCompat.requestPermissions(this, new String[]{GET_ACCOUNTS, CAMERA}, REQUEST_GET_ACCOUNT); ActivityCompat.requestPermissions(this, new String[]{WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE); } public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_CODE: if (grantResults.length > 0) { boolean locationAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED; boolean cameraAccepted = grantResults[1] == PackageManager.PERMISSION_GRANTED; if (locationAccepted && cameraAccepted) Toast.makeText(getApplicationContext(), "Permission Granted, Now you can access location data and camera", Toast.LENGTH_LONG).show(); else { Toast.makeText(getApplicationContext(), "Permission Denied, You cannot access location data and camera", Toast.LENGTH_LONG).show(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (shouldShowRequestPermissionRationale(WRITE_EXTERNAL_STORAGE)) { showMessageOKCancel("You need to allow access to both the permissions", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE); } } }); return; } } } } break; } } private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) { new android.support.v7.app.AlertDialog.Builder(CaptureActivity.this) .setMessage(message) .setPositiveButton("OK", okListener) .setNegativeButton("Cancel", null) .create() .show(); } 

En mi caso, su código de trabajo, después de añadir esto en AndroidManifest.xml

  <uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.CAMERA"/> 
  • La cámara del dispositivo virtual Android no funciona a pesar de que he elegido la cámara web como fuente
  • Cómo deshabilitar / modificar AutoFocus y AutoWhiteBalance en Android Camera usando OpenCV
  • cómo obtener Resultado de onActivityResult en Fragment?
  • Tome la imagen y convertir a Base64
  • Android bloquea la aplicación después de tomar la imagen "No se puede encontrar el constructor predeterminado" En LG 4G Stylus
  • Android: Dispositivos compatibles de devolución de llamada de imagen sin procesar
  • ¿Cuándo debo volver a bloquear la cámara?
  • GetSupportedPictureSize () devuelve un valor que no es realmente compatible con Nexus4
  • Android Cordova 5.0+ caída de la cámara
  • Problema con la cámara cuando cambia la orientación
  • W / CameraBase: Se ha producido un error al conectar la cámara: 0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.