2011-08-31 89 views
6

我想使用內置Android相機拍攝的照片更新ImageView。 我使用下面的代碼:獲取圖片Uri +在Android中使用相機拍攝的照片的縮略圖

void getPhoto() { 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, TAKE_PICTURE); 
    } 

之後,我獲得的照片與:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == TAKE_PICTURE) { 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      ImageView photoView = (ImageView) findViewById(R.id.photoId); 
      photoView.setImageBitmap(photo); 
      } 
     } 

但有了這個代碼,無論我做什麼,我只得到我發的照片的縮略圖 - 我問題是我如何才能得到剛剛製作的照片的Uri,而不是與縮略圖一起工作,而是與原始圖像一起工作?

Ps。我其實需要照片的縮略圖,但我也需要原始照片的Uri。

回答

4

我把自己的URI放在意圖告訴它保存在哪裏,然後你知道它在哪裏,不確定有沒有其他方法。 爲您的文件創建一些字段。

private String imagePath = "/sdcard/Camera/test.jpg"; 
private File originalFile; 

然後初始化該文件。

originalFile = new File(imagePath); 

現在啓動相機應用程序的意圖,作爲額外的URI傳遞。

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    Uri outputFileUri = Uri.fromFile(originalFile); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, RESULT_CAPTURE_IMAGE); 

在onActivityResult()提取URI

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if (requestCode == RESULT_CAPTURE_IMAGE && resultCode == Activity.RESULT_OK) { 
     mBitmap = BitmapFactory.decodeFile(originalImagePath, BitmapFactoryOptions); //set whatever bitmap options you need. 

所以,你現在可以使用createBitmap建立一個位圖或使用任何你需要

+3

文件路徑此外,它不是好的做法進行硬編碼使用/ sdcard /的uri,你應該使用getter作爲環境變量。 –

+0

但數據意圖爲空,您無法檢索縮略圖。你可以從全尺寸照片創建它 –

相關問題