package com.example.mcamera;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
Button StartCamera1;
Button StartCamera2;
ImageView showImage;
final static int REQ_Code1 = 1;
final static int REQ_Code2 = 1;
String mFilePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
//得到sdcard的绝对路径
mFilePath=Environment.getExternalStorageDirectory().getPath();
mFilePath=mFilePath+"/"+"pic.png";
}
private void init() {
StartCamera1 = (Button) findViewById(R.id.startCamera1);
StartCamera2 = (Button) findViewById(R.id.startCamera2);
showImage = (ImageView) findViewById(R.id.showImageView);
StartCamera1.setOnClickListener(this);
StartCamera2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.startCamera1:
//通过隐式intent启动系统Camera 进行拍照
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//通过startActivityForResult这种Activity启动方式将结果返回
startActivityForResult(intent, REQ_Code1);
break;
case R.id.startCamera2:
Intent intent1=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//指定所拍的照片存放到自己给定的路径
Uri uri=Uri.fromFile(new File(mFilePath));
intent1.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent1, REQ_Code2);
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK) {
if (requestCode==REQ_Code1) {
Bundle bundle=data.getExtras();
//得到的Bitmap其实是缩略图
Bitmap bitmap=(Bitmap) bundle.get("data");
showImage.setImageBitmap(bitmap);
}else if (requestCode==REQ_Code2) {
try {
FileInputStream fis=new FileInputStream(new File(mFilePath));
//此处得到的Bitmap 是拍照得到的真实图片
Bitmap bitmap=BitmapFactory.decodeStream(fis);
showImage.setImageBitmap(bitmap);
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
注意 :第二种对Bitmap 操做要添加对SD卡的读写权限
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
Button StartCamera1;
Button StartCamera2;
ImageView showImage;
final static int REQ_Code1 = 1;
final static int REQ_Code2 = 1;
String mFilePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
//得到sdcard的绝对路径
mFilePath=Environment.getExternalStorageDirectory().getPath();
mFilePath=mFilePath+"/"+"pic.png";
}
private void init() {
StartCamera1 = (Button) findViewById(R.id.startCamera1);
StartCamera2 = (Button) findViewById(R.id.startCamera2);
showImage = (ImageView) findViewById(R.id.showImageView);
StartCamera1.setOnClickListener(this);
StartCamera2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.startCamera1:
//通过隐式intent启动系统Camera 进行拍照
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//通过startActivityForResult这种Activity启动方式将结果返回
startActivityForResult(intent, REQ_Code1);
break;
case R.id.startCamera2:
Intent intent1=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//指定所拍的照片存放到自己给定的路径
Uri uri=Uri.fromFile(new File(mFilePath));
intent1.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent1, REQ_Code2);
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK) {
if (requestCode==REQ_Code1) {
Bundle bundle=data.getExtras();
//得到的Bitmap其实是缩略图
Bitmap bitmap=(Bitmap) bundle.get("data");
showImage.setImageBitmap(bitmap);
}else if (requestCode==REQ_Code2) {
try {
FileInputStream fis=new FileInputStream(new File(mFilePath));
//此处得到的Bitmap 是拍照得到的真实图片
Bitmap bitmap=BitmapFactory.decodeStream(fis);
showImage.setImageBitmap(bitmap);
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
注意 :第二种对Bitmap 操做要添加对SD卡的读写权限