Problème réglage de son système
yoh42
-
yoh42 -
yoh42 -
Bonjour a tous,
je viens vers vous car je rencontre actuellement un problème avec un programme JAVA.
En effet, je souhaite contrôler le son de mon système avec une méthode en JAVA.
Après quelques recherches sur le web, j'ai trouvé quelques programmes et celui dont je rencontre le problème fonctionne sous Windows XP mais ne fonctionne pas sur les versions supérieures de Windows ni sur Linux.
Voici le code en question :
************************************************************************
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.Port;
public class ControlSound2 {
static void ControleSonClient2(double d) {
Port lineOut;
try
{
if (AudioSystem.isLineSupported(Port.Info.LINE_OUT)) {
lineOut = (Port) AudioSystem.getLine(Port.Info.LINE_OUT);
lineOut.open();
} else if (AudioSystem.isLineSupported(Port.Info.HEADPHONE)) {
lineOut = (Port) AudioSystem.getLine(Port.Info.HEADPHONE);
lineOut.open();
} else if (AudioSystem.isLineSupported(Port.Info.SPEAKER)) {
lineOut = (Port) AudioSystem.getLine(Port.Info.SPEAKER);
lineOut.open();
} else {
System.out.println("Unable to get Output Port");
return;
}
FloatControl controlIn = (FloatControl)lineOut.getControl(FloatControl.Type.VOLUME);
float volume = 100 * (controlIn.getValue() / controlIn.getMaximum());
System.out.println("LINE_OUT : volume = " + volume);
controlIn.setValue((float)d / 100);
}
catch(final Exception e)
{
System.out.println(e + " LINE_OUT");
}
}
public static void main(String[] args) throws Exception
{
ControleSonClient2(50);
System.out.println("FIN");
}
}
************************************************************************
Est ce que vous pourriez m'aider à trouver une solution pour que ce code fonctionne sur toutes les plateformes actuelles. Est ce mes imports/méthodes que j'utilise qui ne sont plus utilisés ou le code en lui même qui ne va pas.
Merci de votre aide a tous.
Yohan
je viens vers vous car je rencontre actuellement un problème avec un programme JAVA.
En effet, je souhaite contrôler le son de mon système avec une méthode en JAVA.
Après quelques recherches sur le web, j'ai trouvé quelques programmes et celui dont je rencontre le problème fonctionne sous Windows XP mais ne fonctionne pas sur les versions supérieures de Windows ni sur Linux.
Voici le code en question :
************************************************************************
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.Port;
public class ControlSound2 {
static void ControleSonClient2(double d) {
Port lineOut;
try
{
if (AudioSystem.isLineSupported(Port.Info.LINE_OUT)) {
lineOut = (Port) AudioSystem.getLine(Port.Info.LINE_OUT);
lineOut.open();
} else if (AudioSystem.isLineSupported(Port.Info.HEADPHONE)) {
lineOut = (Port) AudioSystem.getLine(Port.Info.HEADPHONE);
lineOut.open();
} else if (AudioSystem.isLineSupported(Port.Info.SPEAKER)) {
lineOut = (Port) AudioSystem.getLine(Port.Info.SPEAKER);
lineOut.open();
} else {
System.out.println("Unable to get Output Port");
return;
}
FloatControl controlIn = (FloatControl)lineOut.getControl(FloatControl.Type.VOLUME);
float volume = 100 * (controlIn.getValue() / controlIn.getMaximum());
System.out.println("LINE_OUT : volume = " + volume);
controlIn.setValue((float)d / 100);
}
catch(final Exception e)
{
System.out.println(e + " LINE_OUT");
}
}
public static void main(String[] args) throws Exception
{
ControleSonClient2(50);
System.out.println("FIN");
}
}
************************************************************************
Est ce que vous pourriez m'aider à trouver une solution pour que ce code fonctionne sur toutes les plateformes actuelles. Est ce mes imports/méthodes que j'utilise qui ne sont plus utilisés ou le code en lui même qui ne va pas.
Merci de votre aide a tous.
Yohan
A voir également:
- Problème réglage de son système
- Restauration systeme windows 10 - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
- Reglage dns - Guide
- Reglage montre ushuaia ✓ - Forum Loisirs / Divertissements
2 réponses
Voici une modification de ton code. Chez moi seul le speaker est supporté, et c'est surement le support ou non de ton matériel qui fait la différence entre tes différents système. Avec les affichages que j'ai rajouté tu devrais mieux voir ce qui se passe.
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.Line;
import javax.sound.sampled.Line.Info;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Port;
public class ControlSound
{
public static void modifierVolume(float prctVolume, Port.Info...portsInfo) throws LineUnavailableException
{
for (Info info : portsInfo)
{
System.out.print(info);
if (AudioSystem.isLineSupported(info))
{
Line lineOut = AudioSystem.getLine(info);
lineOut.open();
FloatControl controlIn = (FloatControl) lineOut.getControl(FloatControl.Type.VOLUME);
System.out.print("\tvolume : "+(100* controlIn.getValue()/controlIn.getMaximum())+" %");
controlIn.setValue(prctVolume/100);
System.out.println(" ==> "+(100* controlIn.getValue()/controlIn.getMaximum())+" %");
lineOut.close();
}
else System.out.println("\tnot supported");
}
}
public static void main(String...args) throws LineUnavailableException
{
modifierVolume(50,Port.Info.LINE_OUT, Port.Info.HEADPHONE, Port.Info.SPEAKER);
}
}