Per iniziare
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
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.
Puoi usare il nostro setup assistito dall'IA per installare il plugin. Aggiungi le skill Capgo al tuo strumento di IA usando il seguente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsPoi usa il seguente prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-audio-recorder` plugin in my project.Se preferisci la configurazione manuale, installa il plugin eseguendo questi comandi e segui le istruzioni specifiche per piattaforma qui sotto:
bun add @capgo/capacitor-audio-recorderbunx cap syncImporta
Sezione intitolata “Import”import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';Avvio rapido
Sezione intitolata “Quick start”Richiedi l'accesso al microfono, registra, poi ferma la registrazione e leggi l'URI del file nativo (o 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);Esempio: nota vocale con pausa
Sezione intitolata “Esempio: memo vocale con pausa”await CapacitorAudioRecorder.startRecording();// user taps pause during a long noteawait CapacitorAudioRecorder.pauseRecording();await CapacitorAudioRecorder.resumeRecording();const clip = await CapacitorAudioRecorder.stopRecording();pauseRecording è disponibile su Android (API 24+), iOS e Web.
Esempio: indicatore di livello live
Sezione intitolata “Esempio: meter di livello live”Polling getCurrentAmplitude() tramite timer (circa 60-100 ms) mentre lo stato è RECORDING. I valori sono normalizzati 0 a 1, ma il segnale sottostante varia per piattaforma (peak su Android, average power su iOS, RMS su Web). Applica un piccolo fattore di scala per piattaforma se serve parità visiva.
const tick = async () => { const { status } = await CapacitorAudioRecorder.getRecordingStatus(); if (status !== 'RECORDING') return; const { value } = await CapacitorAudioRecorder.getCurrentAmplitude(); updateMeterUi(value);};Esempio: scartare una registrazione
Sezione: “Esempio: scarta una registrazione”await CapacitorAudioRecorder.startRecording();await CapacitorAudioRecorder.cancelRecording(); // no file persistedErrori comuni
Sezione intitolata “Errori comuni”- Formato di ritorno Web vs nativo: Ritorno da Android e iOS
uridastopRecording. Ritorno da Webblob(e potrebbe omettereuri). - Riproduzione silenziosa su iOS dopo la registrazione: imposta
resetToPlaybackOnStop: trueinstartRecordingse gli utenti riproducono la clip nella stessa sessione. - Registrazione in background: il plugin non abilita l'audio in background da solo. Su iOS, aggiungi l'Audio background mode se devi registrare con lo schermo bloccato.
- Non sovraccaricare l'ampiezza: ogni
getCurrentAmplitudechiamata attraversa il bridge. Usa un intervallo UI, non un loop stretto.
Panoramica API
Sezione intitolata “Panoramica API”startRecording
Sezione intitolata “startRecording”Avvia la registrazione audio usando il microfono del dispositivo.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.startRecording();pauseRecording
Sezione intitolata “pauseRecording”Mette in pausa la registrazione in corso. Disponibile solo su Android (API 24+), iOS e Web.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.pauseRecording();resumeRecording
Sezione intitolata “resumeRecording”Riprendi una registrazione precedentemente in pausa.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.resumeRecording();stopRecording
Sezione intitolata “stopRecording”Interrompe la registrazione attuale e salva l'audio registrato.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.stopRecording();console.log(result);cancelRecording
Sezione intitolata “cancelRecording”Annulla la registrazione attuale e scarta l'audio catturato.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.cancelRecording();getRecordingStatus
Sezione intitolata “getRecordingStatus”Recupera lo stato attuale della registrazione.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.getRecordingStatus();console.log(result);getCurrentAmplitude
Sezione intitolata “getCurrentAmplitude”Recupera l'ampiezza attuale dell'input (livello microfono) come numero
normalizzato nell'intervallo [0, 1] specificato.
Ideale per gestire visualizzazioni live come VU meter o waveform
durante la registrazione. Restituisce 0 quando non è attiva alcuna registrazione. Progettato per il polling
a frequenza UI — un intervallo di 60–100 ms è un buon punto di partenza per una
waveform. Evita di chiamarlo in un loop stretto; ogni chiamata attraversa il
bridge JS/native.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.getCurrentAmplitude();console.log(result);checkPermissions
Sezione intitolata “checkPermissions”Restituisce lo stato attuale dei permessi per l'accesso al microfono.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.checkPermissions();console.log(result);requestPermissions
Sezione intitolata “requestPermissions”Richiedi il permesso per accedere al microfono.
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.requestPermissions();console.log(result);Riferimento ai tipi
Sezione: “Type Reference”StartRecordingOptions
Sezione intitolata “StartRecordingOptions”Opzioni accettate da .
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
Sezione intitolata “StopRecordingResult”Risultato restituito da .
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
Sezione intitolata “GetRecordingStatusResult”Risultato restituito da .
export interface GetRecordingStatusResult { /** * The current recording status. * * @since 1.0.0 */ status: RecordingStatus;}GetCurrentAmplitudeResult
Sezione intitolata “GetCurrentAmplitudeResult”Risultato restituito da .
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
Sezione intitolata “PermissionStatus”Informazioni sui permessi restituite da .
export interface PermissionStatus { /** * The permission state for audio recording. * * @since 1.0.0 */ recordAudio: PermissionState;}RecordingErrorEvent
Sezione intitolata “RecordingErrorEvent”Evento emesso quando si verifica un errore durante la registrazione.
export interface RecordingErrorEvent { /** * The error message. * * @since 1.0.0 */ message: string;}RecordingStoppedEvent
Sezione intitolata “RecordingStoppedEvent”Evento emesso al termine della registrazione.
export type RecordingStoppedEvent = StopRecordingResult;AudioSessionCategoryOption
Sezione intitolata “AudioSessionCategoryOption”Opzioni della categoria della sessione audio disponibili su iOS.
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
Sezione intitolata “AudioSessionMode”Modalità della sessione audio disponibili su iOS.
export enum AudioSessionMode { Default = 'DEFAULT', GameChat = 'GAME_CHAT', Measurement = 'MEASUREMENT', SpokenAudio = 'SPOKEN_AUDIO', VideoChat = 'VIDEO_CHAT', VideoRecording = 'VIDEO_RECORDING', VoiceChat = 'VOICE_CHAT',}RecordingStatus
Sezione intitolata “RecordingStatus”Lo stato della registrazione.
export enum RecordingStatus { Inactive = 'INACTIVE', Recording = 'RECORDING', Paused = 'PAUSED',}PermissionState
Sezione intitolata “PermissionState”Stati dei permessi della piattaforma supportati da Capacitor.
export type PermissionState = 'prompt' | 'prompt-with-rationale' | 'granted' | 'denied';Fonte di verità
Sezione intitolata “Fonte di verità”Questa pagina è generata dal src/definitions.ts. Riesegui la sync quando il API pubblico cambia upstream.
Continua da Getting Started
Sezione intitolata “Continua da Getting Started”Se stai usando Per iniziare per pianificare il comportamento dei media nativi e dell'interfaccia, collegalo a Utilizzo di @capgo/capacitor-audio-recorder per la funzionalità nativa con @capgo/capacitor-audio-recorder, Uso di @capgo/capacitor-live-activities per la funzionalità nativa nella pagina Uso di @capgo/capacitor-live-activities, @capgo/capacitor-live-activities per il dettaglio implementativo in @capgo/capacitor-live-activities, Uso di @capgo/capacitor-video-player per la funzionalità nativa nella pagina Uso di @capgo/capacitor-video-player, e @capgo/capacitor-video-player per il dettaglio implementativo in @capgo/capacitor-video-player.