Привет, я пытаюсь воспроизвести звук в java, код выглядит так:
public void playSound(String sound) {
try {
InputStream in = new FileInputStream(new File(sound));
AudioStream audio = new AudioStream(in);
AudioPlayer.player.start(audio);
} catch (Exception e) {}
}
Я импортировал sun.audio *; однако получить сообщение об ошибке:
Ограничение доступа: Тип "AudioPlayer" не является API (ограничение на требуемую библиотеку "C:\Program Files\Java\jre7\lib\rt.jar")
Следующая программа воспроизводит 16-битный звук wav из eclipse, если мы используем javax.sound.
import java.io.*;
import java.net.URL;
import javax.sound.sampled.*;
import javax.swing.*;
// To play sound using Clip, the process need to be alive.
// Hence, we use a Swing application.
public class SoundClipTest extends JFrame {
// Constructor
public SoundClipTest() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Test Sound Clip");
this.setSize(300, 200);
this.setVisible(true);
try {
// Open an audio input stream.
File soundFile = new File("C:/Users/niklas/workspace/assets/Sound/sound.wav"); //you could also get the sound file with an URL
AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
// Get a sound clip resource.
Clip clip = AudioSystem.getClip();
// Open audio clip and load samples from the audio input stream.
clip.open(audioIn);
clip.start();
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (LineUnavailableException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new SoundClipTest();
}
}
JFrame
как вы не добавляете новую функциональность в класс, и вы должны быть уверены, что пользовательский интерфейс создан в контексте потока диспетчеризации событий. Посмотрите Начальные Темы для большего количества деталей