que pex aqui con las aplicaciones pa moviles

hace un año empece a dessarrollar en java, fue algo tedioso comprender la POO a de haber sido por mi ostumbre a la programacion secuencial de c y despues el cambio es raro, bueno, mmm , despues me empece a interesar por la plataforma micro de java, para el desarrollo de aplicaciones en dispositivos de bajos recursos, ya me avente mi primer juego, actualmente desarrollo uno mejor que le anterior si hay alguien interesado endesarrollar aplicaciones para moviles o que trabaje en el ramo me interesaria compartir informacion y ayudar a quien se inicie en este campo o que me ayuden los masters en el.

chales en esta comunidad no hay mucho interes por el micro ...

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

EE...

Ciertamente estamos más enfocados a la parte de Java EE, supongo que porque es lo que usamos diario, pero sería interesante tener también discusiones acerca de la edición Micro de Java.

Given the choice of dancing pigs and security, users will choose dancing pigs, every single time. - Steve Riley

Imagen de jali

ps no por que no queramos

Pues como dice ezamudio... se habla mas sobre EE por que es lo que usamos pa chambear. Pero pues me late el ME y ps por que no hacer temas sobre ello.
chido por el aporte

Imagen de benek

Así es. Yo no he programado

Así es. Yo no he programado nada en ME pero sería interesantísimo que alguien que ya lo haya hecho diera una introducción.

¿Quién no ha querido programar alguna aplicación para su móvil? Yo sí. :-)

--
Javier Benek

Imagen de ezamudio

Yo tambien...

Pero no tengo ni idea siquiera de si puedo programar algo por ejemplo con Eclipse o se necesita algun IDE especial, si puedo correr la aplicación solita por ser Java o necesito algun tipo de simulador, si al final nada más hago un JAR y lo meto al teléfono como pueda o si necesito alguna cosa especial para meter la aplicación al fon, etc...

Given the choice of dancing pigs and security, users will choose dancing pigs, every single time. - Steve Riley

Imagen de Shadonwk

Exacto

ciertamente es lo que tambien yo pienso que java EE es lo que mas se ve aqui por cuestiones laborales pero bueno nadie a dicho que no se puede
poner temas sobre java ME sino que estaramos encantados de tenerlos y porque no ya que esta el hilo aportar y meternos un poco mas hacia ese tema
yo en lo personal una vez desarrolle un protecto para mi cel motorola V3 que solo era una pelotita cambiando de color jeje.. buen aporte

perdon si me he ausentado un poco, pero ya estoy trabajando en un proyecto y me absorbe mucho tiempo.. Saludos..

Imagen de astudillo

Aquí hay un alumno!!!!!

Hola, quiero aprender a hacer aunque séa una aplicación para móvil, es un proyecto de estudio y no quisiera quedar reprobado ¡ayuda please!!. Te comento: ya logré construir mi pequeño proyecto - tengo el Jad y el Jar- con el Sun Java Wireless Toolkit 2.5.2 pero al momento de "lanzarlo" me manda el siguinte error:

Running in the identified_third_party security domain
Unable to create MIDlet MyMid
java.lang.ClassNotFoundException: MyMid
at com.sun.midp.midlet.MIDletState.createMIDlet(+29)
at com.sun.midp.midlet.Selector.run(+22)

Necesito su gran ayuda!!!

Imagen de benek

Estaría muy interesante que

Estaría muy interesante que lo postearas para ver que tan diferente es a hacer una aplicación en Java Standard.

También para saber como dice ezamudio como testear, en donde desarrollar y todo eso porque muchos aquí estamos completamente en 0 con Java ME :S

--
Javier Benek

astudillo

te podria echar la mano si me mostraras el codigo, si me stas diciendo que tienes el jad y jar es por que ya lo empaquetaste, pero como? si me dices que te manda errores, si tu proyecto es simple dime de que quieres que haga y por paso te podria de cir que hagas, yo em pece tambien con wireless pero prefiero una IDE como netBeans.

J2me

