react-native-audio-api 0.6.0-rc.1 → 0.6.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +35 -22
  2. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +73 -0
  3. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +37 -0
  4. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +6 -10
  5. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.h +2 -3
  6. package/android/src/main/java/com/swmansion/audioapi/AudioManagerModule.kt +10 -8
  7. package/android/src/main/java/com/swmansion/audioapi/system/MediaNotificationManager.kt +7 -7
  8. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionEventEmitter.kt +4 -0
  9. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +31 -13
  10. package/android/src/main/java/com/swmansion/audioapi/system/VolumeChangeListener.kt +27 -0
  11. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +29 -5
  12. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +1 -0
  13. package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +149 -0
  14. package/common/cpp/audioapi/core/AudioContext.cpp +4 -3
  15. package/common/cpp/audioapi/core/BaseAudioContext.cpp +6 -6
  16. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +38 -0
  17. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +5 -0
  18. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +1 -1
  19. package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +45 -11
  20. package/common/cpp/audioapi/core/utils/AudioNodeManager.h +6 -2
  21. package/ios/audioapi/ios/AudioManagerModule.mm +9 -10
  22. package/ios/audioapi/ios/core/IOSAudioPlayer.h +11 -12
  23. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +22 -16
  24. package/ios/audioapi/ios/core/IOSAudioRecorder.h +36 -0
  25. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +62 -0
  26. package/ios/audioapi/ios/core/{AudioPlayer.h → NativeAudioPlayer.h} +1 -8
  27. package/ios/audioapi/ios/core/{AudioPlayer.m → NativeAudioPlayer.m} +4 -33
  28. package/ios/audioapi/ios/core/NativeAudioRecorder.h +25 -0
  29. package/ios/audioapi/ios/core/NativeAudioRecorder.m +47 -0
  30. package/ios/audioapi/ios/system/AudioEngine.h +7 -1
  31. package/ios/audioapi/ios/system/AudioEngine.mm +64 -20
  32. package/ios/audioapi/ios/system/AudioSessionManager.h +3 -1
  33. package/ios/audioapi/ios/system/AudioSessionManager.mm +37 -25
  34. package/ios/audioapi/ios/system/NotificationManager.h +7 -1
  35. package/ios/audioapi/ios/system/NotificationManager.mm +30 -0
  36. package/lib/commonjs/api.js +15 -1
  37. package/lib/commonjs/api.js.map +1 -1
  38. package/lib/commonjs/core/AudioRecorder.js +51 -0
  39. package/lib/commonjs/core/AudioRecorder.js.map +1 -0
  40. package/lib/commonjs/errors/NotSupportedError.js.map +1 -1
  41. package/lib/commonjs/hooks/useSytemVolume.js +24 -0
  42. package/lib/commonjs/hooks/useSytemVolume.js.map +1 -0
  43. package/lib/commonjs/plugin/withAudioAPI.js +1 -1
  44. package/lib/commonjs/plugin/withAudioAPI.js.map +1 -1
  45. package/lib/commonjs/specs/NativeAudioManagerModule.js +5 -2
  46. package/lib/commonjs/specs/NativeAudioManagerModule.js.map +1 -1
  47. package/lib/commonjs/system/AudioManager.js +23 -50
  48. package/lib/commonjs/system/AudioManager.js.map +1 -1
  49. package/lib/module/api.js +3 -1
  50. package/lib/module/api.js.map +1 -1
  51. package/lib/module/core/AudioRecorder.js +45 -0
  52. package/lib/module/core/AudioRecorder.js.map +1 -0
  53. package/lib/module/errors/NotSupportedError.js.map +1 -1
  54. package/lib/module/hooks/useSytemVolume.js +19 -0
  55. package/lib/module/hooks/useSytemVolume.js.map +1 -0
  56. package/lib/module/plugin/withAudioAPI.js +1 -1
  57. package/lib/module/plugin/withAudioAPI.js.map +1 -1
  58. package/lib/module/specs/NativeAudioManagerModule.js +5 -2
  59. package/lib/module/specs/NativeAudioManagerModule.js.map +1 -1
  60. package/lib/module/system/AudioManager.js +23 -50
  61. package/lib/module/system/AudioManager.js.map +1 -1
  62. package/lib/typescript/api.d.ts +5 -1
  63. package/lib/typescript/api.d.ts.map +1 -1
  64. package/lib/typescript/core/AudioRecorder.d.ts +22 -0
  65. package/lib/typescript/core/AudioRecorder.d.ts.map +1 -0
  66. package/lib/typescript/errors/NotSupportedError.d.ts.map +1 -1
  67. package/lib/typescript/hooks/useSytemVolume.d.ts +2 -0
  68. package/lib/typescript/hooks/useSytemVolume.d.ts.map +1 -0
  69. package/lib/typescript/interfaces.d.ts +11 -5
  70. package/lib/typescript/interfaces.d.ts.map +1 -1
  71. package/lib/typescript/plugin/withAudioAPI.d.ts.map +1 -1
  72. package/lib/typescript/specs/NativeAudioManagerModule.d.ts +2 -1
  73. package/lib/typescript/specs/NativeAudioManagerModule.d.ts.map +1 -1
  74. package/lib/typescript/system/AudioManager.d.ts +4 -3
  75. package/lib/typescript/system/AudioManager.d.ts.map +1 -1
  76. package/lib/typescript/system/types.d.ts +26 -7
  77. package/lib/typescript/system/types.d.ts.map +1 -1
  78. package/lib/typescript/types.d.ts +5 -0
  79. package/lib/typescript/types.d.ts.map +1 -1
  80. package/package.json +2 -1
  81. package/src/api.ts +13 -2
  82. package/src/core/AudioRecorder.ts +81 -0
  83. package/src/hooks/useSytemVolume.ts +19 -0
  84. package/src/interfaces.ts +25 -11
  85. package/src/plugin/withAudioAPI.ts +2 -1
  86. package/src/specs/NativeAudioManagerModule.ts +5 -8
  87. package/src/system/AudioManager.ts +30 -107
  88. package/src/system/types.ts +31 -21
  89. package/src/types.ts +13 -0
  90. /package/src/errors/{NotSupportedError.tsx → NotSupportedError.ts} +0 -0
