天天看點

android調用照相機拍照擷取照片并…

1.調用系統的照相機程式

Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);

 startActivityForResult(intent,TAKE_PHOTO_WITH_DATA);

2.在onActivityResult中處理傳回的data

final Bitmap photo = data.getParcelableExtra("data");

如果不需要做剪切處理就可以直接使用圖檔了,比如輸出到ImageView上

imageView.setImageBitmap(photo);

如果需要做剪切處理,就繼續向下執行

3.做剪切處理

       Intent intent = newIntent("com.Android.camera.action.CROP");

       intent.setType("image

   private Button btnTake = null;

   private ImageView lblImage = null;

   private static final int PHOTO_PICKED_WITH_DATA = 3021;

   private static final int CAMERA_WITH_DATA = 3023;

   @Override

   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

       btnTake = (Button)findViewById(R.id.btnTake);

       lblImage = (ImageView)findViewById(R.id.lblImage);

       btnTake.setOnClickListener(new View.OnClickListener() {

           @Override

           public void onClick(View v) {

               // TODO Auto-generated method stub

               Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);

               startActivityForResult(intent, CAMERA_WITH_DATA);

           }

       });

   }

   @Override

   protected void onActivityResult(int requestCode, int resultCode,Intent data) {

       // TODO Auto-generated method stub

       if(resultCode!=RESULT_OK)

           return;

       switch(requestCode){

       case CAMERA_WITH_DATA:

           final Bitmap photo = data.getParcelableExtra("data");

           if(photo!=null){

               doCropPhoto(photo);

           }

       case PHOTO_PICKED_WITH_DATA:

           Bitmap photo1 = data.getParcelableExtra("data");

           if(photo1!=null){

               lblImage.setImageBitmap(photo1);

           }

       }

   }

   protected void doCropPhoto(Bitmap data){

       Intent intent = getCropImageIntent(data);

       startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);

   }

   public static Intent getCropImageIntent(Bitmap data) {

       Intent intent = newIntent("com.android.camera.action.CROP");

       intent.setType("image/*");

       intent.putExtra("data", data);

       intent.putExtra("crop", "true");

       intent.putExtra("aspectX", 1);

       intent.putExtra("aspectY", 1);

       intent.putExtra("outputX", 128);

       intent.putExtra("outputY", 128);

       intent.putExtra("return-data", true);

       return intent;

   }

}

完整代碼:

package com.chc.android;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.os.Bundle;

import android.provider.MediaStore;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

public class tapgetcut extends Activity {

private Button btnTake = null;

private ImageView lblImage = null;

private static final int PHOTO_PICKED_WITH_DATA = 3021;

private static final int CAMERA_WITH_DATA = 3023;

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    btnTake = (Button)findViewById(R.id.btn01);

    lblImage = (ImageView)findViewById(R.id.iv01);

    btnTake.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            // TODO Auto-generated method stub

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            startActivityForResult(intent, CAMERA_WITH_DATA);

        }

    });

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    // TODO Auto-generated method stub

    if(resultCode!=RESULT_OK)

        return;

    switch(requestCode){

    case CAMERA_WITH_DATA:

        final Bitmap photo = data.getParcelableExtra("data");

        if(photo!=null){

            doCropPhoto(photo);

        }

    case PHOTO_PICKED_WITH_DATA:

        Bitmap photo1 = data.getParcelableExtra("data");

        if(photo1!=null){

            lblImage.setImageBitmap(photo1);

        }

    }

}

protected void doCropPhoto(Bitmap data){

    Intent intent = getCropImageIntent(data);

    startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);

}

public static Intent getCropImageIntent(Bitmap data) {

    Intent intent = new Intent("com.android.camera.action.CROP");

    intent.setType("image/*");

    intent.putExtra("data", data);

    intent.putExtra("crop", "true");

    intent.putExtra("aspectX", 1);

    intent.putExtra("aspectY", 1);

    intent.putExtra("outputX", 128);

    intent.putExtra("outputY", 128);

    intent.putExtra("return-data", true);

    return intent;

}

}

xml:

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

    android:id ="@+id/test01"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    />

    android:id="@+id/btn01"

      android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="确定"

    />

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    >

自 http://blog.sina.com.cn/s/blog_7501670601013l3o.html