Sie sind auf Seite 1von 6

Objetivo

Desarrollar una aplicacin simple que pueda tomar foto acceso cmara frontal y trasera

Introduccin

El marco de Android incluye compatibilidad con varias cmaras y funciones de cmara


disponible en dispositivos, lo que le permite capturar imgenes y videos en sus aplicaciones.
Este documento discute un acercamiento rpido y simple a la captura de la imagen

Para disear la aplicacin ,es necesario tener claro los elementos que la componen y la
funcionalidad de cada uno de ellos .Android trabaja con Linux y cada aplicacin utiliza un
proceso propio .Se distinguen por el ID un identificador para que solo ella tenga acceso a sus
archivos

INTERFAZ USUARIO

En nuestra aplicacin utilizamos 3 componentes

BUTTON
Representa un pulsador. El usuario puede presionar o hacer clic en los botones pulsadores para realizar
una accin
Tenemos 2 button , uno llamado CAMERA y el otro FRONT CAMERA ,cada uno tiene su
respectivo ID que los identifica del uno del otro .

FIGURA 1 BUTTON FRONT CAMERA FIGURA 2 BUTTON CAMERA


IMAGEVIEW
Muestra una imagen arbitraria como un icono .La clase ImageView puede cargar imgenes de varias
fuentes .se encarga de calcular su medida de la imagen para que pueda utilizarse en cualquier gestor de
diseo y ofrece varias opciones de visualizacin ,como la escala y el matiz

FIGURA 3 ID DE IMAGEVIEW

Todo esto est escrito en el fichero LAYOUT

A continuacin trabajamos sobre la clase principal o MAIN ACTIVITY .


public class MainActivity2 extends AppCompatActivity {

ImageView imgimagen;
Button btnfoto;
Button btnfoto2;
int s;
static final int REQUEST_IMAGE_CAPTURE = 0;
}
Dentro de la clase principal . creamos variables tipo

-button uno llamado btnfoto,btnfoto2;

-ImageView llamado imgimagen

- int variable tipo entero que nos servida tipo bandera

-static final int , una variable tipo entero inicializada en 0

En la clase principal tenemos definido mtodos uno de ellos es el mtodo

- ONCREATE() es el mtodo que crea la actividad .recibe un parmetro tipo Bundle que contiene
el estado anterior de la actividad ,para preservar la informacin que hubiera en caso de que
hubiera sido suspendida .
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
btnfoto =(Button) findViewById(R.id.btnfoto);
btnfoto2= (Button) findViewById(R.id.btnfoto2);
imgimagen = (ImageView) findViewById(R.id.imgfoto);
btnfoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
llamarIntent();
s=0;

}
});
btnfoto2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v)
{
llamarIntent();
s=0;
}

});
}
Veamos paso a paso cada lnea de cdigo .

super.onCreate(savedInstanceState) // permite guardar los datos de una instancia de estado

setContentView(R.layout.activity_main2);// seala que hay una clase esttica llamada R.layout y


dentro de esa clase hay una constante entera que apunta a los recursos de layout en otras
palabras le recuerda que hay un fichero con todos los ID de los componentes interfaz usuario
creados .permite acceder a los contenidos de fichero layout .

en esta parte del cdigo lo que hace es emparejar ,nuestra variables creadas BUTTON
,IMAGEVIEW con nuestros componentes interfaz usuario tambin llamados BUTTON e Imageview

btnfoto =(Button) findViewById(R.id.btnfoto);


btnfoto2= (Button) findViewById(R.id.btnfoto2);
imgimagen = (ImageView) findViewById(R.id.imgfoto);

Todo esto sirve para que cuando le de clic a mi botn de mi pantalla pueda relacionarse con mi
botn de mi cdigo programa y as pueda ejecutar una lnea de instrucciones

Tenemos 2 funciones dentro de ONCREATE().

-onClicK() este mtodo es llamado cuando el usuario hace una pulsacin simple ,ya sea por
contacto, con teclas de navegacin o de cualquiera manera posible , sobre un determinado
elemento de la interfaz
btnfoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
llamarIntent();
s=0;

}
});
btnfoto2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v)
{
llamarIntent();
s=1;
}

});

btnfoto.setOnClickListener(new View.OnClickListener()// esta linea es importante porque asigna una


instancia OnClickListener a ese botn usando btnfoto2.setOnClickListener. En resumen Cuando el usuario
hace clic en el botn, se llama a la funcin onClick del OnClickListener asignado. La funcin OnCLick
cuando detecta un evento llama a la funcin definida por el usuario LlamarIntent() y insertamos un valor
(0,1) a nuestra variable s
Si damos click a button cmara frontal s=1
Si damos click a button cmara trasera s=0

, tambin llamada Bandera .esta parte de cdigo es importante porque llamamos a la funcin onCLick
desde 2 classes BUTTON diferentes llamando a la misma funcin y a una variable bandera

funcin definida por el usuario


private void llamarIntent()
{
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(takePictureIntent.resolveActivity(getPackageManager()) != null){
takePictureIntent.putExtra("android.intent.extras.CAMERA_FACING",s);
startActivityForResult(takePictureIntent,REQUEST_IMAGE_CAPTURE);
//startActivityForResult(takePictureIntent,r);

}
}
Declaramos una variable tipo Intent porque es la forma de delegar acciones de Android a otras
aplicaciones ,es invocar una Intencin que describe lo que quieres hacer .

if(takePictureIntent.resolveActivity(getPackageManager()) != null)// ingresamos esta validacion para


saber si el celular tiene camara
si la condicin es verdadera entonces
takePictureIntent.putExtra("android.intent.extras.CAMERA_FACING",s);// llamamos al intent de
la cmara .si queremos llamar a Intent de la cmara frontal o trasera. Depende de nuestra
variable bandera

StartActivityForResult(takePictureIntent,REQUEST_IMAGE_CAPTURE);// se encargar de esperar


una respuesta
luego llamamos a la funcin onActivityResult
Posicion de la variable bandera

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


if(requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK){
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
imageBitmap = createContrast(imageBitmap);

imgimagen.setImageBitmap(imageBitmap);

if(requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK)// esta condicin es


cuando tomamos la foto donde resultcode es RESULT_OK es verdadero procede a tomar una foto
Como un pequeo mapa de bits en los extras bajo la clave datos
Nuestra foto esta guardada en una variable Bitmap imageBitmap

en el siguiente cdigo mandamos nuestra imagen a una funcin createContrast para poder
editar y enviar la imagen editada a IMAGEVIEW para ser visualizada

imageBitmap = createContrast(imageBitmap);
public static Bitmap createContrast(Bitmap src ) {
// image size
int width = src.getWidth();
int height = src.getHeight();
// create output bitmap//Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
// color information
// int A, R, G, B;
// int pixel;
// get contrast value
// double contrast = 0.5;

// scan
for(int y = 0; y < height; ++y) {

// set new pixel color to output bitmap


src.setPixel(width/2,y,Color.rgb(255,0,0));

return src;
}

creamos una funcin variable tipo Bitmap para poder enviar la misma clase tipo de dato

int width = src.getWidth();


int height = src.getHeight();// esta pequeas funciones nos permite saber que tamao tiene
nuestra imagen necesarias para poder recorrer la imagen

for(int y = 0; y < height; ++y) {


// set new pixel color to output bitmap
src.setPixel(width/2,y,Color.rgb(255,0,0));
}// en este pequeo cdigo recorremos la mitad del bitmap escribiendo en cada pixel
Color.rgb(255,0,0) color rojo

Das könnte Ihnen auch gefallen