@@ -0,0 +1,47 @@
1
+ #import <audioapi/ios/core/NativeAudioRecorder.h>
2
+ #import <audioapi/ios/system/AudioEngine.h>
3
+ #import <audioapi/ios/system/AudioSessionManager.h>
4
+
5
+ @implementation NativeAudioRecorder
6
+
7
+ - (instancetype)initWithReceiverBlock:(AudioReceiverBlock)receiverBlock bufferLength:(int)bufferLength
8
+ {
9
+ if (self = [super init]) {
10
+ self.bufferLength = bufferLength;
11
+ self.sampleRate = [[[AudioSessionManager sharedInstance] getDevicePreferredSampleRate] doubleValue];
12
+
13
+ self.receiverBlock = [receiverBlock copy];
14
+
15
+ __weak typeof(self) weakSelf = self;
16
+ self.receiverSinkBlock = ^OSStatus(
17
+ const AudioTimeStamp *_Nonnull timestamp,
18
+ AVAudioFrameCount frameCount,
19
+ const AudioBufferList *_Nonnull inputData) {
20
+ AVAudioTime *time = [[AVAudioTime alloc] initWithAudioTimeStamp:timestamp sampleRate:weakSelf.sampleRate];
21
+ weakSelf.receiverBlock(inputData, frameCount, time);
22
+
23
+ return kAudioServicesNoError;
24
+ };
25
+
26
+ self.sinkNode = [[AVAudioSinkNode alloc] initWithReceiverBlock:self.receiverSinkBlock];
27
+ }
28
+
29
+ return self;
30
+ }
31
+
32
+ - (void)start
33
+ {
34
+ [[AudioEngine sharedInstance] attachInputNode:self.sinkNode];
35
+ }
36
+
37
+ - (void)stop
38
+ {
39
+ [[AudioEngine sharedInstance] detachInputNode];
40
+ }
41
+
42
+ - (void)cleanup
43
+ {
44
+ self.receiverBlock = nil;
45
+ }
46
+
47
+ @end
@@ -8,10 +8,10 @@
8
8
  @property (nonatomic, strong) AVAudioEngine *audioEngine;
9
9
  @property (nonatomic, strong) NSMutableDictionary *sourceNodes;
10
10
  @property (nonatomic, strong) NSMutableDictionary *sourceFormats;
11
+ @property (nonatomic, strong) AVAudioSinkNode *inputNode;
11
12
 
12
13
  + (instancetype)sharedInstance;
13
14
  - (void)cleanup;
14
-
15
15
  - (bool)rebuildAudioEngine;
16
16
  - (void)startEngine;
17
17
  - (void)stopEngine;
@@ -20,4 +20,10 @@
20
20
  - (NSString *)attachSourceNode:(AVAudioSourceNode *)sourceNode format:(AVAudioFormat *)format;
21
21
  - (void)detachSourceNodeWithId:(NSString *)sourceNodeId;
22
22
 
23
+ - (void)attachInputNode:(AVAudioSinkNode *)inputNode;
24
+ - (void)detachInputNode;
25
+
26
+ - (void)startIfNecessary;
27
+ - (void)stopIfNecessary;
28
+
23
29
  @end
@@ -1,4 +1,5 @@
1
1
  #import <audioapi/ios/system/AudioEngine.h>
2
+ #import <audioapi/ios/system/AudioSessionManager.h>
2
3
 
3
4
  @implementation AudioEngine
4
5
 
@@ -7,9 +8,11 @@ static AudioEngine *_sharedInstance = nil;
7
8
  + (instancetype)sharedInstance
8
9
  {
9
10
  static dispatch_once_t onceToken;
11
+
10
12
  dispatch_once(&onceToken, ^{
11
13
  _sharedInstance = [[self alloc] initPrivate];
12
14
  });
15
+
13
16
  return _sharedInstance;
14
17
  }
15
18
 
@@ -23,10 +26,14 @@ static AudioEngine *_sharedInstance = nil;
23
26
  {
24
27
  if (self = [super init]) {
25
28
  self.audioEngine = [[AVAudioEngine alloc] init];
26
- self.audioEngine.mainMixerNode.outputVolume = 1;
29
+ self.inputNode = nil;
30
+
27
31
  self.sourceNodes = [[NSMutableDictionary alloc] init];
28
32
  self.sourceFormats = [[NSMutableDictionary alloc] init];
33
+
34
+ [[AudioSessionManager sharedInstance] setActive:true];
29
35
  }
36
+
30
37
  return self;
31
38
  }
32
39
 
@@ -40,12 +47,13 @@ static AudioEngine *_sharedInstance = nil;
40
47
  self.audioEngine = nil;
41
48
  self.sourceNodes = nil;
42
49
  self.sourceFormats = nil;
50
+ self.inputNode = nil;
51
+
52
+ [[AudioSessionManager sharedInstance] setActive:false];
43
53
  }
44
54
 
45
55
  - (bool)rebuildAudioEngine
46
56
  {
47
- NSError *error = nil;
48
-
49
57
  if ([self.audioEngine isRunning]) {
50
58
  return true;
51
59
  }
@@ -58,14 +66,10 @@ static AudioEngine *_sharedInstance = nil;
58
66
  [self.audioEngine connect:sourceNode to:self.audioEngine.mainMixerNode format:format];
59
67
  }
60
68
 
61
- if ([self.audioEngine isRunning]) {
62
- return true;
63
- }
69
+ [self.audioEngine attachNode:self.inputNode];
70
+ [self.audioEngine connect:self.audioEngine.inputNode to:self.inputNode format:nil];
64
71
 
65
- if (![self.audioEngine startAndReturnError:&error]) {
66
- NSLog(@"Error while rebuilding audio engine: %@", [error debugDescription]);
67
- return false;
68
- }
72
+ [self startEngine];
69
73
 
70
74
  return true;
71
75
  }
@@ -93,7 +97,7 @@ static AudioEngine *_sharedInstance = nil;
93
97
  return;
94
98
  }
95
99
 
96
- [self.audioEngine pause];
100
+ [self.audioEngine stop];
97
101
  }
98
102
 
99
103
  - (bool)isRunning
@@ -112,24 +116,64 @@ static AudioEngine *_sharedInstance = nil;
112
116
  [self.audioEngine attachNode:sourceNode];
113
117
  [self.audioEngine connect:sourceNode to:self.audioEngine.mainMixerNode format:format];
114
118
 
115
- if ([self.sourceNodes count] == 1) {
116
- [self startEngine];
117
- }
118
-
119
+ [self startIfNecessary];
119
120
  return sourceNodeId;
120
121
  }
121
122
 
122
123
  - (void)detachSourceNodeWithId:(NSString *)sourceNodeId
