屏幕共享

更新时间: 2024/08/23 10:24:52

本节主要涉及屏幕共享(屏幕录制)的功能,屏幕共享的使用方法与Camera1 、 Camera2类似,下面重点说明下不同点。

注意

  1. 只有Android 5.0 及以上的系统才支持屏幕共享。

  2. 发起屏幕共享前需要向系统动态申请相关权限,参考以下代码:

javaMediaProjectionManager mediaProjectionManager = (MediaProjectionManager)   getSystemService(Context.MEDIA_PROJECTION_SERVICE);
Intent captureIntent = mediaProjectionManager.createScreenCaptureIntent();
startActivityForResult(captureIntent, 1002);

在获取到系统的屏幕录制权限时(参考 onActivityResult中返回结果),即可开始屏幕共享。

  • API原型

    java /**
         * 创建屏幕视频捕获器
       * @param mediaProjectionPermissionResultData onActivityResult 返回的intent数据
         * @param mediaProjectionCallback MediaProjection 状态改变的callback
         * @return AVChatScreenCapturer
         */
    public static AVChatScreenCapturer createScreenVideoCapturer(IntentmediaProjectionPermissionResultData,
                              MediaProjection.Callback mediaProjectionCallback)  
    
  • 示例

    1. 请求权限
    javaMediaProjectionManager mediaProjectionManager = (MediaProjectionManager)   getSystemService(Context.MEDIA_PROJECTION_SERVICE);
    

Intent captureIntent = mediaProjectionManager.createScreenCaptureIntent(); startActivityForResult(captureIntent, 1002);

2. 检测请求结果并开启屏幕共享

```java
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
     
     if (resultCode == Activity.RESULT_OK && data != null && requestCode == 1002) {
         AVChatVideoCapturer videoCapturer
           = AVChatVideoCapturerFactory.createScreenVideoCapturer(data, 
              new MediaProjection.Callback() {
              @Override
              public void onStop() {
                  super.onStop();
              }
          });
          AVChatManager.getInstance().setupVideoCapturer(videoCapturer);
          AVChatManager.getInstance().startVideoPreview();
      }
  }
此文档是否对你有帮助?
有帮助
去反馈