Вы можете использовать подход, как этот
private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
@Override
public void onPictureTaken(final byte[] bytes,final Camera camera) {
// Do something here ... save, display ...
}
};
public void takePictureBack(ControllerState state){
Camera camera = null;
int cameraCount = Camera.getNumberOfCameras();
for (int cameraId = 0; cameraId < cameraCount; cameraId++) {
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
camera = Camera.open(cameraId);
break;
}
}
if (camera!= null) {
Camera.Parameters params = camera.getParameters();
// Check what resolutions are supported by your camera
List<Camera.Size> sizes = params.getSupportedPictureSizes();
// Iterate through all available resolutions and choose one.
for (Camera.Size size : sizes) {
...
}
params.setPictureSize(...);
camera.setParameters(params);
camera.setPreviewDisplay(mCameraSourcePreview.getSurfaceView().getHolder());
camera.startPreview();
camera.takePicture(null,null,mPictureCallback)
}
}
Однако будьте осторожны, так как Android не позволяет такого рода поведение, когда пользователь не знает картину принимаются. SurfaceView, который вы используете для предварительного просмотра, должен иметь видимость visible
.
Одно слово: Google. –
Возможный дубликат [Сделать фото автоматически без взаимодействия с пользователем] (http://stackoverflow.com/questions/9752730/take-a-photo-automatically-without-user-interaction) – Netero
Захват изображения без взаимодействия с пользователем (без действий пользователя) и захватить изображение в фоновом режиме с помощью службы android http://chandandroid.blogspot.in/2014/04/capturing-image-without-user-action.html –