Android通过Intent方式调用相机拍照取得图片
AndroidManifest.XML
权限设置:
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
XML布局设置:
代码:
public classMainActivityextendsAppCompatActivity implementsView.OnClickListener{
private static intREQUST_SUO=1;//获取缩略图信号标识
private static int REQUST_ORIGINAL=2;//获取原图信号标识
privateButtonbtn1;
private Buttonbtn2;
private ImageViewiv1;
private ImageViewiv2;
private StringsdPath;
private StringpicPath;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private voidinit(){
btn1= ((Button) findViewById(R.id.btn1));
btn2= ((Button) findViewById(R.id.btn2));
iv1= ((ImageView) findViewById(R.id.iv1));
iv2= ((ImageView) findViewById(R.id.iv2));
sdPath= Environment.getExternalStorageDirectory().getPath();//获取sd卡的路径
picPath=sdPath+"/"+"temp.png";//保存图片的路径
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
public voidonClick(View view){
switch(view.getId()){
caseR.id.btn1:
Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,REQUST_SUO);//启动并设置返回请求码为缩略图的
break;
case R.id.btn2:
Intent intent1 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//调用手机的相机
Uri uri = Uri.fromFile(newFile(picPath));//根据图片路径生成一个uri
intent1.putExtra(MediaStore.EXTRA_OUTPUT,uri);//设置相机拍照图片保存的位置
startActivityForResult(intent1,REQUST_ORIGINAL);//启动并设置返回请求码为原图的
break;
}
}
@Override
protected voidonActivityResult(intrequestCode, intresultCode,Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if (resultCode ==RESULT_OK){
if(requestCode ==REQUST_SUO){
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");//data里面的数据是压缩过的缩略图,不是原图
iv1.setImageBitmap(bitmap);
}else if(requestCode ==REQUST_ORIGINAL){
FileInputStream fileInputStream =null;
try {
fileInputStream =newFileInputStream(picPath);//从路径中读取拍照所得图片的原图
Bitmap b = BitmapFactory.decodeStream(fileInputStream);//把所得文件输入流转为bitmap图
iv2.setImageBitmap(b);
}catch(FileNotFoundException e) {
e.printStackTrace();
}finally{
try{
fileInputStream.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
}
}
效果图:
http://pan.baidu.com/s/1nvhs63v
提取密码:89a5