我正在尝试使用Agora.io在安卓上实现屏幕共享。他们的样本非常清楚:
MediaProjectionManager projectManager = (MediaProjectionManager) mContext.getSystemService(
Context.MEDIA_PROJECTION_SERVICE);
// Create the intent for screen capture. Call the startActivityForResult method to use the sharing function.
Intent intent = projectManager.createScreenCaptureIntent();
startActivityForResult(intent);
MediaProjection projection;
VirtualDisplay display;
// Override and implement the onActivityResult method of the Activity where you just called startActivityForResult.
@Override
onActivityResult(int requestCode, int resultCode, Intent resuleData) {
projection = projectManager.getMediaProjection(resultCode, resultData);
display = projection.createVirtualDisplay(name, width, height, dpi, flags, surface, callback, handler);
}
// The texture retrieved from the Surface will be sent by the SDK.
rtcEngine.pushExternalVideoFrame(new AgoraVideoFrame(...));
// Stop screen sharing.
projection.stop();然而,在createVirtualDisplay中,它们是一个曲面参数。我不知道这是从哪里来的--或者更确切地说,我是如何获得屏幕的Surface的?还是实例化一个新的Surface实例?使用接受SurfaceTexture作为参数的构造函数。或者可能实现SurfaceTexture.OnFrameAvailableListener / OnImageAvailableListener (不确定)。
表面医生:
https://developer.android.com/reference/android/view/Surface
createVirtualDisplay文档:
发布于 2020-05-18 03:54:55
有几种方法可以获得Surface:
但是请注意,不要使用已经附加到视图层次结构的Surface。
https://stackoverflow.com/questions/61812710
复制相似问题