2010-12-06 31 views
2

我正在编写一个使用Intent(MediaStore.ACTION_IMAGE_CAPTURE)捕获图像的应用程序。在捕获图像的过程中,我注意到了图像URI的输出。完成相机活动后,我希望使用此特定URI显示图像。使用URI在活动中显示图像

我用来捕捉图像的方法是:

private void saveFullImage() { 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    File file = new File(Environment.getExternalStorageDirectory(), 
         "test.jpg"); 
    outputFileUri = Uri.fromFile(file); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, TAKE_PICTURE); 
} 

这是从雷托·梅尔的书专业的Android 2应用开发采取的方法。

该方法工作正常,我假设我刚刚拍摄的图片的URI存储在outputFileUri变量中。然后在这一点的代码是我想要显示的图片:

@Override 
protected void onActivityResult(int requestCode, 
           int resultCode, Intent data) { 
    if (requestCode == TAKE_PICTURE) { 

     //I want to display the picture I just took here 
     //using the URI 

    } 
} 

我不知道该怎么做。

我尝试使用方法setImageURI(outputFileUri)创建一个新的布局对象和一个新的ImageView对象。我的主布局(xml)没有ImageView对象。但即使当我将contentView设置为附加了ImageView的新布局时,它也不会显示任何内容。我试图从URI创建一个Bitmap对象并将其设置为ImageView,但我得到一个意外的错误并强制退出。

我看过这里的例子here它从URI创建一个位图,但它不显示它?

我的问题是如何在正在运行的活动中显示图像?我是否需要获取文件路径(如this)才能显示它?如果我从URI中创建一个位图,如何显示位图?

我只是可能缺少一些简单的...所以任何帮助将是一个非常感谢!

另外还有一个值得思考的问题:如果我要拍多张照片,你会推荐我使用SimpleCursorAdapter吗?

谢谢!

回答

0
  1. 您创建一个Bitmap出URI
  2. 的创建BitmapDrawable的传入位图的新实例
  3. 您添加BitmapDrawable到窗口(setBackgroundDrawable), 视图(setBackgroundDrawable)]或ImageView的(setImageDrawable)
+0

好了,会尝试很快回到这里获得满意的结果。谢谢。 – evkwan 2010-12-06 03:33:11

0

这里做的正确方法:

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) 
    { 
     Uri imageUri = data.getData(); 
     Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); 
     } 
    } 
} 
相关问题