31 votes

Android - Impossible de se connecter à la caméra

J'utilise l'exemple de code Android APIDemo.

Lorsque je lance l'exemple CameraPreview, au début, c'était qui me donne une erreur .

Je l'ai tracé et l'échantillon a fonctionné pendant un moment.
Maintenant, il ne fonctionne plus. Il est écrit

ERROR/AndroidRuntime(2949): java.lang.RuntimeException: Fail to connect to camera service  

Quelle peut en être la cause ? Ça arrive quand camera.open() s'appelle.

Merci,
Tee

28voto

Kangur Points 2412

Veillez à libérer correctement toutes les ressources de la caméra acquises :

    @Override
public void surfaceDestroyed(SurfaceHolder holder) {
    if (mCam != null) {
        mCam.stopPreview();
        mCam.setPreviewCallback(null);
        mCam.release();
        mCam = null;
    }
}

    @Override
public void surfaceCreated(SurfaceHolder holder) {
    if (mCam == null) {
        mCam = Camera.open();
        try {
            mCam.setPreviewDisplay(holder);

            // TODO test how much setPreviewCallbackWithBuffer is faster
            mCam.setPreviewCallback(this);
        } catch (IOException e) {
            mCam.release();
            mCam = null;
        }
    }
}

17voto

CommonsWare Points 402670

Assurez-vous que votre <uses-permission> éléments sont dans les bonnes positions dans votre AndroidManifest.xml fichier.

5voto

plus- Points 9661

Cela se produit si votre activité ne ferme pas correctement l'appareil en surfaceDestroyed o onConfigurationChanged etc...

N'oubliez pas de le faire à chaque fois que vous sortez de votre activité :

        if (camera!=null){
                camera.stopPreview();
                camera.release();
                camera=null;
        }

4voto

Sharj Points 2398

Une autre raison de cette erreur est lorsque vous essayez d'ouvrir la caméra mais qu'une autre application ou même votre application est déjà en utilisant la caméra.

2voto

PankajAndroid Points 1254

Je rencontre également ce type de problème sur un appareil HTC. Pour le résoudre, ajoutez ce code :

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    if (camera!=null)
    {
        camera.stopPreview();
        camera.release();
        camera=null;
    }
}

Et pourtant vous ne pouvez pas démarrer la caméra puis redémarrer l'appareil.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X