Anda di halaman 1dari 4

Cmara

1. Utilizar la aplicacin Cmara del dispositivo


La mayora de los dispositivos Android tienen una o varias cmaras que puede utilizar en su
aplicacin para permitir al usuario capturar fotos o grabar vdeos. Cada dispositivo que disponga de
una cmara tendr una aplicacin que permita grabar fotos y vdeos.

El objetivo es iniciar la aplicacin de fotos y obtener el resultado, lo que corresponde a una llamada al
mtodo startActivityForResult.

El intent utilizado puede tener como accin:

MediaStore.ACTION_IMAGE_CAPTURE: til para capturar una foto.

MediaStore.ACTION_VIDEO_CAPTURE: til para crear un vdeo.

Por lo tanto, puede utilizar las siguientes lneas de cdigo para llamar a la aplicacin de fotos del
dispositivo.

startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE),
IMAGE_CAPTURE);

Lo que dar:
Una vez se ha capturado la foto, el usuario la podr validar, volver a capturar o cancelar la captura de
fotos.

La validacin desencadenar un setResult(RESULT_OK).

La anulacin desencadenar un setResult(RESULT_CANCELLED).

La imagen se incluir en los extras (identificador data) en forma de vista previa.

La obtencin de la vista previa de la imagen se realiza del siguiente modo:

@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == IMAGE_CAPTURE) {
if (data != null) {
Bitmap picture =
data.getParcelableExtra("data");
if (picture != null) {
//Realizar el tratamiento con la imagen
}
}
}
}

Este mtodo le permite obtener nicamente la vista previa de la imagen. Si desea obtener la foto
completa, debe modificar las caractersticas especficas del intent usado en la llamada al
mtodostartActivityForResult.
El objetivo es especificar la URI del archivo usado para almacenar la imagen y aadirla a los extras del
intent (clave MediaStore.EXTRA_OUTPUT).

Si su aplicacin requiere la presencia de una cmara en el dispositivo, debe especificar esta


restriccin en el manifiesto para que la aplicacin no pueda iniciarse en dispositivos que no tengan
cmara.

<uses-feature android:name="android.hardware.camera" />

Tambin puede comprobar dinmicamente si un dispositivo tiene o no cmara.

if
(context.getPackageManager().hasSystemFeature(PackageManager.
FEATURE_CAMERA)){
// Este dispositivo tiene cmara
} else {
// Este dispositivo no tiene cmara
}

2. Controlar la cmara
Tambin puede tomar, directamente, el control de la cmara, configurarla, registrar un vdeo o
capturar una imagen sin pasar por otra aplicacin. Este mtodo requiere una permission.

<uses-permission android:name="android.permission.CAMERA"/>

Para el uso de la cmara, hay dos pasos que son imprescindibles:

Comenzar a usar la cmara:

Camera camera = Camera.open();

Finalizar el uso de la cmara:

camera.release();

Una cmara tiene varios parmetros modificables (focus, flash, zoom), son accesibles mediante la
clase Parameters (subclase de Camera).

Camera.Parameters param = camera.getParameters();

3. Grabar un vdeo
Tambin puede grabar vdeos de dos formas distintas:

Mediante un intent (vase la seccin Utilizar la aplicacin Cmara del dispositivo).

Mediante la API de Cmara.

Adems de la permission CAMERA declarada anteriormente, necesitar una nueva permission:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

La grabacin de vdeo requiere el uso de la clase MediaRecorder. sta permite especificar varias
caractersticas de la grabacin de vdeo:

Fuente de audio y vdeo,

Formato del archivo de salida,


Tipo de encoding para el audio y el vdeo, etc.

Para realizar una grabacin, debe seguir los siguientes pasos:

Crear una instancia de la clase Camera, utilizando el mtodo open.

Camera camera = Camera.open();

Crear una instancia de la clase MediaRecorder.

MediaRecorder mediaRecorder = new MediaRecorder();

Asociar la instancia de MediaRecorder con la instancia de la cmara.

camera.unlock();
mediaRecorder.setCamera(camera);

Especificar las particularidades del MediaRecorder (fuente de audio y vdeo, archivo de


salida...).

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.
QUALITY_HIGH));
mediaRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO).
toString());

Especificar el espacio usado para mostrar la vista previa del vdeo.

mediaRecorder.setPreviewDisplay(preview.getHolder().getSurface());

Preparar el MediaRecorder para la grabacin.

mediaRecorder.prepare();

Comenzar la grabacin.

mediaRecorder.start();

Acabar la grabacin y liberar el MediaRecorder y la cmara.

mMediaRecorder.release();
camera.release();

Anda mungkin juga menyukai