Camera Intent不返回文件路径

时间:2013-02-24 10:43:37

标签: android android-intent camera

我的相机意图有问题。它会将图片保存到存储中,但不会将文件路径返回到我的活动。当我删除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;
          } 
       }
    }

1 个答案:

答案 0 :(得分: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();
}