How to capture image automatically when application start in android?

Pooja Roy

Hi Friends I am working on a application.

In that application when the application start then the Pic should automatically captured from the camera.

My Code is:

1. Camera Demo

    public class CameraDemo extends Activity 
    {
        private static final String TAG = "CameraDemo";
        Camera camera;
        Preview preview;
        Button buttonClick;
        Chronometer ch;

        /** Called when the activity is first created. */
        @Override


    public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            preview = new Preview(this);
            ((FrameLayout) findViewById(R.id.preview)).addView(preview);

            buttonClick = (Button) findViewById(R.id.buttonClick);
            ch=(Chronometer)findViewById(R.id.chronometer1);
            ch.start();

            preview.camera.takePicture(shutterCallback,rawCallback,jpegCallback);       
// If I write above code here it shows error.

            buttonClick.setOnClickListener( new OnClickListener() 
            {
                public void onClick(View v) 
                {

                    buttonClick.setVisibility(View.INVISIBLE);
                    preview.camera.takePicture(shutterCallback, rawCallback,jpegCallback);
                               // Here it works perfactly
                    Toast.makeText(CameraDemo.this,""+ch.getText(), Toast.LENGTH_LONG).show();
                }
            });

            Log.d(TAG, "onCreate'd");
        }


        ShutterCallback shutterCallback = new ShutterCallback() 
        {
            public void onShutter() 
            {
                Log.d(TAG, "onShutter'd");
            }
        };

        /** Handles data for raw picture */
        PictureCallback rawCallback = new PictureCallback() 
        {
            public void onPictureTaken(byte[] data, Camera camera) 
            {
                Log.d(TAG, "onPictureTaken - raw");
            }
        };

        /** Handles data for jpeg picture */
        PictureCallback jpegCallback = new PictureCallback() 
        {
            public void onPictureTaken(byte[] data, Camera camera) 
            {
                FileOutputStream outStream = null;
                try
                {
                    // write to local sandbox file system
                    // outStream = CameraDemo.this.openFileOutput(String.format("%d.jpg", System.currentTimeMillis()), 0);  
                    // Or write to sdcard
                    outStream = new FileOutputStream(String.format("/sdcard/tmp/%d.jpg", System.currentTimeMillis()));  
                    outStream.write(data);
                    outStream.close();
                    Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
                }
                catch (FileNotFoundException e) 
                {
                    e.printStackTrace();
                }
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
                finally 
                {
                }
                Log.d(TAG, "onPictureTaken - jpeg");
            }
        };

    }

2. Preview.java

package com.example;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;


class Preview extends SurfaceView implements SurfaceHolder.Callback {
    private static final String TAG = "Preview";

    SurfaceHolder mHolder;
    public Camera camera;

    @SuppressWarnings("deprecation")
    Preview(Context context)
    {
        super(context);

        // Install a SurfaceHolder.Callback so we get notified when the
        // underlying surface is created and destroyed.
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) 
    {
        // The Surface has been created, acquire the camera and tell it where
        // to draw.
        camera = Camera.open();
        try 
        {
            camera.setPreviewDisplay(holder);

            camera.setPreviewCallback(new PreviewCallback() 
            {

                public void onPreviewFrame(byte[] data, Camera arg1) 
                {
                    FileOutputStream outStream = null;
                    try 
                    {
                        outStream = new FileOutputStream(String.format("/sdcard/tmp/%d.jpg", System.currentTimeMillis()));  
                        outStream.write(data);
                        outStream.close();
                        Log.d(TAG, "onPreviewFrame - wrote bytes: " + data.length);
                    }
                    catch (FileNotFoundException e) 
                    {
                        e.printStackTrace();
                    }
                    catch (IOException e) 
                    {
                        e.printStackTrace();
                    }
                    finally 
                    {
                    }
                        Preview.this.invalidate();
                }
            });
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) 
    {
        // Surface will be destroyed when we return, so stop the preview.
        // Because the CameraDevice object is not a shared resource, it's very
        // important to release it when the activity is paused.
        camera.stopPreview();
        camera = null;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) 
    {
        // Now that the size is known, set up the camera parameters and begin
        // the preview.
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPreviewSize(w, h);
        camera.setParameters(parameters);
        camera.startPreview();
    }

    @Override
    public void draw(Canvas canvas) 
    {
            super.draw(canvas);
            Paint p= new Paint(Color.RED);
            Log.d(TAG,"draw");
            canvas.drawText("PREVIEW", canvas.getWidth()/2, canvas.getHeight()/2, p );
    }
}

For that I had given above permisson:

<uses-permission android:name="android.permission.CAMERA" />

My Error Log is:

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.CameraDemo}: java.lang.NullPointerException
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
    at android.app.ActivityThread.access$600(ActivityThread.java:162)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:194)
    at android.app.ActivityThread.main(ActivityThread.java:5371)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
    at com.example.CameraDemo.onCreate(CameraDemo.java:41)
    at android.app.Activity.performCreate(Activity.java:5122)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
    ... 11 more

