MediaProjection
class MediaProjection
kotlin.Any | |
↳ | 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 android.media.projection.MediaProjectionManager#createScreenCaptureIntent. This grants the ability to capture screen contents, but not system audio.
Summary
Nested classes | |
---|---|
abstract |
Callbacks for the projection session. |
Public methods | |
---|---|
VirtualDisplay? |
createVirtualDisplay(name: String, width: Int, height: Int, dpi: Int, flags: Int, surface: Surface?, callback: VirtualDisplay.Callback?, handler: Handler?) Creates a |
Unit |
registerCallback(callback: MediaProjection.Callback, handler: Handler?) Register a listener to receive notifications about when the |
Unit |
stop() Stops projection. |
Unit |
unregisterCallback(callback: MediaProjection.Callback) Unregister a |
Public methods
createVirtualDisplay
fun createVirtualDisplay(
name: String,
width: Int,
height: Int,
dpi: Int,
flags: Int,
surface: Surface?,
callback: VirtualDisplay.Callback?,
handler: Handler?
): VirtualDisplay?
Creates a android.hardware.display.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. |
surface |
Surface?: The surface to which the content of the virtual display should be rendered, or null if there is none initially. |
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: android.hardware.display.DisplayManager#VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY , android.hardware.display.DisplayManager#VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR , android.hardware.display.DisplayManager#VIRTUAL_DISPLAY_FLAG_PUBLIC . Value is either 0 or a combination of android.hardware.display.DisplayManager#VIRTUAL_DISPLAY_FLAG_PUBLIC , android.hardware.display.DisplayManager#VIRTUAL_DISPLAY_FLAG_PRESENTATION , android.hardware.display.DisplayManager#VIRTUAL_DISPLAY_FLAG_SECURE , android.hardware.display.DisplayManager#VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY , android.hardware.display.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 |
callback |
VirtualDisplay.Callback?: Callback invoked when the virtual display's state changes, or null. |
handler |
Handler?: The android.os.Handler on which the callback should be invoked, or null if the callback should be invoked on the calling thread's main android.os.Looper . |
Return | |
---|---|
VirtualDisplay? |
The created VirtualDisplay , or null if no VirtualDisplay could be created. |
Exceptions | |
---|---|
java.lang.IllegalStateException |
If the target SDK is U and up, and if no Callback is registered. |
java.lang.SecurityException |
In any of the following scenarios:
U . Instead, recording doesn't begin until the user re-grants consent in the dialog. |
registerCallback
fun registerCallback(
callback: MediaProjection.Callback,
handler: Handler?
): Unit
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. |
Exceptions | |
---|---|
java.lang.NullPointerException |
If the given callback is null. |
See Also
unregisterCallback
fun unregisterCallback(callback: MediaProjection.Callback): Unit
Unregister a MediaProjection
listener.
Parameters | |
---|---|
callback |
MediaProjection.Callback: The callback to unregister. This value cannot be null . |
Exceptions | |
---|---|
java.lang.NullPointerException |
If the given callback is null. |
See Also