MediaProjection
public
final
class
MediaProjection
extends Object
java.lang.Object | |
↳ | android.media.projection.MediaProjection |
A token granting applications the ability to capture screen contents and/or record system audio. The exact capabilities granted depend on the type of MediaProjection.
A screen capture session can be started through MediaProjectionManager.createScreenCaptureIntent()
. This grants the ability to
capture screen contents, but not system audio.
Summary
Nested classes | |
---|---|
class |
MediaProjection.Callback
Callbacks for the projection session. |
Public methods | |
---|---|
VirtualDisplay
|
createVirtualDisplay(String name, int width, int height, int dpi, int flags, Surface surface, VirtualDisplay.Callback callback, Handler handler)
Creates a |
void
|
registerCallback(MediaProjection.Callback callback, Handler handler)
Register a listener to receive notifications about when the |
void
|
stop()
Stops projection. |
void
|
unregisterCallback(MediaProjection.Callback callback)
Unregister a |
Inherited methods | |
---|---|
Public methods
createVirtualDisplay
public VirtualDisplay createVirtualDisplay (String name, int width, int height, int dpi, int flags, Surface surface, VirtualDisplay.Callback callback, Handler handler)
Creates a VirtualDisplay
to capture the contents of the
screen.
To correctly clean up resources associated with a capture, the application must register a
Callback
before invocation. The app must override Callback.onStop()
to clean up
resources (by invokingVirtualDisplay.release()
, Surface.release()
and related
resources) and to update any available UI regarding the MediaProjection status.
Parameters | |
---|---|
name |
String : The name of the virtual display, must be non-empty.
This value cannot be null . |
width |
int : The width of the virtual display in pixels. Must be greater than 0. |
height |
int : The height of the virtual display in pixels. Must be greater than 0. |
dpi |
int : The density of the virtual display in dpi. Must be greater than 0. |
flags |
int : A combination of virtual display flags. See DisplayManager for the full
list of flags. Note that DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION is always
enabled. The following flags may be overridden, depending on how the component with
{android.Manifest.permission.MANAGE_MEDIA_PROJECTION} handles the user's consent: DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY , DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR , DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC .
Value is either 0 or a combination of DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC , DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION , DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE , DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY , DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR , android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_ROTATES_WITH_CONTENT, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_TRUSTED, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_DISPLAY_GROUP, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_ALWAYS_UNLOCKED, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_TOUCH_FEEDBACK_DISABLED, android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_FOCUS, and android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_STEAL_TOP_FOCUS_DISABLED |
surface |
Surface : The surface to which the content of the virtual display should be rendered, or
null if there is none initially. |
callback |
VirtualDisplay.Callback : Callback invoked when the virtual display's state changes, or null. |
handler |
Handler : The Handler on which the callback should be invoked, or null
if the callback should be invoked on the calling thread's main Looper . |
Returns | |
---|---|
VirtualDisplay |
The created VirtualDisplay , or null if no VirtualDisplay could
be created. |
Throws | |
---|---|
IllegalStateException |
If the target SDK is U and up, and if no Callback is
registered. |
SecurityException |
In any of the following scenarios:
U . Instead, recording doesn't begin until
the user re-grants consent in the dialog. |
See also:
registerCallback
public void registerCallback (MediaProjection.Callback callback, Handler handler)
Register a listener to receive notifications about when the MediaProjection
or
captured content changes state.
The callback must be registered before invoking createVirtualDisplay(java.lang.String, int, int, int, int, android.view.Surface, android.hardware.display.VirtualDisplay.Callback, android.os.Handler)
to ensure that any notifications
on the callback are not missed. The client must implement Callback.onStop()
to
properly handle MediaProjection clean up any resources it is holding, e.g. the VirtualDisplay
and Surface
. This should also update any application UI indicating
the MediaProjection status as MediaProjection has stopped.
Parameters | |
---|---|
callback |
MediaProjection.Callback : The callback to call.
This value cannot be null . |
handler |
Handler : The handler on which the callback should be invoked, or null if the callback
should be invoked on the calling thread's looper. |
Throws | |
---|---|
NullPointerException |
If the given callback is null. |
See also:
unregisterCallback
public void unregisterCallback (MediaProjection.Callback callback)
Unregister a MediaProjection
listener.
Parameters | |
---|---|
callback |
MediaProjection.Callback : The callback to unregister.
This value cannot be null . |
Throws | |
---|---|
NullPointerException |
If the given callback is null. |
See also:
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-12-18 UTC.