2013-02-24 57 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