From 0a72437088b3e8387aa6ab77e20293bc2385788a Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 16 Feb 2020 22:18:38 +0100 Subject: update to sdk 29, migrate to androidx, new GUI --- .../javispedro/vndroid/ScreenMirrorGrabber.java | 36 +++++++++++++++++----- 1 file changed, 29 insertions(+), 7 deletions(-) (limited to 'app/src/main/java/com/javispedro/vndroid/ScreenMirrorGrabber.java') diff --git a/app/src/main/java/com/javispedro/vndroid/ScreenMirrorGrabber.java b/app/src/main/java/com/javispedro/vndroid/ScreenMirrorGrabber.java index 9f78b3c..c223c65 100644 --- a/app/src/main/java/com/javispedro/vndroid/ScreenMirrorGrabber.java +++ b/app/src/main/java/com/javispedro/vndroid/ScreenMirrorGrabber.java @@ -1,34 +1,50 @@ package com.javispedro.vndroid; +import android.app.Activity; import android.content.Context; +import android.content.Intent; import android.graphics.PixelFormat; import android.hardware.display.DisplayManager; import android.media.ImageReader; import android.media.projection.MediaProjection; +import android.media.projection.MediaProjectionManager; import android.os.Handler; -import android.support.annotation.NonNull; import android.util.DisplayMetrics; import android.util.Log; import android.view.Display; +import android.view.WindowManager; public class ScreenMirrorGrabber extends ScreenGrabber { private static final String TAG = ScreenMirrorGrabber.class.getSimpleName(); - protected final MediaProjection projection; - protected final Display realDisplay; + protected MediaProjection projection; - protected final DisplayMetrics realDisplayMetrics; + protected int projAskCode; + protected Intent projAskData; + + protected Display realDisplay; + protected DisplayMetrics realDisplayMetrics; private float scale = 0.5f; - public ScreenMirrorGrabber(Context context, @NonNull MediaProjection proj, @NonNull Display display) { + public ScreenMirrorGrabber(Context context, MediaProjection proj) { super(context); projection = proj; - realDisplay = display; - realDisplayMetrics = new DisplayMetrics(); + projAskCode = 0; + projAskData = null; // Already obtained + } + + public ScreenMirrorGrabber(Context context, int projectionResultCode, Intent projectionResultData) { + super(context); + projection = null; + projAskCode = projectionResultCode; + projAskData = projectionResultData; } private void initDisplay() { + WindowManager wm = getSystemService(WindowManager.class); + realDisplay = wm.getDefaultDisplay(); + realDisplayMetrics = new DisplayMetrics(); realDisplay.getRealMetrics(realDisplayMetrics); Log.d(TAG, "real display size: " + realDisplayMetrics.widthPixels + "x" + realDisplayMetrics.heightPixels); @@ -55,6 +71,12 @@ public class ScreenMirrorGrabber extends ScreenGrabber { Log.w(TAG, "already started"); return; } + if (projection == null && projAskCode == Activity.RESULT_OK) { + MediaProjectionManager manager = getSystemService(MediaProjectionManager.class); + projection = manager.getMediaProjection(projAskCode, projAskData); + projAskCode = 0; + projAskData = null; + } initDisplay(); } -- cgit v1.2.3