0

J'ai un problème en utilisant l'appareil photo dans Android.Android lance une erreur à chaque fois que "Camera camera = Camera.open();" est appelé

Développement sur API 25 Nougat 7.1.1 SDK. SDK cible min est fixé à 15.

Il jette l'erreur à chaque fois lors de l'appel:

Camera camera = Camera.open(); 

avec l'erreur « RuntimeException: Echec de la connexion au service de la caméra », qui peut être vu de mon émulateur (Nexus 5X API 25 Android 7.1.1)

En testant sur un appareil réel (Android 5.1.1), les fonctions de l'appareil photo ne fonctionnent pas - exactement le même problème.

Voici le code:

import android.hardware.Camera; 

... 

boolean hasCamera = false; 

private boolean hasCamera(Context context) { 
     return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA); 
    } 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 

    hasCamera = hasCamera(this); 
    if(!hasCamera) { 
     takePhotoButton.setText("No Camera Found"); 
     takePhotoButton.setEnabled(false); 
    } 
} 

private class TakePhotoButtonListener implements View.OnClickListener { 
    @Override 
    public void onClick(View v) { 
     if(hasCamera) { 
      try { 
       Camera camera = Camera.open(); 
       camera.startPreview(); 
       camera.takePicture(
         null, 
         null, 
         new CameraPictureCallbackJPEG()); 
      } catch (Exception e) { 
       Log.i("Error", e.getMessage()); 
      } 
     } 
    } 
} 

Le camara est en effet détecté (hasCamera == true).

Je n'utilise pas Camera2 (à partir d'API 21) car je souhaite que mon application fonctionne sur API 15 et versions ultérieures.

J'ai essayé plusieurs réponses ici mais rien n'a fonctionné. S'il vous plaît donnez votre avis!

+0

http://stackoverflow.com/questions/23904459/android-java-lang-runtimeexception-fail-to-connect-to-camera-service –

+0

Problème d'autorisation? – GhostCat

+0

Essayez de redémarrer l'appareil. Je vois généralement cela quand une application a acquis l'appareil photo et ne l'a pas libéré. – CommonsWare

Répondre

1

Veuillez ajouter les autorisations suivantes à votre fichier manifeste, si elles ne sont pas ajoutées.

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

Note importante: Cela se produit parce que vous avez l'appareil photo ouvert lors du premier lancement et après que vous ne l'avez pas libérer des ressources est tout. assurez-vous que vous devriez le faire

camera.stopPreview(); 
camera.release(); 
camera = null; 

Vous devez faire ci-dessus processus de nettoyage et de libérer des ressources lorsque vous avez terminé avec l'utilisation de l'appareil photo.

Espérons que cela aide.