2011-08-29 4 views
0

J'ai écrit un programme Android pour prendre une photo sans prévisualisation. Mes programmes fonctionnent bien lorsque je le débogue pas à pas. Cependant, lorsque je l'exécute en mode d'exécution, le programme ne fonctionne pas comme prévu. Aucune image n'est enregistrée et le programme ne peut pas terminer. En outre, je ne peux pas utiliser mon appareil photo dans d'autres applications Android (par exemple, appareil photo, caméscope), sauf si je redémarre mon téléphone. Quelqu'un a des idées sur ce problème? Le code pour prendre des photos et les erreurs enregistrées est la suivante:erreur d'exécution, mais le débogage pas à pas fonctionne bien

Code pour prendre des photos:

SurfaceView view = new SurfaceView(this); 
    mCamera = Camera.open(); 
    Camera.Parameters p = mCamera.getParameters(); 
    p.setPictureFormat(PixelFormat.JPEG); 
    mCamera.setParameters(p); 

    try { 
     mCamera.setPreviewDisplay(view.getHolder()); 
     mCamera.startPreview(); 
     mCamera.takePicture(null, null, mPictureCallback); 
     mCamera.stopPreview(); 
     mCamera.unlock(); 
     mCamera.release(); 
    } catch (Exception e) { 
     mCamera.stopPreview(); 
     mCamera.release(); 
     e.printStackTrace();    
    } 

La fonction de rappel

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { 
      public void onPictureTaken(byte[] imageData, Camera c) { 
       if (imageData != null) { 
      StoreByteImage(mContext, imageData, 50, 
        "ImageName"); 
      finish(); 
     } 
    } 
}; 
} 

Les erreurs signalées par logcat:

ERROR/Adreno200-ES20(130): rb verson is SBA #24 
ERROR/mm-camera(130): prepare snapshot: Aec not settle 
ERROR/CameraService(130): mHardware->setOverlay() failed with status -2147483648 
ERROR/mm-camera(130): camera_issue_command: get_picture error (Connection timed out): length 36, status 0 FD: 20 1 
ERROR/QualcommCameraHardware3D(130): getPicture: CAMERA_OPS_GET_PICTURE ioctl failed! 
ERROR/NotificationService(292): adbEnabled = false 
ERROR/NotificationService(292): adbEnabled = true 

Quelqu'un peut-il donner une suggestion? Merci d'avance

Répondre

0

cela fonctionne pour vous?

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      File file = new File(Environment.getExternalStorageDirectory(), 
        currentTimeString + ".jpg"); 
      outputFileUri = Uri.fromFile(file); 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
      startActivityForResult(intent, TAKE_PICTURE); 
+0

Cela ne fonctionne pas. Aucune photo n'est prise et enregistrée sur la carte SD. Et aussi le mode de prévisualisation de la caméra est démarré. – hanqiang

+0

ya je n'étais pas sûr quand j'ai posté si cela a montré un aperçu, je suppose. Je sais que ce code fonctionne bien pour prendre une photo (mises en œuvre testées et fonctionnelles sur téléphone et émulateur) alors peut-être qu'il se passe quelque chose d'autre pour vous. utilisez-vous un émulateur ou un périphérique? –

+0

J'utilise ma sensation HTC. – hanqiang

Questions connexes