2013-03-10 3 views
2

나는 안드로이드 2.1과 함께 작동하고, 카메라 의도 결과에서 실제 경로를 얻고 싶습니다. 나는 Get Path of image from ACTION_IMAGE_CAPTURE Intent를 읽었지 만, 그것은 안드로이드 2.2를위한 것이다. 위의 코드카메라의 이미지 경로를 얻는 방법은 무엇입니까?

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (requestCode == CAMERA_RESULT) 
    { 
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     imv.setImageBitmap(thumbnail); 
     Uri selectedImageUri = data.getData(); 
     String path = getRealPathFromURI(selectedImageUri); 
    } 
} 

private String getRealPathFromURI(Uri contentUri) 
{ 
    try 
    { 
     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); 
    } 
    catch (Exception e) 
    { 
     return contentUri.getPath(); 
    } 
} 
+0

아래로 더를 즉석에서 할 수 있었다? –

+0

java.lang.RuntimeException : 결과 전달 실패 ResultInfo {who = null, request = 0, result = -1, data = 의도 {act = 인라인 데이터 (추가 있음)}}} 활동 {com.example.cameratest/com .example.cameratest.MainActivity} : java.lang.NullPointerException –

+0

응용 프로그램을 디버그합니다.'selectedImageUri'는 NULL이고, 이것을 알려줍니다 .. –

답변

7

그 어떤 모바일에서 작동하지만 모든 장치에 대한 공통 로직을 구현 그래서 내 경우 삼성 모바일에서 작동하지 않습니다.

카메라에서 사진을 캡처 할 때 커서를 사용하여 로직을 구현하고 커서를 반복하고 카메라에서 캡처 한 마지막 사진 경로를 가져옵니다.

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

와우! 그것은 작동! 고마움을 많이 –

+0

@ KostyaKhuta 내 기쁨을 당신을 .. !!! –

+0

삼성 S5의 경우 반환되는 이미지의 품질은 일반적으로 높습니다. 이 이미지를 서버에 업로드해야하는 경우 어떻게 압축합니까? –

5

@TGMCians의 작동에 의해 주어진 대답하지만 난 당신이에있는 어떤 문제

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.moveToLast()){ 
    Uri fileURI = Uri.parse(cursor.getString(cursor.getColumnIndex(Media.DATA))); 
    String fileSrc = fileURI.toString(); 
    cursor.close(); 
} 
관련 문제