Tôi đang làm việc với xử lý SMS, phần mềm dựa trên java và muốn phát âm thanh tiếng bíp/cảnh báo bất cứ khi nào chúng tôi nhận được tin nhắn. Tôi đã thử nhìn vào các thư viện java.sound và không thể tìm thấy bất cứ điều gì. Tôi không biết nếu đi các cách applet chơi một âm thanh sẽ không sao trong một ứng dụng java! Có bất kỳ âm thanh được xác định trước nào trong bất kỳ thư viện java nào mà chúng tôi có thể gọi trong một ứng dụng không? Mọi con trỏ sẽ được đánh giá cao!Làm cách nào để phát âm thanh (cảnh báo) trong ứng dụng java?
Trả lời
Bạn có thể có một cái nhìn tại các phương pháp bíp trong lớp Toolkit, như here
Tuyến Applet nên được tốt (và rất đơn giản). Để tránh tạo một cá thể Applet, bạn có thể sử dụng phương thức tĩnh newAudioClip
và sau đó gọi play()
trên số AudioClip
được tạo.
URL url = getClass().getResource("/foo/bar/sound.wav");
AudioClip clip = Applet.newAudioClip(url);
clip.play();
Nếu bạn muốn sử dụng gói âm thanh để đóng một tập tin âm thanh tùy ý, bạn có thể sử dụng gói javax.sound.sampled
. Đây là mã sẽ phát một tệp âm thanh:
private void playSound(File f) { Runnable r = new Runnable() { private File f; public void run() { playSoundInternal(this.f); } public Runnable setFile(File f) { this.f = f; return this; } }.setFile(f); new Thread(r).start(); } private void playSoundInternal(File f) { try { AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(f); try { Clip clip = AudioSystem.getClip(); clip.open(audioInputStream); try { clip.start(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } clip.drain(); } finally { clip.close(); } } catch (LineUnavailableException e) { e.printStackTrace(); } finally { audioInputStream.close(); } } catch (UnsupportedAudioFileException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
Bạn có thể giải thích lý do tại sao chúng ta cần chuỗi ngủ sau khi gọi clip.start()? – lucks
Đã một thời gian kể từ khi tôi viết mã này, nhưng tôi đoán là nó có thể hoạt động tốt với 'Thread.yield()'. –
Tôi đã đề cập đến lý do tại sao chúng tôi cần chặn ở vị trí đầu tiên, nhưng tôi nhận ra rằng có lẽ vì chúng tôi muốn đóng dòng trước khi kết thúc chơi – lucks
Bạn có thể tạo âm thanh của riêng mình nếu bạn tìm kiếm thứ gì đó ít nhàm chán hơn âm thanh bên ngoài.
import javax.sound.sampled.*;
public class SoundUtils {
public static float SAMPLE_RATE = 8000f;
public static void tone(int hz, int msecs)
throws LineUnavailableException
{
tone(hz, msecs, 1.0);
}
public static void tone(int hz, int msecs, double vol)
throws LineUnavailableException
{
byte[] buf = new byte[1];
AudioFormat af =
new AudioFormat(
SAMPLE_RATE, // sampleRate
8, // sampleSizeInBits
1, // channels
true, // signed
false); // bigEndian
SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
sdl.open(af);
sdl.start();
for (int i=0; i < msecs*8; i++) {
double angle = i/(SAMPLE_RATE/hz) * 2.0 * Math.PI;
buf[0] = (byte)(Math.sin(angle) * 127.0 * vol);
sdl.write(buf,0,1);
}
sdl.drain();
sdl.stop();
sdl.close();
}
public static void main(String[] args) throws Exception {
SoundUtils.tone(1000,100);
Thread.sleep(1000);
SoundUtils.tone(100,1000);
Thread.sleep(1000);
SoundUtils.tone(5000,100);
Thread.sleep(1000);
SoundUtils.tone(400,500);
Thread.sleep(1000);
SoundUtils.tone(400,500, 0.2);
}
}
thí nghiệm âm thanh hơn ở đây: Produce special sound effect
- 1. Làm cách nào để phát hiệu ứng âm thanh ngắn trong ứng dụng javascript?
- 2. Cách phát âm thanh thông báo android
- 3. Làm cách nào để kích hoạt cảnh báo âm thanh trong OSX bằng Cocoa?
- 4. Thông báo Android chỉ phát âm thanh
- 5. Android: Tôi làm cách nào để đưa Âm thanh thông báo bằng Tài nguyên âm thanh?
- 6. Làm cách nào để phát âm thanh trong WinForms?
- 7. Làm cách nào để phát âm thanh của iPhone?
- 8. Có cách nào để phát âm thanh cảnh báo khi một điểm ngắt được nhấn trong Eclipse không?
- 9. Làm cách nào để phát âm thanh cửa sổ chuẩn?
- 10. UILocalNotification phát âm thanh từ tài liệu ứng dụng
- 11. Tôi làm cách nào để phát âm thanh ngược lại với API âm thanh trên web?
- 12. Làm cách nào để phát tệp âm thanh với jQuery?
- 13. Cách phát một hiệu ứng âm thanh trong Android
- 14. Làm thế nào để phát âm thanh trong JavaScript
- 15. APNS không có Huy hiệu/Cảnh báo/Âm thanh
- 16. Cách phát tệp âm thanh
- 17. Làm thế nào để phát âm thanh TICK mặc định?
- 18. Làm cách nào để phát báo thức trong iOS nếu ứng dụng bị đóng?
- 19. Phát âm báo biến với Java?
- 20. Phát âm thanh nhỏ trong trò chơi Java
- 21. Cách sử dụng thông báo bằng âm thanh và rung?
- 22. Phát Âm thanh trong kịch bản Perl
- 23. Cách phát âm thanh từ tài nguyên
- 24. Máy phát âm thanh sóng sin trong Java
- 25. Tôi làm cách nào để truy cập âm thanh iOS mặc định để đặt âm thanh đó làm âm thanh thông báo?
- 26. Chỉ phát âm thanh thông báo mặc định (Android)
- 27. Cách phát âm thanh bằng Python KHÔNG làm gián đoạn âm nhạc/các âm thanh khác phát khi đang chơi
- 28. Âm thanh tạo Java
- 29. Làm cách nào để thực hiện các thao tác khi phát âm thanh trong iPhone?
- 30. API tốt nhất trong bất kỳ ngôn ngữ nào cho phát triển ứng dụng âm nhạc và âm thanh MIDI?
bất kỳ ý tưởng tại sao câu trả lời này không được sử dụng rộng rãi? Có vẻ như rất đơn giản và hữu ích ... – RaKXeR