25 lines
933 B
TypeScript
25 lines
933 B
TypeScript
import { setAudioModeAsync, setIsAudioActiveAsync } from "expo-audio";
|
|
|
|
// Around camera/mic recording we switch the iOS audio session to playAndRecord
|
|
// with `doNotMix`, which cleanly interrupts other apps' audio (Spotify, Apple
|
|
// Music, podcasts). On release we restore a mixable mode and then *deactivate*
|
|
// the session — the deactivation is what passes notifyOthersOnDeactivation to
|
|
// AVAudioSession, which is the signal that lets the previously-playing app
|
|
// auto-resume. Just changing the category is not enough.
|
|
export async function acquireRecordingAudioSession() {
|
|
await setAudioModeAsync({
|
|
allowsRecording: true,
|
|
playsInSilentMode: true,
|
|
interruptionMode: "doNotMix",
|
|
});
|
|
}
|
|
|
|
export async function releaseRecordingAudioSession() {
|
|
await setAudioModeAsync({
|
|
allowsRecording: false,
|
|
playsInSilentMode: true,
|
|
interruptionMode: "mixWithOthers",
|
|
});
|
|
await setIsAudioActiveAsync(false);
|
|
}
|