Skip to content Skip to sidebar Skip to footer

Android Camera Click Continous Shots

I am trying to make camera application which takes 3 continuous shots. i have tried to call 'takePicture' several times by putting it in a loop. but no success. please help on this

Solution 1:

You never should call PictureCallback.onPictureTaken() from your code; this callback receives data from the system when it is ready, as response to Camera.takePicture().

The latter call will only succeed if the camera is opened and preview is started. Therefore, simply calling Camera.takePicture() in a loop will not work (see e.g. Android 2.3.1 Camera takePicture() Multiple images with one button click). The correct way to handle this is to keep a counter of shots processed in your onPictureTaken(), and if it is less than 3, then restart camera preview and issue (synchroneously) another Camera.takePicture(). After this, onPictureTaken() should return, to allow processing of the next captured frame.


Solution 2:

I use it like this when doing a PhotoBurst. It is also handling the FRameLayout holding the preview to start the PhotoBurst:

PictureCallback jpegCallback = new PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
        FileOutputStream outStream = null;
        try {

            Parameters param = camera.getParameters();
            param.setPictureSize(640, 480);
            camera.setParameters(param);

             // Or write to sdcard
            outStream = new FileOutputStream(String.format(
                    Environment.getExternalStorageDirectory().getPath()+"/foto%d.jpg",
                    System.currentTimeMillis()));

            outStream.write(data);
            outStream.close();
            sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,                           
                     Uri.fromFile(Environment.getExternalStorageDirectory())));

            Log.i(TAG, "onPictureTaken - wrote bytes: " + data.length);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }
        Log.d(TAG, "onPictureTaken - jpg");
        try {
            stillCount++;
            camera.startPreview();
            if (stillCount < 10) {
                preview.mCamera.takePicture(shutterCallback, rawCallback,
                        jpegCallback);
                if (stillCount == 9) {
                    frameLayout.setClickable(true);
                }
            } else {
                stillCount = 0;
                takePictureButton.setEnabled(true);
                frameLayout.setClickable(true);
            }
        } catch (Exception e) {
            Log.d(TAG, "Error starting preview: " + e.toString());
        }
    }
};  

Solution 3:

I got the solution.

i was calling mCamera.startPreview(); out of my loop.

preview is must to take shots, and not including mCamera.startPreview(); was blocking my execution.


Post a Comment for "Android Camera Click Continous Shots"