Please provide the following:
- SDK Version: Expo version 4.6.0
- Platforms(Android/iOS/web/all): Android & iOS
- Add the appropriate “Tag” based on what Expo library you have a question on.
I start and stop my recordings like so:
async componentDidMount() {
Audio.setAudioModeAsync({
allowsRecordingIOS: true,
interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DO_NOT_MIX,
interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_DO_NOT_MIX,
shouldDuckAndroid: true,
staysActiveInBackground: true,
playsInSilentModeIOS: true,
})
}
async startRecordingButtonPressed() {
if (!recording) {
recording = new Audio.Recording();
}
let permissions = await Audio.requestPermissionsAsync();
if (permissions.granted) {
await recording.prepareToRecordAsync(Audio.RECORDING_OPTIONS_PRESET_HIGH_QUALITY);
await recording.startAsync();
this.setState({ isRecording: true });
}
else {
throw new Error('Permissions not granted.');
}
}
async stopRecording() {
await recording.stopAndUnloadAsync();
this.setState({ isRecording: false, recordingFinished: true });
recordingURI = recording.getURI();
if (recordingURI === "" || recordingURI === null || recordingURI === undefined) {
throw new Error("Whoops! Didn't get that audio.");
}
const { sound, status } = await recording.createNewLoadedSoundAsync();
sound.setOnPlaybackStatusUpdate(x => {
if (x.didJustFinish)
alert("finished");
});
if (!sound)
throw new Error("Whoops!");
this.sound = sound;
this.forceUpdate();
}
After recording, I get a valid URI. Currently, I pass this URI into a FormData object and submit that FormData object to a server. Is this how you’re supposed to do it?