2015-03-18 28 views
0

我需要单击Android设备上的默认相机应用程序的图像,并获取刚刚单击的图像的路径。我已经采取的帮助这个帖子获取Android Camera单击图像的路径

stackoverflow forum link

我的代码如下

public void MarkIn(View view) { 

    String fileName = "temp.jpg"; 
    final int CAPTURE_PICTURE_INTENT = 1; 
    ContentValues values = new ContentValues(); 
    values.put(MediaStore.Images.Media.TITLE, fileName); 
    mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
    startActivityForResult(intent, CAPTURE_PICTURE_INTENT); 

    String imagePath = capturedImageFilePath; 

// .....some code..... 

} 


protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == 1 && resultCode == Activity.RESULT_OK) { 
      String[] projection = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = null; 
      cursor = getApplicationContext().getContentResolver().query(mCapturedImageURI, projection, null, null, null); 
      int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      capturedImageFilePath = cursor.getString(column_index_data); 
     } 
    } 

系统未等待活动得到完成。正如我的...一些代码...在上面的代码片段是取决于文件路径,我得到空指针异常。

如何使代码执行等待直到活动完成。

回答

1

你应该先把图像点击图像的位图,然后使用这个code.:- 公众开放的getImageUri(上下文inContext的,位图inImage){

ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); 
    return Uri.parse(path); 
} 

试试这个,让该位图转换成URI我知道。

+0

Hi @Barun。我已经使用你的代码来获取图像uri,并将....一些代码...带到活动结果方法中,而不是在相机意图调用后立即调用。现在工作了,谢谢。 – 2015-03-19 13:48:15

0

这可能是因为您使用的是sdk版本19或以上版本.Android改变了我们从KitKat访问数据的方式。