Android Sensor

En este ejemplo de programa HOST

Fichero displays.xml

<xml>
 <virtualDisplay width="720" height="1188">
 <display id="1" x="0" y="0" width="720" height="1188" />
 </virtualDisplay>
 </xml>

Fichero TUIML.xml
<juguemos>
 <token name="android">
 <constraint name="todo" type= "2D" list_vertex="0.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0,0.0,0.0">
 <tac subtoken="dedo"/>
 </constraint>
 <constraint name="rectangulo" type= "2D" list_vertex="0.3472,0.084175,0.625,0.084175,0.625,0.2525,0.3472,0.2525,0.3472,0.084175">
 <tac subtoken="dedo"/>
 </constraint>
 <constraint name="circulo" type= "2D" list_vertex="0.3472,0.69865,0.625,0.69865,0.625,0.867,0.3472,0.867,0.3472,0.69865">
 <tac subtoken="dedo"/>
 </constraint>
 <subtoken idG ="dedo"/>
 </token>
</juguemos>

Codigo Host en Proccessing

 DisplaysHost displaysClient;
TACAPI miAPI;

int w = 1280;
int h = 768;

int rectRrell = 0;
int rectGrell = 255;
int rectBrell = 0;
int elipRrell = 0;
int elipGrell = 255;
int elipBrell = 0;

void setup() {
 // Keystone will only work with P3D or OPENGL renderers, 
 // since it relies on texture mapping to deform
 size(150, 75, P3D); 
 frameRate(16);

 //definicion de la API
 miAPI = new TACAPI();
 
 //virtual screens
 displaysClient = new DisplaysHost("host");
}

void draw() {
 displaysClient.beginDraw();
 
 displaysClient.rectangulo(250,100,200,200,rectRrell,rectGrell,rectBrell,200,5,0,200,0,200);
 displaysClient.elipse(350,930,200,200,elipRrell,elipGrell,elipBrell,200,5,0,200,0,200);
 displaysClient.linea(0,530,700,530,255,0,0,255,4);
 displaysClient.escribir("Pulsar en las figuras", 320, 30, 30, 255, 80, 150, 200);

 displaysClient.endDraw();
}

void eventoTAC(TAC ta) {
 ta.info();
 if(ta.getTokenName().equals("android")) {
 if(ta.getConstraintName().equals("rectangulo") && ta.getManipulacion().equals("add")) {
 if(ta.getValores().get(0) == 1) {
 rectRrell = 0;
 rectGrell = 0;
 rectBrell = 255;
 }
 else {
 rectRrell = 0;
 rectGrell = 255;
 rectBrell = 0;
 }
 }
 
 if(ta.getConstraintName().equals("circulo") && ta.getManipulacion().equals("add")) {
 if(ta.getValores().get(0) == 1) {
 elipRrell = 0;
 elipGrell = 0;
 elipBrell = 255;
 }
 else {
 elipRrell = 0;
 elipGrell = 255;
 elipBrell = 0;
 }
 }
 }
}

void mensajeRecibido(OscMessage theOscMessage) {
}

void keyPressed() {
 switch(key) {
 case ESC: 
 displaysClient.disconnect();
 super.stop();
 break;
 } 
}

Retos de aprendizaje

 


Documentación

  • linea

Este método permite dibujar una línea de un color, opacidad y grosor determinados. El color se indica en formato RGB. Los parámetros que recibe son los siguientes:

float x1: posición del extremo 1 de la línea en el eje X (2D).

float y1: posición del extremo 1 de la línea en el eje Y (2D).

float x2: posición del extremo 2 de la línea en el eje X (2D).

float y2: posición del extremo 2 de la línea en el eje Y (2D).

int r: valor de la componente rojo del color con el que se pintará la línea. Valores: 0-255.

int g: valor de la componente verde del color con el que se pintará la línea. Valores: 0-255.

int b: valor de la componente azul del color con el que se pintará la línea. Valores: 0-255.

int alpha: opacidad de la línea. Valores: 0 (transparente) – 255 (opaco)

int grosor: grosor con el que se dibujará la línea.

  • rectangulo

Este método permite dibujar un rectángulo del color que se desee, con o sin contorno (del color especificado) y del tamaño que se desee. Los parámetros que se le pasan a este método son:

float x: posición de la esquina superior izquierda del rectángulo en el eje X (2D).

float y: posición de la esquina superior izquierda del rectángulo en el eje Y (2D).

