Very Important:
java -cp JadeLeap.jar jade.Boot -gui –nomtp
domingo, 16 de dezembro de 2007
segunda-feira, 21 de maio de 2007
Vídeo em JME
Mais uma vez, perdi um tempo enorme para fazer um coisa simples pq não acho documentação clara.
Dicas:
1. Esse código funciona:
VideoControl vc;
try {
HttpConnection conn = (HttpConnection)Connector.open("http://www.inovani.no/Videos/adrian_32aKbps_80vKBps.mpg");
Player player = Manager.createPlayer(conn.openInputStream(),"video/mpeg");
player.addPlayerListener(this);
player.realize();
VideoControl video = (VideoControl) player.getControl("VideoControl");
Item videoItem = (Item)video.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null);
helloForm.append(videoItem);
player.start();
vc = (VideoControl) player.getControl("VideoControl");
} catch(Exception e) {
helloStringItem.setText(e.getMessage());
}
2. Se vc tem dúvidas sobre quais são os formatos que seu emulador/dispositivo suporta execute o seguinte código:
String types[] = Manager.getSupportedContentTypes(null);
for (int i=0; i
System.out.println(types[i]);
String protocols[] = Manager.getSupportedProtocols(types[i]);
for (int j=0; j
System.out.println(protocols[j]);
}
}
3. Utilize os emuladores da SonyEricson, os outros não funcionam direito para vídeo.
http://developer.sonyericsson.com/getDocument.do?docId=65255
Um abraço!
Dicas:
1. Esse código funciona:
VideoControl vc;
try {
HttpConnection conn = (HttpConnection)Connector.open("http://www.inovani.no/Videos/adrian_32aKbps_80vKBps.mpg");
Player player = Manager.createPlayer(conn.openInputStream(),"video/mpeg");
player.addPlayerListener(this);
player.realize();
VideoControl video = (VideoControl) player.getControl("VideoControl");
Item videoItem = (Item)video.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null);
helloForm.append(videoItem);
player.start();
vc = (VideoControl) player.getControl("VideoControl");
} catch(Exception e) {
helloStringItem.setText(e.getMessage());
}
2. Se vc tem dúvidas sobre quais são os formatos que seu emulador/dispositivo suporta execute o seguinte código:
String types[] = Manager.getSupportedContentTypes(null);
for (int i=0; i
System.out.println(types[i]);
String protocols[] = Manager.getSupportedProtocols(types[i]);
for (int j=0; j
System.out.println(protocols[j]);
}
}
http://developer.sonyericsson.com/getDocument.do?docId=65255
Um abraço!
terça-feira, 15 de maio de 2007
Entity Manager no Netbeans
Há algum tempo tentei utilizar o Hibernate no Netbeans seguindo esse tutorial da própria Netbeans:
http://www.netbeans.org/kb/articles/hibernate-javaee.html
Porém, estava incompleto, por isso eu não estava conseguindo repeti-lo. O tutorial que segue funciona:
http://blec.lec.ufrgs.br/page/lounge?entry=hibernate_persistence_no_netbeans_5
Outra dica é, esse tutorial não funciona com a última versão do Entity Manager do Hibernate, apenas com a versão 3.2.1.
Um Abraço!
http://www.netbeans.org/kb/articles/hibernate-javaee.html
Porém, estava incompleto, por isso eu não estava conseguindo repeti-lo. O tutorial que segue funciona:
http://blec.lec.ufrgs.br/page/lounge?entry=hibernate_persistence_no_netbeans_5
Outra dica é, esse tutorial não funciona com a última versão do Entity Manager do Hibernate, apenas com a versão 3.2.1.
Um Abraço!
Jade - Agentes
Olá, mais um post útil apenas para mim! hahahaha...espero estar enganado.
Tive muitos problema para utilizar o Jade, não gostei da documentação deles. Principalmente, pois: é pouco objetiva e possui uma introdução que trata de assuntos relacionados à teoria de agentes, o que para quem deseja utilizar Jade, não deve ser novidade.
Bem, de qq forma algumas dicas práticas para utilizar o Jade em aplicações externas são:
1. Se estiver criando um projeto Web, todos os .jar do Jade devem ser copiados no lib do servidor.
2. Para utilizar o Jade é necessário inicia-lo, para isso digite no diretório lib do servidor: java –jar jade.jar -notmp.
3. Crie uma classe para gerenciamento dos Agentes da sua aplicação (Sugestão):
public class AgentsManager{
public String start() {
Runtime rt = Runtime.instance();
rt.setCloseVM(true);
ProfileImpl containerProfile = new ProfileImpl("127.0.0.1",1099,");
ContainerController cc = rt.createAgentContainer(containerProfile);
//Cria um Agente e um Controlador
AgentSearch searchAgent = new AgentSearch(musica,artista);
AgentController search = cc.acceptNewAgent("searchAgent",searchAgent);
search.start();
}
}
4. Leia todos os tipos de comportamentos disponíveis na documentação, na minha opinião são muito importantes para o desempenho da aplicação.
5. Essa monografia é muito boa:
jade.tilab.com/papers/2003/monografia.pdf
Um Abraço!
Tive muitos problema para utilizar o Jade, não gostei da documentação deles. Principalmente, pois: é pouco objetiva e possui uma introdução que trata de assuntos relacionados à teoria de agentes, o que para quem deseja utilizar Jade, não deve ser novidade.
Bem, de qq forma algumas dicas práticas para utilizar o Jade em aplicações externas são:
1. Se estiver criando um projeto Web, todos os .jar do Jade devem ser copiados no lib do servidor.
2. Para utilizar o Jade é necessário inicia-lo, para isso digite no diretório lib do servidor: java –jar jade.jar -notmp.
3. Crie uma classe para gerenciamento dos Agentes da sua aplicação (Sugestão):
public class AgentsManager{
public String start() {
Runtime rt = Runtime.instance();
rt.setCloseVM(true);
ProfileImpl containerProfile = new ProfileImpl("127.0.0.1",1099,");
ContainerController cc = rt.createAgentContainer(containerProfile);
//Cria um Agente e um Controlador
AgentSearch searchAgent = new AgentSearch(musica,artista);
AgentController search = cc.acceptNewAgent("searchAgent",searchAgent);
search.start();
}
}
4. Leia todos os tipos de comportamentos disponíveis na documentação, na minha opinião são muito importantes para o desempenho da aplicação.
5. Essa monografia é muito boa:
jade.tilab.com/papers/2003/monografia.pdf
Um Abraço!
sexta-feira, 11 de maio de 2007
Áudio em celulares com Java ME
Depois de muito bater cabeça, entendi porque o seguinte código, encontrado em muitos fóruns, não funcionava:
try {
HttpConnection conn = (HttpConnection)Connector.open("http://www.dc.ufscar.br/~luiz_santana/1.wav");
Player player = Manager.createPlayer(conn.openInputStream(),"audio/X-wav");
player.addPlayerListener(this);
player.realize();
player.start();
} catch (Exception e) {
stringItem1.setText(e.getMessage());
e.printStackTrace();
System.out.print(e.getMessage());
}
}
O problema é que o CLDC não suporta qualquer tipo de arquivo WAV. Apenas arquivos do tipo PCM, 8 bits, mono, com a frequencia de 16000 hz. Para transformar seus arquivos use o programa Ease Audio Converter (
http://superdownloads.uol.com.br/download/115/ease-audio-converter/).
Um abraço!
try {
HttpConnection conn = (HttpConnection)Connector.open("http://www.dc.ufscar.br/~luiz_santana/1.wav");
Player player = Manager.createPlayer(conn.openInputStream(),"audio/X-wav");
player.addPlayerListener(this);
player.realize();
player.start();
} catch (Exception e) {
stringItem1.setText(e.getMessage());
e.printStackTrace();
System.out.print(e.getMessage());
}
}
O problema é que o CLDC não suporta qualquer tipo de arquivo WAV. Apenas arquivos do tipo PCM, 8 bits, mono, com a frequencia de 16000 hz. Para transformar seus arquivos use o programa Ease Audio Converter (
http://superdownloads.uol.com.br/download/115/ease-audio-converter/).
Um abraço!
Traduzir Linguagens de Marcação
Não sei se alguem mais precisa disso, mas eu vivo precisando.
Primeiro é necessário baixar os seguintes arquivos:
Xerces - http://xml.apache.org/dist/xerces-j/
JTidy - http://jtidy.sourceforge.net/
public static String html2xhtml(String URL) {
try {
URL HTMLurl = new URL(URL);
InputStream HTMLis = HTMLurl.openStream();
if ( HTMLis != null ) {
Tidy converter = new Tidy();
converter.setTidyMark(false);
converter.setXmlOut(true);
converter.setXmlPi(true);
converter.setXmlPIs(true);
converter.setNumEntities(true);
converter.setDocType("omit");
Document doc = converter.parseDOM(HTMLis, null);
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("c:/teste.xhtml"));
XMLSerializer ser = new XMLSerializer(out, new OutputFormat("xml", "UTF-8", true));
ser.serialize(doc.getDocumentElement());
}
return null;
} catch ( Exception e ) {
return e.getMessage();
}
}
public static void main(String[] args) {
try {
html2xhtml("http://www.uol.com.br");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
Primeiro é necessário baixar os seguintes arquivos:
Xerces - http://xml.apache.org/dist/xerces-j/
JTidy - http://jtidy.sourceforge.net/
public static String html2xhtml(String URL) {
try {
URL HTMLurl = new URL(URL);
InputStream HTMLis = HTMLurl.openStream();
if ( HTMLis != null ) {
Tidy converter = new Tidy();
converter.setTidyMark(false);
converter.setXmlOut(true);
converter.setXmlPi(true);
converter.setXmlPIs(true);
converter.setNumEntities(true);
converter.setDocType("omit");
Document doc = converter.parseDOM(HTMLis, null);
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("c:/teste.xhtml"));
XMLSerializer ser = new XMLSerializer(out, new OutputFormat("xml", "UTF-8", true));
ser.serialize(doc.getDocumentElement());
}
return null;
} catch ( Exception e ) {
return e.getMessage();
}
}
public static void main(String[] args) {
try {
html2xhtml("http://www.uol.com.br");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
Marcadores:
JTidy,
Linguagem de Marcação,
Netbeans
Bibliotecas do Hibernate
Algo que eu sempre esqueço, os jars necessários para o Hibernate:
hibernate3.jar
lib/antlr-2.7.6.jar
lib/asm-attrs.jar
lib/asm.jar
lib/c3p0-0.9.0.jar
lib/cglib-2.1.3.jar
lib/commons-collections-2.1.1.jar
lib/commons-logging-1.0.4.jar
lib/concurrent-1.3.2.jar
lib/dom4j-1.6.1.jar
lib/ehcache-1.2.3.jar
lib/log4j-1.2.11.jar
hibernate3.jar
lib/antlr-2.7.6.jar
lib/asm-attrs.jar
lib/asm.jar
lib/c3p0-0.9.0.jar
lib/cglib-2.1.3.jar
lib/commons-collections-2.1.1.jar
lib/commons-logging-1.0.4.jar
lib/concurrent-1.3.2.jar
lib/dom4j-1.6.1.jar
lib/ehcache-1.2.3.jar
lib/log4j-1.2.11.jar
Redimensionar Imagens
A primeira das minhas soluções é o redimensionamento de imagens em Java, depois de muito apanhar consegui descobrir porque as imagens ficavam pretas depois de executar um código que vi em vários foruns. O problema era a forma com que a imagem está sendo criada, troquei um File("url da imagem") por ImageIO.read("url da imagem"). Em seguida está o código da minha solução:
public static String redimensionar(Image image, int width, int height, int quality,String nomeImagem) {
try {
double thumbRatio = (double) width / (double) height;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double) imageWidth / (double) imageHeight;
if (thumbRatio <>
height = (int) (width / imageRatio);
} else {
width = (int) (height * imageRatio);
}
BufferedImage thumbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, width, height, null);
BufferedOutputStream out;
out = new BufferedOutputStream(new FileOutputStream(imagesDir + nomeImagem));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
out.close();
return null;
} catch (Exception e) {
System.out.println(e.getMessage());
return e.getMessage();
}
}
public static void main(String[] args) {
try {
int width = 200; // Lagura da miniatura
int height = 200; // Altuta da miniatura
int quality = 80; // Qualidade da imagem [0~100]
File file = new File("http://www.dc.ufscar.br/imgs/dc.jpg");
URL url = new URL("http://www.dc.ufscar.br/imgs/dc.jpg");
Image image = ImageIO.read(url);
redimensionar(image, width, height, quality, file.getName());
System.out.println("A imagem " + file.getName() + " foi redimensionada com sucesso");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
Olá!
Olá,
criei esse blog como forma de armazenar em um único local soluções de programação recorrentes durante meu projeto de mestrado, possibilitando também, compartilhar essas soluções.
criei esse blog como forma de armazenar em um único local soluções de programação recorrentes durante meu projeto de mestrado, possibilitando também, compartilhar essas soluções.
Assinar:
Postagens (Atom)