No se pudo conectar al servicio de la cámara

Estoy tratando de acceder a la cámara en mi teléfono. Estoy escribiendo una aplicación de código auxiliar simple antes de poner el código en un widget. No estoy llegando muy lejos. El código siempre arroja una excepción de tiempo de ejecución “no se pudo conectar al servicio de la cámara” El código (pillado de un ejemplo de Commonsware) que sale mal es:

@Override public void onResume() { super.onResume(); 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_BACK) { try { // Gets to here OK camera = Camera.open(i); } catch (Exception e) { e.printStackTrace(); // throws runtime exception :"Failed to connect to camera service" } } } } } 

y mi manifiesto es (corregido el 20 de octubre) :

                

¿Alguien puede sugerir lo que podría estar mal?

ACTUALIZACIÓN 20 de octubre

Logcat en SDK 4.0 está roto y no mostrará el final del registro, así que he cortado este bit lo mejor que puedo desde la línea de comando adb logcat:

 W/ServiceManager( 2588): Permission failure: android.permission.CAMERA from uid=10136 pid=5744 E/CameraService( 2588): Permission Denial: can't use the camera pid=5744, uid=10136 W/System.err( 5744): java.lang.RuntimeException: Fail to connect to camera service W/System.err( 5744): at android.hardware.Camera.native_setup(Native Method) W/System.err( 5744): at android.hardware.Camera.(Camera.java:294) W/System.err( 5744): at android.hardware.Camera.open(Camera.java:255) etc.. 

No sé por qué no tengo permiso ya que está declarado en el manifiesto

Pocas cosas:

  1. ¿Por qué están tus tags de permisos de uso y características de uso en tu etiqueta de actividad? Generalmente, los permisos se incluyen como hijos directos de su etiqueta . Esto podría ser parte del problema.

  2. De acuerdo con la documentación abierta de la cámara de Android, se lanza una excepción de tiempo de ejecución:

    si falla la conexión al servicio de la cámara (por ejemplo, si la cámara está siendo utilizada por otro proceso o el administrador de políticas del dispositivo ha desactivado la cámara)

    ¿Ha intentado verificar si la cámara está siendo utilizada por otra persona o si su administrador de políticas tiene alguna configuración donde la cámara está apagada?

  3. No se olvide de la para el enfoque automático.

Aunque no estoy seguro de si alguno de estos te ayudará directamente, creo que vale la pena investigarlo por el simple hecho de descartarlo. Debida diligencia si lo desea.

EDITAR Como se menciona en los comentarios a continuación, la solución fue mover los uses-permissions hasta por encima de la etiqueta de la aplicación.

Para las versiones de Android más recientes que admiten permisos de configuración por aplicación (desde Marshmallow, 6.0), el permiso para la cámara podría deshabilitarse y debería habilitarse desde la configuración de la aplicación.

Asegúrese de llamar al método de liberación () para liberar la cámara cuando ya no sea necesaria, o no podrá usar la cámara. Tal vez como un control de cordura, vea si su cámara normal funciona. Si dice que falla, entonces tus bashs previos de runni

Sé que esta pregunta ha sido respondida hace mucho tiempo, pero me gustaría agregar algo pequeño.

Para todos los que tengan el mismo error, asegúrate de agregar este permiso en tu archivo de manifiesto:

  

IMPORTANTE usar las letras mayúsculas para CAMERA , ya que tenía el permiso con letras pequeñas y no funcionó.

El problema está relacionado con el permiso. Copie el siguiente código en el método onCreate (). El problema se resolverá.

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[] {Manifest.permission.CAMERA}, 1); } } 

Después de eso espere la acción del usuario y maneje su decisión.

 @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case CAMERA_PERMISSION_REQUEST_CODE: // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //Start your camera handling here } else { AppUtils.showUserMessage("You declined to allow the app to access your camera", this); } } } 

ejecutar su código cientos de veces puede afectar a la cámara para que funcione incorrectamente. Su actividad puede estar funcionando correctamente pero el sistema no podría comprarla. Por lo tanto, las fuerzas de la cámara se detienen. Un consejo importante que todos perdieron es reiniciar tu teléfono y no solo eclipsar … Funcionó para mí …

ya que esta pregunta fue hecha 4 años atrás … y no me di cuenta de que, a menos que el Interlocutor lo mencionara … cuando no había soporte de Permisos de tiempo de ejecución.

pero esperando que sea útil para los usuarios que todavía están atrapados en esta situación … Eche un vistazo a Permisos de tiempo de ejecución , para mí resolvió el problema cuando agregué permisos de tiempo de ejecución para otorgar acceso a la cámara. Alternativamente , puede otorgar permisos a la aplicación de forma manual yendo a la configuración de su dispositivo móvil => Aplicaciones => (seleccione su aplicación) => sección Permisos en la ventana que aparece y habilite / deshabilite los permisos deseados. Espero que esto funcione

Se me ocurrió el mismo problema y estoy compartiendo cómo lo arreglé. Puede ayudar a algunas personas.

Primero, verifica tu versión de Android. Si se ejecuta en Android 6.0 y más alto (API nivel 23+), entonces necesita:

  1. Declara un permiso en el manifiesto de la aplicación. Asegúrese de insertar el permiso encima de la etiqueta de la aplicación.
 ** **  ...  

  1. Luego, solicite que el usuario apruebe cada permiso en tiempo de ejecución

    if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { // here, Permission is not granted ActivityCompat.requestPermissions(this, new String[] android.Manifest.permission.CAMERA}, 50); }

Para obtener más información, eche un vistazo a la documentación de la API aquí

cuando usas camera.open; y terminas de usar la cámara, escribe esta cámara de recomendación. libera (); esto detendrá la cámara para que pueda volver a usarla

Tuve el mismo problema. Intenté todas las soluciones mencionadas aquí pero nada funcionó. Así que reinicié mi dispositivo y de repente el problema fue resuelto.