|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
T Búsqueda en este sitio:


.

App inventor 2 en español
Cómo programar los teléfonos móviles con Android
mediante App inventor 2 - Juan Antonio Villalpando

-- Tutorial de iniciación de App Inventor 2 en español --

Volver al índice del tutorial

____________________________

126.- Extensiones. Plantilla2 para comenzar un código. Template2.

- El siguiente archivo Plantilla2.java los puedes utilizar para comenzar una extensión, como punto de partida.

- Esta Plantilla he puesto varios tipos de funciones, son los bloques violetas.

- Las Propiedades son los bloques verdes.

- El Evento es el bloque anaranjado.

Plantilla2.java

package com.Plantilla2;
//  © Juan Antonio Villalpando 
// kio4.com
// Creacion de extensiones. Junio 2017.
// Plantilla2 para comenzar a escribir el codigo.

import com.google.appinventor.components.annotations.DesignerComponent;
import com.google.appinventor.components.annotations.DesignerProperty;
import com.google.appinventor.components.annotations.PropertyCategory;
import com.google.appinventor.components.annotations.SimpleEvent;
import com.google.appinventor.components.annotations.SimpleFunction;
import com.google.appinventor.components.annotations.SimpleObject;
import com.google.appinventor.components.annotations.SimpleProperty;
import com.google.appinventor.components.common.ComponentCategory;
import com.google.appinventor.components.common.PropertyTypeConstants;
import com.google.appinventor.components.runtime.util.MediaUtil;
import com.google.appinventor.components.runtime.*;

@DesignerComponent(version = Plantilla2.VERSION,
    description = "Este texto aparecera cuando pulses la interrogacion en las zona de Importar esta extension. " + "Juan Antonio Villalpando - KIO4.COM ",
    category = ComponentCategory.EXTENSION,
    nonVisible = true,
    iconName = "images/icono.png") 
@SimpleObject(external = true)
public class Plantilla2 extends AndroidNonvisibleComponent implements Component {

    public static final int VERSION = 1;
    public static final String DEFAULT_TEXTO = "Hola";
    public static final int DEFAULT_NUMERO = 123;
    private ComponentContainer container;
    private String texto = "";
	private int  numero= 0;
 
    public Plantilla2(ComponentContainer container) {
        super(container.$form());
        this.container = container;
        Texto(DEFAULT_TEXTO);
		Numero(DEFAULT_NUMERO);
    }

    // Creación de las Propiedades.
    @SimpleProperty(
        category = PropertyCategory.BEHAVIOR)
    public String Texto() {
        return texto;
    }
	
	  @SimpleProperty(
        category = PropertyCategory.BEHAVIOR)
    public double Numero() {
        return numero;
    }

    // Establecimiento de las Propiedades.
    @DesignerProperty(editorType = PropertyTypeConstants.PROPERTY_TYPE_STRING, defaultValue = Plantilla2.DEFAULT_TEXTO + "")
    @SimpleProperty(description = "Ayuda al situar el raton sobre este bloque. ")
    public void Texto(String nuevoTexto) {
        this.texto = nuevoTexto;
    }
	
	@DesignerProperty(editorType = PropertyTypeConstants.PROPERTY_TYPE_INTEGER, defaultValue = Plantilla2.DEFAULT_NUMERO + "")
    @SimpleProperty(description = "Ayuda al situar el raton sobre este bloque. ")
    public void Numero(int nuevoNumero) {
        this.numero = nuevoNumero;
    }
	
	////////////////////// FUNCIONES ////////////////////////////////////////////////////////////////////// 
	
    // Funcion Entran dos valores (String y entero) y retorna un valor (entero)
    @SimpleFunction(description = "Realiza el doble.")
    public int Operaciones(String Textodeentrada, int Numerodeentrada) {
		int eldoble = 0;
				
		eldoble = Numerodeentrada * 2;

        return eldoble;
    }
	
