UNPKG

react-native-audio-api

Version:

react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification

61 lines (51 loc) 2.07 kB
'use strict'; import type { TurboModule } from 'react-native'; import { TurboModuleRegistry } from 'react-native'; import { AudioDevicesInfo, PermissionStatus } from '../system/types'; type OptionsMap = { [key: string]: string | boolean | number | undefined }; type NotificationOpResponse = { success: boolean; error?: string }; type NotificationType = 'playback' | 'recording' | 'simple'; type AudioFocusType = | 'gain' | 'gainTransient' | 'gainTransientExclusive' | 'gainTransientMayDuck'; interface Spec extends TurboModule { install(): boolean; getDevicePreferredSampleRate(): number; isFfmpegEnabled(): boolean; // AVAudioSession management setAudioSessionActivity(enabled: boolean): Promise<void>; setAudioSessionOptions( category: string, mode: string, options: Array<string>, allowHaptics: boolean, notifyOthersOnDeactivation: boolean ): void; disableSessionManagement(): void; // system events and interruptions observeAudioInterruptions(focusType: AudioFocusType, enabled: boolean): void; activelyReclaimSession(enabled: boolean): void; observeVolumeChanges(enabled: boolean): void; // Permissions requestRecordingPermissions(): Promise<PermissionStatus>; checkRecordingPermissions(): Promise<PermissionStatus>; requestNotificationPermissions(): Promise<PermissionStatus>; checkNotificationPermissions(): Promise<PermissionStatus>; // Audio devices getDevicesInfo(): Promise<AudioDevicesInfo>; setInputDevice(deviceId: string): Promise<void>; // Notification system showNotification( type: NotificationType, key: string, options: OptionsMap ): Promise<NotificationOpResponse>; hideNotification(key: string): Promise<NotificationOpResponse>; isNotificationActive(key: string): Promise<boolean>; // Android-only: reads bundled asset bytes and returns a Base64 string. readAndroidReleaseAssetBytesAsBase64(assetPath: string): Promise<string>; } const NativeAudioAPIModule = TurboModuleRegistry.get<Spec>('AudioAPIModule')!; export { NativeAudioAPIModule };