跳转到内容

入门

  1. 安装软件包

    Terminal window
    npm i @capgo/capacitor-screen-recorder
  2. 与原生项目同步

    Terminal window
    npx cap sync
  3. 配置权限

    将使用说明添加到您的 Info.plist 中:

    <key>NSMicrophoneUsageDescription</key>
    <string>To record audio with screen recording</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>To save screen recordings</string>

    向您的 AndroidManifest.xml 添加权限:

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

导入插件并使用其方法来录制屏幕:

import { ScreenRecorder } from '@capgo/capacitor-screen-recorder';
// Start recording
const startRecording = async () => {
try {
await ScreenRecorder.start();
console.log('Recording started');
} catch (error) {
console.error('Failed to start recording:', error);
}
};
// Stop recording
const stopRecording = async () => {
try {
const result = await ScreenRecorder.stop();
console.log('Recording saved to:', result.videoUrl);
// You can now use the video URL
// For example, share it or play it back
} catch (error) {
console.error('Failed to stop recording:', error);
}
};
// Check if recording is supported
const checkSupport = async () => {
const { value } = await ScreenRecorder.isSupported();
console.log('Screen recording supported:', value);
};
// Check if currently recording
const checkRecordingStatus = async () => {
const { value } = await ScreenRecorder.isRecording();
console.log('Currently recording:', value);
};

开始屏幕录制。

await ScreenRecorder.start();

停止录制并返回视频文件路径。

interface RecordingResult {
videoUrl: string;
}
const result = await ScreenRecorder.stop();

检查设备是否支持屏幕录制。

const { value } = await ScreenRecorder.isSupported();
// Returns: { value: boolean }

检查屏幕录制当前是否处于活动状态。

const { value } = await ScreenRecorder.isRecording();
// Returns: { value: boolean }
// iOS-specific options
const startWithOptions = async () => {
await ScreenRecorder.start({
// iOS only options
recordAudio: true,
microphoneAudio: true,
showIOSNotification: true,
notificationText: "Recording in progress..."
});
};
import { ScreenRecorder } from '@capgo/capacitor-screen-recorder';
import { Share } from '@capacitor/share';
export class RecordingService {
private isRecording = false;
async toggleRecording() {
if (this.isRecording) {
await this.stopRecording();
} else {
await this.startRecording();
}
}
private async startRecording() {
try {
// Check if supported
const { value: isSupported } = await ScreenRecorder.isSupported();
if (!isSupported) {
throw new Error('Screen recording not supported');
}
// Start recording
await ScreenRecorder.start();
this.isRecording = true;
console.log('Recording started');
} catch (error) {
console.error('Failed to start recording:', error);
throw error;
}
}
private async stopRecording() {
try {
const result = await ScreenRecorder.stop();
this.isRecording = false;
console.log('Recording saved:', result.videoUrl);
// Option to share the recording
await this.shareRecording(result.videoUrl);
} catch (error) {
console.error('Failed to stop recording:', error);
throw error;
}
}
private async shareRecording(videoUrl: string) {
try {
await Share.share({
title: 'Screen Recording',
text: 'Check out my screen recording!',
url: videoUrl,
dialogTitle: 'Share Recording'
});
} catch (error) {
console.error('Failed to share recording:', error);
}
}
}
  1. 使用前检查支持

    const { value } = await ScreenRecorder.isSupported();
    if (!value) {
    // Hide recording feature or show alternative
    }
  2. 正确处理权限 在iOS上,系统会自动提示权限。在 Android 上,确保您请求必要的权限。

  3. 提供用户反馈 录音处于活动状态时显示清晰的指示符:

    let recordingInterval: any;
    const startRecording = async () => {
    await ScreenRecorder.start();
    // Show recording indicator
    recordingInterval = setInterval(() => {
    // Update UI to show recording duration
    }, 1000);
    };
    const stopRecording = async () => {
    clearInterval(recordingInterval);
    await ScreenRecorder.stop();
    };
  4. 处理中断

    import { App } from '@capacitor/app';
    App.addListener('appStateChange', async ({ isActive }) => {
    if (!isActive) {
    // Consider stopping recording when app goes to background
    const { value } = await ScreenRecorder.isRecording();
    if (value) {
    await ScreenRecorder.stop();
    }
    }
    });
  • 需要 iOS 11.0+
  • 使用ReplayKit框架
  • 系统在状态栏中显示录音指示器
  • 用户必须确认录音开始
  • 需要 Android 5.0 (API 21)+
  • 使用 MediaProjection API
  • 录制期间显示通知
  • 某些设备可能具有制造商特定的限制
  • 不支持网络平台
  • 将返回 isSupported: false
  1. 录音无法开始

    • 确保授予所有权限
    • 检查另一个应用程序是否已经在录制
    • 验证设备支持屏幕录制
  2. 录音中没有声音

    • 检查麦克风权限
    • 确保启用 recordAudio 选项
    • 部分设备可能不支持系统录音
  3. 找不到视频文件

    • 检查文件权限
    • 确保足够的存储空间
    • 验证返回的视频URL是否有效