My Problem is:

When I am using this code in button click event it work perfectly. But as I need when I start the application image should capture automatically.

Same code not working in onCreate() event and application stops unfortunately.

Please tell the solution of this.

Thank You.

SweetWisher ツ

Your SurfaceView is not yet created when you call

preview.camera.takePicture(shutterCallback,rawCallback,jpegCallback);


So camera is NULL at that time..

Try to call it after some dealy..

  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.camera);
        preview = new Preview(this);

        ((FrameLayout) findViewById(R.id.preview)).addView(preview);

        new java.util.Timer().schedule( 
                new java.util.TimerTask() {
                    @Override
                    public void run() {
                        // your code here
                         preview.camera.takePicture(shutterCallback,rawCallback,jpegCallback);
                    }
                }, 
                2000 
        );


    }

This works perfect for me... Hope it works for you too.. Best Luck :)

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How to start a Service when the Android application is started?

From Dev

How to start a Service when the Android application is started?

From Dev

How to automatically start Teapot on an Image start?

From Dev

How to capture an image in android with coordinates

From Dev

How to Capture Image in Fragment Android

From Dev

How to capture a image in Android OpenCV

From Dev

How to zoom image automatically when focused while scrolling in android

From Dev

How to automatically update the database on application start up?

From Dev

android automatically Start onClick when open activity

From Dev

Spring boot: Start an application automatically when Webshere Application Server starts?

From Dev

Android:Understanding how does an activity start when application launches

From Dev

How to update application automatically; Android

From Dev

How to configure VMs to automatically start when the host is on

From Dev

How to automatically open a file when Emacs start?

From Dev

How to start speechRecognize automatically when hearing a voice

From Dev

Automatically reopen an Android application when it gets closed

From Dev

How to capture an image in Android Studio using OpenCV

From Dev

How I can run a Python automatically when you start or restart android-mobile-phone?

From Dev

How to properly error-catch Android camera activity when using the ACTION_IMAGE_CAPTURE Intent

From Dev

How to check camera Id (primary or secondary) which camera is open currently in android when user capture an image?

From Dev

Android application crashes when I start an IntentService

From Dev

Android Application Crashes when i start an intent

From Dev

How to start nodejs application automatically on openwrt - Arduino Yun -

From Dev

How should I start my nodejs application automatically for tests

From Dev

How to automatically register @Entity decorated classes at application start up?

From Dev

How to automatically start and advance a few steps in an application in background in linux?

From Dev

how to start standalone.bat automatically after installing application?

From Dev

How to automatically start and advance a few steps in an application in background in linux?

From Dev

How should I start my nodejs application automatically for tests

Related Related

  1. 1

    How to start a Service when the Android application is started?

  2. 2

    How to start a Service when the Android application is started?

  3. 3

    How to automatically start Teapot on an Image start?

  4. 4

    How to capture an image in android with coordinates

  5. 5

    How to Capture Image in Fragment Android

  6. 6

    How to capture a image in Android OpenCV

  7. 7

    How to zoom image automatically when focused while scrolling in android

  8. 8

    How to automatically update the database on application start up?

  9. 9

    android automatically Start onClick when open activity

  10. 10

    Spring boot: Start an application automatically when Webshere Application Server starts?

  11. 11

    Android:Understanding how does an activity start when application launches

  12. 12

    How to update application automatically; Android

  13. 13

    How to configure VMs to automatically start when the host is on

  14. 14

    How to automatically open a file when Emacs start?

  15. 15

    How to start speechRecognize automatically when hearing a voice

  16. 16

    Automatically reopen an Android application when it gets closed

  17. 17

    How to capture an image in Android Studio using OpenCV

  18. 18

    How I can run a Python automatically when you start or restart android-mobile-phone?

  19. 19

    How to properly error-catch Android camera activity when using the ACTION_IMAGE_CAPTURE Intent

  20. 20

    How to check camera Id (primary or secondary) which camera is open currently in android when user capture an image?

  21. 21

    Android application crashes when I start an IntentService

  22. 22

    Android Application Crashes when i start an intent

  23. 23

    How to start nodejs application automatically on openwrt - Arduino Yun -

  24. 24

    How should I start my nodejs application automatically for tests

  25. 25

    How to automatically register @Entity decorated classes at application start up?

  26. 26

    How to automatically start and advance a few steps in an application in background in linux?

  27. 27

    how to start standalone.bat automatically after installing application?

  28. 28

    How to automatically start and advance a few steps in an application in background in linux?

  29. 29

    How should I start my nodejs application automatically for tests

HotTag

Archive