Estou fazendo uma aplicação que se conecta em servidor e baixa uma imagem para o celular da samsung o d500 e grava em memória, com o objeto RecordStore, sendo que quando ele tentar baixar a imagem o celular trava, ou seja, não sai da tela de requisição http.
Baixei o sdk da samsung e a aplicação roda legal, sendo que neste sdk não tem o emulador do celular que estou usando para testar a aplicação.
Alguém tem alguma ideia para ajudar?
olá Jedi_FeniX
vc colocou a requisicao http em thread? se não tenta colocar isso em thread ou implemente a interface runnable
grande abraço
Bruno
Sim, está em uma thread. Na verdade na minha classe Midlet eu chamo uma thread e ai esta thread chama outra classe, que é esta que vai fazer a requisição.
Vou colocar o código daqui a pouco para você dar uma olhada.
Imaplementa a interface Runnable na MIDlet. Chame o método que faz a conexão dentro do método run() da MIDlet e quando for conectar inicie uma Thread que receba como argumento sua MIDlet:
new Thread( this ).start();
Fiz o que vocês falaram e ainda continua travando.
A minha classe que abre a conexão está assim:
[code]
public class AdViewOpen extends Form implements CommandListener, Runnable{
public void run() {
ContentConnection connection = null;
DataInputStream input = null;
try {
connection = (ContentConnection) Connector.open(url);
input = connection.openDataInputStream();
byte[] imageData = new byte[(int) connection.getLength()];
input.readFully(imageData);
this.append(Image.createImage(imageData, 0, imageData.length));
ImageBase store = new ImageBase();
store.open();
store.add(imageData);
store.close();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try { input.close(); }
catch (IOException ex) { ex.printStackTrace(); }
}
if (connection != null) {
try { connection.close(); }
catch (IOException ex) { ex.printStackTrace(); }
}
}
this.addCommand(new Command(this.label_game, Command.OK, 1));
this.addCommand(new Command(this.label_ad, Command.OK, 1));
this.addCommand(new Command(“Sair”, Command.CANCEL, 0));
this.setCommandListener(this);
Display.getDisplay(this.midlet).setCurrent(this);
}
}[/code]
Sendo que eu uso esta aplicação em outros celulares de outras marcas e funciona só na samsung e lg que está dando este erro.
[quote=Jedi_FeniX]Fiz o que vocês falaram e ainda continua travando.
A minha classe que abre a conexão está assim:
[code]
public class AdViewOpen extends Form implements CommandListener, Runnable{
public void run() {
ContentConnection connection = null;
DataInputStream input = null;
try {
connection = (ContentConnection) Connector.open(url);
input = connection.openDataInputStream();
byte[] imageData = new byte[(int) connection.getLength()];
input.readFully(imageData);
this.append(Image.createImage(imageData, 0, imageData.length));
ImageBase store = new ImageBase();
store.open();
store.add(imageData);
store.close();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try { input.close(); }
catch (IOException ex) { ex.printStackTrace(); }
}
if (connection != null) {
try { connection.close(); }
catch (IOException ex) { ex.printStackTrace(); }
}
}
this.addCommand(new Command(this.label_game, Command.OK, 1));
this.addCommand(new Command(this.label_ad, Command.OK, 1));
this.addCommand(new Command(“Sair”, Command.CANCEL, 0));
this.setCommandListener(this);
Display.getDisplay(this.midlet).setCurrent(this);
}
}[/code]
Sendo que eu uso esta aplicação em outros celulares de outras marcas e funciona só na samsung e lg que está dando este erro.
[/quote]
Já parou para verificar que o problema pode ser específico no aparelho, tipo, APN inexistente ou mal-configurada ?
Nesta situação, não importa a aplicação que tente acessar a internet, não vai conseguir…