2012-03-21 7 views
15

Estoy aprendiendo cómo tomar una foto y guardarla en un archivo.getoutputmediafileuri método no es accesible?

De acuerdo con las ofertas tutoriales sobre android developers website, el método se utiliza

getoutputmediafileuri(), sin embargo, cuando traté de usar ese método, encontré que

no es accesible o no definido, me refiero a eclipsar subraya este método con línea roja. No sé

cómo solucionar este error.

A continuación encontrará el código

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) { 

    } 
} 

Respuesta

21

No hay ningún método incorporado en getoutputmediafileuri() androide. Es un método personalizado que alguien escribe para obtener el URI del archivo para almacenar imágenes capturadas en un directorio particular. Tienes que definir y ponerle lógica. En lugar de que el uso de este código,

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); 
    } 
}); 

Ahora bien, esto va a almacenar su cámara capturó imágenes en MisImágenes de directorio en la tarjeta sd con IMAGE_001.jpg nombre.

+0

esto también funciona para la captura de vídeo .... y en los documentos no mencionan que –

+0

¿Cómo encontrar la ruta de almacenamiento de imágenes por defecto de Android? –

2

Ahora the document ha añadido el código. Solo pega el al final de tu Class, me funciona bien. Código Vea como abajo.

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

¿me puede mostrar un ejemplo de cómo agregar el código anterior en intento? – Moudiz

Cuestiones relacionadas