基于WebRtc在Android端实现屏幕共享

注:本文默认你已经掌握了如何用WebRtc建立视频连接。如果没有,请参考https://www.jianshu.com/p/eb5fd116e6c8,这里将不再赘述。

第一步:向系统发起屏幕截取请求

if(Build.VERSION.SDK_INT < 21){
        showShortToast("您的手机不支持这个功能");
        return;
}
MediaProjectionManager manager = (MediaProjectionManager)getSystemService(MEDIA_PROJECTION_SERVICE);
if(manager == null){
       showShortToast("截屏服务不可用");
       return;
}
Intent intent = manager.createScreenCaptureIntent();
startActivityForResult(intent,REQ_REMOTE_HELP);

执行以上代码后,会出现弹窗提示用户要开始截屏,用户点击同意后,回调到onActivityResult。

第二步:用第一步得到的 Intent 创建VideoCapturer

//上一步会回调到这个方法。
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if(requestCode == REQ_REMOTE_HELP && resultCode == RESULT_OK){
        captureIntent = data; //在这里保存data
    }
}

//创建VideoCapture
VideoCapturer videoCapturer = new ScreenCapturerAndroid(captureIntent, new MediaProjection.Callback() {
      @Override
      public void onStop() {
           super.onStop();
      }
});

第三步:创建视频源并初始化

VideoSource videoSource = peerConnectionFactory.createVideoSource(videoCapturer.isScreencast());

videoCapturer.initialize(surfaceTextureHelper, getApplicationContext(),videoSource.getCapturerObserver());

videoCapturer.startCapture(480, 640, 30);

其它过程与https://www.jianshu.com/p/505bb98aaea7 相同,请参考该文。

你可能感兴趣的:(Java,Android,WebRtc)