react-native-audio-api 0.10.0-nightly-e16d7ff-20251031 → 0.10.0-nightly-cc082c7-20251101

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.
@@ -110,6 +110,10 @@ class AudioAPIModule(
110
110
  // noting to do here
111
111
  }
112
112
 
113
+ override fun disableSessionManagement() {
114
+ // nothing to do here
115
+ }
116
+
113
117
  override fun setLockScreenInfo(info: ReadableMap?) {
114
118
  MediaSessionManager.setLockScreenInfo(info)
115
119
  }
@@ -50,6 +50,10 @@
50
50
  @DoNotStrip
51
51
  public abstract void setAudioSessionOptions(String category, String mode, ReadableArray options, boolean allowHaptics);
52
52
 
53
+ @ReactMethod
54
+ @DoNotStrip
55
+ public abstract void disableSessionManagement();
56
+
53
57
  @ReactMethod
54
58
  @DoNotStrip
55
59
  public abstract void setLockScreenInfo(ReadableMap info);
@@ -76,20 +76,10 @@ bool StreamerNode::initialize(const std::string &input_url) {
76
76
  receiver_ = std::move(receiver);
77
77
 
78
78
  streamingThread_ = std::thread(&StreamerNode::streamAudio, this);
79
- streamFlag.store(true, std::memory_order_release);
80
79
  isInitialized_ = true;
81
80
  return true;
82
81
  }
83
82
 
