Skip to content

haimomesi/capacitor-voice-recorder

This branch is 34 commits ahead of, 48 commits behind tchvu3/capacitor-voice-recorder:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Haim Omesi
May 30, 2021
da9a756 · May 30, 2021

History

34 Commits
Feb 18, 2020
Sep 27, 2020
Sep 27, 2020
May 30, 2021
May 30, 2021
Sep 27, 2020
Jan 17, 2020
May 30, 2021
Nov 13, 2020
Nov 13, 2020
May 30, 2021
May 30, 2021
Jan 17, 2020
Jan 17, 2020

Repository files navigation


Capacitor Voice Recorder

tchvu3/capacitor-voice-recorder

Capacitor plugin for simple voice recording


Maintainers

Maintainer GitHub Social
Avihu Harush tchvu3 @tchvu3

Installation

npm install --save capacitor-voice-recorder
npx cap sync

ios note

Make sure to include the NSMicrophoneUsageDescription key, and a corresponding purpose string in your app's Info.plist

android note

Make sure to add the plugin to your MainActivity.java like so:

import com.tchvu3.capvoicerecorder.VoiceRecorder;
...
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
        add(VoiceRecorder.class); // Add this line
    }});
}

Configuration

No configuration required for this plugin.

Supported methods

Name Android iOS Web
canDeviceVoiceRecord
requestAudioRecordingPermission
hasAudioRecordingPermission
startRecording
stopRecording

Explanation

  • canDeviceVoiceRecord - return promise that resolves to {"value": true} / {"value": false} based on the phone's ability to record voice.

  • requestAudioRecordingPermission - if the permission has already been provided then the promise will resolve with {"value": true}, otherwise the promise will resolve to {"value": true} / {"value": false} based on the answer of the user to the request.

  • hasAudioRecordingPermission - will resolve to {"value": true} / {"value": false} based on the status of the permission.

  • startRecording - if the app lacks the required permission then the promise will reject with the message "MISSING_PERMISSION". if the phone is unable to record then the promise will reject with the message "CANNOT_VOICE_RECORD_ON_THIS_PHONE". if there's a recording already running then the promise will reject with "ALREADY_RECORDING", and if other apps are using the microphone then the promise will reject with "MICROPHONE_BEING_USED". in a case of unknown error the promise will reject with "FAILED_TO_RECORD".

  • stopRecording - will stop the recording that has been previously started. if the function startRecording() has not been called beforehand the promise will reject with: "RECORDING_HAS_NOT_STARTED". in case of success, you will get the recording in base-64, the duration of the recording in milliseconds, and the mime type.

Usage


import { Plugins } from "@capacitor/core"

// not mandatory, only for code completion
import { RecordingData, GenericResponse } from 'capacitor-voice-recorder'

const { VoiceRecorder } = Plugins

// will print true / false based on the device ability to record
VoiceRecorder.canDeviceVoiceRecord().then((result: GenericResponse) => console.log(result.value))

/** 
* will prompt the user to give the required permission, after that
* the function will print true / false based on the user response
*/
VoiceRecorder.requestAudioRecordingPermission().then((result: GenericResponse) => console.log(result.value))

// will print true / false based on the status of the recording permission
VoiceRecorder.hasAudioRecordingPermission.then((result: GenericResponse) => console.log(result.value))

/**
* In case of success the promise will resolve with {"value": true}
* in case of an error the promise will reject with one of the following messages:
* "MISSING_PERMISSION", "ALREADY_RECORDING", "CANNOT_RECORD_ON_THIS_PHONE", "MICROPHONE_BEING_USED" or "FAILED_TO_RECORD"
*/
VoiceRecorder.startRecording()
.then((result: GenericResponse) => console.log(result.value))
.catch(error => console.log(error))

/**
* In case of success the promise will resolve with:
* {"value": { recordDataBase64: string, msDuration: number, mimeType: string }},
* the file will be in *.acc format.
* in case of an error the promise will reject with one of the following messages:
* "RECORDING_HAS_NOT_STARTED" or "FAILED_TO_FETCH_RECORDING"
*/
VoiceRecorder.stopRecording()
.then((result: RecordingData) => console.log(result.value))
.catch(error => console.log(error))

Playback

To play the recorded file you can use plain javascript:

const base64Sound = '...' // from plugin
const audioRef = new Audio(`data:audio/aac;base64,${base64Sound}`)
audioRef.oncanplaythrough = () => audioRef.play()
audioRef.load()

About

Capacitor plugin for voice recording

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 52.5%
  • Swift 31.2%
  • TypeScript 7.6%
  • Objective-C 4.0%
  • Ruby 3.7%
  • JavaScript 1.0%