2011-11-03 16 views
7

W porządku Tworzę aplikację na Androida i używam CAPTURE_PIC_REQUEST do zrobienia zdjęcia i zapisania go jako podglądu na ekranie w przeglądarce obrazów. Chciałem wiedzieć, jak zdobyć Uri i właściwie ścieżkę, ponieważ planuję wziąć te informacje, oszczędzając je i uzyskując dostęp do nich później. Więc nie mogę wymyślić, jak uzyskać nazwę Uri lub ścieżkę z tego zdjęcia, które właśnie zrobiłem. Oto kod z mojej działalności, która jest obsługaUzyskiwanie ścieżki pliku z obrazka w ImageView

package com.CS480; 

import java.io.File; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class AddEx extends Activity { 
    static final int CAMERA_PIC_REQUEST = 1337; 
    public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.add); 

    Button camera = (Button) findViewById(R.id.picButton); 
    camera.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);    
     }    
    }); 

} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == CAMERA_PIC_REQUEST) { 
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     ImageView image = (ImageView) findViewById(R.id.returnedPic); 
     image.setImageBitmap(thumbnail); 
    } 
} 

} 

Jak więc z tego obrazu, że wracam na aplikacji mogę uzyskać lokalizację pliku

Odpowiedz

8

O ile wiem, można zrobić coś takiego:

private Uri mImageCaptureUri; 

public class AddEx extends Activity { 
    static final int CAMERA_PIC_REQUEST = 1337; 
    public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.add); 

    Button camera = (Button) findViewById(R.id.picButton); 
    camera.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      Intent cameraIntent = 
        new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, 
        mImageCaptureUri); 
      startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);    
     }    
    }); 

} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == CAMERA_PIC_REQUEST) { 
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     ImageView image = (ImageView) findViewById(R.id.returnedPic); 
     image.setImageBitmap(thumbnail); 

     String pathToImage = mImageCaptureUri.getPath(); 

     // pathToImage is a path you need. 

     // If image file is not in there, 
     // you can save it yourself manually with this code: 
     File file = new File(mImageCaptureUri.getPath()); 
     FileOutputStream fOut = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut); // You can choose any format you want 
    } 
}  

z Android dokumentacji o android.provider. MediaStore.EXTRA_OUTPUT:

Nazwa Intent-extra używana do wskazania narzędzia do rozpoznawania zawartości Uri do przechowywania żądanego obrazu lub wideo.

1

Można próbować coraz URI obrazu z

data.getExtras.get("URI"); 

ale to może nie działać. To, co możesz zrobić, to po prostu zapisać samą bitmapę. Zobacz to pytanie, aby uzyskać poradnik, jak to zrobić: Save bitmap to location

1

Po zrobieniu zdjęcia musisz je gdzieś przechowywać, aby uzyskać położenie obrazu.

Aby to zrobić, można przechowywać do Mediastore:

String result = MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "", ""); 

imageFileUri = Uri.parse(result); 
0

Spróbuj Get File bitmapy formularz ścieżka

public void uploadBitmap(Context mContext, Bitmap bitmap) { 

    String imagePath = null; 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    Uri uri; 
    Cursor cursor = mContext.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_ADDED, MediaStore.Images.ImageColumns.ORIENTATION}, MediaStore.Images.Media.DATE_ADDED, null, "date_added DESC"); 
    if (cursor != null && cursor.moveToFirst()) { 
     do { 
      uri = Uri.parse(cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))); 
      imagePath = uri.toString(); 
      Log.d("pathatka", uri.toString()); 
      break; 
     } while (cursor.moveToNext()); 
     cursor.close(); 
    } 

} 
Powiązane problemy