Using android camera
/* * Make sure your emulator has an "SD Card" size specified or just test on a device */ package com.mobvcasting.pictureintent; import java.io.File; importjava.io.FileDescriptor; import java.io.FileNotFoundException; import import import import import import import import import import import import android.app.Activity; android.content.Intent; android.graphics.Bitmap; android.graphics.BitmapFactory; android.net.Uri; android.os.Bundle; android.os.Environment; android.util.Log; android.view.View; android.view.View.OnClickListener; android.widget.Button;android.widget.ImageView;
public class PictureIntent extends Activity { Button aButton; String imageFilePath; ImageView ourImageView; public final int CAMERA_RESULT = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imageFilePath =Environment.getExternalStorageDirectory().getAbsolutePath() + "/tmp_image.jpg"; Log.v("IMAGE FILE",imageFilePath); aButton = (Button) this.findViewById(R.id.Button01); aButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { File imageFile = new File(imageFilePath); Uri imageFileUri = Uri.fromFile(imageFile);
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri); startActivityForResult(i, CAMERA_RESULT); }}); ourImageView = (ImageView) this.findViewById(R.id.ImageView01); } protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); //Bundle extras = intent.getExtras(); switch(requestCode) { case CAMERA_RESULT:
if (resultCode == RESULT_OK) {Log.v("RESULTS","HERE"); /* Tiny Image Returned Bitmap bmp = (Bitmap) extras.get("data"); ourImageView.setImageBitmap(bmp); */ Bitmap bmp = BitmapFactory.decodeFile(imageFilePath); ourImageView.setImageBitmap(bmp); Log.v("RESULTS","Image Width: " + bmp.getWidth()); Log.v("RESULTS","Image Height: " + bmp.getHeight()); } break; } } }
This requires that we request some permissions in ourAndroidManifest.xml file:
Capturing a picture Another way to capture an image with Android is to create our own camera application. This is more difficult but should enable the grabbing of a full size image. It also allows for complex interactions with the camera preview image. The first issue we run into is that we need to create a SurfaceView for the camera to draw the preview image onto. This previewimage will act as our view finder so that the user can see what they are about to take a picture of. Here is a barebones SurfaceView that we can get started with:
package com.mobvcasting.snapshot; import import import import android.content.Context; android.util.AttributeSet; android.view.SurfaceHolder; android.view.SurfaceView;
public class CameraView extends SurfaceView implementsSurfaceHolder.Callback { SurfaceHolder mHolder; public CameraView(Context context, AttributeSet attrs) { super(context,attrs); // 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 CameraView(Context context) { super(context); //...
Regístrate para leer el documento completo.