Reproduzir .wav  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
toninhocell
Debugger
[Avatar]

Membro desde: 21/01/2008 14:55:24
Mensagens: 67
Localização: Uberlândia MG
Offline

Pessoal estou com uma problema estranho em um aplicativo que executa .wav, seguinte, durante o momento que estou editando o código do aplicativo seja no Debug ou execução normal ele funciona corretamente, porem ao criar o arquivo .jar do aplicativo ele não mais executa o arquivo de áudio .wav e também não apresenta nenhum erro de execução.

O está ocorrendo?

Um abraço a todos e até mais!

"Hoje sou mais sábio do que ontem"
[Email] [Yahoo!] [MSN]
Tomassoni
JavaTeenager
[Avatar]

Membro desde: 28/08/2006 14:49:46
Mensagens: 198
Offline

Cara como vc esta pegando o arquivo de som?!

Rogério Tomassoni Jr.
Técnico em Informática
Graduando em Analise de Sistemas

"Sejamos como o sol que não visa nenhuma recompensa, nenhum elogio, não espera lucros nem fama, simplesmente brilha!" - Anônimo

"Só um palpite: dando tudo errado, grite." - U. Tavares

http://www.revista.espiritolivre.org/
[Email] [WWW]
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

Esse arquivo de som está dentro do jar?

Como você carrega ele?


Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
toninhocell
Debugger
[Avatar]

Membro desde: 21/01/2008 14:55:24
Mensagens: 67
Localização: Uberlândia MG
Offline

Ele está dentro do jar.

Seguinte estou utilizando javax.sound.*; para executar o audio.

Com AePlayWave extends Thread eu faço a chamada da execução do meu aplicativo e o danado só executa durante o momento em que estou trabalhando no código.


package alarme;

import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;


public class AePlayWave extends Thread {

private String filename;

private Position curPosition;

private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb

enum Position {
LEFT, RIGHT, NORMAL
};

public AePlayWave(String wavfile) {
filename = wavfile;
curPosition = Position.NORMAL;
}

public AePlayWave(String wavfile, Position p) {
filename = wavfile;
curPosition = p;
}

public void run() {

File soundFile = new File(filename);
if (!soundFile.exists()) {
System.err.println("Wave file not found: " + filename);
return;
}

AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (UnsupportedAudioFileException e1) {
e1.printStackTrace();
return;
} catch (IOException e1) {
e1.printStackTrace();
return;
}

AudioFormat format = audioInputStream.getFormat();
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);

try {
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
} catch (LineUnavailableException e) {
e.printStackTrace();
return;
} catch (Exception e) {
e.printStackTrace();
return;
}

if (auline.isControlSupported(FloatControl.Type.PAN)) {
FloatControl pan = (FloatControl) auline
.getControl(FloatControl.Type.PAN);
if (curPosition == Position.RIGHT)
pan.setValue(1.0f);
else if (curPosition == Position.LEFT)
pan.setValue(-1.0f);
}

auline.start();
int nBytesRead = 0;
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];

try {
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
if (nBytesRead >= 0)
auline.write(abData, 0, nBytesRead);
}
} catch (IOException e) {
e.printStackTrace();
return;
} finally {
auline.drain();
auline.close();
}

}
}

A execução e feita.



new AePlayWave( "alarme.wav" ).start(); // executa

"Hoje sou mais sábio do que ontem"
[Email] [Yahoo!] [MSN]
toninhocell
Debugger
[Avatar]

Membro desde: 21/01/2008 14:55:24
Mensagens: 67
Localização: Uberlândia MG
Offline

Pessoal creio que resolvi o problema.

Coloque meu arquivo de áudio em um diretório externo a minha aplicação e no Manifest eu alterei o Class-Path indicando o caminho para o arquivo, da seguinte forma: Class-Path: audio/, com isso é só colocar a na pasta audio o arquivo .wav que eu quero executar e pronto. Contanto que o nome dele seja o mesmo que coloquei na aplicação.


Galera um GRANDE ABRAÇO a todos do fórum e muitíssimo obrigado pela ajuda!

PS: Posta ia como eu faço para colocar código no forum de maneira mais organizada!


Até mais...

This message was edited 1 time. Last update was at 28/03/2008 00:33:25


"Hoje sou mais sábio do que ontem"
[Email] [Yahoo!] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team