Я сам смог ответить на вопрос. Я делюсь кодом. Надеюсь, это будет полезно для всех, кто работает над тем же проектом.
Add this code in Oncreate
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
setContentView(R.layout.webrtc_layout);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
sDeviceWidth = metrics.widthPixels;
sDeviceHeight = metrics.heightPixels;
Затем создайте средство захвата экрана, используя его и вызовите его в начале после проверки разрешений.
@TargetApi(21)
private void startScreenCapture() {
MediaProjectionManager mediaProjectionManager =
(MediaProjectionManager) getApplication().getSystemService(
Context.MEDIA_PROJECTION_SERVICE);
startActivityForResult(
mediaProjectionManager.createScreenCaptureIntent(), CAPTURE_PERMISSION_REQUEST_CODE);
}
@TargetApi(21)
private VideoCapturer createScreenCapturer() {
if (mMediaProjectionPermissionResultCode != Activity.RESULT_OK) {
showToast("User didn't give permission to capture the screen.");
return null;
}
return new ScreenCapturerAndroid(
mMediaProjectionPermissionResultData, new MediaProjection.Callback() {
@Override
public void onStop() {
showToast("User revoked permission to capture the screen.");
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode != CAPTURE_PERMISSION_REQUEST_CODE)
return;
mMediaProjectionPermissionResultCode = resultCode;
mMediaProjectionPermissionResultData = data;
start();
}
Добавить средство захвата экрана вернуться в Video Capturer
videoCapturerAndroid=createScreenCapturer();
//videoCapturerAndroid = createCameraCapturer(new Camera1Enumerator(false));
//Create MediaConstraints - Will be useful for specifying video and audio constraints.
audioConstraints = new MediaConstraints();
videoConstraints = new MediaConstraints();
//Create a VideoSource instance
if (videoCapturerAndroid != null) {
surfaceTextureHelper = SurfaceTextureHelper.create("CaptureThread", rootEglBase.getEglBaseContext());
videoSource = peerConnectionFactory.createVideoSource(videoCapturerAndroid.isScreencast());
videoCapturerAndroid.initialize(surfaceTextureHelper, this, videoSource.getCapturerObserver());
}
Теперь вы готовы к go. Он будет отлично работать до Android 9. Не переживайте, если вы хотите использовать его в android 10. Просто добавьте это в службе переднего плана и всегда показывать уведомление при включенном зеркальном отображении экрана, и это будет работать идеально.