Это абсолютно зависит от того, что вы определяете как «сфотографировать» - как уже упоминалось Nathan, при записи видео (в основном серия уменьшенных, сжатых изображений), вы можете «взять» изображение каждые 30 мс. Но если вы определите «сделать снимок» как копирование 5MP jpeg-изображения на SD-карту, это, вероятно, займет больше времени.
Вы должны явно описать, что вы имеете в виду, когда говорите «просто сделайте цикл (чтобы сделать 1000 снимков)», особенно если вы жалуетесь на ошибки.
Предполагая, что вы расширяете интерфейс Camera.PictureCallback
, много обработки идет за кулисами, прежде чем вы пройдете изображение (например, jpeg compression, я считаю). Пробовали ли вы сделать событие внутри своей реализации onPictureTaken
, чтобы сделать еще одно изображение? Это может быть безопасный способ делать и тестировать то, что вы хотите. В противном случае, если вы отпустите тонну событий «сделайте снимок», может произойти какое-то переполнение кучи, я не знаю.
Edit: Грубо говоря, это то, что я имел в виду:
public void onPictureTaken(
final byte [] data, final android.hardware.Camera camera) {
saveDataToFile("/DCIM/tempjpeg.jpg", data);
camera.takePicture(null, null, this);
}
Вызов takePicture как только можно - прямо в обратный вызов! НЕ ИСПОЛЬЗУЙТЕ ЭТО без изменений, так как это будет работать навсегда. Я пробовал это, и он работает на пару фото, а затем просто перестает отвечать. Если вы остановите его после двух фото, он, кажется, займет меньше секунды на Nexus One. Надеюсь, что это поможет.
Да, я думаю, что вы правы, я тестировал его и больше фотографий, которые я принимаю, больше времени, чтобы захватить другую картинку и т. Д. ... Я попробую с камерой.PictureCallback сырье , а затем принимать как-то другую картину в onPictureTaken (но на самом деле я не знаю, как) – questioner
в основном я хочу, чтобы занять около 2 фотографий в 1 секунду с onPictureTaken он работает с 1 изображением, любой следующими нужно больше времени Мне нужно просто массив байтов, представляющих пиксели изображений, потому что я хочу отправить их немедленно на компьютер – questioner
Я попытался использовать ваш метод, и он по-прежнему дает те же результаты. когда мы вызываем camera.takePicture stopPreview(); вызывается, и вы должны написать camera.startPrewiew(); чтобы сделать другое изображение Вероятно, начиная с prwiew требуется время, что вы думаете об извлечении кадров, используя: | camera.setPreviewCallback (новый PreviewCallback() { \t общественного недействительными onPreviewFrame (байт [] _data, камера _camera) { \t // TODO Сделайте что-нибудь с изображением предварительного просмотра \t} \t.}); ? Это может работать лучше – questioner