快速入门
复制一条配置 prompt,包含安装步骤和该插件的完整 Markdown 指南。
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-audio-recorder`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/audio-recorder/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
你可以使用我们的 AI 辅助设置来安装插件。使用以下命令将 Capgo skills 添加到你的 AI 工具中:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins然后使用以下 prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-audio-recorder` plugin in my project.如果你更倾向于手动设置,请运行以下命令安装插件,并参考下文针对各平台的具体说明:
bun add @capgo/capacitor-audio-recorderbunx cap sync导入
“导入”章节import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';快速入门
“快速开始”章节请求麦克风权限,进行录音,随后停止并读取原生文件 URI(或 Web Blob).
import { Capacitor } from '@capacitor/core';import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const mic = await CapacitorAudioRecorder.requestPermissions();if (mic.recordAudio !== 'granted') { throw new Error('Microphone permission required');}
await CapacitorAudioRecorder.startRecording({ sampleRate: 44100, bitRate: 128000, resetToPlaybackOnStop: true, // iOS only: restore playback-friendly audio session after stop});
const { uri, blob, duration } = await CapacitorAudioRecorder.stopRecording();const clipRef = Capacitor.getPlatform() === 'web' ? blob : uri;console.log('Saved clip', clipRef, duration);示例:带暂停功能的语音备忘录
标题为“示例:带暂停功能的语音备忘录”的章节await CapacitorAudioRecorder.startRecording();// user taps pause during a long noteawait CapacitorAudioRecorder.pauseRecording();await CapacitorAudioRecorder.resumeRecording();const clip = await CapacitorAudioRecorder.stopRecording();pauseRecording 支持 Android (API 24+)、iOS 和 Web。
示例:实时电平表
标题为“示例:实时电平表”的章节轮询 getCurrentAmplitude() 当状态为 ... 时,定时(约 60 到 100 ms)执行 RECORDING。数值已归一化 0 至 1,但底层信号因平台而异(Android 为峰值,iOS 为平均功率,Web 为 RMS)。如需视觉一致,请按平台做小幅缩放。
const tick = async () => { const { status } = await CapacitorAudioRecorder.getRecordingStatus(); if (status !== 'RECORDING') return; const { value } = await CapacitorAudioRecorder.getCurrentAmplitude(); updateMeterUi(value);};示例:丢弃录音片段
标题为“示例:丢弃录音片段”的部分await CapacitorAudioRecorder.startRecording();await CapacitorAudioRecorder.cancelRecording(); // no file persisted常见坑点
标题为“常见坑点”的章节- Web 端与原生端的返回结构差异: Android 和 iOS 的返回结果
uri与stopRecording. Web 端的返回结果blob(并且可能会省略uri). - iOS 录音后的静音播放:设置
resetToPlaybackOnStop: true在startRecording如果用户在同一会话中回放该片段。 - 后台录音: 该插件本身不会启用后台音频。在 iOS 上,如果需要在锁屏时进行录音,请添加 Audio background mode。
- 避免频繁调用 amplitude: 每次
getCurrentAmplitude: 调用都会跨越 bridge。请使用 UI interval,不要用 tight loop。
API 概览
“API 概览”章节startRecording
标题为 “startRecording” 的章节使用设备麦克风开始录音。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.startRecording();pauseRecording
“pauseRecording” 章节暂停正在进行的录音。仅支持 Android (API 24+)、iOS 和 Web。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.pauseRecording();resumeRecording
“resumeRecording” 章节恢复之前暂停的录音。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.resumeRecording();stopRecording
“stopRecording” 章节停止当前录音并保存录制的音频。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.stopRecording();console.log(result);cancelRecording
“cancelRecording” 章节取消当前录音并丢弃已捕获的音频。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.cancelRecording();getRecordingStatus
“getRecordingStatus” 章节获取当前录音状态。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.getRecordingStatus();console.log(result);getCurrentAmplitude
“getCurrentAmplitude” 章节获取当前输入振幅(麦克风电平),以归一化数值返回,范围在 [0, 1] 内。
用于驱动录音时的实时可视化,例如 VU 表或波形图。无录音时返回 0 。专为 UI 刷新率轮询设计——波形图建议从 60–100 ms 的间隔开始。避免在紧密循环中调用;每次调用都会经过 JS/native bridge。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.getCurrentAmplitude();console.log(result);checkPermissions
“checkPermissions” 章节返回麦克风访问权限的当前状态。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.checkPermissions();console.log(result);requestPermissions
“requestPermissions” 章节请求麦克风访问权限。
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.requestPermissions();console.log(result);类型参考
“类型参考” 章节StartRecordingOptions
标题为 “StartRecordingOptions” 的章节由 . 接收的选项。
export interface StartRecordingOptions { /** * The audio session category options for recording. Only available on iOS. * * @since 1.0.0 */ audioSessionCategoryOptions?: AudioSessionCategoryOption[];
/** * The audio session mode for recording. Only available on iOS. * * @since 1.0.0 */ audioSessionMode?: AudioSessionMode;
/** * The audio bit rate in bytes per second. * Only available on Android and iOS. * * @since 1.0.0 */ bitRate?: number;
/** * The audio sample rate in Hz. * Only available on Android and iOS. * * @since 1.0.0 */ sampleRate?: number;}StopRecordingResult
标题为 “StopRecordingResult” 的章节由 . 返回的结果。
export interface StopRecordingResult { /** * The recorded audio as a Blob. Only available on Web. * * @since 1.0.0 */ blob?: Blob;
/** * The duration of the recording in milliseconds. * * @since 1.0.0 */ duration?: number;
/** * The URI pointing to the recorded file. Only available on Android and iOS. * * @since 1.0.0 */ uri?: string;}GetRecordingStatusResult
标题为 “GetRecordingStatusResult” 的章节. 返回的结果。
export interface GetRecordingStatusResult { /** * The current recording status. * * @since 1.0.0 */ status: RecordingStatus;}GetCurrentAmplitudeResult
标题为 “GetCurrentAmplitudeResult” 的章节. 返回的结果。
export interface GetCurrentAmplitudeResult { /** * The current input amplitude normalized to the `[0, 1]` range, where `0` * represents silence and `1` represents the maximum level the platform can * report. The value is `0` when no recording is active. * * Note: the source signal differs between platforms — Android reports the * peak sample amplitude since the last call, iOS reports the average power * in dB converted to linear, and Web reports the RMS of the latest frame. * Consumers that need cross-platform parity may want to apply a * per-platform scaling curve. * * @since 8.1.0 */ value: number;}PermissionStatus
标题为 “PermissionStatus” 的章节由 和 返回的权限信息。
export interface PermissionStatus { /** * The permission state for audio recording. * * @since 1.0.0 */ recordAudio: PermissionState;}RecordingErrorEvent
标题为 “RecordingErrorEvent” 的章节录音过程中发生错误时触发的事件。
export interface RecordingErrorEvent { /** * The error message. * * @since 1.0.0 */ message: string;}RecordingStoppedEvent
标题为 “RecordingStoppedEvent” 的章节录音完成后触发的事件。
export type RecordingStoppedEvent = StopRecordingResult;AudioSessionCategoryOption
标题为 “AudioSessionCategoryOption” 的章节iOS 上可用的 Audio session category 选项。
export enum AudioSessionCategoryOption { AllowAirPlay = 'ALLOW_AIR_PLAY', AllowBluetooth = 'ALLOW_BLUETOOTH', AllowBluetoothA2DP = 'ALLOW_BLUETOOTH_A2DP', DefaultToSpeaker = 'DEFAULT_TO_SPEAKER', DuckOthers = 'DUCK_OTHERS', InterruptSpokenAudioAndMixWithOthers = 'INTERRUPT_SPOKEN_AUDIO_AND_MIX_WITH_OTHERS', MixWithOthers = 'MIX_WITH_OTHERS', OverrideMutedMicrophoneInterruption = 'OVERRIDE_MUTED_MICROPHONE_INTERRUPTION',}AudioSessionMode
标题为 “AudioSessionMode” 的章节iOS 上可用的 Audio session modes。
export enum AudioSessionMode { Default = 'DEFAULT', GameChat = 'GAME_CHAT', Measurement = 'MEASUREMENT', SpokenAudio = 'SPOKEN_AUDIO', VideoChat = 'VIDEO_CHAT', VideoRecording = 'VIDEO_RECORDING', VoiceChat = 'VOICE_CHAT',}RecordingStatus
标题为 “RecordingStatus” 的章节录音状态。
export enum RecordingStatus { Inactive = 'INACTIVE', Recording = 'RECORDING', Paused = 'PAUSED',}PermissionState
标题为 “PermissionState” 的章节Capacitor 支持的平台权限状态。
export type PermissionState = 'prompt' | 'prompt-with-rationale' | 'granted' | 'denied';唯一数据源
“唯一可信来源”章节本页面由该插件的 src/definitions.ts当上游的公共 API 发生变化时,请重新运行 sync。
继续阅读入门指南
标题为“从入门指南继续”的章节如果你正在使用 快速入门 来规划原生媒体和界面行为,并将其与 使用 @capgo/capacitor-audio-recorder 针对“使用 @capgo/capacitor-audio-recorder”中的原生能力, 使用 @capgo/capacitor-live-activities 有关“使用 @capgo/capacitor-live-activities”中的原生能力, @capgo/capacitor-live-activities 关于 @capgo/capacitor-live-activities 的实现细节, 使用 @capgo/capacitor-video-player 用于“使用 @capgo/capacitor-video-player”中的原生能力,以及 @capgo/capacitor-video-player 有关 @capgo/capacitor-video-player. 中的实现细节