para empezar a crear en j2me solo se necesitan conceptos basicos, yo he empezado a programar con java ya hace mas de un año, no he llevado el curso todavia en la escuela pero siempre me gusta "adelantar conocimientos" pos sii, por loq ue veo en esta comunidad se ve gran calidad de conocimientos en sus miembros por eso es uno de los pocos blogs a los que me he subcrito, pero bueno les hablare un poquitillo de j2me, no profundizare mucho, solo les dare la nocion de lo que se trata, en si las aplicaciones para cels son mmm como les dire, un conjunto de pantallas (displays), que se muestran en un marco (MIDlet con parecidos a los applets), a cada pantalla le agregas sus propios eventos, componentes (escaos), botones etcetera, se trata de mostrar pantallas setCurrental) vinculadas a sus respectivos eventos, puedes intercambiar entre forms y canvas en un instante. En microedition hay que tener cuidado, el punto es de no hacer trabajar demas al dispositivo, por eso es micro referente a dispositivos de bajos recursos, en ste lenguaje no se rescata nada de las capasidades de la plataforma standar, la api jdme sta reducida bastante, lo cual es un medida para que el programador no se sobrepase en la aplicacion de componentes que no van deacuerdo a la capaccidad del mobil , a la hora de empaquetar se crean dos archivos (jar y jad) los pasas al cel y al checarlos stando en el dispositivo aparecera uno solo que es el ejecutable, tambien hay que tener en cuenta las configuraciones que implementes(no me refiero a interfazes) hay dos que son la midp y cldc si creas algo sencillo puedes usar configuraciones para midp 2.0 y cldc 1.1 asi no tendras problemas a la hora de ejecutarlos en el cel, pero preferiria que tu mismo checaras las especificaciones de tu cel acerca de las configuraciones que soporta, bueno espero haberme expresado bien si alguien en realidad se interesa con gusto apoyare en lo que pueda .... Saludos !!

Imagen de DevCH

Applicacion MIDLet para BlackBerry

Hola a todos, por lo que he leido en este foro, veo que hay un buen nivel de programadores de J2ME, pues bien, les comento mi problema.

Resulta que estoy desarrollando una aplicación (Midlet) hecha en Java JDK 1.5.XX con Netbeans 6.5 que básicamente lo que hace es conectarse con un sitio web donde reside un WebServices hecho en .Net que le devolverá datos a dicha aplicación. Para ello he hecho todas las pruebas con los simuladores que NetBeans provee, y todo se instala bien, todo resulta perfecto desde el simulador. Sin embargo, cuando dicha aplicación, despues de haber sido instalada correctamente en un telefono BlackBerry 8310 MIDP 2.0 al ejecutarla, simplemente falla, he buscado en el fondo y el problema que arroja es al momento de instanciar una clase que es precisamente la que crea el WS, el errror lo produce la clase java.lang.Noclassdeffounderror.

Desafortunadamente (o afortunadamente) son muy pocas las personas que tiene experiencia en el desarrollo de este tipo de aplicaciones, por eso pido ayuda en este foro para resolver este problema, estaría dispuesto a remunerar con algo dicha ayuda, la verdad ya llevo varios dias con esto y no encuento donde pueda estar la falla en el equipo.

Estoy trabajando en Win Vista Ultimate,

Saludos y espero me pueda ayudar, para contactarme por el MSN Messenger puede utilizar la cuenta: manager logydes . com

Carlos H.

Locura es: Seguir insistiendo en lo mismo esperando que algún día algo nuevo suceda.
Albert Einstein

hay Dios!!!

disculpa por la poca ayuda que te pueda brindar pero ps como no tengo un blackberry no he desarrollado aplicaciones para ellos, solo he leido un poco, pero ps por quue no intentas correrlo en el BlackBerry JDE he leido que ps te ayuda mas ya que tiene un mejor sistema de depuracion y un buen de simuladores para calarlo, tambien me imagino que realizas algun tipo de conexion a alguna base de datos del ws podrias checar bien el driver que manejas a la hora de la conexion(que sea el adecuado) pero creo que en j2me no se soporta el jdbc pero siendo blackberry me imagino que si necesita algun tipo de gestor de bd.....
no te ofrezco mucho por que no me he adentrado en esas plataformas empresariales y lo que te valla a decir toy casi seguro que ya lo abras intentado, pero muchisima suerte.....

Imagen de iberck

Eso tal vez es por la forma

Eso tal vez es por la forma en la que estas definiendo las dependencias (jar) dentro de tu proyecto.
Cuando trabajas directamente desde el simulador el IDE hace un enlace de librerías a veces muy por debajo del agua, prueba lo siguiente

