2010-02-22 29 views
35

Si desea utilizar la actividad incorporada de la cámara que utiliza la cámara nativa de Android, simplemente haga lo siguiente.Uso de la actividad de la cámara en Android

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     this.startActivityForResult(camera, PICTURE_RESULT); 

Desea recuperar las imágenes de la ingeniosa cámara que visualizó, pero ¿cómo?

+1

Bueno, mi pregunta es: ¿qué es PICTURE_RESULT? –

+2

PICTURE_RESULT es una constante autodefinida. El valor que pase a startActivityResult() como requestCode será el mismo valor que se pasa a onActivityResult() cuando se realiza su Intención para que sepa qué Intent devuelve el resultado. – jcmcbeth

Respuesta

23

Si desea volver a obtener la imagen en toda su gloria, pase un uri a la intención dentro del EXTRA_OUTPUT extra. Si está bien con un mapa de bits pequeño (y debería serlo), simplemente llame al intento como siempre.

Ahora usted tiene dos opciones, hacer frente a la URI de la imagen que se devuelve en la EXTRA_OUTPUT extra, o haga lo siguiente en su método onActivityResult:

if (requestCode == PICTURE_RESULT) // 
      if (resultCode == Activity.RESULT_OK) { 
       // Display image received on the view 
       Bundle b = data.getExtras(); // Kept as a Bundle to check for other things in my actual code 
       Bitmap pic = (Bitmap) b.get("data"); 

       if (pic != null) { // Display your image in an ImageView in your layout (if you want to test it) 
        pictureHolder = (ImageView) this.findViewById(R.id.IMAGE); 
        pictureHolder.setImageBitmap(pic); 
        pictureHolder.invalidate(); 
       } 
      } 
      else if (resultCode == Activity.RESULT_CANCELED) {...} 
    } 

y ahí lo tienes!

+2

gracias slrobert esto me ayudó mucho. Muchos otros tutoriales explicaron la implementación de la funcionalidad de la cámara desde cero en lugar de simplemente generar un 'ActivityForResult' y tener la actividad de cámara predeterminada para manejar las cosas. – wired00

Cuestiones relacionadas