Search code examples
javajavafxjavafx-8javafx-2

how i can play the audio when i write any number by javafx


i have small project in middel of the window textfield when i put the number i need to call by audio what number i write it on texfield for example i wrote number : 1 enter and the audio is working for one time is play agian when i wrote the same number or another number and stop it etc...

i have searching the code what is responsibility for like this project but i just a found play audio

//this the text field what i have to write the number on it 
//(numberscreen)
//screen1,screen2...etc it's for passing the old number from number 
//screen 

@FXML
private TextField numberscreen;

@FXML
public void screeninsert() {
    play();
    String enteredText = numberscreen.getText();
    String enteredText1 = screen1.getText();
    String enteredText2 = screen2.getText();
    String enteredText3 = screen3.getText();
    String enteredText4 = screen4.getText();
    String enteredText5 = screen5.getText();
    String enteredText6 = screen6.getText();
    numberscreen.clear();
    screen1.setText(enteredText);
    screen2.setText(enteredText1);
    screen3.setText(enteredText2);
    screen4.setText(enteredText3);
    screen5.setText(enteredText4);
    screen6.setText(enteredText5);
    screen7.setText(enteredText6);

 }

public void AudioPlay(){
URL url = 
this.getClass().getClassLoader().getResource("audio/1.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(url); 
AudioFormat littleEndianFormat = getAudioFormat();
AudioInputStream converted = 
AudioSystem.getAudioInputStream(littleEndianFormat, ais);
}

please any solution for passing the number what i write it to audio file to play audio name thanks


Solution

  • @FXML
        private TextField numberscreen;
    
    public void AudioPlay() {
            filestring = new File("src\\audio\\" + numberscreen.getText().trim() + ".wav");
            Media file = new Media(filestring.toURI().toString());
    
            mp = new MediaPlayer(file);
    
            mp.setOnReady(new Runnable() {
                @Override
                public void run() {
                    System.out.println("Duration: " + file.getDuration().toMinutes());
                    // display media's metadata
                    file.getMetadata().entrySet().forEach((entry) -> {
                        System.out.println(entry.getKey() + ": " + entry.getValue());
                        mp.seek(Duration.millis(200));
                    });
                    mp.setOnEndOfMedia(new Runnable() {
                        @Override
                        public void run() {
                            mp.stop();
                            if (mp.isAutoPlay()) {
                                //Plays the subsequent files
                            }
                            return;
                        }
                    });
                    // play if you want
                    mp.play();
    
                }
            });
    
        }
    

    this the solution what i need it i solved the problem i found it by myself