# Class MixerProvider

java.lang.Object
javax.sound.sampled.spi.MixerProvider

public abstract class MixerProvider extends Object
A provider or factory for a particular mixer type. This mechanism allows the implementation to determine how resources are managed in creation / management of a mixer.

Since:
  1.3

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `MixerProvider()`
  Constructor for subclasses to call.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract Mixer`
  `getMixer(Mixer.Info info)`
  Obtains an instance of the mixer represented by the info object.
  `abstract Mixer.Info[]`
  `getMixerInfo()`
  Obtains the set of info objects representing the mixer or mixers provided by this MixerProvider.
  `boolean`
  `isMixerSupported(Mixer.Info info)`
  Indicates whether the mixer provider supports the mixer represented by the specified mixer info object.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### MixerProvider

    protected MixerProvider()
    Constructor for subclasses to call.

- ## Method Details

  - ### isMixerSupported

    public boolean isMixerSupported(Mixer.Info info)
    Indicates whether the mixer provider supports the mixer represented by the specified mixer info object.

    The full set of mixer info objects that represent the mixers supported by this `MixerProvider` may be obtained through the `getMixerInfo` method.

    Parameters:
      `info` - an info object that describes the mixer for which support is queried
    Returns:
      `true` if the specified mixer is supported, otherwise `false`
    Throws:
      `NullPointerException` - if `info` is `null`
    See Also:
      - `getMixerInfo()`

  - ### getMixerInfo

    public abstract Mixer.Info[] getMixerInfo()
    Obtains the set of info objects representing the mixer or mixers provided by this MixerProvider.

    The `isMixerSupported` method returns `true` for all the info objects returned by this method. The corresponding mixer instances for the info objects are returned by the `getMixer` method.

    Returns:
      a set of mixer info objects
    See Also:
      - `getMixer(Mixer.Info)`
      - `isMixerSupported(Mixer.Info)`

  - ### getMixer

    public abstract Mixer getMixer(Mixer.Info info)
    Obtains an instance of the mixer represented by the info object. If `null` is passed, then the default mixer will be returned.

    The full set of the mixer info objects that represent the mixers supported by this `MixerProvider` may be obtained through the `getMixerInfo` method. Use the `isMixerSupported` method to test whether this `MixerProvider` supports a particular mixer.

    Parameters:
      `info` - an info object that describes the desired mixer, or `null` for the default mixer
    Returns:
      mixer instance
    Throws:
      `IllegalArgumentException` - if the info object specified does not match the info object for a mixer supported by this `MixerProvider`, or if this `MixerProvider` does not have default mixer, but default mixer has been requested
    See Also:
      - `getMixerInfo()`
      - `isMixerSupported(Mixer.Info)`