Package com.twilio.video
Class ScreenCapturer
java.lang.Object
com.twilio.video.ScreenCapturer
- All Implemented Interfaces:
VideoCapturer
,VideoCapturer
The ScreenCapturer class is used to provide video frames for a
LocalVideoTrack
from a
device's screen. The frames are provided via the MediaProjection
api. This capturer is
only compatible with Build.VERSION_CODES.LOLLIPOP
or higher.
This class represents an implementation of a VideoCapturer
interface. Although public,
these methods are not meant to be invoked directly.
Note: This capturer can be reused, but cannot be shared across multiple LocalVideoTrack
s simultaneously.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Interface that provides events and errors related toScreenCapturer
. -
Constructor Summary
ConstructorDescriptionScreenCapturer
(android.content.Context context, int screenCaptureIntentResult, android.content.Intent screenCaptureIntentData, ScreenCapturer.Listener screenCapturerListener) ScreenCapturer
(android.content.Context context, int screenCaptureIntentResult, android.content.Intent screenCaptureIntentData, ScreenCapturer.Listener screenCapturerListener, int framesPerSecond) -
Method Summary
Modifier and TypeMethodDescriptionvoid
dispose()
This method provides an optional step to perform a final cleanup.void
initialize
(SurfaceTextureHelper surfaceTextureHelper, android.content.Context context, CapturerObserver capturerObserver) This function is used to initialize the camera thread, the android application context, and the capture observer.boolean
Indicates that the screen capturer is a screencast.void
startCapture
(int width, int height, int framerate) Start capturing frames in a format that is as close as possible towidth x height
andframerate
.void
Stops all frames being captured.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.twilio.video.VideoCapturer
changeCaptureFormat
-
Constructor Details
-
ScreenCapturer
public ScreenCapturer(@NonNull android.content.Context context, int screenCaptureIntentResult, @NonNull android.content.Intent screenCaptureIntentData, @Nullable ScreenCapturer.Listener screenCapturerListener, int framesPerSecond) -
ScreenCapturer
public ScreenCapturer(@NonNull android.content.Context context, int screenCaptureIntentResult, @NonNull android.content.Intent screenCaptureIntentData, @Nullable ScreenCapturer.Listener screenCapturerListener)
-
-
Method Details
-
getCaptureFormat
- Specified by:
getCaptureFormat
in interfaceVideoCapturer
-
isScreencast
public boolean isScreencast()Indicates that the screen capturer is a screencast.- Specified by:
isScreencast
in interfaceVideoCapturer
- Returns:
- true if-and-only-if this is a screen capturer.
-
initialize
public void initialize(@NonNull SurfaceTextureHelper surfaceTextureHelper, @NonNull android.content.Context context, @NonNull CapturerObserver capturerObserver) Description copied from interface:VideoCapturer
This function is used to initialize the camera thread, the android application context, and the capture observer. It will be called only once and before any startCapture() request. The camera thread is guaranteed to be valid until dispose() is called. If the VideoCapturer wants to deliver texture frames, it should do this by rendering on the SurfaceTexture insurfaceTextureHelper
, register itself as a listener, and forward the frames to CapturerObserver.onFrameCaptured(). The caller still has ownership ofsurfaceTextureHelper
and is responsible for making sure surfaceTextureHelper.dispose() is called. This also means that the caller can reuse the SurfaceTextureHelper to initialize a new VideoCapturer once the previous VideoCapturer has been disposed.- Specified by:
initialize
in interfaceVideoCapturer
-
startCapture
public void startCapture(int width, int height, int framerate) Description copied from interface:VideoCapturer
Start capturing frames in a format that is as close as possible towidth x height
andframerate
.- Specified by:
startCapture
in interfaceVideoCapturer
-
stopCapture
public void stopCapture()Stops all frames being captured.MediaProjection
should be available for use upon completion.Note: This method is not meant to be invoked directly.
- Specified by:
stopCapture
in interfaceVideoCapturer
-
dispose
public void dispose()Description copied from interface:VideoCapturer
This method provides an optional step to perform a final cleanup.- Specified by:
dispose
in interfaceVideoCapturer
- Specified by:
dispose
in interfaceVideoCapturer
-