	    // Funcion No entran valores y retorna un entero
    @SimpleFunction(description = "Realiza el doble.")
    public int Dado() {
		int dado = 0;
				
		dado = (int) (6.0 * Math.random()) + 1;
      
        return dado;
    }
	
			// A esta funcion le suministramos frecuencia y tiempo y daria un sonido.
			// Pero no retorna resultado.
			// Es una funcion con VOID
			// Mediante el bloque de evento puede devolver informacion.
// NOTA: ESTA FUNCION NO FUNCIONA YA QUE ES NECESARIO IMPORTAR LIBRERIA DE SONIDO.
     @SimpleFunction(description = "Daria un sonido requiere datos de entradas.")
      public void Sonido(int frecuencia, int tiempo) { 
      		String terminado = "";
			
       // AudioTrack tone = generateTone(frecuencia, tiempo);
      // tone.play();

		terminado = "Terminado el sonido de f = " + frecuencia + " t = " + tiempo;
      
       BloqueEvento(terminado);  
    }
	
			// Función No entran valores ni retorna resultado.
			// A esta funcion daria un sonido de frecuencia 1000 y tiempo 2000.
			// Es una funcion con VOID
			// Mediante el bloque de evento puede devolver informacion.
// NOTA: ESTA FUNCION NO FUNCIONA YA QUE ES NECESARIO IMPORTAR LIBRERIA DE SONIDO. 
     @SimpleFunction(description = "Daria un sonido establecido.")
      public void Tono() { 
      		String terminado = "";
			
      // AudioTrack tone = generateTone(1000, 2000);
      // tone.play();

		terminado = "Terminado el tono de f = 1000 y tiempo = 2000";
      
       BloqueEvento(terminado);  
    }
	
    // Bloque de Evento.
    @SimpleEvent(description = "Bloque del Evento. ")
    public void BloqueEvento(String respuesta){
        EventDispatcher.dispatchEvent(this, "BloqueEvento", respuesta);
    }  
	
}	

- Por comodidad de lectura vuelvo a repetir la misma plantilla y realizo los comentarios sobre ella.

Plantilla2.java

package com.Plantilla2; // Fíjate que a lo largo del código se repite la palabra Plantilla2. Es el nombre de la clase.
// ‎© Juan Antonio Villalpando
// kio4.com
// Creación de extensiones. Junio 2017.
// Plantilla para comenzar a escribir el código.

 

// Estas son las importaciones, códigos que son necesarios de añadir a nuestra extensión.

 

import com.google.appinventor.components.annotations.DesignerComponent;
import com.google.appinventor.components.annotations.DesignerProperty;
import com.google.appinventor.components.annotations.PropertyCategory;
import com.google.appinventor.components.annotations.SimpleEvent;
import com.google.appinventor.components.annotations.SimpleFunction;
import com.google.appinventor.components.annotations.SimpleObject;
import com.google.appinventor.components.annotations.SimpleProperty;
import com.google.appinventor.components.common.ComponentCategory;
import com.google.appinventor.components.common.PropertyTypeConstants;
import com.google.appinventor.components.runtime.util.MediaUtil;
import com.google.appinventor.components.runtime.*;

// En alguno códigos además de las importaciones anteriores se ha de importar otras.

