2016-01-08 2 views
-5

Я ищу способ сделать снимок автоматически в андроиде без взаимодействия с пользователем, я могу открыть и сфотографировать, но я не могу взять автоматический picutre?сделайте снимок автоматически, без взаимодействия с пользователем в андроиде

public void capturePhoto() { 
     Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(G.DIR_APP + "/tmp"))); 
     startActivityForResult(intent, TAKE_PICTURE); 
    } 
+0

Одно слово: Google. –

+1

Возможный дубликат [Сделать фото автоматически без взаимодействия с пользователем] (http://stackoverflow.com/questions/9752730/take-a-photo-automatically-without-user-interaction) – Netero

+0

Захват изображения без взаимодействия с пользователем (без действий пользователя) и захватить изображение в фоновом режиме с помощью службы android http://chandandroid.blogspot.in/2014/04/capturing-image-without-user-action.html –

ответ

0

Вы можете использовать подход, как этот

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.

Смежные вопросы