84
- void StreamerNode::stop(double when) {
85
- AudioScheduledSourceNode::stop(when);
86
- streamFlag.store(false, std::memory_order_release);
87
- StreamingData dummy;
88
- while (receiver_.try_receive(dummy) ==
89
- channels::spsc::ResponseStatus::SUCCESS)
90
- ; // clear the receiver
91
- }
92
-
93
83
  bool StreamerNode::setupResampler() {
94
84
  // Allocate resampler context
95
85
  swrCtx_ = swr_alloc();
@@ -126,7 +116,7 @@ bool StreamerNode::setupResampler() {
126
116
  }
127
117
 
128
118
  void StreamerNode::streamAudio() {
129
- while (streamFlag.load(std::memory_order_acquire)) {
119
+ while (!isNodeFinished_.load(std::memory_order_acquire)) {
130
120
  if (av_read_frame(fmtCtx_, pkt_) < 0) {
131
121
  return;
132
122
  }
@@ -143,6 +133,10 @@ void StreamerNode::streamAudio() {
143
133
  }
144
134
  av_packet_unref(pkt_);
145
135
  }
136
+ StreamingData dummy;
137
+ while (receiver_.try_receive(dummy) ==
138
+ channels::spsc::ResponseStatus::SUCCESS)
139
+ ; // clear the receiver
146
140
  }
147
141
 
148
142
  std::shared_ptr<AudioBus> StreamerNode::processNode(
@@ -151,6 +145,7 @@ std::shared_ptr<AudioBus> StreamerNode::processNode(
151
145
  size_t startOffset = 0;
152
146
  size_t offsetLength = 0;
153
147
  updatePlaybackInfo(processingBus, framesToProcess, startOffset, offsetLength);
148
+ isNodeFinished_.store(isFinished(), std::memory_order_release);
154
149
 
155
150
  if (!isPlaying() && !isStopScheduled()) {
156
151
  processingBus->zero();
@@ -171,10 +166,14 @@ std::shared_ptr<AudioBus> StreamerNode::processNode(
171
166
  alreadyProcessed += bufferRemaining;
172
167
  }
173
168
  StreamingData data;
174
- receiver_.try_receive(data);
175
- bufferedBus_ = std::make_shared<AudioBus>(std::move(data.bus));
176
- bufferedBusSize_ = data.size;
177
- processedSamples_ = 0;
169
+ auto res = receiver_.try_receive(data);
170
+ if (res == channels::spsc::ResponseStatus::SUCCESS) {
171
+ bufferedBus_ = std::make_shared<AudioBus>(std::move(data.bus));
172
+ bufferedBusSize_ = data.size;
173
+ processedSamples_ = 0;
174
+ } else {
175
+ bufferedBus_ = nullptr;
176
+ }
178
177
  }
179
178
  if (bufferedBus_ != nullptr) {
180
179
  for (int ch = 0; ch < processingBus->getNumberOfChannels(); ch++) {
@@ -223,7 +222,7 @@ bool StreamerNode::processFrameWithResampler(AVFrame *frame) {
223
222
  }
224
223
 
225
224
  // if we would like to finish dont copy anything
226
- if (!streamFlag.load(std::memory_order_acquire)) {
225
+ if (this->isFinished()) {
227
226
  return true;
228
227
  }
229
228
  auto bus = AudioBus(
@@ -281,7 +280,7 @@ bool StreamerNode::setupDecoder() {
281
280
  }
282
281
 
283
282
  void StreamerNode::cleanup() {
284
- streamFlag.store(false, std::memory_order_release);
283
+ this->playbackState_ = PlaybackState::FINISHED;
285
284
  // cleanup cannot be called from the streaming thread so there is no need to
286
285
  // check if we are in the same thread
287
286
  streamingThread_.join();
@@ -71,7 +71,6 @@ class StreamerNode : public AudioScheduledSourceNode {
71
71
  * @brief Initialize all necessary ffmpeg components for streaming audio
72
72
  */
73
73
  bool initialize(const std::string& inputUrl);
74
- void stop(double when) override;
75
74
 
76
75
  protected:
77
76
  std::shared_ptr<AudioBus> processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override;
@@ -94,7 +93,7 @@ class StreamerNode : public AudioScheduledSourceNode {
94
93
  size_t processedSamples_;
95
94
 
96
95
  std::thread streamingThread_;
97
- std::atomic<bool> streamFlag; // Flag to control the streaming thread
96
+ std::atomic<bool> isNodeFinished_; // Flag to control the streaming thread
98
97
  static constexpr int INITIAL_MAX_RESAMPLED_SAMPLES = 8192; // Initial size for resampled data
99
98
  channels::spsc::Sender<StreamingData, STREAMER_NODE_SPSC_OVERFLOW_STRATEGY, STREAMER_NODE_SPSC_WAIT_STRATEGY> sender_;
100
99
  channels::spsc::Receiver<StreamingData, STREAMER_NODE_SPSC_OVERFLOW_STRATEGY, STREAMER_NODE_SPSC_WAIT_STRATEGY> receiver_;
@@ -118,6 +118,9 @@ RCT_EXPORT_METHOD(
118
118
  setAudioSessionActivity : (BOOL)enabled resolve : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)
119
119
  reject)
120
120
  {
121
+ if (!self.audioSessionManager.shouldManageSession) {
122
+ [self.audioSessionManager setShouldManageSession:true];
123
+ }
121
124
  if ([self.audioSessionManager setActive:enabled]) {
122
125
  resolve(@"true");
123
126
  return;
@@ -130,6 +133,9 @@ RCT_EXPORT_METHOD(
130
133
  setAudioSessionOptions : (NSString *)category mode : (NSString *)mode options : (NSArray *)
131
134
  options allowHaptics : (BOOL)allowHaptics)
132
135
  {
136
+ if (!self.audioSessionManager.shouldManageSession) {
137
+ [self.audioSessionManager setShouldManageSession:true];
138
+ }
133
139
  [self.audioSessionManager setAudioSessionOptions:category mode:mode options:options allowHaptics:allowHaptics];
134
140
  }
135
141
 
@@ -182,6 +188,11 @@ RCT_EXPORT_METHOD(
182
188
  [self.audioSessionManager getDevicesInfo:resolve reject:reject];
183
189
  }
184
190
 
191
+ RCT_EXPORT_METHOD(disableSessionManagement)
192
+ {
193
+ [self.audioSessionManager disableSessionManagement];
194
+ }
195
+
185
196
  #ifdef RCT_NEW_ARCH_ENABLED
186
197
  - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
187
198
  (const facebook::react::ObjCTurboModule::InitParams &)params
@@ -14,6 +14,7 @@
14
14
  @property (nonatomic, assign) AVAudioSessionCategory sessionCategory;
15
15
  @property (nonatomic, assign) AVAudioSessionCategoryOptions sessionOptions;
16
16
  @property (nonatomic, assign) bool allowHapticsAndSystemSoundsDuringRecording;
17
+ @property (nonatomic, assign) bool shouldManageSession;
17
18
 
18
19
  - (instancetype)init;
19
20
  - (void)cleanup;
@@ -27,6 +28,7 @@
27
28
  options:(NSArray *)options
28
29
  allowHaptics:(BOOL)allowHaptics;
29
30
  - (bool)setActive:(bool)active;
31
+ - (void)disableSessionManagement;
30
32
 
31
33
  - (void)requestRecordingPermissions:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject;
32
34
  - (void)checkRecordingPermissions:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject;
@@ -13,6 +13,7 @@
13
13
  self.allowHapticsAndSystemSoundsDuringRecording = false;
14
14
  self.hasDirtySettings = true;
15
15
  self.isActive = false;
16
+ self.shouldManageSession = true;
16
17
  }
17
18
 
18
19
  return self;
@@ -135,6 +136,9 @@
135
136
 
136
137
  - (bool)setActive:(bool)active
137
138
  {
139
+ if (!self.shouldManageSession) {
140
+ return true;
141
+ }
138
142
  if (active == self.isActive) {
139
143
  return true;
140
144
  }
@@ -162,6 +166,11 @@
162
166
 
163
167
  - (bool)configureAudioSession
164
168
  {
169
+ if (!self.shouldManageSession) {
170
+ NSLog(@"[AudioSessionManager] Skipping AVAudioSession configuration, shouldManageSession is false");
171
+ return true;
172
+ }
173
+
165
174
  if (![self hasDirtySettings]) {
166
175
  return true;
167
176
  }
@@ -211,6 +220,12 @@
211
220
  self.isActive = false;
212
221
  }
213
222
 
223
+ - (void)disableSessionManagement
224
+ {
225
+ self.shouldManageSession = false;
226
+ self.hasDirtySettings = false;
227
+ }
228
+
214
229
  - (void)requestRecordingPermissions:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
215
230
  {
216
231
  id value = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSMicrophoneUsageDescription"];
@@ -1 +1 @@
1
- {"version":3,"names":["Object","defineProperty","exports","value","NativeAudioAPIModule","_reactNative","require","TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeAudioAPIModule.ts"],"mappings":"AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,oBAAA;AACb,IAAAC,YAAA,GAAAC,OAAA;AAqCA,MAAMF,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,GAAGG,gCAAmB,CAACC,GAAG,CAAO,gBAAgB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Object","defineProperty","exports","value","NativeAudioAPIModule","_reactNative","require","TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeAudioAPIModule.ts"],"mappings":"AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,oBAAA;AACb,IAAAC,YAAA,GAAAC,OAAA;AAsCA,MAAMF,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,GAAGG,gCAAmB,CAACC,GAAG,CAAO,gBAAgB,CAAC","ignoreList":[]}
@@ -25,6 +25,9 @@ class AudioManager {
25
25
  setAudioSessionOptions(options) {
26
26
  _specs.NativeAudioAPIModule.setAudioSessionOptions(options.iosCategory ?? '', options.iosMode ?? '', options.iosOptions ?? [], options.iosAllowHaptics ?? false);
27
27
  }
28
+ disableSessionManagement() {
29
+ _specs.NativeAudioAPIModule.disableSessionManagement();
30
+ }
28
31
  setLockScreenInfo(info) {
29
32
  _specs.NativeAudioAPIModule.setLockScreenInfo(info);
30
33
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_specs","require","_events","global","AudioEventEmitter","NativeAudioAPIModule","Error","install","AudioManager","constructor","audioEventEmitter","getDevicePreferredSampleRate","setAudioSessionActivity","enabled","setAudioSessionOptions","options","iosCategory","iosMode","iosOptions","iosAllowHaptics","setLockScreenInfo","info","resetLockScreenInfo","observeAudioInterruptions","activelyReclaimSession","observeVolumeChanges","enableRemoteCommand","name","addSystemEventListener","callback","addAudioEventListener","requestRecordingPermissions","checkRecordingPermissions","getDevicesInfo","_default","exports","default"],"sourceRoot":"../../../src","sources":["system/AudioManager.ts"],"mappings":";;;;;;AAWA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAIE,MAAM,CAACC,iBAAiB,IAAI,IAAI,EAAE;EACpC,IAAI,CAACC,2BAAoB,EAAE;IACzB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEAD,2BAAoB,CAACE,OAAO,CAAC,CAAC;AAChC;AAEA,MAAMC,YAAY,CAAC;EAEjBC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,iBAAiB,GAAG,IAAIN,yBAAiB,CAACD,MAAM,CAACC,iBAAiB,CAAC;EAC1E;EAEAO,4BAA4BA,CAAA,EAAW;IACrC,OAAON,2BAAoB,CAAEM,4BAA4B,CAAC,CAAC;EAC7D;EAEAC,uBAAuBA,CAACC,OAAgB,EAAoB;IAC1D,OAAOR,2BAAoB,CAAEO,uBAAuB,CAACC,OAAO,CAAC;EAC/D;EAEAC,sBAAsBA,CAACC,OAAuB,EAAE;IAC9CV,2BAAoB,CAAES,sBAAsB,CAC1CC,OAAO,CAACC,WAAW,IAAI,EAAE,EACzBD,OAAO,CAACE,OAAO,IAAI,EAAE,EACrBF,OAAO,CAACG,UAAU,IAAI,EAAE,EACxBH,OAAO,CAACI,eAAe,IAAI,KAC7B,CAAC;EACH;EAEAC,iBAAiBA,CAACC,IAAoB,EAAE;IACtChB,2BAAoB,CAAEe,iBAAiB,CAACC,IAAI,CAAC;EAC/C;EAEAC,mBAAmBA,CAAA,EAAG;IACpBjB,2BAAoB,CAAEiB,mBAAmB,CAAC,CAAC;EAC7C;EAEAC,yBAAyBA,CAACV,OAAgB,EAAE;IAC1CR,2BAAoB,CAAEkB,yBAAyB,CAACV,OAAO,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,sBAAsBA,CAACX,OAAgB,EAAE;IACvCR,2BAAoB,CAAEmB,sBAAsB,CAACX,OAAO,CAAC;EACvD;EAEAY,oBAAoBA,CAACZ,OAAgB,EAAE;IACrCR,2BAAoB,CAAEoB,oBAAoB,CAACZ,OAAO,CAAC;EACrD;EAEAa,mBAAmBA,CAACC,IAA4B,EAAEd,OAAgB,EAAE;IAClER,2BAAoB,CAAEqB,mBAAmB,CAACC,IAAI,EAAEd,OAAO,CAAC;EAC1D;EAEAe,sBAAsBA,CACpBD,IAAU,EACVE,QAAmC,EACX;IACxB,OAAO,IAAI,CAACnB,iBAAiB,CAACoB,qBAAqB,CAACH,IAAI,EAAEE,QAAQ,CAAC;EACrE;EAEA,MAAME,2BAA2BA,CAAA,EAA8B;IAC7D,OAAO1B,2BAAoB,CAAE0B,2BAA2B,CAAC,CAAC;EAC5D;EAEA,MAAMC,yBAAyBA,CAAA,EAA8B;IAC3D,OAAO3B,2BAAoB,CAAE2B,yBAAyB,CAAC,CAAC;EAC1D;EAEA,MAAMC,cAAcA,CAAA,EAA8B;IAChD,OAAO5B,2BAAoB,CAAE4B,cAAc,CAAC,CAAC;EAC/C;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAI5B,YAAY,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_specs","require","_events","global","AudioEventEmitter","NativeAudioAPIModule","Error","install","AudioManager","constructor","audioEventEmitter","getDevicePreferredSampleRate","setAudioSessionActivity","enabled","setAudioSessionOptions","options","iosCategory","iosMode","iosOptions","iosAllowHaptics","disableSessionManagement","setLockScreenInfo","info","resetLockScreenInfo","observeAudioInterruptions","activelyReclaimSession","observeVolumeChanges","enableRemoteCommand","name","addSystemEventListener","callback","addAudioEventListener","requestRecordingPermissions","checkRecordingPermissions","getDevicesInfo","_default","exports","default"],"sourceRoot":"../../../src","sources":["system/AudioManager.ts"],"mappings":";;;;;;AAWA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAIE,MAAM,CAACC,iBAAiB,IAAI,IAAI,EAAE;EACpC,IAAI,CAACC,2BAAoB,EAAE;IACzB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEAD,2BAAoB,CAACE,OAAO,CAAC,CAAC;AAChC;AAEA,MAAMC,YAAY,CAAC;EAEjBC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,iBAAiB,GAAG,IAAIN,yBAAiB,CAACD,MAAM,CAACC,iBAAiB,CAAC;EAC1E;EAEAO,4BAA4BA,CAAA,EAAW;IACrC,OAAON,2BAAoB,CAAEM,4BAA4B,CAAC,CAAC;EAC7D;EAEAC,uBAAuBA,CAACC,OAAgB,EAAoB;IAC1D,OAAOR,2BAAoB,CAAEO,uBAAuB,CAACC,OAAO,CAAC;EAC/D;EAEAC,sBAAsBA,CAACC,OAAuB,EAAE;IAC9CV,2BAAoB,CAAES,sBAAsB,CAC1CC,OAAO,CAACC,WAAW,IAAI,EAAE,EACzBD,OAAO,CAACE,OAAO,IAAI,EAAE,EACrBF,OAAO,CAACG,UAAU,IAAI,EAAE,EACxBH,OAAO,CAACI,eAAe,IAAI,KAC7B,CAAC;EACH;EAEAC,wBAAwBA,CAAA,EAAG;IACzBf,2BAAoB,CAAEe,wBAAwB,CAAC,CAAC;EAClD;EAEAC,iBAAiBA,CAACC,IAAoB,EAAE;IACtCjB,2BAAoB,CAAEgB,iBAAiB,CAACC,IAAI,CAAC;EAC/C;EAEAC,mBAAmBA,CAAA,EAAG;IACpBlB,2BAAoB,CAAEkB,mBAAmB,CAAC,CAAC;EAC7C;EAEAC,yBAAyBA,CAACX,OAAgB,EAAE;IAC1CR,2BAAoB,CAAEmB,yBAAyB,CAACX,OAAO,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEY,sBAAsBA,CAACZ,OAAgB,EAAE;IACvCR,2BAAoB,CAAEoB,sBAAsB,CAACZ,OAAO,CAAC;EACvD;EAEAa,oBAAoBA,CAACb,OAAgB,EAAE;IACrCR,2BAAoB,CAAEqB,oBAAoB,CAACb,OAAO,CAAC;EACrD;EAEAc,mBAAmBA,CAACC,IAA4B,EAAEf,OAAgB,EAAE;IAClER,2BAAoB,CAAEsB,mBAAmB,CAACC,IAAI,EAAEf,OAAO,CAAC;EAC1D;EAEAgB,sBAAsBA,CACpBD,IAAU,EACVE,QAAmC,EACX;IACxB,OAAO,IAAI,CAACpB,iBAAiB,CAACqB,qBAAqB,CAACH,IAAI,EAAEE,QAAQ,CAAC;EACrE;EAEA,MAAME,2BAA2BA,CAAA,EAA8B;IAC7D,OAAO3B,2BAAoB,CAAE2B,2BAA2B,CAAC,CAAC;EAC5D;EAEA,MAAMC,yBAAyBA,CAAA,EAA8B;IAC3D,OAAO5B,2BAAoB,CAAE4B,yBAAyB,CAAC,CAAC;EAC1D;EAEA,MAAMC,cAAcA,CAAA,EAA8B;IAChD,OAAO7B,2BAAoB,CAAE6B,cAAc,CAAC,CAAC;EAC/C;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAI7B,YAAY,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","NativeAudioAPIModule","get"],"sourceRoot":"../../../src","sources":["specs/NativeAudioAPIModule.ts"],"mappings":"AAAA,YAAY;;AACZ,SAASA,mBAAmB,QAAQ,cAAc;AAqClD,MAAMC,oBAAoB,GAAGD,mBAAmB,CAACE,GAAG,CAAO,gBAAgB,CAAC;AAE5E,SAASD,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","NativeAudioAPIModule","get"],"sourceRoot":"../../../src","sources":["specs/NativeAudioAPIModule.ts"],"mappings":"AAAA,YAAY;;AACZ,SAASA,mBAAmB,QAAQ,cAAc;AAsClD,MAAMC,oBAAoB,GAAGD,mBAAmB,CAACE,GAAG,CAAO,gBAAgB,CAAC;AAE5E,SAASD,oBAAoB","ignoreList":[]}
@@ -21,6 +21,9 @@ class AudioManager {
21
21
  setAudioSessionOptions(options) {
22
22
  NativeAudioAPIModule.setAudioSessionOptions(options.iosCategory ?? '', options.iosMode ?? '', options.iosOptions ?? [], options.iosAllowHaptics ?? false);
23
23
  }
24
+ disableSessionManagement() {
25
+ NativeAudioAPIModule.disableSessionManagement();
26
+ }
24
27
  setLockScreenInfo(info) {
25
28
  NativeAudioAPIModule.setLockScreenInfo(info);
26
29
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeAudioAPIModule","AudioEventEmitter","global","Error","install","AudioManager","constructor","audioEventEmitter","getDevicePreferredSampleRate","setAudioSessionActivity","enabled","setAudioSessionOptions","options","iosCategory","iosMode","iosOptions","iosAllowHaptics","setLockScreenInfo","info","resetLockScreenInfo","observeAudioInterruptions","activelyReclaimSession","observeVolumeChanges","enableRemoteCommand","name","addSystemEventListener","callback","addAudioEventListener","requestRecordingPermissions","checkRecordingPermissions","getDevicesInfo"],"sourceRoot":"../../../src","sources":["system/AudioManager.ts"],"mappings":";;AAWA,SAASA,oBAAoB,QAAQ,mBAAU;AAC/C,SAASC,iBAAiB,QAAgC,oBAAW;AAErE,IAAIC,MAAM,CAACD,iBAAiB,IAAI,IAAI,EAAE;EACpC,IAAI,CAACD,oBAAoB,EAAE;IACzB,MAAM,IAAIG,KAAK,CACb,iFACF,CAAC;EACH;EAEAH,oBAAoB,CAACI,OAAO,CAAC,CAAC;AAChC;AAEA,MAAMC,YAAY,CAAC;EAEjBC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,iBAAiB,GAAG,IAAIN,iBAAiB,CAACC,MAAM,CAACD,iBAAiB,CAAC;EAC1E;EAEAO,4BAA4BA,CAAA,EAAW;IACrC,OAAOR,oBAAoB,CAAEQ,4BAA4B,CAAC,CAAC;EAC7D;EAEAC,uBAAuBA,CAACC,OAAgB,EAAoB;IAC1D,OAAOV,oBAAoB,CAAES,uBAAuB,CAACC,OAAO,CAAC;EAC/D;EAEAC,sBAAsBA,CAACC,OAAuB,EAAE;IAC9CZ,oBAAoB,CAAEW,sBAAsB,CAC1CC,OAAO,CAACC,WAAW,IAAI,EAAE,EACzBD,OAAO,CAACE,OAAO,IAAI,EAAE,EACrBF,OAAO,CAACG,UAAU,IAAI,EAAE,EACxBH,OAAO,CAACI,eAAe,IAAI,KAC7B,CAAC;EACH;EAEAC,iBAAiBA,CAACC,IAAoB,EAAE;IACtClB,oBAAoB,CAAEiB,iBAAiB,CAACC,IAAI,CAAC;EAC/C;EAEAC,mBAAmBA,CAAA,EAAG;IACpBnB,oBAAoB,CAAEmB,mBAAmB,CAAC,CAAC;EAC7C;EAEAC,yBAAyBA,CAACV,OAAgB,EAAE;IAC1CV,oBAAoB,CAAEoB,yBAAyB,CAACV,OAAO,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,sBAAsBA,CAACX,OAAgB,EAAE;IACvCV,oBAAoB,CAAEqB,sBAAsB,CAACX,OAAO,CAAC;EACvD;EAEAY,oBAAoBA,CAACZ,OAAgB,EAAE;IACrCV,oBAAoB,CAAEsB,oBAAoB,CAACZ,OAAO,CAAC;EACrD;EAEAa,mBAAmBA,CAACC,IAA4B,EAAEd,OAAgB,EAAE;IAClEV,oBAAoB,CAAEuB,mBAAmB,CAACC,IAAI,EAAEd,OAAO,CAAC;EAC1D;EAEAe,sBAAsBA,CACpBD,IAAU,EACVE,QAAmC,EACX;IACxB,OAAO,IAAI,CAACnB,iBAAiB,CAACoB,qBAAqB,CAACH,IAAI,EAAEE,QAAQ,CAAC;EACrE;EAEA,MAAME,2BAA2BA,CAAA,EAA8B;IAC7D,OAAO5B,oBAAoB,CAAE4B,2BAA2B,CAAC,CAAC;EAC5D;EAEA,MAAMC,yBAAyBA,CAAA,EAA8B;IAC3D,OAAO7B,oBAAoB,CAAE6B,yBAAyB,CAAC,CAAC;EAC1D;EAEA,MAAMC,cAAcA,CAAA,EAA8B;IAChD,OAAO9B,oBAAoB,CAAE8B,cAAc,CAAC,CAAC;EAC/C;AACF;AAEA,eAAe,IAAIzB,YAAY,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["NativeAudioAPIModule","AudioEventEmitter","global","Error","install","AudioManager","constructor","audioEventEmitter","getDevicePreferredSampleRate","setAudioSessionActivity","enabled","setAudioSessionOptions","options","iosCategory","iosMode","iosOptions","iosAllowHaptics","disableSessionManagement","setLockScreenInfo","info","resetLockScreenInfo","observeAudioInterruptions","activelyReclaimSession","observeVolumeChanges","enableRemoteCommand","name","addSystemEventListener","callback","addAudioEventListener","requestRecordingPermissions","checkRecordingPermissions","getDevicesInfo"],"sourceRoot":"../../../src","sources":["system/AudioManager.ts"],"mappings":";;AAWA,SAASA,oBAAoB,QAAQ,mBAAU;AAC/C,SAASC,iBAAiB,QAAgC,oBAAW;AAErE,IAAIC,MAAM,CAACD,iBAAiB,IAAI,IAAI,EAAE;EACpC,IAAI,CAACD,oBAAoB,EAAE;IACzB,MAAM,IAAIG,KAAK,CACb,iFACF,CAAC;EACH;EAEAH,oBAAoB,CAACI,OAAO,CAAC,CAAC;AAChC;AAEA,MAAMC,YAAY,CAAC;EAEjBC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,iBAAiB,GAAG,IAAIN,iBAAiB,CAACC,MAAM,CAACD,iBAAiB,CAAC;EAC1E;EAEAO,4BAA4BA,CAAA,EAAW;IACrC,OAAOR,oBAAoB,CAAEQ,4BAA4B,CAAC,CAAC;EAC7D;EAEAC,uBAAuBA,CAACC,OAAgB,EAAoB;IAC1D,OAAOV,oBAAoB,CAAES,uBAAuB,CAACC,OAAO,CAAC;EAC/D;EAEAC,sBAAsBA,CAACC,OAAuB,EAAE;IAC9CZ,oBAAoB,CAAEW,sBAAsB,CAC1CC,OAAO,CAACC,WAAW,IAAI,EAAE,EACzBD,OAAO,CAACE,OAAO,IAAI,EAAE,EACrBF,OAAO,CAACG,UAAU,IAAI,EAAE,EACxBH,OAAO,CAACI,eAAe,IAAI,KAC7B,CAAC;EACH;EAEAC,wBAAwBA,CAAA,EAAG;IACzBjB,oBAAoB,CAAEiB,wBAAwB,CAAC,CAAC;EAClD;EAEAC,iBAAiBA,CAACC,IAAoB,EAAE;IACtCnB,oBAAoB,CAAEkB,iBAAiB,CAACC,IAAI,CAAC;EAC/C;EAEAC,mBAAmBA,CAAA,EAAG;IACpBpB,oBAAoB,CAAEoB,mBAAmB,CAAC,CAAC;EAC7C;EAEAC,yBAAyBA,CAACX,OAAgB,EAAE;IAC1CV,oBAAoB,CAAEqB,yBAAyB,CAACX,OAAO,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEY,sBAAsBA,CAACZ,OAAgB,EAAE;IACvCV,oBAAoB,CAAEsB,sBAAsB,CAACZ,OAAO,CAAC;EACvD;EAEAa,oBAAoBA,CAACb,OAAgB,EAAE;IACrCV,oBAAoB,CAAEuB,oBAAoB,CAACb,OAAO,CAAC;EACrD;EAEAc,mBAAmBA,CAACC,IAA4B,EAAEf,OAAgB,EAAE;IAClEV,oBAAoB,CAAEwB,mBAAmB,CAACC,IAAI,EAAEf,OAAO,CAAC;EAC1D;EAEAgB,sBAAsBA,CACpBD,IAAU,EACVE,QAAmC,EACX;IACxB,OAAO,IAAI,CAACpB,iBAAiB,CAACqB,qBAAqB,CAACH,IAAI,EAAEE,QAAQ,CAAC;EACrE;EAEA,MAAME,2BAA2BA,CAAA,EAA8B;IAC7D,OAAO7B,oBAAoB,CAAE6B,2BAA2B,CAAC,CAAC;EAC5D;EAEA,MAAMC,yBAAyBA,CAAA,EAA8B;IAC3D,OAAO9B,oBAAoB,CAAE8B,yBAAyB,CAAC,CAAC;EAC1D;EAEA,MAAMC,cAAcA,CAAA,EAA8B;IAChD,OAAO/B,oBAAoB,CAAE+B,cAAc,CAAC,CAAC;EAC/C;AACF;AAEA,eAAe,IAAI1B,YAAY,CAAC,CAAC","ignoreList":[]}
@@ -5,6 +5,7 @@ interface Spec extends TurboModule {
5
5
  getDevicePreferredSampleRate(): number;
6
6
  setAudioSessionActivity(enabled: boolean): Promise<boolean>;
7
7
  setAudioSessionOptions(category: string, mode: string, options: Array<string>, allowHaptics: boolean): void;
8
+ disableSessionManagement(): void;
8
9
  setLockScreenInfo(info: {
9
10
  [key: string]: string | boolean | number | undefined;
10
11
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeAudioAPIModule.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeAudioAPIModule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErE,UAAU,IAAK,SAAQ,WAAW;IAChC,OAAO,IAAI,OAAO,CAAC;IACnB,4BAA4B,IAAI,MAAM,CAAC;IAGvC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,sBAAsB,CACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EACtB,YAAY,EAAE,OAAO,GACpB,IAAI,CAAC;IAGR,iBAAiB,CAAC,IAAI,EAAE;QACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;KACtD,GAAG,IAAI,CAAC;IACT,mBAAmB,IAAI,IAAI,CAAC;IAG5B,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1D,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAG7C,2BAA2B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGvD,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC7C;AAED,QAAA,MAAM,oBAAoB,aAAkD,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"NativeAudioAPIModule.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeAudioAPIModule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErE,UAAU,IAAK,SAAQ,WAAW;IAChC,OAAO,IAAI,OAAO,CAAC;IACnB,4BAA4B,IAAI,MAAM,CAAC;IAGvC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,sBAAsB,CACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EACtB,YAAY,EAAE,OAAO,GACpB,IAAI,CAAC;IACR,wBAAwB,IAAI,IAAI,CAAC;IAGjC,iBAAiB,CAAC,IAAI,EAAE;QACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;KACtD,GAAG,IAAI,CAAC;IACT,mBAAmB,IAAI,IAAI,CAAC;IAG5B,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1D,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAG7C,2BAA2B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGvD,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC7C;AAED,QAAA,MAAM,oBAAoB,aAAkD,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -7,6 +7,7 @@ declare class AudioManager {
7
7
  getDevicePreferredSampleRate(): number;
8
8
  setAudioSessionActivity(enabled: boolean): Promise<boolean>;
9
9
  setAudioSessionOptions(options: SessionOptions): void;
10
+ disableSessionManagement(): void;
10
11
  setLockScreenInfo(info: LockScreenInfo): void;
11
12
  resetLockScreenInfo(): void;
12
13
  observeAudioInterruptions(enabled: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../../src/system/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAqB,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAYtE,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;;IAKtD,4BAA4B,IAAI,MAAM;IAItC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,sBAAsB,CAAC,OAAO,EAAE,cAAc;IAS9C,iBAAiB,CAAC,IAAI,EAAE,cAAc;IAItC,mBAAmB;IAInB,yBAAyB,CAAC,OAAO,EAAE,OAAO;IAI1C;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,OAAO,EAAE,OAAO;IAIvC,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAIrC,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO;IAIlE,sBAAsB,CAAC,IAAI,SAAS,eAAe,EACjD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAClC,sBAAsB;IAInB,2BAA2B,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIxD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAItD,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAGlD;;AAED,wBAAkC"}
1
+ {"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../../src/system/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAqB,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAYtE,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;;IAKtD,4BAA4B,IAAI,MAAM;IAItC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,sBAAsB,CAAC,OAAO,EAAE,cAAc;IAS9C,wBAAwB;IAIxB,iBAAiB,CAAC,IAAI,EAAE,cAAc;IAItC,mBAAmB;IAInB,yBAAyB,CAAC,OAAO,EAAE,OAAO;IAI1C;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,OAAO,EAAE,OAAO;IAIvC,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAIrC,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO;IAIlE,sBAAsB,CAAC,IAAI,SAAS,eAAe,EACjD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAClC,sBAAsB;IAInB,2BAA2B,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIxD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAItD,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAGlD;;AAED,wBAAkC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.10.0-nightly-e16d7ff-20251031",
3
+ "version": "0.10.0-nightly-cc082c7-20251101",
4
4
  "description": "react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification",
5
5
  "bin": {
6
6
  "setup-rn-audio-api-web": "./scripts/setup-rn-audio-api-web.js"
@@ -15,6 +15,7 @@ interface Spec extends TurboModule {
15
15
  options: Array<string>,
16
16
  allowHaptics: boolean
17
17
  ): void;
18
+ disableSessionManagement(): void;
18
19
 
19
20
  // Lock Screen Info
20
21
  setLockScreenInfo(info: {
@@ -45,6 +45,10 @@ class AudioManager {
45
45
  );
46
46
  }
47
47
 
48
+ disableSessionManagement() {
49
+ NativeAudioAPIModule!.disableSessionManagement();
50
+ }
51
+
48
52
  setLockScreenInfo(info: LockScreenInfo) {
49
53
  NativeAudioAPIModule!.setLockScreenInfo(info);
50
54
  }