使用ACTION_IMAGE_CAPTURE时返回什么数据?

我对此描述感到有些困惑:

调用者可以传递额外的EXTRA_OUTPUT来控制该图像的写入位置。 如果EXTRA_OUTPUT不存在,则在额外字段中返回小尺寸图像作为Bitmap对象。 这对于只需要小图像的应用程序非常有用。 如果存在EXTRA_OUTPUT,则将将全尺寸图像写入EXTRA_OUTPUT的Uri值。

如果没有EXTRA_OUTPUT ,它将返回“小尺寸图像”?

使用EXTRA_OUTPUT ,它将返回一个完整大小的图像?

“在额外字段中作为Bitmap对象返回”…

在我的onActivityResult ,我只是使用Intent data作为实际数据。 我应该使用data.getExtra或其他什么?

在你提供Uri的情况下:

 Intent action = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); action.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, myUri); startActivityForResult(action, CAMERA_RESULT); 

然后使用(在requestCode和resultCode上测试之后)检索它:

 Bitmap bitmap = BitmapFactory.decodeFile(myUri, options); 

在另一种情况下:

 Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_RESULT); 

并使用以下方法检索它:

 Bundle bundle = intent.getExtras(); Bitmap bitmap = (Bitmap) extras.get("data"); 

这是我评论的扩展。 这段代码在给我像素数据方面效果很好 – 获取灰度数据和imageview 在我的post中

 @Override public void onClick(View v) { Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(Intent.createChooser(intent, "Select Picture"), CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //super.onActivityResult(requestCode, resultCode, data); if(requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) { final ContentResolver cr = getContentResolver(); final String[] p1 = new String[] { MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATE_TAKEN }; Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC"); if ( c1.moveToFirst() ) { String uristringpic = "content://media/external/images/media/" +c1.getInt(0); Uri uri = Uri.parse(uristringpic); try { Bitmap bm = android.provider.MediaStore.Images.Media.getBitmap(cr, uri); 

希望这可以帮助