Sensores ejercicios

October 10, 2017 | Autor: Lui Kezada | Categoría: Android
Share Embed


Descripción

SENSORESEJERCICIO 1 y EJERCICIO 2Vladimir Romo y Víctor Torres SENSORESEJERCICIO 1 y EJERCICIO 2Vladimir Romo y Víctor Torres
APLICACION QUE MUESTRA CUALES SENSORES INCLUYE EL DISPOSITIVO Y MUESTRA VALORES EN TIEMPO REAL DEL SENSOR DE LUZ Y ACELEROMETRO
SENSORES
EJERCICIO 1 y EJERCICIO 2
Vladimir Romo y Víctor Torres

SENSORES
EJERCICIO 1 y EJERCICIO 2
Vladimir Romo y Víctor Torres



CREAR UN NUEVO PROYECTO DE ANDROID
Con el nombre opcional, se recomienda la siguiente configuración.


El archivo activity_main.xml consiste:


















Tendria que verse parecido a :


Y nuestra clase principal de java MainActivity.java

import java.util.List;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity implements SensorEventListener {
private TextView salida,valortextx,valortexty,valortextz,valorluz;
private SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
salida = (TextView) findViewById(R.id.salida);
valortextx = (TextView) findViewById(R.id.textView2);
valortexty = (TextView) findViewById(R.id.TextView01);
valortextz = (TextView) findViewById(R.id.TextView02);
valorluz = (TextView) findViewById(R.id.TextView03);

sensorManager = (SensorManager)
getSystemService(SENSOR_SERVICE);
List listaSensores = sensorManager.
getSensorList(Sensor.TYPE_ALL);
for(Sensor sensor: listaSensores) {
log(sensor.getName());
}

listaSensores = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);//obtenemos los sensores de acelerometro
if (!listaSensores.isEmpty()) {
Sensor acelerometerSensor = listaSensores.get(0);
sensorManager.registerListener(this, acelerometerSensor, //registramos un escuchador para el sensor de acelerometro
SensorManager.SENSOR_DELAY_UI);}
listaSensores = sensorManager.getSensorList(Sensor.TYPE_LIGHT);//obtenemos los sensores de luz
if (!listaSensores.isEmpty()) {
Sensor sensordeluz = listaSensores.get(0);
sensorManager.registerListener(this, sensordeluz,
SensorManager.SENSOR_DELAY_UI);}//registramos el escuchador del sensor de luz

}
private void log(String string) {
salida.append(string + "\n");// agregamos texto al text view
}
@Override
public void onAccuracyChanged(Sensor sensor, int precision) {}//metodo que se llama cuando la presicion del sensor cambia

@Override
public void onSensorChanged(SensorEvent evento) {//metodo que se llama cuando el valor de un sensor cambia
//Cada sensor puede provocar que un thread principal pase por aquí
//así que sincronizamos el acceso
synchronized (this) {
switch(evento.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER://cuando el sensor que cambio fue el acelerometro

valor(String.valueOf(evento.values[0]),0);
valor(String.valueOf(evento.values[1]),1);
valor(String.valueOf(evento.values[2]),2);
;
case Sensor.TYPE_LIGHT://cuando el sensor que cambia es el de luz
valor(String.valueOf(evento.values[0]),3);
break;
default:

}
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void valor(String valor,int tipo ) {//metodo para ir cambiando los valor en las etiquetas la variable tipo nos dice en que etiqueta cambiar el valor
switch(tipo)
{
case 0:
valortextx.setText("x="+valor);
break;
case 1:
valortexty.setText("y="+valor);
break;
case 2:
valortextz.setText("z="+valor);
break;
case 3:
valorluz.setText("luz="+valor);
}

}


}

Teniendo esto en nuestro proyecto procederemos probar nuestra app la cual mostrara primeramente los sensores que se encontraron en el dispositivo, y en la parte de abajo los valores en tiempo real del sensor de luz y acelerómetro.
IMPORTANTE:
Ya que el ADV (emulador de dispositivos android) no nos permite el uso de sensores, se recomienda que la aplicación se instale en un dispositivo real para ver correctamente su funcionamiento.


EJERCICIO 2: APLICACIÓN QUE REPRODUCE UN SONIDO DE LATIGO AL DETECTAR UNA ACELERACION LINEAL

CREAR UN NUEVO PROYECTO DE ANDROID
Con el nombre opcional, se recomienda la siguiente configuración.


COPIAREMOS RECURSOS NECESARIOS

Para nuestro archivo latigazo.mp3 crearemos una carpeta llamada raw en la carpeta res (res/raw)
Y nuestra imagen mujer.gif la copiaremos en las carpeta res/drawable
Nuestro carpeta ser debería ver algo así

NOTA: Los archivos latigazo.mp3 y mujer.gif los encontraras en la carpeta llamada recursos.
El archivo activity_principal.xml consiste:










Y nuestra clase principal de java Principal.java
Debería tener un código similar al siguiente: import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class Principal extends Activity implements SensorEventListener {
private SoundPool soundPool;//no permitira reproducir sonidos en nuestras aplicaciones
private int latigazo;
private Sensor sensor;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);

soundPool = new SoundPool( 1, AudioManager.STREAM_MUSIC , 0);//creamos un objeto de la clase Sound pool(maximo, tipo Calidad) nos devuelve un ID
latigazo=soundPool.load((Context)this, R.raw.latigazo, 0);//cargamos nuestro archivo de audio (el contexto, el recurso,)
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);//obtenenemos el manejador de sensores
List listaSensores ;//creamos una lista de sensores
listaSensores = sensorManager.getSensorList(Sensor.TYPE_LINEAR_ACCELERATION);//obtenemos los sensores de tipo aceleracion lineal
if (!listaSensores.isEmpty()) {
sensor = listaSensores.get(0);
sensorManager.registerListener(this, sensor,SensorManager.SENSOR_DELAY_UI);}//registramos un escuchardor para este sensor

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.principal, menu);
return true;
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent evento) {
synchronized (this) {
switch(evento.sensor.getType()) {
case Sensor.TYPE_LINEAR_ACCELERATION://cuando el sensor que cambio fue el de aceleramiento lineal
if(evento.values[0]>4 )//aqui la condicion para identificar si se hizo el movimiento(PODEMOS JUGAR CON ESTA CONDICION :D para calibrar como nostros deseemos)
{

soundPool.play(latigazo, 1, 1, 1, 0, 1);//reproduce sonido play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)


}



}
}
}
public void latigazo(View vista)
{
soundPool.play(latigazo, 1, 1, 1, 0, 1);//reproduce sonido play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
}





}
NOTA: Se le agregó un botón para probar el sonido si necesidad de usar el sensor.
NOTA: Podemos jugar con la condición
Según como deseemos para calibrar nuestra aplicación.
También se recomienda establecer la orientación de nuestra pantalla para que no cambie. Esto se puede hacer en el archivo Manifest de nuestra aplicación pondremos el valor de "portrait".


Ahora ya podremos probarla en nuestro dispositivo android. (Con una versión 2.3 en adelante).
IMPORTANTE:
Ya que el ADV (emulador de dispositivos android) no nos permite el uso de sensores, se recomienda que la aplicación se instale en un dispositivo real para ver correctamente su funcionamiento.


Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.