viernes, 25 de julio de 2008

Grupo de Desarrolladores

Buenas a todos los lectores.

Acabo de crear un grupo de desarrolladores en el que se puede discutir todas las dudas y problemas que tengais en programación. En este caso J2ME y Bluetooth.

Espero veros allí y os podré resolver todas las dudas.

La dirección es:

http://groups.google.com/group/DevelopersR_D?hl=es

Registraros. Os espero!

martes, 22 de julio de 2008

Final

Buenas a todos.

Comentaros que hace un par de meses, presenté el proyecto frente al tribunal, con un rotundo éxito.

Así que destinaré este blog a resolver dudas y poner ejemplos sobre Java, Bluetooth, J2ME, y Android (esto es nuevo!).

Cualquier duda, posteadla e intentaré resolverla.

sábado, 23 de febrero de 2008

A full

Llevo casi 1 mes sin escribir nada, pero es que estoy tan concentrado con el proyecto, que me queda poco tiempo para otras cosas.

Solo decir que ya lo tengo casi listo.

Quizás para mañana esté finalizado.

Ya os contaré.

jueves, 31 de enero de 2008

Cambio de planes

Tras la visita ayer con el tutor del proyecto, me voy obligado a hacer cambios importantes en el diseño y estructura de la aplicación.

Para empezar, el decisor Sms/Ficheros que había implementado en el móvil, se va al carajo. Es cierto que no es muy optimo, enviar sms por BT, teniendo al tipo a menos de 10 metros. La idea es que se envíe a través de la red.

Por lo tanto, hay que implementar una "red" (o por lo menos emularla) de ordenadores conectados a dispositivos BT. Estos nodos deberán estar conectados a una Base de datos que estará constantemente actualizandose, comprobando los dispositivos que hay a su alcance. Desde el nodo A hasta el nodo B hay 100 km, supongamos.

Queremos enviar un sms desde un móvil cercano al nodo A hasta un móvil cercano al nodo B. Eso es lo que tengo que solucionar.

Empezamos!!!

domingo, 27 de enero de 2008

RMS

"Record Management System"

J2ME posee un pequeño sistema de almacenamiento en memoria "secundaria", como una pequeña base de datos acoplada al teléfono. Se reserva un poco de la memoria interna del móvil para este propósito.

Este sistema es el RMS y consiste en el almacenamiento de tuplas "indice,valor" donde "valor" es lo que queramos almacenar como byte[].

La clase RecordStore, nos proporciona todos los métodos necesarios para almacenar, recuperar, actualizar y borrar esos registros.

Voy a usar este sistema de almacenamiento, como una especie de "Caché" de direcciones BT. Cada vez que el dispositivo acceda a la base de datos MySql del portatil y obtenga la información del usuario, se guardará esa información en el RMS para que en un futuro, si el destinatario al que queremos enviar "algo" ya fue usado anteriormente, no tengamos que hacer la conexión con el portátil, directamente la obtenemos del sistema de RecordsStores.

lunes, 21 de enero de 2008

Obex

La asignatura que tenía pendiente desde que comencé el proyecto, ya está superada:

El envío de ficheros por bluetooth mediante OBEX.

La idea es muy simple, pero no se porqué, estaba tan atrancado.

Para el envío, he aquí los elementos más importantes:



          ClientSession cs = (ClientSession) conector;
header = cs.createHeaderSet();
cs.connect(header);
header.setHeader(HeaderSet.NAME, "ABB.jpg");
header.setHeader(HeaderSet.TYPE, "image/jpeg");
header.setHeader(HeaderSet.LENGTH, new Long(archivoEnviar.length));
Operation putOp = cs.put(header);
OutputStream strmEscritura = putOp.openOutputStream();
strmEscritura.write(archivoEnviar);
strmEscritura.flush();
strmEscritura.close();

Lo importante, en OBEX, es añadirle una cabecera a lo que vayamos a enviar. En este caso vamos a enviar una imagen (TYPE, "image/jpeg"), con el nombre de ABB.jpg, y su longitud.

Una vez creada la cabecera, enviamos el cuerpo, en este caso sería la variable archivoEnviar y sería un byte[].


domingo, 20 de enero de 2008

Java Mail

Bueno, mientras consigo encontrar un servidor en condiciones para alojar mis paginillas, sigo trabajando.

Esta vez en el envío de mails.

Uno de los objetivos, es que desde el dispositivo móvil pueda enviar correos electrónicos.

Ahí va, señores, el trozo de código que hace eso, en J2SE (habrá que programar, por envío de bluetooth y la serialización que me inventé, el envío desde el dispositivo móvil)
Jmaile



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jmailer;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
* Clase que al pasarle los parametros del mail, envía un correo a la dirección especificada.
* @author jbeer
*/
public class Jmailer {

public Jmailer(String from, String to, String subject, String texto) {
try {

java.util.Properties props = new java.util.Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "25");

Authenticator auth = new SMTPAuthenticator();

Session session = Session.getDefaultInstance(props, auth);

// Construct the message
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
msg.setSubject(subject);
msg.setText(texto);


Transport.send(msg);
} catch (MessagingException ex) {
Logger.getLogger(Jmailer.class.getName()).log(Level.SEVERE, null, ex);
}



}

private class SMTPAuthenticator extends javax.mail.Authenticator {

public PasswordAuthentication getPasswordAuthentication() {
String username = "XXXXXX";
String password = "XXXXXX";
return new PasswordAuthentication(username, password);
}
}
}


En la clase "STMPAutehnticator" como username y password poner vuestro usuario y password de la cuenta google.