Taking Multiple Photos from Android device

2019-05-10 01:20发布

问题:

I am working on an app that takes multiple photos from android device once launched and stores it into the memory card. Is there a way to speed up the process, because latency between each photo taken is very large. On an average 1.6 photos are taken per sec. in the lowest resolution and less than 1 photo per sec. in highest resolution. The device's camera is 8 MP. My question is can I increase the number of pictures taken per sec.? Can I make my app work somewhat like DSLR which can shoot very quickly? Also I checked, I/O operations for writing to File System is not having any effect in the latency. I think its all the hardware.

I also used various modes like these :-

 params.setSceneMode(Camera.Parameters.SCENE_MODE_SPORTS);
//params.setSceneMode(Camera.Parameters.SCENE_MODE_ACTION);
//params.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO);
//params.setSceneMode(Camera.Parameters.SCENE_MODE_FIREWORKS);
//params.setSceneMode(Camera.Parameters.SCENE_MODE_STEADYPHOTO);

Appreciate any help on this. Cheers!

回答1:

When you take a picture, the camera has to close the shutter to prepare the sensor, open the shutter to expose the picture, close it again, and copy the image off the sensor into memory. It is not possible to skip these steps without losing image quality.

The reason DSLRs have a much higher fps is that they are designed with high speed shutters and faster bus speeds for their sensors. Unfortunately, there is no way to make up for these qualities in software.

One way you can get faster images from your device is to shoot a video (or capture the image preview). The individual frame quality will be lower than a picture, but you will have many more frames per second.



回答2:

Your results will always depend on the device. Some devices may support continuous or burst shooting mode. Other devices may be equipped with fullHD video capability which can result in acceptable quality simulation of burst shooting via preview callback.

See this article for more detailed explanations and examples.

On the other hand, one thing that is universal and deserves mention in this context: using camera capture intent is inevitably significantly slower than working with your own picture callback.