Expecting you have the React Native development environment in place, are starting with a React Native hello world project and have managed to run it on an actual Android/iOS device:
npm install --save react-native-audio-toolkit
- Adds native library depencency for each platform automatically
react-native link react-native-audio-toolkit
- If automatic linking doesn't work well, you can follow the platform specific steps for each platform you wish to support:
-
Append dependency to end of
android/settings.gradlefile... include ':react-native-audio-toolkit' project(':react-native-audio-toolkit').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-audio-toolkit/android') -
Add dependency to
android/app/build.gradle... dependencies { ... compile project(':react-native-audio-toolkit') } -
Register the module in
android/app/src/main/java/com/<project>/MainApplication.javapackage com.<project>; import com.facebook.react.ReactActivity; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; import com.futurice.rctaudiotoolkit.AudioPackage; // <-------- here ... protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( ... new MainReactPackage(), new AudioPackage() // <------------------------------- here ); }
-
Right click
Libraries, clickAdd Files to "ExampleApp" -
Select
node_modules/react-native-audio-toolkit/ios/ReactNativeAudioToolkit/ReactNativeAudioToolkit.xcodeproj -
Select your app from the Project Navigator, click on the
Build Phasestab. ExpandLink Binary With Libraries. Click the plus and addlibReactNativeAudioToolkit.afrom under Workspace.
If you wish to record audio, add the following permissions
-
Android
android/app/src/main/AndroidManifest.xml<manifest ...> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ... </manifest>
This is to get permissions for recording audio and writing to external storage.
TODO: Android 6.0 permissions model once supported by React Native: https://facebook.github.io/react-native/docs/known-issues.html#android-m-permissions
-
iOS Add NSMicrophoneUsageDescription in info.plist
<key>NSMicrophoneUsageDescription</key>
<string>Your description</string>
-
Include the JavaScript library:
import { Player, Recorder, MediaStates } from 'react-native-audio-toolkit'; ...
-
Create a button for triggering our example:
import { ... TouchableHighlight } from 'react-native'; class MyApp extends React.Component { constructor() { super(); this.state = { disabled: false }; } _onPress() { ... } render() { return ( ... <TouchableHighlight disabled={this.state.disabled} onPress={() => this._onPress()}> <Text> Press me! </Text> </TouchableHighlight> ...
-
Fill in
_onPress()handler with example code:_onPress() { // Disable button while recording and playing back this.setState({disabled: true}); // Start recording let rec = new Recorder("filename.mp4").record(); // Stop recording after approximately 3 seconds setTimeout(() => { rec.stop((err) => { // NOTE: In a real situation, handle possible errors here // Play the file after recording has stopped new Player("filename.mp4") .play() .on('ended', () => { // Enable button again after playback finishes this.setState({disabled: false}); }); }); }, 3000); }
-
Run app with
react-native run-androidorreact-native run-ios
- Check out the API documentation for more information.
- Examples on playback from various media sources