Home

Awesome

react-native-sound-recorder

No-hassle Sound Recorder for React Native.

There are existing libraries out in the wild

Why reinvent the wheel?

At the time of writing, the above libaries are either inconsistent or incomplete.

For example, the same startRecording call returns a Promise on Android but null in iOS.

Or stopRecording doesn't give a promise/callback at all. So forcing user to do silly things like "wait for 1 second" in order to make sure file is well written to disk.

Getting started

$ npm install react-native-sound-recorder --save

or

$ yarn add react-native-sound-recorder

if RN >= 0.60.0

Autolink should work

if RN < 0.60.0

Mostly automatic installation

$ react-native link react-native-sound-recorder

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-sound-recorder and add RNSoundRecorder.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNSoundRecorder.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainActivity.java
  1. Append the following lines to android/settings.gradle:
    include ':react-native-sound-recorder'
    project(':react-native-sound-recorder').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-sound-recorder/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-sound-recorder')
    

Permissions

iOS: Add the following entry to Info.plist:

<key>NSMicrophoneUsageDescription</key>
<string>This sample uses the microphone to record your speech and convert it to text.</string>

Android: Add the following entry to AndroidManifest.xml:

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

Usage

import SoundRecorder from 'react-native-sound-recorder';

// Note: You may need to request runtime permission(s) first.

SoundRecorder.start(SoundRecorder.PATH_CACHE + '/test.mp4')
	.then(function() {
		console.log('started recording');
	});

SoundRecorder.stop()
	.then(function(result) {
		console.log('stopped recording, audio file saved at: ' + result.path);
	});
	
// Usage with Options:


 SoundRecorder.start(
        SoundRecorder.PATH_CACHE + '/' + fileName + '.mp4',
        {
          quality: SoundRecorder.QUALITY_MAX,
          format : SoundRecorder.FORMAT_AAC_ADTS,

        }
      ).then(function () {
       
 
      });

API

function start(path:String, ?options:Object):Promise<Void>;
function stop():Promise<{path:String, duration:Int}>;
function pause():Promise<Void>;
function resume():Promise<Void>;

Options:

iOS:

Android:

Note that the above enums are platform-specific.

Path Constants