react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
43 lines (36 loc) • 1.19 kB
text/typescript
import AudioAPIModule from '../AudioAPIModule';
import { NotSupportedError } from '../errors';
import { IAudioContext } from '../interfaces';
import AudioManager from '../system';
import { AudioContextOptions } from '../types';
import BaseAudioContext from './BaseAudioContext';
export default class AudioContext extends BaseAudioContext {
constructor(options?: AudioContextOptions) {
if (
options &&
options.sampleRate &&
(options.sampleRate < 8000 || options.sampleRate > 96000)
) {
throw new NotSupportedError(
`The provided sampleRate is not supported: ${options.sampleRate}`
);
}
const audioRuntime = AudioAPIModule.createAudioRuntime();
super(
global.createAudioContext(
options?.sampleRate || AudioManager.getDevicePreferredSampleRate(),
options?.initSuspended || false,
audioRuntime
)
);
}
async close(): Promise<void> {
return (this.context as IAudioContext).close();
}
async resume(): Promise<boolean> {
return (this.context as IAudioContext).resume();
}
async suspend(): Promise<boolean> {
return (this.context as IAudioContext).suspend();
}
}