2011-05-10 21 views

Respuesta

7
Uri imageUri; 
final int TAKE_PICTURE = 115; 

public void capturePhoto(View view) { 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File photoFile = new File(Environment.getExternalStorageDirectory(), "Photo.png"); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, 
      Uri.fromFile(photoFile)); 
    imageUri = Uri.fromFile(photoFile); 
    startActivityForResult(intent, TAKE_PICTURE); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case TAKE_PICTURE: 
      if (resultCode == Activity.RESULT_OK) { 
       Uri selectedImageUri = imageUri; 
       //Do what ever you want 
     } 
    } 
} 
+0

gracias ketan su atento a mí –

+1

Muchas gracias, no tengo He estado buscando por una hora intentando que el objeto de la cámara y el método de vista previa funcionen, cuando esto es todo lo que quería desde el principio. –

+0

Hola Abhan, tu código mostrará todas las aplicaciones de cámara de terceros así como la aplicación de cámara predeterminada. ¿Qué sucede si alguien quiere mostrar solo la cámara predeterminada sin mostrar ningún selector de aplicaciones de cámara de terceros como ** Line Camera ** y ** Paper Camera **? –

7

La intención que se utiliza para abrir la cámara es

buttonCapturePhoto.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(intent, CAPTURE_IMAGE); 
     } 
    }); 

El código que le da la imagen después de la captura es

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Uri uriImage; 
    InputStream inputStream = null; 
    if ((requestCode == SELECT_IMAGE || requestCode == CAPTURE_IMAGE) && resultCode == Activity.RESULT_OK) { 
     uriImage = data.getData(); 
     try { 
      inputStream = getContentResolver().openInputStream(uriImage); 
      Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options); 
      imageView.setImageBitmap(bitmap); 
     } catch (NullPointerException e) { 
      e.printStackTrace(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     imageView.setAdjustViewBounds(true); 
    } 
} 

0

Este es un ejemplo simple. De todos modos, devolverá la imagen como un pequeño mapa de bits. Si desea recuperar la imagen de tamaño completo, es un poco más complicado.

ImageView takePhotoView = (ImageView) findViewById(R.id.iwTakePicture); 
Bitmap imageBitmap = null; 
takePhotoView.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub    
       dispatchTakePictureIntent(0); 
      } 
     }); 

    private void dispatchTakePictureIntent(int actionCode) { 
      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
      startActivityForResult(takePictureIntent, actionCode);  
     } 

    private void handleSmallCameraPhoto(Intent intent) { 
     Bundle extras = intent.getExtras(); 
     this.imageBitmap = (Bitmap) extras.get("data"); 
     takePhotoView.setImageBitmap(imageBitmap); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(resultCode == RESULT_OK) 
      handleSmallCameraPhoto(data); 
    } 
Cuestiones relacionadas