int ancho: anchura del rectángulo que se va a dibujar.

int alto: altura del rectángulo que se va a dibujar.

int rrell: valor de la componente rojo del color con el que se pintará el relleno del rectángulo. Valores: 0-255.

int grell: valor de la componente verde del color con el que se pintará el relleno del rectángulo. Valores: 0-255.

int brell: valor de la componente azul del color con el que se pintará el relleno del rectángulo. Valores: 0-255.

int alpharell: opacidad del relleno del rectángulo. Valores: 0 (transparente) – 255 (opaco)

int grosor (OPCIONAL): grosor del contorno del rectángulo.

int rcon (OPCIONAL): valor de la componente rojo del color con el que se pintará el contorno del rectángulo. Valores: 0-255.

int gcon (OPCIONAL): valor de la componente verde del color con el que se pintará el contorno del rectángulo. Valores: 0-255.

int bcon (OPCIONAL): valor de la componente azul del color con el que se pintará el contorno del rectángulo. Valores: 0-255.

int alphacon (OPCIONAL): opacidad del contorno del rectángulo. Valores: 0 (transparente) – 255 (opaco)

  • elipse

Este método permite dibujar una elipse del color especificado, con o sin contorno ( del color que se indique) y del tamaño que se desee. Los parámetros que recibe son los siguientes:

float x: posición del centro de la elipse en el eje X (2D).

float y: posición del centro de la elipse en el eje Y (2D).

int ancho: anchura de la elipse que se va a dibujar.

int alto: altura de la elipse que se va a dibujar.

int rrell: valor de la componente rojo del color con el que se pintará el relleno de la elipse. Valores: 0-255.

int grell: valor de la componente verde del color con el que se pintará el relleno de la elipse. Valores: 0-255.

int brell: valor de la componente azul del color con el que se pintará el relleno de la elipse. Valores: 0-255.

int alpharell: opacidad del relleno de la elipse que se va a dibujar. Valores: 0 (transparente) – 255 (opaco)

int grosor (OPCIONAL): grosor del contorno de la elipse a dibujar.

int rcon (OPCIONAL): valor de la componente rojo del color con el que se pintará el contorno de la elipse. Valores: 0-255.

int gcon (OPCIONAL): valor de la componente verde del color con el que se pintará el contorno de la elipse. Valores: 0-255.

int bcon (OPCIONAL): valor de la componente azul del color con el que se pintará el contorno de la elipse. Valores: 0-255.

int alphacon (OPCIONAL): opacidad del contorno de la elipse a dibujar. Valores: 0 (transparente) – 255 (opaco).

  • escribir

Este método permite escribir texto de tamaño y color solicitados. Los parámetros que recibe este método son los siguientes:

String texto: texto que se desea escribir en pantalla.

float x: posición de la esquina superior izquierda del texto en el eje X (2D).

float y: posición de la esquina superior izquierda del texto en el eje Y (2D).

int tamagno: tamaño del texto que se escribirá en pantalla.

int r: valor de la componente rojo del color con el que se escribirá el texto. Valores: 0-255.

int g: valor de la componente verde del color con el que se escribirá el texto. Valores: 0-255.

int b: valor de la componente azul del color con el que se escribirá el texto. Valores: 0-255.

int alpha: opacidad del texto a escribir. Valores: 0 (transparente) – 255 (opaco).

  • Clase TAC

A continuación se presenta la clase TAC con sus diversas funciones:

ATRIBUTOS

String tokenName: Token al que pertenece el tac. Si el token es un sensor, <tokenName> es el nombre del sensor (tabletop, kinect…). Si el token es un objeto con áreas asociadas, <tokenName> = idG_Objeto + “_” + idS_Objeto

String consName: Nombre del constraint

String manipulación: Valor: “add”

String idG: id general del subtoken

String idS: id de sesión del subtoken

String idSToken: id de sesión del Token. Si el Token es un sensor y no un objeto, su valor es “–”.

ArrayList<Float> valores: 1 valor

MÉTODOS

String getTokenName() // devuelve el nombre del token

String getManipulacion()  // devuelve la manipulacion

ArrayList<Float> getValores() //devuelve la lista de valores:  1 valor (0 = remove, 1 = add)

String getConstraintName() // devuelve el nombre del constraint

String getSubtokenName() // devuelve el ID general

String getSubtokenIDS() // devuelve el ID de sesión

String getIDSToken() // devuelve el ID de sesión del Token

void info()  // escribe por pantalla la información del TAC