1.就自己研究写一下android拍照获取图片,自己主要试了两种方法。
1).当不指定图片保存路径时。系统返回的时缩略图。
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePictureIntent, 2);
可通过下面得到bitmap,从而设置图片。
if (data != null) {
// 返回有缩略图,不清晰
if (data.hasExtra("data")) {
Bitmap thumbnail = data.getParcelableExtra("data");
imageview.setImageBitmap(thumbnail);
}
}
2).当指定图片保存路径时,需要指定一个uri路径,下面两种指定方式。
<1>.使用contentValues指定uri
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
"yyyyMMdd_HHmmss");
String filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(Media.TITLE, filename);
photoUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
values);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, 2);
<2>.创建file指定uri
// 指定存放拍摄照片的位置
File f = createImageFile();//sd卡创建文件文件,可自己写个方法,很简单这里我//就不写了
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(intent, 2);
这样在拍照返回结果中就可以通过data获取图片uri了。如下:
if (resultCode == Activity.RESULT_OK) {
Uri uri = null;
if (data != null && data.getData() != null) {
uri = data.getData();
}
// 大部分手机可能无法从getData中获取uri,则需手动指定拍照后存储照片的Uri
if (uri == null) {
if (photoUri != null) {
uri = photoUri;
}
}
//接下来就可以通过image的setImageURI方法放到你的页面上了。
imageview.setImageURI(uri);//也可以通过uri获取bitmap对象设置,但这是就可能出现oom,所以得压缩处理后再设置,很简单我就不写了