VirtualDeviceManager
class VirtualDeviceManager
| kotlin.Any | |
| ↳ | android.companion.virtual.VirtualDeviceManager |
System level service for creation and management of virtual devices.
VirtualDeviceManager enables interactive sharing of capabilities between the host Android device and a remote device.
A device only supports VirtualDeviceManager if it enables it via config_enableVirtualDeviceManager. Otherwise Context#getSystemService (VirtualDeviceManager.class) will return null.
VirtualDeviceManager provides support for the ComputerControl feature in Android. For a device to support the ComputerControl feature, the device needs to:
- Enable support for feature
android.software.activities_on_secondary_displays - Enable support for VirtualDeviceManager
config_enableVirtualDeviceManager - Preload the ComputerControl extensions library
com.android.extensions .computercontrol - Preload the platform application
VirtualDeviceManager
Devices that support the ComputerControl feature:
- MUST only allow applications to use the Computer Controls API if it is listed in the latest version of the agent allowlist.
- MUST NOT allow a Computer Controls Agent to automate any target applications that:
- Are not included in the latest version of the allowlist OR
- Are included in the latest version of the Computer Controls denylist OR
- Do not have explicit opt-in user consent for automation by the requesting Computer Controls Agent
- MAY remove applications from the Computer Controls allowlist, or MAY add applications to the Computer Controls denylist, provided it results in a more restrictive set of automatable applications
ComputerControl may only be used by agent applications holding the android.Manifest.permission#ACCESS_COMPUTER_CONTROL permission and meeting the relevant policy requirements. Only the current ASSISTANT role holder can use ComputerControl.
Not to be confused with the Android Studio's Virtual Device Manager, which allows for device emulation.
Restricted for SDK Runtime environment in API level 34.
Summary
| Nested classes | |
|---|---|
| abstract |
Listener for changes in the available virtual devices. |
| Public methods | |
|---|---|
| VirtualDevice? |
getVirtualDevice(deviceId: Int)Returns the details of the virtual device with the given ID, if any. |
| MutableList<VirtualDevice!> |
Returns the details of all available virtual devices. |
| Unit |
registerVirtualDeviceListener(executor: Executor, listener: VirtualDeviceManager.VirtualDeviceListener)Registers a virtual device listener to receive notifications when virtual devices are created or closed. |
| Unit |
Unregisters a virtual device listener previously registered with |
Public methods
getVirtualDevice
fun getVirtualDevice(deviceId: Int): VirtualDevice?
Returns the details of the virtual device with the given ID, if any.
The returned object is a read-only representation of the virtual device that expose its properties.
Note that if the virtual device is closed and becomes invalid, the returned object will not be updated and may contain stale values. Use a VirtualDeviceListener for real time updates of the availability of virtual devices.
| Return | |
|---|---|
VirtualDevice? |
the virtual device with the requested ID, or null if no such device exists or it has already been closed. |
getVirtualDevices
fun getVirtualDevices(): MutableList<VirtualDevice!>
Returns the details of all available virtual devices.
The returned objects are read-only representations that expose the properties of all existing virtual devices.
Note that if a virtual device is closed and becomes invalid, the returned objects will not be updated and may contain stale values. Use a VirtualDeviceListener for real time updates of the availability of virtual devices.
| Return | |
|---|---|
MutableList<VirtualDevice!> |
This value cannot be null. |
registerVirtualDeviceListener
fun registerVirtualDeviceListener(
executor: Executor,
listener: VirtualDeviceManager.VirtualDeviceListener
): Unit
Registers a virtual device listener to receive notifications when virtual devices are created or closed.
| Parameters | |
|---|---|
executor |
Executor: The executor where the listener is executed on. This value cannot be null. Callback and listener events are dispatched through this Executor, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use Context.getMainExecutor(). Otherwise, provide an Executor that dispatches to an appropriate thread. |
listener |
VirtualDeviceManager.VirtualDeviceListener: The listener to add. This value cannot be null. |
See Also
unregisterVirtualDeviceListener
fun unregisterVirtualDeviceListener(listener: VirtualDeviceManager.VirtualDeviceListener): Unit
Unregisters a virtual device listener previously registered with registerVirtualDeviceListener.
| Parameters | |
|---|---|
listener |
VirtualDeviceManager.VirtualDeviceListener: The listener to unregister. This value cannot be null. |
See Also