1. Pasa todos los archivos de la carpeta dist a tu cel
2. Asegurate que la clase que te da java.lang.Noclassdeffounderror vaya incluida en tu archivo jar, si no fuera así deberas incluir dicha clase dentro de tu archivo
3. Da click derecho al proyecto y en las propiedades/build/Libraries & resources -> asegurate que tu librería que hace que te conectes al ws se encuentre alli

JavaRanch big moose saloon member

Imagen de astudillo

va el código..

package s700;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Calendar;
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.StringItem;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class MyMid extends MIDlet
implements CommandListener, ItemStateListener
{
public static final int BLOCK_SIZE = 102400;
private Command command;
private Command commandH;
private Display display;
private Form screen;
private String xtns = ".txt";
private String BlankSpace = " ";
private String[] mes = { " ", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" };

public MyMid()
{
this.display = Display.getDisplay(this);
this.command = new Command("Salir", 7, 1);
this.commandH = new Command("Ayuda", 5, 2);
this.screen = new Form("Texto Diario");
StringItem saludo = new StringItem("", ReadMethod());
this.screen.append(saludo);
this.screen.addCommand(this.command);

this.screen.setCommandListener(this);
this.screen.setItemStateListener(this);
}

protected void startApp()
throws MIDletStateChangeException
{
this.display.setCurrent(this.screen);
}

protected void pauseApp()
{
}

protected void destroyApp(boolean arg0)
throws MIDletStateChangeException
{
}

public void commandAction(Command arg0, Displayable arg1)
{
if (arg0 == this.command)
try
{
destroyApp(false);
super.notifyDestroyed();
}
catch (MIDletStateChangeException e) {
e.printStackTrace();
}
}

public void itemStateChanged(Item arg0)
{
}

public String ReadMethod()
{
String Result = new String();
try {
Calendar rightNow = Calendar.getInstance();
String day = String.valueOf(rightNow.get(5));
String month = String.valueOf(rightNow.get(2) + 1);
InputStream in = null;
String Texto = new String();
String myMes = new String();
int newDay = 1 + Integer.parseInt(day);
int endString = 0;
switch (Integer.parseInt(month))
{
case 1:
myMes = this.mes[1];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(this.mes[1] + this.BlankSpace + newDay));
break;
case 2:
myMes = this.mes[2];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 3:
myMes = this.mes[3];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), endString);
break;
case 4:
myMes = this.mes[4];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 5:
myMes = this.mes[5];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 6:
myMes = this.mes[6];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 7:
myMes = this.mes[7];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 8:
myMes = this.mes[8];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 9:
myMes = this.mes[9];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 10:
myMes = this.mes[10];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 11:
myMes = this.mes[11];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
case 12:
myMes = this.mes[12];
in = getClass().getResourceAsStream("/" + myMes + this.xtns);
Texto = new String(copyToByteArray(in));
if (Texto.indexOf(myMes + this.BlankSpace + newDay) == -1) {
endString = Texto.length();
}
else
endString = Texto.indexOf(myMes + this.BlankSpace + newDay);

Result = Texto.substring(Texto.indexOf(myMes + this.BlankSpace + day), Texto.indexOf(myMes + this.BlankSpace + newDay));
break;
default:
Result = "No hay texto para el dia de hoy. Lo sentimos... ";
}

}
catch (ConnectionNotFoundException e)
{
Result = "Connection Error. " + e.getMessage();
System.out.println("File could not be found!");
}
catch (IOException e) {
Result = "IO Error. " + e.getMessage();
System.out.println(e.toString());
}
catch (Exception e)
{
Result = "Undefined Error. " + e.getMessage();
}
return Result += " ---astudillo@hotmail.com"; }

public static void copy(InputStream in, OutputStream out) throws IOException {
byte[] buffer;
try {
buffer = new byte[102400];
int nrOfBytes = -1;
while ((nrOfBytes = in.read(buffer)) != -1)
out.write(buffer, 0, nrOfBytes);

out.flush();
}
finally {
try {
in.close();
}
catch (IOException localIOException1)
{
}
try {
out.close();
}
catch (IOException localIOException2)
{
}
}
}

public static byte[] copyToByteArray(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
copy(in, out);
return out.toByteArray();
}
}

j2me haciendo programa

