Class DeviceDiscovery

  • All Implemented Interfaces:
    Releasable

    public class DeviceDiscovery
    extends java.lang.Object
    implements Releasable
    Use this class to discover local devices, such as microphones or cameras, to attach to the SDK. When you are no longer using any of the devices returned, you must call release() to make sure resources are cleaned up properly. Once release() is called, the devices that have been returned may stop working, and are no longer valid for attaching to a Broadcast or Stage.

    Note that the first time you use this class (either to create a DeviceDiscovery object or to access one of its static methods), you must ensure that you are not asynchronously accessing one of the following classes at the same time: Device, BroadcastSession or (if using Stages) Stage or StageAudioManager. Otherwise there is a risk of deadlock due to loading the underlying native library.

    • Constructor Detail

      • DeviceDiscovery

        public DeviceDiscovery​(android.content.Context context)
    • Method Detail

      • addOnDevicesChangedListener

        public void addOnDevicesChangedListener​(@NonNull
                                                DeviceDiscovery.OnDevicesChangedListener listener)
        Add a listener to be notified about device changes
        Parameters:
        listener - The listener to add
      • removeOnDevicesChangedListener

        public void removeOnDevicesChangedListener​(@NonNull
                                                   DeviceDiscovery.OnDevicesChangedListener listener)
        Removes a previously added device change listener
        Parameters:
        listener - The listener to remove
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable
      • release

        public void release()
        Release the resources associated with this device discovery session.
        Specified by:
        release in interface Releasable
      • listLocalDevices

        public java.util.List<Device> listLocalDevices()
        List available devices for use without attaching to either Stage or Broadcast session.
        Returns:
        a list of Devices representing attached devices such as cameras, microphones, and screen recording sessions. Note that if the Manifest.permission.CAMERA permission is not granted, no cameras will be returned. Similarly if the Manifest.permission.RECORD_AUDIO permission is not granted, no microphones will be returned.
      • createImageInputSource

        public CustomImageSource createImageInputSource​(BroadcastConfiguration.Vec2 size)
        Create an image input for a custom source. This should only be used if you intend to generate and feed image data to the SDK manually.
        Returns:
        A SurfaceSource that represents as Surface and can receive your samples.
        Throws:
        BroadcastException - if creating the image input source failed
      • createAudioInputSource

        public CustomAudioSource createAudioInputSource​(int channels,
                                                        BroadcastConfiguration.AudioSampleRate sampleRate,
                                                        AudioDevice.Format format)
        Create an audio input for a custom source. This should only be used if you intend to generate and feed pcm audio data to the SDK manually.
        Parameters:
        channels - The number of audio channels.
        sampleRate - The sampling rate for the PCM audio.
        format - The sample format.
        Returns:
        An AudioDevice that represents as Surface and can receive your samples.
        Throws:
        BroadcastException - if the parameters are invalid