Cela dépend absolument de ce que vous définissez comme « prendre une photo » - comme Nathan mentionné, lors de l'enregistrement vidéo (essentiellement une série d'images compressées et réduites), vous pouvez "prendre" une photo toutes les 30ms. Mais si vous définissez "prendre une photo" comme copier une image jpeg 5MP sur la carte SD, cela prendra probablement plus de temps.
Vous devez décrire explicitement ce que vous voulez dire quand vous dites "faites juste une boucle (pour prendre 1000 photos)", surtout quand vous vous plaignez d'erreurs.
En supposant que vous étendez l'interface Camera.PictureCallback
, beaucoup de traitement se passe dans les coulisses avant de passer l'image (comme la compression jpeg, je crois). Avez-vous essayé de lancer un événement dans votre implémentation de onPictureTaken
pour prendre une autre photo? Cela pourrait être un moyen sûr de faire et de tester ce que vous voulez. Sinon, si vous lancez une tonne de "prendre une photo" des événements, une sorte de débordement de tas pourrait se produire, je ne sais pas.
Edit: grosso modo, ce que je voulais dire:
public void onPictureTaken(
final byte [] data, final android.hardware.Camera camera) {
saveDataToFile("/DCIM/tempjpeg.jpg", data);
camera.takePicture(null, null, this);
}
Appel takePicture dès que vous le pouvez - droit dans le rappel! N'UTILISEZ PAS CELA sans modification, car cela sera bouclé pour toujours. J'ai essayé ceci, et cela fonctionne pour quelques photos, alors est juste de cesser de répondre. Si vous l'arrêtez après deux photos, il semble prendre moins d'une seconde sur un Nexus One. Espère que ça aide.
oui, je pense que vous avez raison, je l'ai testé et plus de photos que je prends, plus de temps qu'il faut pour capturer une autre image etc ... mauvaise chose je vais essayer avec l'appareil photo.PictureCallback cru puis de prendre en quelque sorte une autre image dans onPictureTaken (mais en fait je ne sais pas comment) – questioner
fondamentalement je veux prendre environ 2 photos en 1 seconde avec onPictureTaken il fonctionne avec 1 image, tout à côté besoin de plus de temps J'ai juste besoin d'un tableau d'octets qui représentent les pixels de l'image parce que je veux l'envoyer immédiatement à l'ordinateur – questioner
J'ai essayé d'utiliser votre méthode et il donne toujours les mêmes résultats. quand nous appelons camera.takePicture stopPreview(); est appelé et vous devez écrire camera.startPrewiew(); pour faire une autre image démarrant probablement prwiew prend du temps, que pensez-vous de la récupération des cadres en utilisant: | camera.setPreviewCallback (nouveau PreviewCallback() { \t onPreviewFrame public void (octet [] _data, _camera de l'appareil photo) {// TODO \t Faire quelque chose avec l'aperçu \t} \t.}); ? Cela peut fonctionner mieux – questioner