Kısa bir klip oluşturup çaldıktan sonra start()
yöntemini arıyorum. Daha sonra, yürütmeyi klip oynatma tamamlanana kadar engellemek için drain()
yöntemini çağırın. Ancak, aşağıdaki kod birkaç kez çalıştırırken, bazen çalışır, bazen yoktur ve ses bitmeden önce rasgele durur.Java'nın Klip sınıfındaki süzme yöntemi
Mixer mixer = AudioSystem.getMixer(null);
AudioFormat format = new AudioFormat(44100, 8, 1, true, false);
DataLine.Info info = new DataLine.Info(Clip.class, format);
try {
// Create a sound of 1 second
Clip clip = (Clip)mixer.getLine(info);
byte[] b = new byte[44100];
for(int i=0; i<b.length; i++)
b[i] = (byte) (50*Math.sin(i/10.0));
clip.open(format, b, 0, b.length);
clip.setFramePosition(0);
clip.start();
clip.drain();
} catch(LineUnavailableException lue) { lue.printStackTrace(); }
Bu yüzden sorum şu: bu bir hatadır mı? veya drain()
yöntemini yanlış anladım mı?