基于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 相同,请参考该文。

你可能感兴趣的:(基于WebRtc在Android端实现屏幕共享)