Android 在满足条件时捕获图像

Android 在满足条件时捕获图像,android,android-camera,Android,Android Camera,欢迎大家, 我正在开发一个应用程序,我需要在满足某些条件时拍摄图像。到目前为止,我有一个SurfaceView预览后向摄像头,我的所有条件都完成了。当某些条件满足时,我想让相机拍照。当用户使用应用程序时,将拍摄多张照片。因此,预览将继续,直到满足所有条件。有什么建议吗?谢谢 解决方案: 我找到了一些代码并进行了处理 Camera.ShutterCallback myShutterCallback = new Camera.ShutterCallback() { public void o

欢迎大家,

我正在开发一个应用程序,我需要在满足某些条件时拍摄图像。到目前为止,我有一个SurfaceView预览后向摄像头,我的所有条件都完成了。当某些条件满足时,我想让相机拍照。当用户使用应用程序时,将拍摄多张照片。因此,预览将继续,直到满足所有条件。有什么建议吗?谢谢

解决方案: 我找到了一些代码并进行了处理

Camera.ShutterCallback myShutterCallback = new Camera.ShutterCallback() {
    public void onShutter() {
      // TODO bl
    }
  };

  PictureCallback myPictureCallback_RAW = new PictureCallback() {

    public void onPictureTaken(byte[] arg0, Camera arg1) {
        // TODO Auto-generated method stub

    }
  };
  PictureCallback myPictureCallback_JPG = new PictureCallback(){

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "/ImagesFromCamera");
            imagesFolder.mkdirs(); 
            //Unix time stamp for unique file naming. 
            long unixTime = System.currentTimeMillis() / 1000L; 
            String fileName = "image"+ unixTime +".jpg";
            File output = new File(imagesFolder, fileName);
            try {
                FileOutputStream fos = new FileOutputStream(output);
                fos.write(data);
                fos.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // Notify the user when the image is taken. 
                Toast.makeText(CustomCameraActivity.this, 
                        "Image saved.", 
                        Toast.LENGTH_SHORT).show();
            //Continue the Preview as it will stop once an image is taken.  
            camera.startPreview();
            }
    };

            //Will call the camera to take a photo.
        camera.takePicture(myShutterCallback, myPictureCallback_RAW, myPictureCallback_JPG);

此时,当条件满足时,您需要在相机上调用
takePicture()
。然后在
onPictureTaken()
回调的第一行中
startReview()
,您必须提供该回调才能使相机继续


当所有条件都满足时,在离开使用相机的活动的
onPause()
之前,也要确保
release()
相机。因为这可能会在应用程序或其他程序的其他负载上给您自己带来问题。

查看一些代码,至少了解一下您的情况,会很有帮助。感谢您的帮助,尽管我的问题不是非常清楚。它实际上把我引向了正确的方向。我已经发布了我在上面为那些寻求帮助的人使用的代码。