2013-02-24 61 views
0

我的相機意圖有問題。它將圖片保存到存儲中,但不會將文件路徑返回到我的活動。當我刪除EXTRA_OUTPUT時,它會返回文件路徑,但圖像只有非常小的尺寸。有沒有解決方案可以在不使用EXTRA_OUTPUT的情況下獲得原始大小的圖片?相機意圖不返回文件路徑

這裏是我的代碼:

public void onClick(View arg0) { 
    switch (arg0.getId()) {  
    case R.id.btnImageCapture: 
     preinsertedUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues()); 
     Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, preinsertedUri); 
     startActivityForResult(intent, OPEN_CAMERA); 
     break; 
     } 
    } 

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode){ 
    case OPEN_CAMERA: 
     if (resultCode == RESULT_OK && data != null) { 
        Uri imageUri = null; 
        imageUri = data.getData(); 
       if(imageUri == null && preinsertedUri != null){ 
        imageUri = preinsertedUri; 
       } 
        String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
        Cursor cursor = getContentResolver().query(imageUri, filePathColumn, null, null, null); 
        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
        cursor.moveToFirst(); 
        filePath = cursor.getString(columnIndex); 
       try { 
       Bitmap photo = (Bitmap) data.getExtras().get("data"); 
       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
       photo.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
         File f = new File(filePath); 
         f.createNewFile(); 
         FileOutputStream fo = new FileOutputStream(f); 
         fo.write(bytes.toByteArray()); 
         fo.close(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       break; 
      } 
     } 
    } 

回答

0

試試這個它可以幫助你。

當我從相機捕捉照片,所以我實現了一個使用光標的邏輯,迭代光標並獲取從相機捕獲的最後一個照片路徑。

它給出了來自攝像頭的最後拍攝照片的路徑。

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, CAMERA_REQUEST_CODE); 

Cursor cursor = getContentResolver().query(Media.EXTERNAL_CONTENT_URI, new String[]{Media.DATA, Media.DATE_ADDED, MediaStore.Images.ImageColumns.ORIENTATION}, Media.DATE_ADDED, null, "date_added ASC"); 
if(cursor != null && cursor.moveToFirst()) 
{ 
    do { 
     uri = Uri.parse(cursor.getString(cursor.getColumnIndex(Media.DATA))); 
     photoPath = uri.toString(); 
    }while(cursor.moveToNext()); 
    cursor.close(); 
} 
+0

這不適合我。它仍然沒有返回文件路徑。 – 2013-02-24 11:00:46

+0

它如何可能我在許多設備上進行測試,試圖以正確的方式實現這一邏輯。 – 2013-02-24 11:11:15

+0

@ g.r。爲什麼你有一天後再不接受答案。這是否有任何錯誤? – 2013-02-25 18:12:47