123
124
  {
124
- NSLog(@"[AudioEngine] detaching source nde with ID: %@", sourceNodeId);
125
+ NSLog(@"[AudioEngine] detaching source node with ID: %@", sourceNodeId);
125
126
 
126
127
  AVAudioSourceNode *sourceNode = [self.sourceNodes valueForKey:sourceNodeId];
127
- [self.audioEngine detachNode:sourceNode];
128
128
 
129
- [self.sourceNodes removeObjectForKey:sourceNodeId];
130
- [self.sourceFormats removeObjectForKey:sourceNodeId];
129
+ if (sourceNode != nil) {
130
+ [self.audioEngine detachNode:sourceNode];
131
+
132
+ [self.sourceNodes removeObjectForKey:sourceNodeId];
133
+ [self.sourceFormats removeObjectForKey:sourceNodeId];
134
+ }
135
+
136
+ [self stopIfNecessary];
137
+ }
138
+
139
+ - (void)attachInputNode:(AVAudioSinkNode *)inputNode
140
+ {
141
+ self.inputNode = inputNode;
142
+
143
+ [self.audioEngine attachNode:inputNode];
144
+ [self.audioEngine connect:self.audioEngine.inputNode to:inputNode format:nil];
145
+
146
+ [self startIfNecessary];
147
+ }
148
+
149
+ - (void)detachInputNode
150
+ {
151
+ if (self.inputNode != nil) {
152
+ [self.audioEngine detachNode:self.inputNode];
153
+ self.inputNode = nil;
154
+ }
155
+
156
+ [self stopIfNecessary];
157
+ }
158
+
159
+ - (void)startIfNecessary
160
+ {
161
+ if ([self isRunning]) {
162
+ return;
163
+ }
164
+
165
+ if ([self.sourceNodes count] > 0 || self.inputNode != nil) {
166
+ [self startEngine];
167
+ }
168
+ }
169
+
170
+ - (void)stopIfNecessary
171
+ {
172
+ if (![self isRunning]) {
173
+ return;
174
+ }
131
175
 
132
- if ([self.sourceNodes count] == 0) {
176
+ if ([self.sourceNodes count] == 0 && self.inputNode == nil) {
133
177
  [self stopEngine];
134
178
  }
135
179
  }
@@ -7,6 +7,8 @@
7
7
 
8
8
  @property (nonatomic, weak) AVAudioSession *audioSession;
9
9
 
10
+ @property (nonatomic, assign) bool isActive;
11
+ @property (nonatomic, assign) bool hasDirtySettings;
10
12
  @property (nonatomic, assign) AVAudioSessionMode sessionMode;
11
13
  @property (nonatomic, assign) AVAudioSessionCategory sessionCategory;
12
14
  @property (nonatomic, assign) AVAudioSessionCategoryOptions sessionOptions;
@@ -17,6 +19,6 @@
17
19
 
18
20
  - (NSNumber *)getDevicePreferredSampleRate;
19
21
  - (void)setAudioSessionOptions:(NSString *)category mode:(NSString *)mode options:(NSArray *)options;
20
- - (bool)setActive:(bool)active error:(NSError **)error;
22
+ - (bool)setActive:(bool)active;
21
23
 
22
24
  @end
@@ -26,10 +26,11 @@ static AudioSessionManager *_sharedInstance = nil;
26
26
 
27
27
  self.sessionCategory = AVAudioSessionCategoryPlayback;
28
28
  self.sessionMode = AVAudioSessionModeDefault;
29
- self.sessionOptions = AVAudioSessionCategoryOptionDuckOthers | AVAudioSessionCategoryOptionAllowBluetooth;
30
-
31
- [self configureAudioSession];
29
+ self.sessionOptions = AVAudioSessionCategoryOptionAllowAirPlay;
30
+ self.hasDirtySettings = true;
31
+ self.isActive = false;
32
32
  }
33
+
33
34
  return self;
34
35
  }
35
36
 
@@ -119,35 +120,59 @@ static AudioSessionManager *_sharedInstance = nil;
119
120
  }
120
121
  }
121
122
 
122
- bool hasDirtySettings = false;
123
-
124
123
  if (self.sessionCategory != sessionCategory) {
125
- hasDirtySettings = true;
124
+ self.hasDirtySettings = true;
126
125
  self.sessionCategory = sessionCategory;
127
126
  }
128
127
 
129
128
  if (self.sessionMode != sessionMode) {
130
- hasDirtySettings = true;
129
+ self.hasDirtySettings = true;
131
130
  self.sessionMode = sessionMode;
132
131
  }
133
132
 
134
133
  if (self.sessionOptions != sessionOptions) {
135
- hasDirtySettings = true;
134
+ self.hasDirtySettings = true;
136
135
  self.sessionOptions = sessionOptions;
137
136
  }
138
137
 
139
- if (hasDirtySettings) {
138
+ if (self.isActive) {
140
139
  [self configureAudioSession];
141
140
  }
142
141
  }
143
142
 
144
- - (bool)setActive:(bool)active error:(NSError **)error
143
+ - (bool)setActive:(bool)active
145
144
  {
146
- return [self.audioSession setActive:active error:error];
145
+ if (active == self.isActive) {
146
+ return true;
147
+ }
148
+
149
+ if (active) {
150
+ [self configureAudioSession];
151
+ }
152
+
153
+ NSError *error = nil;
154
+
155
+ bool success = [self.audioSession setActive:active error:&error];
156
+
157
+ if (success) {
158
+ self.isActive = active;
159
+ }
160
+
161
+ if (error != nil) {
162
+ NSLog(@"[AudioSessionManager] setting session as %@ failed", active ? @"ACTIVE" : @"INACTIVE");
163
+ } else {
164
+ NSLog(@"[AudioSessionManager] session is %@", active ? @"ACTIVE" : @"INACTIVE");
165
+ }
166
+
167
+ return success;
147
168
  }
148
169
 
149
170
  - (bool)configureAudioSession
