UNPKG

expo-av

Version:

Expo universal module for Audio and Video playback

64 lines 2.66 kB
import ExponentAV from './ExponentAV'; export * from './Audio/Recording'; export * from './Audio/Sound'; export { setIsEnabledAsync } from './Audio/AudioAvailability'; export { PitchCorrectionQuality } from './AV'; export const INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS = 0; export const INTERRUPTION_MODE_IOS_DO_NOT_MIX = 1; export const INTERRUPTION_MODE_IOS_DUCK_OTHERS = 2; export const INTERRUPTION_MODE_ANDROID_DO_NOT_MIX = 1; export const INTERRUPTION_MODE_ANDROID_DUCK_OTHERS = 2; // Returns true if value is in validValues, and false if not. const _isValueValid = (value, validValues) => { return validValues.filter((validValue) => validValue === value).length > 0; }; const _populateMissingKeys = (userAudioMode, defaultAudioMode) => { for (const key in defaultAudioMode) { if (!userAudioMode.hasOwnProperty(key)) { userAudioMode[key] = defaultAudioMode[key]; } } return userAudioMode; }; const defaultMode = { allowsRecordingIOS: false, interruptionModeIOS: INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS, playsInSilentModeIOS: false, staysActiveInBackground: false, interruptionModeAndroid: INTERRUPTION_MODE_ANDROID_DUCK_OTHERS, shouldDuckAndroid: true, playThroughEarpieceAndroid: false, }; let currentAudioMode = null; function getCurrentAudioMode() { if (!currentAudioMode) { return defaultMode; } return currentAudioMode; } export async function setAudioModeAsync(partialMode) { const mode = _populateMissingKeys(partialMode, getCurrentAudioMode()); if (!_isValueValid(mode.interruptionModeIOS, [ INTERRUPTION_MODE_IOS_MIX_WITH_OTHERS, INTERRUPTION_MODE_IOS_DO_NOT_MIX, INTERRUPTION_MODE_IOS_DUCK_OTHERS, ])) { throw new Error(`"interruptionModeIOS" was set to an invalid value.`); } if (!_isValueValid(mode.interruptionModeAndroid, [ INTERRUPTION_MODE_ANDROID_DO_NOT_MIX, INTERRUPTION_MODE_ANDROID_DUCK_OTHERS, ])) { throw new Error(`"interruptionModeAndroid" was set to an invalid value.`); } if (typeof mode.allowsRecordingIOS !== 'boolean' || typeof mode.playsInSilentModeIOS !== 'boolean' || typeof mode.staysActiveInBackground !== 'boolean' || typeof mode.shouldDuckAndroid !== 'boolean' || typeof mode.playThroughEarpieceAndroid !== 'boolean') { throw new Error('"allowsRecordingIOS", "playsInSilentModeIOS", "playThroughEarpieceAndroid", "staysActiveInBackground" and "shouldDuckAndroid" must be booleans.'); } currentAudioMode = mode; return await ExponentAV.setAudioMode(mode); } //# sourceMappingURL=Audio.js.map