Problema com Variavel ao alterar o volume do audio

1 resposta
laurovitor

Ola… mais uma vez…

bom vamos direto ao ponto.

eu consegui um modo de alterar o volume do audio da minha aplicação mais eu estou com um bendito problema de variavel

bom o codigo para alterar o volume e o seguinte:

public void setVolume(double vol) throws Exception{
        Mixer.Info[] infos = AudioSystem.getMixerInfo();
        for (Mixer.Info info: infos) {
            Mixer mixer = AudioSystem.getMixer(info);
            if (mixer.isLineSupported(Port.Info.SPEAKER)) {
                Port port = (Port)mixer.getLine(Port.Info.SPEAKER);
                port.open();
                if (port.isControlSupported(FloatControl.Type.VOLUME)) {
                    FloatControl volume = (FloatControl)port.getControl(FloatControl.Type.VOLUME);
                    volume.setValue((float) vol);

                    System.out.println(vol); // esse valo vem do meu db mysql que ja e double tudo sertinho o valor q esta la e 0.09
                    System.out.println((float) vol); // aqui o resultado ainda e o mesmo 0.09
                    System.out.println(volume.getValue()); // aqui acontece a magira e fira essa coisa de 0.89xxxxx sendo q tinha q ser o 0.09
                }
                port.close();
            }
        }

    }

** olhem o comentario

bom eu altero esse volume em execução com o seguinte codigo:

public void volumeUP() throws Exception{
        double vol = dadosDB.recuperaVol(); // aqui ele busca na minha db o valor salvo la ex. double: 0.09
        DecimalFormat format = new DecimalFormat("0.00");
        String string = format.format(vol);
        String[] part = string.split("[,]");
        vol = Double.parseDouble(part[0]+"."+part[1]);

        vol+= 0.01; // aqui e para somar o valor e acrescentar o volume que vai de 0.01 ate 1.00
        if(vol >= 1.00)
            vol = 1.00;

        setVolume(vol);
    }

se alguem poder dar uma força… como meu conhecimento em java ainda e limitado eu acho q o problema esta no float e eu nao sei como formatar ele

1 Resposta

P

Ola,

Ao trabalhar com valores de precisao, utilize o BigDecimal, eh mais confiavel :slight_smile:

http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html

[]'s

Criado 4 de dezembro de 2010
Ultima resposta 5 de dez. de 2010
Respostas 1
Participantes 2