hola
J2ME ya elaboré un pequeño codigo para bajar informacion de una pagina web PERO NECESITO QUE DESPUES DE BAJAR LA INFORMACIÓN SE CREÉ UN ARCHIVO .txt CON LA INFORMACIÓN QUE SE BAJÓ PARA PODER UTILIZAR SU INFORMACIÓN

CODIGO [/code]

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

/**
* @author Edgar Iván
*/
public class conexion extends MIDlet {
private Display display;
public String url = "http://olmos.alephsolutions.com/waypoints.txt";

public conexion() {
display = Display.getDisplay(this);

}

/**
* Método startApp()
*/
public void startApp() {
// Llama al método download para descargar el contenido de la URL
try {
download(url);
} catch(IOException e) {
System.out.println("IOException: " + e);
}

}

private void download (String url) throws IOException {
StringBuffer b = new StringBuffer();
InputStream is = null;
HttpConnection c = null;
TextBox t = null;
StringBuffer w = b;
try {
long len = 0 ;
int ch = 0;

// Abre una conexión del tipo HttpConnection
c = (HttpConnection)Connector.open(url);

// Obtiene un stream de entrada, para leer el contenido de la url
// con la que establece la conexión
is = c.openInputStream();

// Lee hasta que se cierra la conexión
while ((ch = is.read()) != -1) {
w.append((char)ch);
}

// Se contruye un TextBox con el contenido de la URL
t = new TextBox("waypoints", w.toString(), 70000, 0);

} finally {
// Se cierra tanto el stream de entrada
if (is != null)
is.close();
// Se cierra la conexión
if (c != null)
c.close();
}

// Se visualiza el TextBox en el Display
display.setCurrent(t);
}

/**
* pauseApp
*/
public void pauseApp() {
}

/**
* destroyApp
*/
public void destroyApp(boolean unconditional) {
}
}

Bases de Datos en J2ME

Hola ... alguien ha logrado utilizar alguna base de datos tipo SQLite, HSQLDB, Java DB, con J2ME ? Gracias ...

Imagen de beto.bateria

Applicacion MIDLet para BlackBerry

Necesitas verificar que el blackberry implemente las librerias necesarias para consumir WS. En alguna ocasion utilice ksoap para consumir ws, solamente que hay que modificar el codigo para que trabaje con .net

Imagen de beto.bateria

Bases de Datos en J2ME

Saludos, en j2me no se manejan gestores de bd relacionales, sino algo que se llama rms, que en realidad es el manejo de un archivo de texto a traves de un interfaz, para conectarse a un servidor necesitas que exista un servidor http que conteste.

Conexion a Base de Datos en J2ME

Hola beto.bateria tendrias algun link o algo asi para saber si hay una forma de conectar a una base de datos sql y actualizarla mediante J2ME?

Gracias

Imagen de beto.bateria

re Conexion a Base de Datos en J2ME

Como arriba lo mencione, es a traves de un servlet que te vas a conectar a la base de datos, en las aplicaciones que cree, la comunicacion entre el dispositivo y el servlet era xml. Tambien puedes consumir web services.

Aqui esta codigo y explicacion :)


Imagen de ezamudio

mucho cuidado

A lo que se refiere beto.bateria es que simplemente no puedes abrir una conexión JDBC desde un dispositivo móvil. La razón principal es la seguridad: para poder abrir una conexión JDBC directo a una base de datos desde un dispositivo móvil tendrías que tener tu servidor de base de datos expuesto en internet (porque la conexión llegaría por internet, ya que desde el celular o lo que sea saldría via GPRS o EDGE, 3G etc pero desde el servidor lo ves como una conexión TCP común y corriente). Eso hace bastante vulnerable a tu servidor de base de datos.

Por lo tanto es necesario que definas exactamente las operaciones que necesitas realizar desde JavaME (ya no se llama J2ME) y hagas una aplicación que resida en un contenedor JEE para que atienda esas peticiones que lleguen desde los dispositivos móviles. Sin embargo, les recomiendo que tengan MUCHO CUIDADO al abrir una interfaz de este tipo, porque básicamente estás publicando un servicio que permite realizar ciertas operaciones en base de datos enviando comandos y devolviendo resultados codificados en XML. Tienes que pensar en un muy buen esquema de autentificación para los dispositivos móviles de modo que un atacante no le sea muy fácil hacerse pasar por uno de tus dispositivos.