Mostrando entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas

viernes, 11 de noviembre de 2011

Envío de SMS con J2Me

1 - Iniciar el Netbeans, este proyecto fue desarrollado con la version 7.0.1 en ingles.
2 - Crear el proyecto en netbeans, Menu File -> New Proyect
En el cuadro de diálogo seleccionar Categoría: JavaME, Proyecto: Mobile Application; click en Next.



3-Dar un nombre al proyecto, yo seleccioné BlasSMS


4 - En la siguiente pantalla es necesario seleccionar la plataforma para la que se compilará el proyecto, para esta ocasion CLDC-1.0 y MIDP-2.0, se seleccionan las configuraciones mas básicas posibles para mantener la compatibilidad con la mayor cantidad de dispositivos posibles.
Luego hacemos click en Finish


5 - Seleccionamos el archivo HelloMIDlet.java, apretamos F2 y cambiamos su nombre a BlasSMS.java y le damos enter, en la pantalla que aparece seleccionamos la casilla "Apply Rename on Comments" (Aplicar renombrar a los comentarios) y hacemos click en Refactor.

6 - Abrir el fuente BlasSMS.java y hacer click en boton Screen y seleccionar "form" en el combo de la derecha.

7 - En la paleta de objetos seleccionamos TextField y agregamos 2 campos al form que estamos editando, seleccionamos el primero de los textfields, hacemos click derecho y seleccionamos Rename, cambiamos el nombre de la instancia a "txtCodigo".



Hacemos lo mismo con el segundo textfield y lo nombramos "txtMensaje".

Al hacer click derecho sobre los objetos podemos acceder también a las propiedades, y cambiar los labels a "Codigo" y "Mensaje"


Ahora seleccionamos en la paleta un "Exit Command" y lo agregamos a la pantalla, luego un "Ok Command", también lo agregamos, cambiamos las propiedades para que se llamen "cmdSalir" y "cmdEnviar" de manera análoga a las propiedades de los campos de texto.



El proyecto debería verse así:


8 - En la solapa "Flow", se hace un click en el boton cmdSalir y se arrastra hacia el cuadro titulado "Mobile Device"
Con lo que se vería así:


9 - Al código!
Seleccionamos la solapa source, debajo de la declaracion de la clase agregamos la declaracion de dos variables, una para el mensaje y otra para mantener el numero telefónico al cual enviar
public class BlasSMS extends MIDlet implements CommandListener {
private String mensaje = "";
private String telNro = "+595985265999";
en el método commandAcction agregamos una llamada al metodo enviarSMS() que efectuará el envio del mensaje

public void commandAction (Command command, Displayable displayable) {
if (displayable == form) {
if (command == cmdEnviar) {
// write pre-action user code here
this.enviarSMS(this.telNro); //----> ATENCION ESTE ES EL CODIGO AGREGADO!!!
// write post-action user code here
} else if (command == cmdSalir) {
Al final del archivo se escriben métodos para enviar y validar el mensaje, uno para dar un formato "util" al texto enviado y otro para mostrar una ventana de alerta que nos ayudará a mostrar diferentes mensajes en pantalla.
Validación del mensaje:
public boolean validarMensaje(){

if (this.txtCodigo.getString().length()<1){
this.mensaje = "Falta Codigo: Verifique";
return false;
}
if (this.txtMensaje.getString().length()<1){

this.mensaje = "Falta Mensaje: Verifique";
return false;
}

return true;

}
Método para "comprimir" el mensaje con los datos introducidos antes de enviarlo:
public String compactarMensaje(){

String resultado = "" ;
resultado = "'" + this.txtCodigo.getString().trim().toUpperCase() + "',";
resultado += "'" + this.txtMensaje.getString().trim().toUpperCase() + "',";
return resultado;
}

Método para envío del mensaje:
public boolean enviarSMS(String telNro){
try {
if (!validarMensaje()){
mostrarAlerta(this.mensaje);
return false;
}
String recipientAddress = "sms://" + telNro;
MessageConnection connection = (MessageConnection) Connector.open(recipientAddress);
TextMessage tmsg = (TextMessage) connection.newMessage(MessageConnection.TEXT_MESSAGE);
tmsg.setPayloadText(this.compactarMensaje());
tmsg.setAddress(recipientAddress);
connection.send(tmsg);
connection.close();
} catch (IOException ex) {
this.mostrarAlerta("Error:" + ex.getMessage());
return false;
}
this.mostrarAlerta("Envio OK");
return true;
}
Método para mostrar alertas:
public void mostrarAlerta(String msg){
Alert frmAlert = new Alert(msg);
frmAlert.setTimeout (Alert.FOREVER);
switchDisplayable (frmAlert, getForm());
}
Bibliografía:

Proyecto tagua http://sourceforge.net/projects/tagua/files/ Octubre 10, 2011
Manual de programación J2ME http://mygnet.net/manuales/j2me/manual_programacion_j2me.510 Octubre 10, 2011
Arranque rápido para programar J2ME http://netbeans.org/kb/docs/javame/quickstart.html Octubre 10, 2011