150
171
  {
172
+ if (![self hasDirtySettings]) {
173
+ return true;
174
+ }
175
+
151
176
  NSLog(
152
177
  @"[AudioSessionManager] configureAudioSession, category: %@, mode: %@, options: %lu",
153
178
  self.sessionCategory,
@@ -156,13 +181,6 @@ static AudioSessionManager *_sharedInstance = nil;
156
181
 
157
182
  NSError *error = nil;
158
183
 
159
- [self.audioSession setPreferredIOBufferDuration:0.022 error:&error];
160
-
161
- if (error != nil) {
162
- NSLog(@"Error while setting preffered IO buffer duration: %@", [error debugDescription]);
163
- return false;
164
- }
165
-
166
184
  [self.audioSession setCategory:self.sessionCategory mode:self.sessionMode options:self.sessionOptions error:&error];
167
185
 
168
186
  if (error != nil) {
@@ -170,13 +188,7 @@ static AudioSessionManager *_sharedInstance = nil;
170
188
  return false;
171
189
  }
172
190
 
173
- [self setActive:true error:&error];
174
-
175
- if (error != nil) {
176
- NSLog(@"Error while activating audio session: %@", [error debugDescription]);
177
- return false;
178
- }
179
-
191
+ self.hasDirtySettings = false;
180
192
  return true;
181
193
  }
182
194
 
@@ -12,11 +12,17 @@
12
12
 
13
13
  @property (nonatomic, assign) bool isInterrupted;
14
14
  @property (nonatomic, assign) bool hadConfigurationChange;
15
- @property (nonatomic, assign) BOOL audioInterruptionsObserved;
15
+ @property (nonatomic, assign) bool audioInterruptionsObserved;
16
+ @property (nonatomic, assign) bool volumeChangesObserved;
16
17
 
17
18
  + (instancetype)sharedInstanceWithAudioManagerModule:(AudioManagerModule *)audioManagerModule;
18
19
  - (void)cleanup;
19
20
 
20
21
  - (void)observeAudioInterruptions:(BOOL)enabled;
22
+ - (void)observeVolumeChanges:(BOOL)enabled;
23
+ - (void)observeValueForKeyPath:(NSString *)keyPath
24
+ ofObject:(id)object
25
+ change:(NSDictionary *)change
26
+ context:(void *)context;
21
27
 
22
28
  @end
@@ -6,6 +6,7 @@
6
6
  @implementation NotificationManager
7
7
 
8
8
  static NotificationManager *_sharedInstance = nil;
9
+ static NSString *VolumeObservationContext = @"VolumeObservationContext";
9
10
 
10
11
  + (instancetype)sharedInstanceWithAudioManagerModule:(AudioManagerModule *)audioManagerModule
11
12
  {
@@ -59,6 +60,35 @@ static NotificationManager *_sharedInstance = nil;
59
60
  self.audioInterruptionsObserved = enabled;
60
61
  }
61
62
 
63
+ // WARNING: this does not work in a simulator environment, test it on a real device
64
+ - (void)observeVolumeChanges:(BOOL)enabled
65
+ {
66
+ if (self.volumeChangesObserved == enabled) {
67
+ return;
68
+ }
69
+
70
+ if (enabled) {
71
+ [[AVAudioSession sharedInstance] addObserver:self
72
+ forKeyPath:@"outputVolume"
73
+ options:NSKeyValueObservingOptionNew
74
+ context:(void *)&VolumeObservationContext];
75
+ } else {
76
+ [[AVAudioSession sharedInstance] removeObserver:self forKeyPath:@"outputVolume" context:nil];
77
+ }
78
+ self.volumeChangesObserved = enabled;
79
+ }
80
+
81
+ - (void)observeValueForKeyPath:(NSString *)keyPath
82
+ ofObject:(id)object
83
+ change:(NSDictionary *)change
84
+ context:(void *)context
85
+ {
86
+ if ([keyPath isEqualToString:@"outputVolume"] && context == &VolumeObservationContext) {
87
+ NSNumber *volume = [NSNumber numberWithFloat:[change[@"new"] floatValue]];
88
+ [self.audioManagerModule sendEventWithName:@"onVolumeChange" body:@{@"value" : volume}];
89
+ }
90
+ }
91
+
62
92
  - (void)configureNotifications
63
93
  {
64
94
  [self.notificationCenter addObserver:self
@@ -51,6 +51,12 @@ Object.defineProperty(exports, "AudioParam", {
51
51
  return _AudioParam.default;
52
52
  }
53
53
  });
54
+ Object.defineProperty(exports, "AudioRecorder", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _AudioRecorder.default;
58
+ }
59
+ });
54
60
  Object.defineProperty(exports, "AudioScheduledSourceNode", {
55
61
  enumerable: true,
56
62
  get: function () {
@@ -165,6 +171,12 @@ Object.defineProperty(exports, "WindowType", {
165
171
  return _types.WindowType;
166
172
  }
167
173
  });
174
+ Object.defineProperty(exports, "useSystemVolume", {
175
+ enumerable: true,
176
+ get: function () {
177
+ return _useSytemVolume.default;
178
+ }
179
+ });
168
180
  var _NativeAudioAPIModule = _interopRequireDefault(require("./specs/NativeAudioAPIModule"));
169
181
  var _AudioBuffer = _interopRequireDefault(require("./core/AudioBuffer"));
170
182
  var _AudioBufferSourceNode = _interopRequireDefault(require("./core/AudioBufferSourceNode"));
@@ -180,7 +192,9 @@ var _BiquadFilterNode = _interopRequireDefault(require("./core/BiquadFilterNode"
180
192
  var _GainNode = _interopRequireDefault(require("./core/GainNode"));
181
193
  var _OscillatorNode = _interopRequireDefault(require("./core/OscillatorNode"));
182
194
  var _StereoPannerNode = _interopRequireDefault(require("./core/StereoPannerNode"));
195
+ var _AudioRecorder = _interopRequireDefault(require("./core/AudioRecorder"));
183
196
  var _system = _interopRequireDefault(require("./system"));
197
+ var _useSytemVolume = _interopRequireDefault(require("./hooks/useSytemVolume"));
184
198
  var _types = require("./types");
185
199
  var _errors = require("./errors");
186
200
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -188,7 +202,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
188
202
 
189
203
  /* eslint-disable no-var */
190
204
 
191
- if (global.createAudioContext == null || global.createOfflineAudioContext == null) {
205
+ if (global.createAudioContext == null || global.createOfflineAudioContext == null || global.createAudioRecorder == null) {
192
206
  if (!_NativeAudioAPIModule.default) {
193
207
  throw new Error(`Failed to install react-native-audio-api: The native module could not be found.`);
194
208
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_NativeAudioAPIModule","_interopRequireDefault","require","_AudioBuffer","_AudioBufferSourceNode","_AudioContext","_OfflineAudioContext","_AudioDestinationNode","_AudioNode","_AnalyserNode","_AudioParam","_AudioScheduledSourceNode","_BaseAudioContext","_BiquadFilterNode","_GainNode","_OscillatorNode","_StereoPannerNode","_system","_types","_errors","e","__esModule","default","global","createAudioContext","createOfflineAudioContext","NativeAudioAPIModule","Error","install"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,qBAAA,GAAAC,sBAAA,CAAAC,OAAA;AA2BA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,sBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,aAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,oBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,qBAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,UAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,aAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,yBAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,iBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,iBAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,SAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,eAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,iBAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,OAAA,GAAAhB,sBAAA,CAAAC,OAAA;AAEA,IAAAgB,MAAA,GAAAhB,OAAA;AAUA,IAAAiB,OAAA,GAAAjB,OAAA;AAMkB,SAAAD,uBAAAmB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAxDlB;;AASA;;AAEA,IACEG,MAAM,CAACC,kBAAkB,IAAI,IAAI,IACjCD,MAAM,CAACE,yBAAyB,IAAI,IAAI,EACxC;EACA,IAAI,CAACC,6BAAoB,EAAE;IACzB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEAD,6BAAoB,CAACE,OAAO,CAAC,CAAC;AAChC","ignoreList":[]}
1
+ {"version":3,"names":["_NativeAudioAPIModule","_interopRequireDefault","require","_AudioBuffer","_AudioBufferSourceNode","_AudioContext","_OfflineAudioContext","_AudioDestinationNode","_AudioNode","_AnalyserNode","_AudioParam","_AudioScheduledSourceNode","_BaseAudioContext","_BiquadFilterNode","_GainNode","_OscillatorNode","_StereoPannerNode","_AudioRecorder","_system","_useSytemVolume","_types","_errors","e","__esModule","default","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","NativeAudioAPIModule","Error","install"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,qBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAoCA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,sBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,aAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,oBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,qBAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,UAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,aAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,yBAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,iBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,iBAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,SAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,eAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,iBAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,cAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,OAAA,GAAAjB,sBAAA,CAAAC,OAAA;AACA,IAAAiB,eAAA,GAAAlB,sBAAA,CAAAC,OAAA;AAEA,IAAAkB,MAAA,GAAAlB,OAAA;AAUA,IAAAmB,OAAA,GAAAnB,OAAA;AAMkB,SAAAD,uBAAAqB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA9DlB;;AAYA;;AAEA,IACEG,MAAM,CAACC,kBAAkB,IAAI,IAAI,IACjCD,MAAM,CAACE,yBAAyB,IAAI,IAAI,IACxCF,MAAM,CAACG,mBAAmB,IAAI,IAAI,EAClC;EACA,IAAI,CAACC,6BAAoB,EAAE;IACzB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEAD,6BAAoB,CAACE,OAAO,CAAC,CAAC;AAChC","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _AudioBuffer = _interopRequireDefault(require("./AudioBuffer"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ class AudioRecorder {
10
+ onAudioReadyCallback = null;
11
+ onErrorCallback = null;
12
+ onStatusChangeCallback = null;
13
+ onAudioReadyInternal = (buffer, numFrames, when) => {
14
+ if (this.onAudioReadyCallback) {
15
+ this.onAudioReadyCallback(new _AudioBuffer.default(buffer), numFrames, when);
16
+ }
17
+ };
18
+ onErrorInternal = error => {
19
+ if (this.onErrorCallback) {
20
+ this.onErrorCallback(error);
21
+ }
22
+ };
23
+ onStatusChangeInternal = (status, previousStatus) => {
24
+ if (this.onStatusChangeCallback) {
25
+ this.onStatusChangeCallback(status, previousStatus);
26
+ }
27
+ };
28
+ constructor(options) {
29
+ this.recorder = global.createAudioRecorder(options);
30
+ }
31
+ start() {
32
+ this.recorder.start();
33
+ }
34
+ stop() {
35
+ this.recorder.stop();
36
+ }
37
+ onAudioReady(callback) {
38
+ this.onAudioReadyCallback = callback;
39
+ this.recorder.onAudioReady(this.onAudioReadyInternal);
40
+ }
41
+ onError(callback) {
42
+ this.onErrorCallback = callback;
43
+ this.recorder.onError(this.onErrorInternal);
44
+ }
45
+ onStatusChange(callback) {
46
+ this.onStatusChangeCallback = callback;
47
+ this.recorder.onStatusChange(this.onStatusChangeInternal);
48
+ }
49
+ }
50
+ exports.default = AudioRecorder;
51
+ //# sourceMappingURL=AudioRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_AudioBuffer","_interopRequireDefault","require","e","__esModule","default","AudioRecorder","onAudioReadyCallback","onErrorCallback","onStatusChangeCallback","onAudioReadyInternal","buffer","numFrames","when","AudioBuffer","onErrorInternal","error","onStatusChangeInternal","status","previousStatus","constructor","options","recorder","global","createAudioRecorder","start","stop","onAudioReady","callback","onError","onStatusChange","exports"],"sourceRoot":"../../../src","sources":["core/AudioRecorder.ts"],"mappings":";;;;;;AAQA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAezB,MAAMG,aAAa,CAAC;EAEzBC,oBAAoB,GAA8B,IAAI;EACtDC,eAAe,GAAyB,IAAI;EAC5CC,sBAAsB,GAAgC,IAAI;EAE1DC,oBAAoB,GAAwBA,CAClDC,MAAoB,EACpBC,SAAiB,EACjBC,IAAY,KACT;IACH,IAAI,IAAI,CAACN,oBAAoB,EAAE;MAC7B,IAAI,CAACA,oBAAoB,CAAC,IAAIO,oBAAW,CAACH,MAAM,CAAC,EAAEC,SAAS,EAAEC,IAAI,CAAC;IACrE;EACF,CAAC;EAEOE,eAAe,GAAoBC,KAAY,IAAK;IAC1D,IAAI,IAAI,CAACR,eAAe,EAAE;MACxB,IAAI,CAACA,eAAe,CAACQ,KAAK,CAAC;IAC7B;EACF,CAAC;EAEOC,sBAAsB,GAA0BA,CACtDC,MAA2B,EAC3BC,cAAmC,KAChC;IACH,IAAI,IAAI,CAACV,sBAAsB,EAAE;MAC/B,IAAI,CAACA,sBAAsB,CAACS,MAAM,EAAEC,cAAc,CAAC;IACrD;EACF,CAAC;EAEDC,WAAWA,CAACC,OAA6B,EAAE;IACzC,IAAI,CAACC,QAAQ,GAAGC,MAAM,CAACC,mBAAmB,CAACH,OAAO,CAAC;EACrD;EAEOI,KAAKA,CAAA,EAAS;IACnB,IAAI,CAACH,QAAQ,CAACG,KAAK,CAAC,CAAC;EACvB;EAEOC,IAAIA,CAAA,EAAS;IAClB,IAAI,CAACJ,QAAQ,CAACI,IAAI,CAAC,CAAC;EACtB;EAEOC,YAAYA,CAACC,QAA4B,EAAQ;IACtD,IAAI,CAACrB,oBAAoB,GAAGqB,QAAQ;IACpC,IAAI,CAACN,QAAQ,CAACK,YAAY,CAAC,IAAI,CAACjB,oBAAoB,CAAC;EACvD;EAEOmB,OAAOA,CAACD,QAAuB,EAAQ;IAC5C,IAAI,CAACpB,eAAe,GAAGoB,QAAQ;IAC/B,IAAI,CAACN,QAAQ,CAACO,OAAO,CAAC,IAAI,CAACd,eAAe,CAAC;EAC7C;EAEOe,cAAcA,CAACF,QAA8B,EAAQ;IAC1D,IAAI,CAACnB,sBAAsB,GAAGmB,QAAQ;IACtC,IAAI,CAACN,QAAQ,CAACQ,cAAc,CAAC,IAAI,CAACb,sBAAsB,CAAC;EAC3D;AACF;AAACc,OAAA,CAAA1B,OAAA,GAAAC,aAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["NotSupportedError","Error","constructor","message","name","_default","exports","default"],"sourceRoot":"../../../src","sources":["errors/NotSupportedError.tsx"],"mappings":";;;;;;AAAA,MAAMA,iBAAiB,SAASC,KAAK,CAAC;EACpCC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,mBAAmB;EACjC;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcP,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["NotSupportedError","Error","constructor","message","name","_default","exports","default"],"sourceRoot":"../../../src","sources":["errors/NotSupportedError.ts"],"mappings":";;;;;;AAAA,MAAMA,iBAAiB,SAASC,KAAK,CAAC;EACpCC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,mBAAmB;EACjC;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcP,iBAAiB","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useSystemVolume;
7
+ var _react = require("react");
8
+ var _AudioManager = _interopRequireDefault(require("../system/AudioManager"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function useSystemVolume() {
11
+ const [volume, setVolume] = (0, _react.useState)(0);
12
+ (0, _react.useEffect)(() => {
13
+ _AudioManager.default.observeVolumeChanges(true);
14
+ const listener = _AudioManager.default.enableRemoteEvent('volumeChange', e => {
15
+ setVolume(parseFloat(e.value.toFixed(2)));
16
+ });
17
+ return () => {
18
+ listener?.remove();
19
+ _AudioManager.default.observeVolumeChanges(false);
20
+ };
21
+ }, []);
22
+ return volume;
23
+ }
24
+ //# sourceMappingURL=useSytemVolume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_AudioManager","_interopRequireDefault","e","__esModule","default","useSystemVolume","volume","setVolume","useState","useEffect","AudioManager","observeVolumeChanges","listener","enableRemoteEvent","parseFloat","value","toFixed","remove"],"sourceRoot":"../../../src","sources":["hooks/useSytemVolume.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAkD,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnC,SAASG,eAAeA,CAAA,EAAG;EACxC,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC,CAAC;EAEvC,IAAAC,gBAAS,EAAC,MAAM;IACdC,qBAAY,CAACC,oBAAoB,CAAC,IAAI,CAAC;IACvC,MAAMC,QAAQ,GAAGF,qBAAY,CAACG,iBAAiB,CAAC,cAAc,EAAGX,CAAC,IAAK;MACrEK,SAAS,CAACO,UAAU,CAACZ,CAAC,CAACa,KAAK,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,OAAO,MAAM;MACXJ,QAAQ,EAAEK,MAAM,CAAC,CAAC;MAClBP,qBAAY,CAACC,oBAAoB,CAAC,KAAK,CAAC;IAC1C,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOL,MAAM;AACf","ignoreList":[]}
@@ -26,7 +26,7 @@ const withForegroundService = (config, {
26
26
  const SFTypes = androidFSTypes.join('|');
27
27
  const serviceElement = {
28
28
  $: {
29
- 'android:name': 'system.MediaNotificationManager$NotificationService',
29
+ 'android:name': 'com.swmansion.audioapi.system.MediaNotificationManager$NotificationService',
30
30
  'android:stopWithTask': 'true',
31
31
  'android:foregroundServiceType': SFTypes
32
32
  },
@@ -1 +1 @@
1
- {"version":3,"names":["_configPlugins","require","pkg","withBackgroundAudio","config","withInfoPlist","iosConfig","modResults","UIBackgroundModes","Array","from","Set","withAndroidPermissions","androidFSPermissions","AndroidConfig","Permissions","withPermissions","withForegroundService","androidFSTypes","withAndroidManifest","mod","manifest","mainApplication","Manifest","getMainApplicationOrThrow","SFTypes","join","serviceElement","$","intentFilter","service","push","withAudioAPI","iosBackgroundMode","androidForegroundService","_default","exports","default","createRunOncePlugin","name","version"],"sourceRoot":"../../../src","sources":["plugin/withAudioAPI.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAQA,MAAMC,GAAG,GAAGD,OAAO,CAAC,qCAAqC,CAAC;AAE1D,MAAME,mBAAiC,GAAIC,MAAM,IAAK;EACpD,OAAO,IAAAC,4BAAa,EAACD,MAAM,EAAGE,SAAS,IAAK;IAC1CA,SAAS,CAACC,UAAU,CAACC,iBAAiB,GAAG,CACvC,GAAGC,KAAK,CAACC,IAAI,CACX,IAAIC,GAAG,CAAC,CAAC,IAAIL,SAAS,CAACC,UAAU,CAACC,iBAAiB,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC,CACF;IAED,OAAOF,SAAS;EAClB,CAAC,CAAC;AACJ,CAAC;AAED,MAAMM,sBAEJ,GAAGA,CAACR,MAAM,EAAE;EAAES;AAAqB,CAAC,KAAK;EACzC,OAAOC,4BAAa,CAACC,WAAW,CAACC,eAAe,CAC9CZ,MAAM,EACNS,oBACF,CAAC;AACH,CAAC;AAED,MAAMI,qBAEJ,GAAGA,CAACb,MAAM,EAAE;EAAEc;AAAe,CAAC,KAAK;EACnC,OAAO,IAAAC,kCAAmB,EAACf,MAAM,EAAGgB,GAAG,IAAK;IAC1C,MAAMC,QAAQ,GAAGD,GAAG,CAACb,UAAU;IAC/B,MAAMe,eAAe,GACnBR,4BAAa,CAACS,QAAQ,CAACC,yBAAyB,CAACH,QAAQ,CAAC;IAE5D,MAAMI,OAAO,GAAGP,cAAc,CAACQ,IAAI,CAAC,GAAG,CAAC;IAExC,MAAMC,cAAc,GAAG;MACrBC,CAAC,EAAE;QACD,cAAc,EAAE,qDAAqD;QACrE,sBAAsB,EAAE,MAAM;QAC9B,+BAA+B,EAAEH;MACnC,CAAC;MACDI,YAAY,EAAE;IAChB,CAAC;IAED,IAAI,CAACP,eAAe,CAACQ,OAAO,EAAE;MAC5BR,eAAe,CAACQ,OAAO,GAAG,EAAE;IAC9B;IAEAR,eAAe,CAACQ,OAAO,CAACC,IAAI,CAACJ,cAAc,CAAC;IAE5C,OAAOP,GAAG;EACZ,CAAC,CAAC;AACJ,CAAC;AAED,MAAMY,YAKJ,GAAGA,CACH5B,MAAM,EACN;EACE6B,iBAAiB,GAAG,IAAI;EACxBC,wBAAwB,GAAG,IAAI;EAC/BrB,oBAAoB,GAAG,EAAE;EACzBK,cAAc,GAAG;AACnB,CAAC,KACE;EACH,IAAIe,iBAAiB,EAAE;IACrB7B,MAAM,GAAGD,mBAAmB,CAACC,MAAM,CAAC;EACtC;EACA,IAAI8B,wBAAwB,EAAE;IAC5B9B,MAAM,GAAGQ,sBAAsB,CAACR,MAAM,EAAE;MACtCS;IACF,CAAC,CAAC;IACFT,MAAM,GAAGa,qBAAqB,CAACb,MAAM,EAAE;MACrCc;IACF,CAAC,CAAC;EACJ;EAEA,OAAOd,MAAM;AACf,CAAC;AAAC,IAAA+B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,kCAAmB,EAACN,YAAY,EAAE9B,GAAG,CAACqC,IAAI,EAAErC,GAAG,CAACsC,OAAO,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_configPlugins","require","pkg","withBackgroundAudio","config","withInfoPlist","iosConfig","modResults","UIBackgroundModes","Array","from","Set","withAndroidPermissions","androidFSPermissions","AndroidConfig","Permissions","withPermissions","withForegroundService","androidFSTypes","withAndroidManifest","mod","manifest","mainApplication","Manifest","getMainApplicationOrThrow","SFTypes","join","serviceElement","$","intentFilter","service","push","withAudioAPI","iosBackgroundMode","androidForegroundService","_default","exports","default","createRunOncePlugin","name","version"],"sourceRoot":"../../../src","sources":["plugin/withAudioAPI.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAQA,MAAMC,GAAG,GAAGD,OAAO,CAAC,qCAAqC,CAAC;AAE1D,MAAME,mBAAiC,GAAIC,MAAM,IAAK;EACpD,OAAO,IAAAC,4BAAa,EAACD,MAAM,EAAGE,SAAS,IAAK;IAC1CA,SAAS,CAACC,UAAU,CAACC,iBAAiB,GAAG,CACvC,GAAGC,KAAK,CAACC,IAAI,CACX,IAAIC,GAAG,CAAC,CAAC,IAAIL,SAAS,CAACC,UAAU,CAACC,iBAAiB,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC,CACF;IAED,OAAOF,SAAS;EAClB,CAAC,CAAC;AACJ,CAAC;AAED,MAAMM,sBAEJ,GAAGA,CAACR,MAAM,EAAE;EAAES;AAAqB,CAAC,KAAK;EACzC,OAAOC,4BAAa,CAACC,WAAW,CAACC,eAAe,CAC9CZ,MAAM,EACNS,oBACF,CAAC;AACH,CAAC;AAED,MAAMI,qBAEJ,GAAGA,CAACb,MAAM,EAAE;EAAEc;AAAe,CAAC,KAAK;EACnC,OAAO,IAAAC,kCAAmB,EAACf,MAAM,EAAGgB,GAAG,IAAK;IAC1C,MAAMC,QAAQ,GAAGD,GAAG,CAACb,UAAU;IAC/B,MAAMe,eAAe,GACnBR,4BAAa,CAACS,QAAQ,CAACC,yBAAyB,CAACH,QAAQ,CAAC;IAE5D,MAAMI,OAAO,GAAGP,cAAc,CAACQ,IAAI,CAAC,GAAG,CAAC;IAExC,MAAMC,cAAc,GAAG;MACrBC,CAAC,EAAE;QACD,cAAc,EACZ,4EAA4E;QAC9E,sBAAsB,EAAE,MAAM;QAC9B,+BAA+B,EAAEH;MACnC,CAAC;MACDI,YAAY,EAAE;IAChB,CAAC;IAED,IAAI,CAACP,eAAe,CAACQ,OAAO,EAAE;MAC5BR,eAAe,CAACQ,OAAO,GAAG,EAAE;IAC9B;IAEAR,eAAe,CAACQ,OAAO,CAACC,IAAI,CAACJ,cAAc,CAAC;IAE5C,OAAOP,GAAG;EACZ,CAAC,CAAC;AACJ,CAAC;AAED,MAAMY,YAKJ,GAAGA,CACH5B,MAAM,EACN;EACE6B,iBAAiB,GAAG,IAAI;EACxBC,wBAAwB,GAAG,IAAI;EAC/BrB,oBAAoB,GAAG,EAAE;EACzBK,cAAc,GAAG;AACnB,CAAC,KACE;EACH,IAAIe,iBAAiB,EAAE;IACrB7B,MAAM,GAAGD,mBAAmB,CAACC,MAAM,CAAC;EACtC;EACA,IAAI8B,wBAAwB,EAAE;IAC5B9B,MAAM,GAAGQ,sBAAsB,CAACR,MAAM,EAAE;MACtCS;IACF,CAAC,CAAC;IACFT,MAAM,GAAGa,qBAAqB,CAACb,MAAM,EAAE;MACrCc;IACF,CAAC,CAAC;EACJ;EAEA,OAAOd,MAAM;AACf,CAAC;AAAC,IAAA+B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,kCAAmB,EAACN,YAAY,EAAE9B,GAAG,CAACqC,IAAI,EAAErC,GAAG,CAACsC,OAAO,CAAC","ignoreList":[]}
@@ -20,14 +20,17 @@ const AudioManagerModule = exports.AudioManagerModule = {
20
20
  enableRemoteCommand(name, enabled) {
21
21
  NativeAudioManagerModule.enableRemoteCommand(name, enabled);
22
22
  },
23
- setAudioSessionOptions(category, mode, options, active) {
24
- NativeAudioManagerModule.setAudioSessionOptions(category, mode, options, active);
23
+ setAudioSessionOptions(category, mode, options) {
24
+ NativeAudioManagerModule.setAudioSessionOptions(category, mode, options);
25
25
  },
26
26
  getDevicePreferredSampleRate() {
27
27
  return NativeAudioManagerModule.getDevicePreferredSampleRate();
28
28
  },
29
29
  observeAudioInterruptions(enabled) {
30
30
  NativeAudioManagerModule.observeAudioInterruptions(enabled);
31
+ },
32
+ observeVolumeChanges(enabled) {
33
+ NativeAudioManagerModule.observeVolumeChanges(enabled);
31
34
  }
32
35
  };
33
36
  //# sourceMappingURL=NativeAudioManagerModule.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","NativeAudioManagerModule","NativeModules","AudioManagerModule","eventEmitter","exports","Platform","OS","NativeEventEmitter","Error","setLockScreenInfo","info","resetLockScreenInfo","enableRemoteCommand","name","enabled","setAudioSessionOptions","category","mode","options","active","getDevicePreferredSampleRate","observeAudioInterruptions"],"sourceRoot":"../../../src","sources":["specs/NativeAudioManagerModule.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,wBAAwB,GAAGC,0BAAa,CAACC,kBAAkB;AACjE,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAChBE,qBAAQ,CAACC,EAAE,KAAK,SAAS,GACrB,IAAIC,+BAAkB,CAAC,CAAC,GACxB,IAAIA,+BAAkB,CAACN,0BAAa,CAACC,kBAAkB,CAAC;AAE9D,IAAI,CAACF,wBAAwB,IAAI,CAACG,YAAY,EAAE;EAC9C,MAAM,IAAIK,KAAK,CACb,iFACF,CAAC;AACH;AAEA,MAAMN,kBAAkB,GAAAE,OAAA,CAAAF,kBAAA,GAAG;EACzBO,iBAAiBA,CAACC,IAEjB,EAAQ;IACPV,wBAAwB,CAACS,iBAAiB,CAACC,IAAI,CAAC;EAClD,CAAC;EACDC,mBAAmBA,CAAA,EAAS;IAC1BX,wBAAwB,CAACW,mBAAmB,CAAC,CAAC;EAChD,CAAC;EACDC,mBAAmBA,CAACC,IAAY,EAAEC,OAAgB,EAAQ;IACxDd,wBAAwB,CAACY,mBAAmB,CAACC,IAAI,EAAEC,OAAO,CAAC;EAC7D,CAAC;EACDC,sBAAsBA,CACpBC,QAAgB,EAChBC,IAAY,EACZC,OAAsB,EACtBC,MAAe,EACT;IACNnB,wBAAwB,CAACe,sBAAsB,CAC7CC,QAAQ,EACRC,IAAI,EACJC,OAAO,EACPC,MACF,CAAC;EACH,CAAC;EACDC,4BAA4BA,CAAA,EAAW;IACrC,OAAOpB,wBAAwB,CAACoB,4BAA4B,CAAC,CAAC;EAChE,CAAC;EACDC,yBAAyBA,CAACP,OAAgB,EAAQ;IAChDd,wBAAwB,CAACqB,yBAAyB,CAACP,OAAO,CAAC;EAC7D;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","NativeAudioManagerModule","NativeModules","AudioManagerModule","eventEmitter","exports","Platform","OS","NativeEventEmitter","Error","setLockScreenInfo","info","resetLockScreenInfo","enableRemoteCommand","name","enabled","setAudioSessionOptions","category","mode","options","getDevicePreferredSampleRate","observeAudioInterruptions","observeVolumeChanges"],"sourceRoot":"../../../src","sources":["specs/NativeAudioManagerModule.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,wBAAwB,GAAGC,0BAAa,CAACC,kBAAkB;AACjE,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAChBE,qBAAQ,CAACC,EAAE,KAAK,SAAS,GACrB,IAAIC,+BAAkB,CAAC,CAAC,GACxB,IAAIA,+BAAkB,CAACN,0BAAa,CAACC,kBAAkB,CAAC;AAE9D,IAAI,CAACF,wBAAwB,IAAI,CAACG,YAAY,EAAE;EAC9C,MAAM,IAAIK,KAAK,CACb,iFACF,CAAC;AACH;AAEA,MAAMN,kBAAkB,GAAAE,OAAA,CAAAF,kBAAA,GAAG;EACzBO,iBAAiBA,CAACC,IAEjB,EAAQ;IACPV,wBAAwB,CAACS,iBAAiB,CAACC,IAAI,CAAC;EAClD,CAAC;EACDC,mBAAmBA,CAAA,EAAS;IAC1BX,wBAAwB,CAACW,mBAAmB,CAAC,CAAC;EAChD,CAAC;EACDC,mBAAmBA,CAACC,IAAY,EAAEC,OAAgB,EAAQ;IACxDd,wBAAwB,CAACY,mBAAmB,CAACC,IAAI,EAAEC,OAAO,CAAC;EAC7D,CAAC;EACDC,sBAAsBA,CACpBC,QAAgB,EAChBC,IAAY,EACZC,OAAsB,EAChB;IACNlB,wBAAwB,CAACe,sBAAsB,CAACC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,CAAC;EAC1E,CAAC;EACDC,4BAA4BA,CAAA,EAAW;IACrC,OAAOnB,wBAAwB,CAACmB,4BAA4B,CAAC,CAAC;EAChE,CAAC;EACDC,yBAAyBA,CAACN,OAAgB,EAAQ;IAChDd,wBAAwB,CAACoB,yBAAyB,CAACN,OAAO,CAAC;EAC7D,CAAC;EACDO,oBAAoBA,CAACP,OAAgB,EAAQ;IAC3Cd,wBAAwB,CAACqB,oBAAoB,CAACP,OAAO,CAAC;EACxD;AACF,CAAC","ignoreList":[]}