2011-04-22 24 views
0

我使用的後續代碼中使用本機攝像頭拍攝照片:存儲畫面

private File mImageFile; 
private String mTempImagePath; 
public static Uri imageUri; 
public void imageFromCamera() { 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ 
     Log.d("fototemp", "No SDCARD"); 
    } else { 
     mImageFile = new File(Environment.getExternalStorageDirectory()+File.separator+"testFolder", "Pic"+System.currentTimeMillis()+".jpg"); 
     imageUri = Uri.fromFile(mImageFile); 

     DataClass dc = (DataClass) getApplicationContext(); 
     File tempFile = new File(Environment.getExternalStorageDirectory()+File.separator+"testFolder"); 
     Uri tempUri = Uri.fromFile(tempFile); 
     dc.setString(DataClass.IMAGE_PATH, tempUri.toString()); 
     Log.d("fototemp", "ImagePath: " + tempUri.toString()); 


     mTempImagePath = mImageFile.getAbsolutePath(); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mImageFile)); 
     startActivityForResult(intent, 0); 
    } 
} 

我在imageFromCamera打印出的ImagePath()方法是:4file:///文件%3A/mnt/sdcard/testFolder

現在,當我嘗試使用managedQuery訪問這些照片時,我得到一個不同的目錄。 MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI.toString()給出的內容:// media/external/images/thumbnails

這兩條路徑有什麼區別?我怎樣才能讓managedQuery去testFolder地圖尋找圖片?

編輯: 我試圖連接:

Uri phoneUriII = Uri.parse(Environment.getExternalStorageDirectory()+File.separator+"testFolder"); 
imagecursor = managedQuery(phoneUriII, img, null,null, MediaStore.Images.Thumbnails.IMAGE_ID + ""); 

但是這個代碼崩潰

+0

你的意思是你想從Url對象獲得一個真實的圖像路徑?像[this](http://www.androidsnippets.com/get-file-path-of-gallery-image)? – Audrius 2011-04-22 09:53:14

+0

我想要保存我的照片的文件夾轉換爲Uri,因此我可以將我傳遞給managedQuery方法..我認爲 – Vincent 2011-04-22 09:58:24

+0

難道你不能只使用從MediaStore獲取的Url來檢索二進制流嗎?嘗試調用getData()或使用'getContentResolver()。openOutputStream(uri)'。 – Audrius 2011-04-22 10:28:54

回答

0

對不起真的不明白你的問題。

只要發送它作爲URI路徑。

Environment.getExternalStorageDirectory()+文件分割符+ 「testFolder」

而且 檢查,如果你有權限寫入SD卡。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

寫作不是問題,因爲我可以在畫廊中查看拍攝的照片。我試圖Uri phoneUriII = Uri.parse(Environment.getExternalStorageDirectory()+ File.separator +「testFolder」); imagecursor = managedQuery(phoneUriII,img,null,null,MediaStore.Images.Thumbnails.IMAGE_ID +「」);但是這崩潰了 – Vincent 2011-04-22 10:15:16

0

我在幾個項目中使用這個函數,它工作正常。

/** 
* Retrieves physical path to the image from content Uri 
* @param contentUri 
* @return 
*/ 
private String getRealImagePathFromURI(Uri contentUri) { 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
}