react-native-audio-api 0.10.0-nightly-e16d7ff-20251031 → 0.10.0-nightly-cc082c7-20251102
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.
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +4 -0
- package/android/src/oldarch/NativeAudioAPIModuleSpec.java +4 -0
- package/common/cpp/audioapi/core/sources/StreamerNode.cpp +16 -17
- package/common/cpp/audioapi/core/sources/StreamerNode.h +1 -2
- package/ios/audioapi/ios/AudioAPIModule.mm +11 -0
- package/ios/audioapi/ios/system/AudioSessionManager.h +2 -0
- package/ios/audioapi/ios/system/AudioSessionManager.mm +15 -0
- package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/commonjs/system/AudioManager.js +3 -0
- package/lib/commonjs/system/AudioManager.js.map +1 -1
- package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/module/system/AudioManager.js +3 -0
- package/lib/module/system/AudioManager.js.map +1 -1
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts +1 -0
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
- package/lib/typescript/system/AudioManager.d.ts +1 -0
- package/lib/typescript/system/AudioManager.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/specs/NativeAudioAPIModule.ts +1 -0
- package/src/system/AudioManager.ts +4 -0
|
@@ -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 (
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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 (
|
|
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
|
-
|
|
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>
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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-
|
|
3
|
+
"version": "0.10.0-nightly-cc082c7-20251102",
|
|
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"
|