Loading core/api/system-current.txt +13 −3 Original line number Diff line number Diff line Loading @@ -3221,6 +3221,7 @@ package android.companion.virtual { method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void close(); method @NonNull public android.content.Context createContext(); method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.audio.VirtualAudioDevice createVirtualAudioDevice(@NonNull android.hardware.display.VirtualDisplay, @Nullable java.util.concurrent.Executor, @Nullable android.companion.virtual.audio.VirtualAudioDevice.AudioConfigurationChangeCallback); method @FlaggedApi("android.companion.virtual.flags.virtual_camera") @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.camera.VirtualCamera createVirtualCamera(@NonNull android.companion.virtual.camera.VirtualCameraConfig); method @Deprecated @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@IntRange(from=1) int, @IntRange(from=1) int, @IntRange(from=1) int, @Nullable android.view.Surface, int, @Nullable java.util.concurrent.Executor, @Nullable android.hardware.display.VirtualDisplay.Callback); method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull android.hardware.display.VirtualDisplayConfig, @Nullable java.util.concurrent.Executor, @Nullable android.hardware.display.VirtualDisplay.Callback); method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.hardware.input.VirtualDpad createVirtualDpad(@NonNull android.hardware.input.VirtualDpadConfig); Loading Loading @@ -3275,6 +3276,7 @@ package android.companion.virtual { field @Deprecated public static final int NAVIGATION_POLICY_DEFAULT_BLOCKED = 1; // 0x1 field @FlaggedApi("android.companion.virtual.flags.dynamic_policy") public static final int POLICY_TYPE_ACTIVITY = 3; // 0x3 field public static final int POLICY_TYPE_AUDIO = 1; // 0x1 field @FlaggedApi("android.companion.virtual.flags.virtual_camera") public static final int POLICY_TYPE_CAMERA = 5; // 0x5 field @FlaggedApi("android.companion.virtual.flags.cross_device_clipboard") public static final int POLICY_TYPE_CLIPBOARD = 4; // 0x4 field public static final int POLICY_TYPE_RECENTS = 2; // 0x2 field public static final int POLICY_TYPE_SENSORS = 0; // 0x0 Loading Loading @@ -3357,30 +3359,38 @@ package android.companion.virtual.camera { @FlaggedApi("android.companion.virtual.flags.virtual_camera") public interface VirtualCameraCallback { method public default void onProcessCaptureRequest(int, long); method public void onStreamClosed(int); method public void onStreamConfigured(int, @NonNull android.view.Surface, @NonNull android.companion.virtual.camera.VirtualCameraStreamConfig); method public void onStreamConfigured(int, @NonNull android.view.Surface, @IntRange(from=1) int, @IntRange(from=1) int, int); } @FlaggedApi("android.companion.virtual.flags.virtual_camera") public final class VirtualCameraConfig implements android.os.Parcelable { method public int describeContents(); method public int getLensFacing(); method @NonNull public String getName(); method public int getSensorOrientation(); method @NonNull public java.util.Set<android.companion.virtual.camera.VirtualCameraStreamConfig> getStreamConfigs(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.companion.virtual.camera.VirtualCameraConfig> CREATOR; field public static final int SENSOR_ORIENTATION_0 = 0; // 0x0 field public static final int SENSOR_ORIENTATION_180 = 180; // 0xb4 field public static final int SENSOR_ORIENTATION_270 = 270; // 0x10e field public static final int SENSOR_ORIENTATION_90 = 90; // 0x5a } @FlaggedApi("android.companion.virtual.flags.virtual_camera") public static final class VirtualCameraConfig.Builder { ctor public VirtualCameraConfig.Builder(); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder addStreamConfig(int, int, int); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder addStreamConfig(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig build(); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setLensFacing(int); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setName(@NonNull String); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setSensorOrientation(int); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setVirtualCameraCallback(@NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.camera.VirtualCameraCallback); } @FlaggedApi("android.companion.virtual.flags.virtual_camera") public final class VirtualCameraStreamConfig implements android.os.Parcelable { ctor public VirtualCameraStreamConfig(@IntRange(from=1) int, @IntRange(from=1) int, int); method public int describeContents(); method public int getFormat(); method @IntRange(from=1) public int getHeight(); method @IntRange(from=1) public int getMaximumFramesPerSecond(); method @IntRange(from=1) public int getWidth(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.companion.virtual.camera.VirtualCameraStreamConfig> CREATOR; core/java/android/companion/virtual/VirtualDeviceManager.java +7 −4 Original line number Diff line number Diff line Loading @@ -901,11 +901,14 @@ public final class VirtualDeviceManager { } /** * Creates a new virtual camera. If a virtual camera was already created, it will be closed. * * @param config camera config. * @return newly created camera; * @hide * Creates a new virtual camera with the given {@link VirtualCameraConfig}. A virtual device * can create a virtual camera only if it has * {@link VirtualDeviceParams#DEVICE_POLICY_CUSTOM} as its * {@link VirtualDeviceParams#POLICY_TYPE_CAMERA}. * * @param config camera configuration. * @return newly created camera. * @see VirtualDeviceParams#POLICY_TYPE_CAMERA */ @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) @NonNull Loading core/java/android/companion/virtual/VirtualDeviceParams.java +22 −1 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ public final class VirtualDeviceParams implements Parcelable { * @hide */ @IntDef(prefix = "POLICY_TYPE_", value = {POLICY_TYPE_SENSORS, POLICY_TYPE_AUDIO, POLICY_TYPE_RECENTS, POLICY_TYPE_ACTIVITY}) POLICY_TYPE_RECENTS, POLICY_TYPE_ACTIVITY, POLICY_TYPE_CAMERA}) @Retention(RetentionPolicy.SOURCE) @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) public @interface PolicyType {} Loading Loading @@ -246,6 +246,23 @@ public final class VirtualDeviceParams implements Parcelable { @FlaggedApi(Flags.FLAG_CROSS_DEVICE_CLIPBOARD) public static final int POLICY_TYPE_CLIPBOARD = 4; /** * Tells the camera framework how to handle camera requests for the front and back cameras from * contexts associated with this virtual device. * * <ul> * <li>{@link #DEVICE_POLICY_DEFAULT}: Returns the front and back cameras of the default * device. * <li>{@link #DEVICE_POLICY_CUSTOM}: Returns the front and back cameras cameras of the * virtual device. Note that if the virtual device did not create any virtual cameras, * then no front and back cameras will be available. * </ul> * * @see Context#getDeviceId */ @FlaggedApi(Flags.FLAG_VIRTUAL_CAMERA) public static final int POLICY_TYPE_CAMERA = 5; private final int mLockState; @NonNull private final ArraySet<UserHandle> mUsersWithMatchingAccounts; @NavigationPolicy Loading Loading @@ -1153,6 +1170,10 @@ public final class VirtualDeviceParams implements Parcelable { mDevicePolicies.delete(POLICY_TYPE_CLIPBOARD); } if (!Flags.virtualCamera()) { mDevicePolicies.delete(POLICY_TYPE_CAMERA); } if ((mAudioPlaybackSessionId != AUDIO_SESSION_ID_GENERATE || mAudioRecordingSessionId != AUDIO_SESSION_ID_GENERATE) && mDevicePolicies.get(POLICY_TYPE_AUDIO, DEVICE_POLICY_DEFAULT) Loading core/java/android/companion/virtual/camera/IVirtualCameraCallback.aidl +15 −17 Original line number Diff line number Diff line Loading @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ package android.companion.virtual.camera; import android.companion.virtual.camera.VirtualCameraStreamConfig; import android.view.Surface; /** Loading @@ -32,36 +32,34 @@ interface IVirtualCameraCallback { * * @param streamId The id of the configured stream * @param surface The surface to write data into for this stream * @param streamConfig The image data configuration for this stream * @param width The width of the surface * @param height The height of the surface * @param format The pixel format of the surface */ oneway void onStreamConfigured( int streamId, in Surface surface, in VirtualCameraStreamConfig streamConfig); oneway void onStreamConfigured(int streamId, in Surface surface, int width, int height, int format); /** * The client application is requesting a camera frame for the given streamId and frameId. * * <p>The virtual camera needs to write the frame data in the {@link Surface} corresponding to * this stream that was provided during the {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} call. * this stream that was provided during the * {@link #onStreamConfigured(int, Surface, int, int, int)} call. * * @param streamId The streamId for which the frame is requested. This corresponds to the * streamId that was given in {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} * streamId that was given in {@link #onStreamConfigured(int, Surface, int, int, int)} * @param frameId The frameId that is being requested. Each request will have a different * frameId, that will be increasing for each call with a particular streamId. */ oneway void onProcessCaptureRequest(int streamId, long frameId); /** * The stream previously configured when {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} was called is now being closed and associated resources can be * freed. The Surface was disposed on the client side and should not be used anymore by the * virtual camera owner. * The stream previously configured when * {@link #onStreamConfigured(int, Surface, int, int, int)} was called is now being closed and * associated resources can be freed. The Surface was disposed on the client side and should not * be used anymore by the virtual camera owner. * * @param streamId The id of the stream that was closed. */ oneway void onStreamClosed(int streamId); } No newline at end of file core/java/android/companion/virtual/camera/VirtualCameraCallback.java +15 −13 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ package android.companion.virtual.camera; import android.annotation.FlaggedApi; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.SystemApi; import android.companion.virtual.flags.Flags; import android.graphics.ImageFormat; import android.view.Surface; import java.util.concurrent.Executor; Loading @@ -41,33 +43,33 @@ public interface VirtualCameraCallback { * * @param streamId The id of the configured stream * @param surface The surface to write data into for this stream * @param streamConfig The image data configuration for this stream * @param width The width of the surface * @param height The height of the surface * @param format The {@link ImageFormat} of the surface */ void onStreamConfigured( int streamId, @NonNull Surface surface, @NonNull VirtualCameraStreamConfig streamConfig); void onStreamConfigured(int streamId, @NonNull Surface surface, @IntRange(from = 1) int width, @IntRange(from = 1) int height, @ImageFormat.Format int format); /** * The client application is requesting a camera frame for the given streamId and frameId. * * <p>The virtual camera needs to write the frame data in the {@link Surface} corresponding to * this stream that was provided during the {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} call. * this stream that was provided during the * {@link #onStreamConfigured(int, Surface, int, int, int)} call. * * @param streamId The streamId for which the frame is requested. This corresponds to the * streamId that was given in {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} * streamId that was given in {@link #onStreamConfigured(int, Surface, int, int, int)} * @param frameId The frameId that is being requested. Each request will have a different * frameId, that will be increasing for each call with a particular streamId. */ default void onProcessCaptureRequest(int streamId, long frameId) {} /** * The stream previously configured when {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} was called is now being closed and associated resources can be * freed. The Surface corresponding to that streamId was disposed on the client side and should * not be used anymore by the virtual camera owner * The stream previously configured when * {@link #onStreamConfigured(int, Surface, int, int, int)} was called is now being closed and * associated resources can be freed. The Surface corresponding to that streamId was disposed on * the client side and should not be used anymore by the virtual camera owner. * * @param streamId The id of the stream that was closed. */ Loading Loading
core/api/system-current.txt +13 −3 Original line number Diff line number Diff line Loading @@ -3221,6 +3221,7 @@ package android.companion.virtual { method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void close(); method @NonNull public android.content.Context createContext(); method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.audio.VirtualAudioDevice createVirtualAudioDevice(@NonNull android.hardware.display.VirtualDisplay, @Nullable java.util.concurrent.Executor, @Nullable android.companion.virtual.audio.VirtualAudioDevice.AudioConfigurationChangeCallback); method @FlaggedApi("android.companion.virtual.flags.virtual_camera") @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.camera.VirtualCamera createVirtualCamera(@NonNull android.companion.virtual.camera.VirtualCameraConfig); method @Deprecated @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@IntRange(from=1) int, @IntRange(from=1) int, @IntRange(from=1) int, @Nullable android.view.Surface, int, @Nullable java.util.concurrent.Executor, @Nullable android.hardware.display.VirtualDisplay.Callback); method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull android.hardware.display.VirtualDisplayConfig, @Nullable java.util.concurrent.Executor, @Nullable android.hardware.display.VirtualDisplay.Callback); method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.hardware.input.VirtualDpad createVirtualDpad(@NonNull android.hardware.input.VirtualDpadConfig); Loading Loading @@ -3275,6 +3276,7 @@ package android.companion.virtual { field @Deprecated public static final int NAVIGATION_POLICY_DEFAULT_BLOCKED = 1; // 0x1 field @FlaggedApi("android.companion.virtual.flags.dynamic_policy") public static final int POLICY_TYPE_ACTIVITY = 3; // 0x3 field public static final int POLICY_TYPE_AUDIO = 1; // 0x1 field @FlaggedApi("android.companion.virtual.flags.virtual_camera") public static final int POLICY_TYPE_CAMERA = 5; // 0x5 field @FlaggedApi("android.companion.virtual.flags.cross_device_clipboard") public static final int POLICY_TYPE_CLIPBOARD = 4; // 0x4 field public static final int POLICY_TYPE_RECENTS = 2; // 0x2 field public static final int POLICY_TYPE_SENSORS = 0; // 0x0 Loading Loading @@ -3357,30 +3359,38 @@ package android.companion.virtual.camera { @FlaggedApi("android.companion.virtual.flags.virtual_camera") public interface VirtualCameraCallback { method public default void onProcessCaptureRequest(int, long); method public void onStreamClosed(int); method public void onStreamConfigured(int, @NonNull android.view.Surface, @NonNull android.companion.virtual.camera.VirtualCameraStreamConfig); method public void onStreamConfigured(int, @NonNull android.view.Surface, @IntRange(from=1) int, @IntRange(from=1) int, int); } @FlaggedApi("android.companion.virtual.flags.virtual_camera") public final class VirtualCameraConfig implements android.os.Parcelable { method public int describeContents(); method public int getLensFacing(); method @NonNull public String getName(); method public int getSensorOrientation(); method @NonNull public java.util.Set<android.companion.virtual.camera.VirtualCameraStreamConfig> getStreamConfigs(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.companion.virtual.camera.VirtualCameraConfig> CREATOR; field public static final int SENSOR_ORIENTATION_0 = 0; // 0x0 field public static final int SENSOR_ORIENTATION_180 = 180; // 0xb4 field public static final int SENSOR_ORIENTATION_270 = 270; // 0x10e field public static final int SENSOR_ORIENTATION_90 = 90; // 0x5a } @FlaggedApi("android.companion.virtual.flags.virtual_camera") public static final class VirtualCameraConfig.Builder { ctor public VirtualCameraConfig.Builder(); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder addStreamConfig(int, int, int); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder addStreamConfig(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig build(); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setLensFacing(int); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setName(@NonNull String); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setSensorOrientation(int); method @NonNull public android.companion.virtual.camera.VirtualCameraConfig.Builder setVirtualCameraCallback(@NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.camera.VirtualCameraCallback); } @FlaggedApi("android.companion.virtual.flags.virtual_camera") public final class VirtualCameraStreamConfig implements android.os.Parcelable { ctor public VirtualCameraStreamConfig(@IntRange(from=1) int, @IntRange(from=1) int, int); method public int describeContents(); method public int getFormat(); method @IntRange(from=1) public int getHeight(); method @IntRange(from=1) public int getMaximumFramesPerSecond(); method @IntRange(from=1) public int getWidth(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.companion.virtual.camera.VirtualCameraStreamConfig> CREATOR;
core/java/android/companion/virtual/VirtualDeviceManager.java +7 −4 Original line number Diff line number Diff line Loading @@ -901,11 +901,14 @@ public final class VirtualDeviceManager { } /** * Creates a new virtual camera. If a virtual camera was already created, it will be closed. * * @param config camera config. * @return newly created camera; * @hide * Creates a new virtual camera with the given {@link VirtualCameraConfig}. A virtual device * can create a virtual camera only if it has * {@link VirtualDeviceParams#DEVICE_POLICY_CUSTOM} as its * {@link VirtualDeviceParams#POLICY_TYPE_CAMERA}. * * @param config camera configuration. * @return newly created camera. * @see VirtualDeviceParams#POLICY_TYPE_CAMERA */ @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) @NonNull Loading
core/java/android/companion/virtual/VirtualDeviceParams.java +22 −1 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ public final class VirtualDeviceParams implements Parcelable { * @hide */ @IntDef(prefix = "POLICY_TYPE_", value = {POLICY_TYPE_SENSORS, POLICY_TYPE_AUDIO, POLICY_TYPE_RECENTS, POLICY_TYPE_ACTIVITY}) POLICY_TYPE_RECENTS, POLICY_TYPE_ACTIVITY, POLICY_TYPE_CAMERA}) @Retention(RetentionPolicy.SOURCE) @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) public @interface PolicyType {} Loading Loading @@ -246,6 +246,23 @@ public final class VirtualDeviceParams implements Parcelable { @FlaggedApi(Flags.FLAG_CROSS_DEVICE_CLIPBOARD) public static final int POLICY_TYPE_CLIPBOARD = 4; /** * Tells the camera framework how to handle camera requests for the front and back cameras from * contexts associated with this virtual device. * * <ul> * <li>{@link #DEVICE_POLICY_DEFAULT}: Returns the front and back cameras of the default * device. * <li>{@link #DEVICE_POLICY_CUSTOM}: Returns the front and back cameras cameras of the * virtual device. Note that if the virtual device did not create any virtual cameras, * then no front and back cameras will be available. * </ul> * * @see Context#getDeviceId */ @FlaggedApi(Flags.FLAG_VIRTUAL_CAMERA) public static final int POLICY_TYPE_CAMERA = 5; private final int mLockState; @NonNull private final ArraySet<UserHandle> mUsersWithMatchingAccounts; @NavigationPolicy Loading Loading @@ -1153,6 +1170,10 @@ public final class VirtualDeviceParams implements Parcelable { mDevicePolicies.delete(POLICY_TYPE_CLIPBOARD); } if (!Flags.virtualCamera()) { mDevicePolicies.delete(POLICY_TYPE_CAMERA); } if ((mAudioPlaybackSessionId != AUDIO_SESSION_ID_GENERATE || mAudioRecordingSessionId != AUDIO_SESSION_ID_GENERATE) && mDevicePolicies.get(POLICY_TYPE_AUDIO, DEVICE_POLICY_DEFAULT) Loading
core/java/android/companion/virtual/camera/IVirtualCameraCallback.aidl +15 −17 Original line number Diff line number Diff line Loading @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ package android.companion.virtual.camera; import android.companion.virtual.camera.VirtualCameraStreamConfig; import android.view.Surface; /** Loading @@ -32,36 +32,34 @@ interface IVirtualCameraCallback { * * @param streamId The id of the configured stream * @param surface The surface to write data into for this stream * @param streamConfig The image data configuration for this stream * @param width The width of the surface * @param height The height of the surface * @param format The pixel format of the surface */ oneway void onStreamConfigured( int streamId, in Surface surface, in VirtualCameraStreamConfig streamConfig); oneway void onStreamConfigured(int streamId, in Surface surface, int width, int height, int format); /** * The client application is requesting a camera frame for the given streamId and frameId. * * <p>The virtual camera needs to write the frame data in the {@link Surface} corresponding to * this stream that was provided during the {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} call. * this stream that was provided during the * {@link #onStreamConfigured(int, Surface, int, int, int)} call. * * @param streamId The streamId for which the frame is requested. This corresponds to the * streamId that was given in {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} * streamId that was given in {@link #onStreamConfigured(int, Surface, int, int, int)} * @param frameId The frameId that is being requested. Each request will have a different * frameId, that will be increasing for each call with a particular streamId. */ oneway void onProcessCaptureRequest(int streamId, long frameId); /** * The stream previously configured when {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} was called is now being closed and associated resources can be * freed. The Surface was disposed on the client side and should not be used anymore by the * virtual camera owner. * The stream previously configured when * {@link #onStreamConfigured(int, Surface, int, int, int)} was called is now being closed and * associated resources can be freed. The Surface was disposed on the client side and should not * be used anymore by the virtual camera owner. * * @param streamId The id of the stream that was closed. */ oneway void onStreamClosed(int streamId); } No newline at end of file
core/java/android/companion/virtual/camera/VirtualCameraCallback.java +15 −13 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ package android.companion.virtual.camera; import android.annotation.FlaggedApi; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.SystemApi; import android.companion.virtual.flags.Flags; import android.graphics.ImageFormat; import android.view.Surface; import java.util.concurrent.Executor; Loading @@ -41,33 +43,33 @@ public interface VirtualCameraCallback { * * @param streamId The id of the configured stream * @param surface The surface to write data into for this stream * @param streamConfig The image data configuration for this stream * @param width The width of the surface * @param height The height of the surface * @param format The {@link ImageFormat} of the surface */ void onStreamConfigured( int streamId, @NonNull Surface surface, @NonNull VirtualCameraStreamConfig streamConfig); void onStreamConfigured(int streamId, @NonNull Surface surface, @IntRange(from = 1) int width, @IntRange(from = 1) int height, @ImageFormat.Format int format); /** * The client application is requesting a camera frame for the given streamId and frameId. * * <p>The virtual camera needs to write the frame data in the {@link Surface} corresponding to * this stream that was provided during the {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} call. * this stream that was provided during the * {@link #onStreamConfigured(int, Surface, int, int, int)} call. * * @param streamId The streamId for which the frame is requested. This corresponds to the * streamId that was given in {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} * streamId that was given in {@link #onStreamConfigured(int, Surface, int, int, int)} * @param frameId The frameId that is being requested. Each request will have a different * frameId, that will be increasing for each call with a particular streamId. */ default void onProcessCaptureRequest(int streamId, long frameId) {} /** * The stream previously configured when {@link #onStreamConfigured(int, Surface, * VirtualCameraStreamConfig)} was called is now being closed and associated resources can be * freed. The Surface corresponding to that streamId was disposed on the client side and should * not be used anymore by the virtual camera owner * The stream previously configured when * {@link #onStreamConfigured(int, Surface, int, int, int)} was called is now being closed and * associated resources can be freed. The Surface corresponding to that streamId was disposed on * the client side and should not be used anymore by the virtual camera owner. * * @param streamId The id of the stream that was closed. */ Loading