/* * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.media.jfxmedia; import com.sun.media.jfxmedia.events.MediaErrorListener; import com.sun.media.jfxmedia.locator.Locator; import com.sun.media.jfxmediaimpl.NativeMediaManager; import java.util.List; /** * Factory class used to create media objects, players, and recorders, and to * manage other global functionality. * * @see MediaPlayer * @see MediaRecorder */ public class MediaManager { private MediaManager() { // prevent instantiation of this class } /** * @return {@link String} array of supported content types. */ public static String[] getSupportedContentTypes() { return NativeMediaManager.getDefaultInstance().getSupportedContentTypes(); } /** * Whether a media source having the indicated content type may be * played. * * @throws IllegalArgumentException if contentType is * null. */ public static boolean canPlayContentType(String contentType) { if (contentType == null) { throw new IllegalArgumentException("contentType == null!"); } return NativeMediaManager.getDefaultInstance().canPlayContentType(contentType); } /** * Whether a media source having the indicated protocol may be * played. * * @throws IllegalArgumentException if contentType is * null. */ public static boolean canPlayProtocol(String protocol) { if (protocol == null) { throw new IllegalArgumentException("protocol == null!"); } return NativeMediaManager.getDefaultInstance().canPlayProtocol(protocol); } // XXX javadoc public static MetadataParser getMetadataParser(Locator locator) { if (locator == null) { throw new IllegalArgumentException("locator == null!"); } return NativeMediaManager.getDefaultInstance().getMetadataParser(locator); } /** * Gets a Media object for the clip. It cannot be played without attaching * to a MediaPlayer. * * @param locator * @return Media object * @throws IllegalArgumentException if locator is * null. */ public static Media getMedia(Locator locator) { if (locator == null) { throw new IllegalArgumentException("locator == null!"); } return NativeMediaManager.getDefaultInstance().getMedia(locator); } /** * Get a player for the media locator * * @param locator * @return MediaPlayer object * @throws IllegalArgumentException if locator is * null. */ public static MediaPlayer getPlayer(Locator locator) { if (locator == null) { throw new IllegalArgumentException("locator == null!"); } return NativeMediaManager.getDefaultInstance().getPlayer(locator); } /** * Add a global listener for warnings. This listener will receive warnings * which occur fall outside the context of a particular player or recorder. * * @param listener The listener to add. * @throws IllegalArgumentException if listener is * null. */ public static void addMediaErrorListener(MediaErrorListener listener) { if (listener == null) { throw new IllegalArgumentException("listener == null!"); } NativeMediaManager.getDefaultInstance().addMediaErrorListener(listener); } /** * Remove a global listener for warnings. * * @param listener The listener to remove. * @throws IllegalArgumentException if listener is * null. */ public static void removeMediaErrorListener(MediaErrorListener listener) { if (listener == null) { throw new IllegalArgumentException("listener == null!"); } NativeMediaManager.getDefaultInstance().removeMediaErrorListener(listener); } /** * This function will register MediaPlayer for disposing when obj parameter * does not have any strong reference. * * @param obj - Object to watch for strong references * @param player - MediaPlayer to dispose */ public static void registerMediaPlayerForDispose(Object obj, MediaPlayer player) { NativeMediaManager.registerMediaPlayerForDispose(obj, player); } /** * Retrieve all un-disposed {@link MediaPlayer}s. * @return a {@link List} of all un-disposed players or null. */ public static List getAllMediaPlayers() { return NativeMediaManager.getDefaultInstance().getAllMediaPlayers(); } }