我想在服务器上共享我的设备屏幕并从服务器远程访问它。我尝试了很多方法,例如:MediaProjection,setDrawingCacheEnabled(true)。
在 MediaProjection 的情况下,我知道我们必须通过一个表面,它会在该表面上绘制整个屏幕。但我想从我可以共享的表面获取可绘制或位图,并处理来自服务器的点击,这将反映在我的 android 设备上(就像 teamviewer 一样):
媒体投影:
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());
但问题是,我无法在我的应用程序之外捕获屏幕,即我无权访问在其上呈现其他视图的父视图。
此外,如果我可以访问所有视图的父级,但它不会递归地绘制其子级的内容。
我的总体问题是任何方式来捕获屏幕(在我的应用程序之外),在服务器上共享它并处理点击?