转载请注明出处amoscxy的博客:https://mp.csdn.net/mdeditor/79117522
一 调用系统相机
(1)调用系统相机是用过滤规则匹配的方式,系统相机设置了 规则,因此调用相机秩序action匹配:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
(2)想要获取拍照图片,可以通过startActivityForResult … onActivityResult来实现
public void aCamera(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQ_1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == REQ_1) {
if (data != null) {
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
mImageView.setImageBitmap(bitmap);
}
}
}
}
需要注意的是,为防止图片太大,导致内存溢出,bundle.get(“data”)返回的图片只是缩略图,质量比较差,要想通过系统相机获得拍照原图,需要通过intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri);
修改系统相机拍照图片保存的路径,再从路径获取原图。
public void aCamera2(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri photoUri = Uri.fromFile(new File(mFilePath));
intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri);
startActivityForResult(intent, REQ_2);
}
mFIlePath最好是sd卡中的目录,如:mFilePath = Environment.getExternalStorageDirectory().getPath() + "/" + System.currentTimeMillis() + ".png";
,要将图片保存到sd卡上需要读写权限
可以通过文件流读写方式获取图片流,并转换成图片:
FileInputStream fis = new FileInput