Это абсолютно зависит от того, что вы определяете как «сделать снимок» - как упомянул Натан, при записи видео (в основном, это серия уменьшенных сжатых изображений) вы можете «делать» снимок каждые 30 мс. Но если вы определяете «фотографирование» как копирование 5-мегапиксельного JPEG-изображения на SD-карту, это, вероятно, займет больше времени.
Вы должны четко описать, что вы имеете в виду, когда говорите «просто сделайте цикл (взять 1000 фотографий)», особенно когда вы жалуетесь на ошибки.
Предполагая, что вы расширяете интерфейс Camera.PictureCallback
, большая часть обработки происходит за кулисами, прежде чем вы пропустите изображение (как, например, сжатие JPEG, я полагаю). Вы пытались создать событие внутри вашей реализации onPictureTaken
, чтобы сделать еще один снимок? Это может быть безопасный способ сделать и проверить то, что вы хотите. В противном случае, если вы запустите тонну событий «сделайте снимок», может произойти какое-то переполнение кучи, я не знаю.
Редактировать: Грубо говоря, это то, что я имел в виду:
public void onPictureTaken(
final byte [] data, final android.hardware.Camera camera) {
saveDataToFile("/DCIM/tempjpeg.jpg", data);
camera.takePicture(null, null, this);
}
Позвоните на takePicture, как только сможете - прямо в обратном вызове! НЕ ИСПОЛЬЗУЙТЕ ЭТО без изменений, так как это будет продолжаться вечно. Я попробовал это, и это работает на пару фото, а затем просто перестает отвечать. Если вы остановите его после двух фото, на Nexus One это займет меньше секунды. Надежды, которые помогают.