2012-03-21 30 views
15

Tôi đang học cách chụp ảnh và lưu đường dẫn của nó vào một tệp.Phương thức getoutputmediafileuri không thể truy cập được?

Theo các hướng dẫn cung cấp trên android developers website, phương pháp

getoutputmediafileuri() được sử dụng, tuy nhiên, khi tôi cố gắng sử dụng phương pháp đó, tôi phát hiện ra rằng đó là

không thể truy cập hoặc không xác định, tôi có nghĩa eclipse nhấn mạnh này phương pháp với redline. Tôi không biết

cách khắc phục lỗi này.

Hãy tìm thấy bên dưới mã

public class SaveCameraImageDemoActivity extends Activity { 
/** Called when the activity is first created. */ 

Button btn01; 
private Uri fileURI; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    btn01 = (Button) findViewById(R.id.btn01); 
    btn01.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Intent intenet = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      fileURI = getoutputmediafileuri(); 
      //intenet.putExtra("output", uri.getPath()); 
      startActivityForResult(intenet,0); 
     } 
    }); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    } 
} 

Trả lời

21

Không có phương pháp sẵn có getoutputmediafileuri() trong android. Đây là phương pháp tùy chỉnh mà ai đó viết để nhận tệp URI để lưu trữ hình ảnh đã chụp trong thư mục cụ thể. Bạn phải định nghĩa và đặt logic cho nó. Thay vì sử dụng mã này,

EDIT:

btn01.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages"); 
     imagesFolder.mkdirs(); // <---- 
     File image = new File(imagesFolder, "image_001.jpg"); 
     Uri uriSavedImage = Uri.fromFile(image); 
     imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 
     startActivityForResult(imageIntent,0); 
    } 
}); 

Bây giờ điều này sẽ lưu giữ máy ảnh của bạn chụp hình ảnh trong MyImages thư mục trong sdcard với image_001.jpg tên.

+0

điều này cũng hoạt động để quay video .... và trong tài liệu họ không đề cập đến nó –

+0

Cách tìm đường dẫn lưu trữ hình ảnh mặc định của Android? –

2

Bây giờ the document đã thêm mã. Chỉ cần dán vào cuối của Class của bạn, nó hoạt động tốt cho tôi. Mã xem như dưới đây.

public static final int MEDIA_TYPE_IMAGE = 1; 
public static final int MEDIA_TYPE_VIDEO = 2; 

/** Create a file Uri for saving an image or video */ 
private static Uri getOutputMediaFileUri(int type){ 
    return Uri.fromFile(getOutputMediaFile(type)); 
} 

/** Create a File for saving an image or video */ 
private static File getOutputMediaFile(int type){ 
    // To be safe, you should check that the SDCard is mounted 
    // using Environment.getExternalStorageState() before doing this. 

    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_PICTURES), "MyCameraApp"); 
    // This location works best if you want the created images to be shared 
    // between applications and persist after your app has been uninstalled. 

    // Create the storage directory if it does not exist 
    if (! mediaStorageDir.exists()){ 
     if (! mediaStorageDir.mkdirs()){ 
      Log.d("MyCameraApp", "failed to create directory"); 
      return null; 
     } 
    } 

    // Create a media file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    File mediaFile; 
    if (type == MEDIA_TYPE_IMAGE){ 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
    "IMG_"+ timeStamp + ".jpg"); 
    } else if(type == MEDIA_TYPE_VIDEO) { 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
     "VID_"+ timeStamp + ".mp4"); 
    } else { 
     return null; 
    } 

    return mediaFile; 
} 
+0

bạn có thể chỉ cho tôi làm ví dụ về cách thêm mã trên vào mục đích? – Moudiz

Các vấn đề liên quan