@DesignerComponent(version = Plantilla2.VERSION,
// Es conveniente poner pequeñas discripciones de los distintos bloques:
description = "Este texto aparecera a la izquierda en la parte de Diseno. " + "Juan Antonio Villalpando - KIO4.COM ",
// Esto significa que estamos construyendo una Extension.
category = ComponentCategory.EXTENSION,
// Las Extensiones No son Visible en la Screen. AndroidNonvisibleComponent.
nonVisible = true,
// El icono también puede estar en una dirección web. Consulta la página de trucos.
iconName = "images/icono.png")
@SimpleObject(external = true)
public class Plantilla2 extends AndroidNonvisibleComponent implements Component {

 

public static final int VERSION = 1;
public static final String DEFAULT_TEXTO = "Hola"; // Valor por defecto que tomará cierta Propiedad de texto
public static final int DEFAULT_NUMERO = 123; // Valor por defecto que tomará cierta Propiedad de número.
private ComponentContainer container;
private String texto = ""; // Valor inicial de la variable texto
private int numero= 0; // Valor inicial de la variable numero


public Plantilla2(ComponentContainer container) {
super(container.$form());
this.container = container;
Texto(DEFAULT_TEXTO); // Valor del Texto por defecto.
Numero(DEFAULT_NUMERO); // Valor del Numero por defecto.

}

// Creación de las Propiedades.
@SimpleProperty(
category = PropertyCategory.BEHAVIOR)
public String Texto() {
return texto;
}

@SimpleProperty(
category = PropertyCategory.BEHAVIOR)
public double Numero() {
return numero;
}

// Establecimiento de las Propiedades.
@DesignerProperty(editorType = PropertyTypeConstants.PROPERTY_TYPE_STRING, defaultValue = Plantilla2.DEFAULT_TEXTO + "")
@SimpleProperty(description = "Ayuda al situar el raton sobre este bloque. ")
public void Texto(String nuevoTexto) {
this.texto = nuevoTexto;
}

@DesignerProperty(editorType = PropertyTypeConstants.PROPERTY_TYPE_INTEGER, defaultValue = Plantilla2.DEFAULT_NUMERO + "")
@SimpleProperty(description = "Ayuda al situar el raton sobre este bloque. ")
public void Numero(int nuevoNumero) {
this.numero = nuevoNumero;
}

 

////////////////////// FUNCIONES //////////////////////////////////////////////////////////////////////

// Función Entran dos valores (String y entero) y retorna un valor (entero)


@SimpleFunction(description = "Realiza el doble.")
public int Operaciones(String Textodeentrada, int Numerodeentrada) {
int eldoble = 0;

eldoble = Numerodeentrada * 2;

return eldoble;
}

// Función No entran valores y retorna un entero.


@SimpleFunction(description = "Realiza el doble.")
public int Dado() {
int dado = 0;

dado = (int) (6.0 * Math.random()) + 1;

return dado;
}


// A esta funcion le suministramos frecuencia y tiempo y daria un sonido.
// Pero no retorna resultado.
// Es una funcion con VOID
// Mediante el bloque de evento puede devolver informacion.
// NOTA: ESTA FUNCION NO FUNCIONA YA QUE ES NECESARIO IMPORTAR LIBRERIA DE SONIDO.


@SimpleFunction(description = "Daria un sonido requiere datos de entradas.")
public void Sonido(int frecuencia, int tiempo) {
String terminado = "";

// AudioTrack tone = generateTone(frecuencia, tiempo);
// tone.play();

terminado = "Terminado el sonido de f = " + frecuencia + " t = " + tiempo;

BloqueEvento(terminado);
}

// Función No entran valores ni retorna resultado.
// A esta funcion daria un sonido de frecuencia 1000 y tiempo 2000.
// Es una funcion con
VOID
// Mediante el bloque de evento puede devolver informacion.
// NOTA: ESTA FUNCION NO FUNCIONA YA QUE ES NECESARIO IMPORTAR LIBRERIA DE SONIDO.


@SimpleFunction(description = "Daria un sonido establecido.")
public void Tono() {
String terminado = "";

// AudioTrack tone = generateTone(1000, 2000);
// tone.play();

terminado = "Terminado el tono de f = 1000 y tiempo = 2000";

BloqueEvento(terminado);
}

// Bloque de Evento.


@SimpleEvent(description = "Bloque del Evento. ")
public void BloqueEvento(String respuesta){
EventDispatcher.dispatchEvent(this, "BloqueEvento", respuesta);
}

}

___________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información