我想在服务器上共享设备屏幕并从服务器远程访问它。 我尝试了许多方法,例如: MediaProjection , setDrawingCacheEnabled(true)。
在MediaProjection的情况下,我知道我们必须通过一个表面,它将在该表面绘制整个屏幕。但是我想从该表面上获取一个可绘制的图像或位图,我可以共享该表面或该图像也可以处理来自服务器的单击,这将反映在我的Android设备上(就像teamviewer一样):
MediaProjection:
VirtualDisplay mVirtualDisplay = mMediaProjection.createVirtualDisplay("ScreenCapture",
mSurfaceView.getWidth(), mSurfaceView.getHeight(), mScreenDensity,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
mSurfaceView.getHolder().getSurface()
, null, null);
但是使用 VirtualDisplay 或 Surface ,我无法在服务器上共享此内容。还有其他方法可以连续捕获屏幕并在服务器上共享它。
setDrawingCacheEnabled(true):
View view = getView().getRootView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(view.getDrawingCache());
但是问题是,我无法在应用程序外部捕获屏幕,即我无权访问呈现其他视图的父视图。
此外,如果我可以访问所有视图的父级,但不会递归绘制其子级的内容。
我的总体问题是以任何方式捕获屏幕(在应用程序外部),在服务器上共享屏幕并处理点击?