屏幕共享
更新时间: 2024/08/23 10:24:52
本节主要涉及屏幕共享(屏幕录制)的功能,屏幕共享的使用方法与Camera1 、 Camera2类似,下面重点说明下不同点。
注意
-
只有Android 5.0 及以上的系统才支持屏幕共享。
-
发起屏幕共享前需要向系统动态申请相关权限,参考以下代码:
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)
-
示例
- 请求权限
java
MediaProjectionManager 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();
}
}
此文档是否对你有帮助?