简体   繁体   中英

How do I access the camera on Android phones?

I've written a program in Java that takes in an image file and manipulates the image. Now I'm trying to access the camera so that I can take the photo and give it to the image processing program however I'm lost as to how to do this. I've read the information about the camera class and how to ask for permissions but I don't know how to actually take the photo. If anyone has any tips on where I should begin or if they know of a good tutorial I'd really appreciate it. Thanks!

Google is your best friend, here are some tutorials:

Using the camera

How-To Program The Google Android Camera To Take Pictures

Take Picture from Camera Emulator

camera

First edit your AndroidManifest.xml, add the camera permission:

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

Camera service has to be opened and closed:

Camera camera = Camera.open();
 //Do things with the camera
camera.release();

You can set camera settings, eg:

Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG); 
camera.setParameters(parameters);

To take a picture:

private void takePicture() {
  camera.takePicture(shutterCallback, rawCallback, jpegCallback); 
}

ShutterCallback shutterCallback = new ShutterCallback() {
  public void onShutter() {
    // TODO Do something when the shutter closes.
  }
};

PictureCallback rawCallback = new PictureCallback() {
  public void onPictureTaken(byte[] _data, Camera _camera) {
    // TODO Do something with the image RAW data.
  }
};

PictureCallback jpegCallback = new PictureCallback() {
  public void onPictureTaken(byte[] _data, Camera _camera) {
    // TODO Do something with the image JPEG data.
  }
};

Do not forget to add the camera layout to your main layout xml.

there are many ways by which u can do this.... One of the better way which i think is the short and simple is to on Button Click u can call intent which opens ur inbuilt camera view... here is the sample code...

public class CameraDemo extends Activity {

Button ButtonClick;
int CAMERA_PIC_REQUEST = 2; 
int  TAKE_PICTURE=0;
Camera camera;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ButtonClick =(Button) findViewById(R.id.Camera);
    ButtonClick.setOnClickListener(new OnClickListener (){
        @Override
        public void onClick(View view)
        {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
        }
    });        
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);
    if( requestCode == CAMERA_PIC_REQUEST)
    {   
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
        ImageView image =(ImageView) findViewById(R.id.PhotoCaptured);
        image.setImageBitmap(thumbnail);
    }
    else 
    {
        Toast.makeText(demo.this, "Picture NOt taken", Toast.LENGTH_LONG);
    }

}
}

..............................................................

Go through it and, if u have any problem feel free to ask....

rakesh

There are two methods to take photo for your android application

1)Using Intent

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name

// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

2) Creating a customized camera activity. For that you need following steps

 * Detect and Access Camera
 * Create a Preview Class
 * Build a Preview Layout 
 * Capture and Save Files
 * Release the Camera

You may also refer the following links:

http://developer.android.com/guide/topics/media/camera.html http://developer.android.com/reference/android/hardware/Camera.html

the most important method is:

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] imageData, Camera c) {

    }
};

This method is called when a picture is taken. Here is a good tutorial on this topic: http://www.brighthub.com/mobile/google-android/articles/43414.aspx

hmm... or maybe you need this one:

Camera mCamera;
...
public void onClick(View arg0) {
    mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}

Here is one more example: http://snippets.dzone.com/posts/show/8683

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM