Aller au contenu

Prise en main

GitHub

Vous pouvez utiliser notre configuration assistée par IA pour installer le plugin. Ajoutez les skills Capgo à votre outil d'IA avec la commande suivante :

Fenêtre de terminal
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Utilisez ensuite le prompt suivant :

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-audio-recorder` plugin in my project.

Si vous préférez une installation manuelle, installez le plugin en exécutant les commandes suivantes et suivez les instructions spécifiques à chaque plateforme ci-dessous :

Fenêtre de terminal
bun add @capgo/capacitor-audio-recorder
bunx cap sync
import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';

Demandez l'accès au micro, enregistrez, puis arrêtez et lisez l'URI du fichier natif (ou 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 note
await CapacitorAudioRecorder.pauseRecording();
await CapacitorAudioRecorder.resumeRecording();
const clip = await CapacitorAudioRecorder.stopRecording();

pauseRecording est disponible sur Android (API 24+), iOS et Web.

Interroger getCurrentAmplitude() via un timer (environ 60 à 100 ms) pendant que le statut est RECORDING. Les valeurs sont normalisées 0 vers 1, mais le signal sous-jacent diffère selon la plateforme (peak sur Android, puissance moyenne sur iOS, RMS sur Web). Appliquez un léger facteur d'échelle par plateforme si vous souhaitez une parité visuelle.

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
  • Différence de retour entre Web et natif: Android et iOS retournent uri depuis stopRecording. Le Web retourne blob (et peut omettre uri).
  • Lecture silencieuse sur iOS après l'enregistrement: définissez resetToPlaybackOnStop: true dans startRecording si les utilisateurs relancent l'extrait au cours de la même session.
  • Capture en arrière-plan: le plugin n'active pas l'audio en arrière-plan par lui-même. Sur iOS, ajoutez le mode Audio background lorsque vous avez besoin d'enregistrer l'appareil verrouillé.
  • Ne saturez pas l'amplitude: chaque getCurrentAmplitude appel traverse le bridge. Utilisez un intervalle UI plutôt qu'une boucle intensive.

Commencer l'enregistrement audio via le microphone de l'appareil.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.startRecording();

Met en pause l'enregistrement en cours. Disponible uniquement sur Android (API 24+), iOS et Web.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.pauseRecording();

Reprend un enregistrement précédemment mis en pause.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.resumeRecording();

Arrête l'enregistrement actuel et sauvegarde l'audio enregistré.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.stopRecording();
console.log(result);

Annule l'enregistrement actuel et supprime l'audio capturé.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
await CapacitorAudioRecorder.cancelRecording();

Récupère le statut actuel de l'enregistrement.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.getRecordingStatus();
console.log(result);

Récupère l'amplitude d'entrée actuelle (niveau du micro) sous la forme d'un nombre normalisé dans la [0, 1] range.

Destiné à piloter des visualisations en direct comme des VU meters ou des formes d'onde pendant l'enregistrement. Retourne 0 lorsqu'aucun enregistrement n'est actif. Conçu pour un polling au taux de rafraîchissement de l'UI — un intervalle de 60 à 100 ms est un bon point de départ pour une forme d'onde. Évitez de l'appeler dans une boucle serrée ; chaque appel traverse le bridge JS/natif.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.getCurrentAmplitude();
console.log(result);

Retourne l'état actuel des permissions pour accéder au micro.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.checkPermissions();
console.log(result);

Demander la permission d'accéder au microphone.

import { CapacitorAudioRecorder } from '@capgo/capacitor-audio-recorder';
const result = await CapacitorAudioRecorder.requestPermissions();
console.log(result);

Options acceptées par .

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;
}

Résultat renvoyé par .

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;
}

Résultat renvoyé par .

export interface GetRecordingStatusResult {
/**
* The current recording status.
*
* @since 1.0.0
*/
status: RecordingStatus;
}

Résultat renvoyé par .

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;
}

Informations de permission renvoyées par et .

export interface PermissionStatus {
/**
* The permission state for audio recording.
*
* @since 1.0.0
*/
recordAudio: PermissionState;
}

Événement émis lorsqu'une erreur survient pendant l'enregistrement.

export interface RecordingErrorEvent {
/**
* The error message.
*
* @since 1.0.0
*/
message: string;
}

Événement émis lorsqu'un enregistrement se termine.

export type RecordingStoppedEvent = StopRecordingResult;

Options de catégorie de session audio disponibles sur 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',
}

Modes de session audio disponibles sur iOS.

export enum AudioSessionMode {
Default = 'DEFAULT',
GameChat = 'GAME_CHAT',
Measurement = 'MEASUREMENT',
SpokenAudio = 'SPOKEN_AUDIO',
VideoChat = 'VIDEO_CHAT',
VideoRecording = 'VIDEO_RECORDING',
VoiceChat = 'VOICE_CHAT',
}

Le statut de l'enregistrement.

export enum RecordingStatus {
Inactive = 'INACTIVE',
Recording = 'RECORDING',
Paused = 'PAUSED',
}

États de permission de plateforme pris en charge par Capacitor.

export type PermissionState = 'prompt' | 'prompt-with-rationale' | 'granted' | 'denied';

Cette page est générée à partir de src/definitions.ts. Relancez la synchronisation lorsque l’API public change en amont.

Si vous utilisez Prise en main pour planifier le comportement des médias et de l'interface natifs, connectez-l’à Utiliser @capgo/capacitor-audio-recorder pour la capacité native dans l'utilisation de @capgo/capacitor-audio-recorder, Utiliser @capgo/capacitor-live-activities pour la capacité native dans Utiliser @capgo/capacitor-live-activities @capgo/capacitor-live-activities pour le détail d'implémentation dans @capgo/capacitor-live-activities Utiliser @capgo/capacitor-video-player pour la capacité native dans Utiliser @capgo/capacitor-video-player, et @capgo/capacitor-video-player pour le détail d'implémentation dans @capgo/capacitor-video-player.