0

Basically I'm tryin' to update some old code with deprecated java applet stuff to javafx, I think the main problem for some reason that javafx's audioclip doesn't support ".au" files and I'm getting this error, I'd like to know if there is anyway to fix it/ use other ways to play the audio in javafx without actually convert the file types.

the original code:

import java.applet.*;

public class AnnounceTimeOnSeparateThread implements Runnable{
 private AudioClip[] hourAudio = new AudioClip[12];
 private AudioClip[] minuteAudio = new AudioClip[60];
 private AudioClip amAudio = Applet.newAudioClip(this.getClass().getResource("/audio/am.au"));
 private AudioClip pmAudio = Applet.newAudioClip(this.getClass().getResource("/audio/pm.au"));
 private int hour;
 private int minute;
 public AnnounceTimeOnSeparateThread() {
  for (int i = 0; i < 12; i++)
   hourAudio[i] = Applet.newAudioClip(this.getClass().getResource("/audio/hour" + i + ".au"));
  for (int i = 0; i < 60; i++)
   minuteAudio[i] = Applet.newAudioClip(this.getClass().getResource("/audio/minute" + i + ".au"));
 }

 public void setHour(int hour) {
  this.hour=hour;
 }
 public void setMinute(int minute) {
  this.minute=minute;
 }
 public void run() {
  try{ 
   hourAudio[hour % 12].play();
   Thread.sleep(1500);
   minuteAudio[minute].play();
   Thread.sleep(1500);
   }catch (InterruptedException ex) {
   }
  if (hour < 12)
   amAudio.play();
  else
   pmAudio.play();
  }
 }

my updated attempt with the error: (basically minor changes just changing it to fx syntax and importing))

import javafx.scene.media.AudioClip;

public class AnnounceTimeOnSeparateThread implements Runnable {
 private AudioClip[] hourAudio = new AudioClip[12];
 private AudioClip[] minuteAudio = new AudioClip[60];
 private AudioClip amAudio = new AudioClip(this.getClass().getResource("/audio/am.au").toExternalForm());
 private AudioClip pmAudio =new AudioClip(this.getClass().getResource("/audio/pm.au").toExternalForm());
 private int hour;
 private int minute;

 public AnnounceTimeOnSeparateThread() {
  for (int i = 0; i < 12; i++)
   hourAudio[i] = new AudioClip(this.getClass().getResource("/audio/hour" + i + ".au").toExternalForm());
  for (int i = 0; i < 60; i++)
   minuteAudio[i] = new AudioClip(this.getClass().getResource("/audio/minute" + i + ".au").toExternalForm());
 }
Stellar
  • 1
  • 4
  • 1
    To note, the supported media formats are documented by the [`javafx.scene.media`](https://openjfx.io/javadoc/11/javafx.media/javafx/scene/media/package-summary.html) package. – Slaw Dec 31 '18 at 23:01
  • If you have control over these files, I'd recommend using mp3 instead since it's better and FX supports it. – Radiodef Jan 01 '19 at 00:21

0 Answers0