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!

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());
}
}

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

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.