UNPKG

react-native-sound

Version:

React Native module for playing sound clips on iOS, Android, and Windows

239 lines (201 loc) 6.97 kB
// Type definitions for react-native-sound // Project: https://github.com/zmxv/react-native-sound // Definitions by: Kyle Roach <https://github.com/iRoachie> // TypeScript Version: 2.3.2 type AVAudioSessionCategory = | "Ambient" | "SoloAmbient" | "Playback" | "Record" | "PlayAndRecord" | "AudioProcessing" | "MultiRoute" | "Alarm"; type AVAudioSessionMode = | "Default" | "VoiceChat" | "VideoChat" | "GameChat" | "VideoRecording" | "Measurement" | "MoviePlayback" | "SpokenAudio"; type FilenameType = string; type FileType = any; type BasePathType = string; type CallbackType = ( error: any, props: { duration?: number; numberOfChannels?: number; } ) => void; declare class Sound { static MAIN_BUNDLE: string; static DOCUMENT: string; static LIBRARY: string; static CACHES: string; /** * Sets AVAudioSession as active, which is recommended on iOS to achieve seamless background playback. * Use this method to deactivate the AVAudioSession when playback is finished in order for other apps * to regain access to the audio stack. * * @param category AVAudioSession category * @param mixWithOthers Can be set to true to force mixing with other audio sessions. */ static setActive(active: boolean): void; /** * Sets AVAudioSession category, which allows playing sound in background, * stop sound playback when phone is locked, etc. * Parameter options: "Ambient", "SoloAmbient", "Playback", "Record", "PlayAndRecord", "AudioProcessing", "MultiRoute". * * @param category AVAudioSession category * @param mixWithOthers Can be set to true to force mixing with other audio sessions. */ static setCategory( category: AVAudioSessionCategory, mixWithOthers?: boolean ): void; /** * Sets AVAudioSession mode, which works in conjunction with the category to determine audio mixing behavior. * Parameter options: "Default", "VoiceChat", "VideoChat", "GameChat", "VideoRecording", "Measurement", "MoviePlayback", "SpokenAudio". * * @param mode AVAudioSession mode * @param mixWithOthers Can be set to true to force mixing with other audio sessions. */ static setMode(mode: AVAudioSessionMode): void; /** * Activates or deactivates the audio session with the ambient category, based on the provided boolean value.(iOS only) * @param enabled */ static enable(enabled: boolean): void; /** * @param filenameOrFile Either absolute or relative path to the sound file or the `require` call. * @param basePathOrCallback Optional base path of the file. Omit this or pass '' if filename is an absolute path; you may use one of the predefined directories: Sound.MAIN_BUNDLE, Sound.DOCUMENT, Sound.LIBRARY, Sound.CACHES. If you are using `require` to define filepath, then set the callback function as the second argument. * @param callback Optional callback function called when load ends in either success or error. In the event of success, error is undefined. */ constructor( filenameOrFile: FilenameType | FileType, basePathOrCallback?: BasePathType | CallbackType, callback?: CallbackType ); /** * Return true if the sound has been loaded. */ isLoaded(): boolean; /** * Plays the loaded file * @param onEnd - Optional callback function that gets called when the playback finishes successfully or an audio decoding error interrupts it */ play(onEnd?: (success: boolean) => void): this; /** * Pause the sound * @param cb - Optional callback function that gets called when the sound has been paused. */ pause(cb?: () => void): this; /** * Stop playback and set the seek position to 0. * @param cb - Optional callback function that gets called when the sound has been stopped. */ stop(cb?: () => void): this; /** * Reset the audio player to its uninitialized state (android only) */ reset(): this; /** * Release the audio player resource associated with the instance. */ release(): this; /** * Return the number of channels * (1 for mono and 2 for stereo sound), or -1 before the sound gets loaded. */ getNumberOfChannels(): number; /** * Return the time of audio (second) */ getDuration(): number; /** * Return the volume of the audio player (not the system-wide volume), * Ranges from 0.0 (silence) through 1.0 (full volume, the default) */ getVolume(): number; /** * Set the volume * @param value - ranging from 0.0 (silence) through 1.0 (full volume) */ setVolume(value: number): this; /** * Return the stereo pan position of the audio player (not the system-wide pan) * Ranges from -1.0 (full left) through 1.0 (full right). The default value is 0.0 (center) */ getPan(): number; /** * Set the pan value * @param value - ranging from -1.0 (full left) through 1.0 (full right). */ setPan(value: number): this; /** * Return the loop count of the audio player. * The default is 0 which means to play the sound once. * On iOS a positive number specifies the number of times to return to the start and play again, a negative number indicates an indefinite loop. * On Android any non-zero value indicates an indefinite loop. */ getNumberOfLoops(): number; /** * Set the loop count * @param value - iOS: 0 means to play the sound once, a positive number specifies the number of times to return to the start and play again, a negative number indicates an indefinite loop. Android: 0 means to play the sound once, other numbers indicate an indefinite loop. */ setNumberOfLoops(value: number): this; /** * Callback will receive the current playback position in seconds and whether the sound is being played. * @param cb */ getCurrentTime(cb?: (seconds: number, isPlaying: boolean) => void): void; /** * Seek to a particular playback point in seconds. * @param value */ setCurrentTime(value: number): this; /** * Return the speed of the audio player */ getSpeed(): number; /** * Speed of the audio playback. * @param value */ setSpeed(value: number): this; /** * Return the pitch of the audio player */ getPitch(): number; /** * Pitch of the audio playback (Android Only). * @param value */ setPitch(value: number): void; /** * Whether to enable playback in silence mode (iOS only) * @deprecated - Use the static method Sound.setCategory('Playback') instead which has the same effect. * @param enabled */ enableInSilenceMode(enabled: boolean): void; /** * Sets AVAudioSession category * @deprecated * @param value */ setCategory(value: AVAudioSessionCategory): void; /** * Turn speaker phone on (android only) * @platform android * @param value */ setSpeakerphoneOn(value: boolean): void; /** * Whether the player is playing or not. */ isPlaying(): boolean; } export = Sound;