Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

JavaFX: gestire gli errori di playback

Inseriamo un gestore degli errori per la fase di playback nel nostro media player basato sulle API (Application Programming Interface) del linguaggio Java
Inseriamo un gestore degli errori per la fase di playback nel nostro media player basato sulle API (Application Programming Interface) del linguaggio Java
Link copiato negli appunti

La riproduzione di un media può fallire per diverse ragioni, per questo motivo le API JavaFX consentono di intercettare e gestire opportunamente situazioni di fallimento. Un ruolo importante è rappresentato dalla classe javafx.scene.media.MediaException. All'interno di questa classe troviamo infatti un'enumerazione statica, MediaException.Type, le cui costanti identificano il tipo di errore: MEDIA_CORRUPTED, MEDIA_INACCESSIBLE, MEDIA_UNAVAILABLE etc.

Un player pronto all'uso

Per poter verificare il funzionamento della gestione degli errori di playback, riprendiamo il semplice video player con i due pulsanti play e stop:

public class FxMediaExample extends Application {
    public static void main(String[] args) {
        Application.launch(args);
    }
    @Override
    public void start(Stage stage) throws MalformedURLException {
        URL mediaUrl = new URL("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4");
        Media media = new Media(mediaUrl.toExternalForm());
        MediaPlayer player = new MediaPlayer(media);
        player.setAutoPlay(false);
        Button playButton = new Button("Play");
        Button stopButton = new Button("Stop");
        playButton.setOnAction((ActionEvent event) -> {
            if (player.getStatus() == Status.PLAYING) {
                player.stop();
                player.play();
            } else {
                player.play();
            }
        });
        stopButton.setOnAction((ActionEvent event) -> {
            player.stop();
        });
        MediaView mediaView = new MediaView(player);
        mediaView.setFitWidth(350);
        mediaView.setFitHeight(200);
        mediaView.setSmooth(true);
        // Qui playback error management
        HBox controlBox = new HBox(5, playButton, stopButton);
        VBox root = new VBox(5, mediaView, controlBox, markerMessage);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setTitle("Media Player Demo");
        stage.show();
    }
}

Error playback management

Per ciascun oggetto chiave (Media, MediaPlayer e MediaView) andiamo ad aggiungere, nel codice precedente, un gestore di errore in sostituzione del commento inserito:

player.setOnError(() -> {
            errorMessage(player.getError());
        });
        media.setOnError(() -> {
            errorMessage(player.getError());
        });
        mediaView.setOnError((MediaErrorEvent event) -> {
            errorMessage(event.getMediaError());
        });

Aggiungiamo inoltre un metodo ausiliaro per la stampa dell'evento di errore:

private void errorMessage(MediaException error) {
        	MediaException.Type errorType = error.getType();
        	String errorMessage = error.getMessage();
        	System.out.println("Message:"+errorMessage+" Type:"+errorType);
    	}

Per testare i vari errori di playback possiamo cambiare l'URL del file mp4 in modo tale che punti di volta in volta a file un differente in grado di evidenziare un specifico errore.


Ti consigliamo anche