react-native-audio-api 0.11.0-nightly-95f9c99-20251215 → 0.11.0-nightly-dd83923-20251216
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/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +382 -39
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +45 -18
- package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +9 -9
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidFileWriterBackend.h +33 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +170 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +46 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +0 -1
- package/android/src/main/cpp/audioapi/android/core/utils/FileOptions.cpp +83 -0
- package/android/src/main/cpp/audioapi/android/core/utils/FileOptions.h +22 -0
- package/android/src/main/cpp/audioapi/android/core/utils/MiniaudioImplementation.cpp +8 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.cpp +493 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.h +70 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/ptrs.hpp +56 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/utils.cpp +114 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/utils.h +34 -0
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.cpp +296 -0
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +40 -0
- package/android/src/main/cpp/audioapi/android/system/NativeFileInfo.hpp +32 -0
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +2 -0
- package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +7 -3
- package/android/src/main/java/com/swmansion/audioapi/system/CentralizedForegroundService.kt +1 -0
- package/android/src/main/java/com/swmansion/audioapi/system/NativeFileInfo.kt +18 -0
- package/android/src/main/java/com/swmansion/audioapi/system/notification/PlaybackNotification.kt +1 -0
- package/android/src/main/java/com/swmansion/audioapi/system/notification/RecordingNotificationReceiver.kt +2 -0
- package/android/src/oldarch/NativeAudioAPIModuleSpec.java +100 -80
- package/common/cpp/audioapi/AudioAPIModuleInstaller.h +3 -11
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +145 -16
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +21 -6
- package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +43 -60
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +53 -33
- package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +42 -14
- package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +12 -9
- package/common/cpp/audioapi/core/utils/AudioFileWriter.cpp +41 -0
- package/common/cpp/audioapi/core/utils/AudioFileWriter.h +44 -0
- package/common/cpp/audioapi/core/utils/AudioRecorderCallback.cpp +101 -0
- package/common/cpp/audioapi/core/utils/AudioRecorderCallback.h +52 -0
- package/common/cpp/audioapi/utils/AudioFileProperties.cpp +92 -0
- package/common/cpp/audioapi/utils/AudioFileProperties.h +76 -0
- package/common/cpp/audioapi/utils/Result.hpp +323 -0
- package/common/cpp/audioapi/utils/UnitConversion.h +9 -0
- package/ios/audioapi/ios/AudioAPIModule.mm +9 -14
- package/ios/audioapi/ios/core/IOSAudioPlayer.h +1 -1
- package/ios/audioapi/ios/core/IOSAudioPlayer.mm +7 -6
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +39 -13
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +302 -26
- package/ios/audioapi/ios/core/NativeAudioPlayer.m +7 -11
- package/ios/audioapi/ios/core/NativeAudioRecorder.h +8 -9
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +70 -76
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +1 -0
- package/ios/audioapi/ios/core/utils/FileOptions.h +33 -0
- package/ios/audioapi/ios/core/utils/FileOptions.mm +195 -0
- package/ios/audioapi/ios/core/utils/IOSFileWriter.h +53 -0
- package/ios/audioapi/ios/core/utils/IOSFileWriter.mm +239 -0
- package/ios/audioapi/ios/core/utils/IOSRecorderCallback.h +47 -0
- package/ios/audioapi/ios/core/utils/IOSRecorderCallback.mm +185 -0
- package/ios/audioapi/ios/system/AudioEngine.h +21 -16
- package/ios/audioapi/ios/system/AudioEngine.mm +138 -130
- package/ios/audioapi/ios/system/AudioSessionManager.h +19 -9
- package/ios/audioapi/ios/system/AudioSessionManager.mm +250 -215
- package/ios/audioapi/ios/system/NotificationManager.mm +24 -42
- package/lib/commonjs/api.js +82 -109
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/core/AudioRecorder.js +159 -13
- package/lib/commonjs/core/AudioRecorder.js.map +1 -1
- package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/commonjs/system/notification/PlaybackNotificationManager.js +17 -14
- package/lib/commonjs/system/notification/PlaybackNotificationManager.js.map +1 -1
- package/lib/commonjs/system/notification/RecordingNotificationManager.js +22 -19
- package/lib/commonjs/system/notification/RecordingNotificationManager.js.map +1 -1
- package/lib/commonjs/system/notification/SimpleNotificationManager.js +16 -13
- package/lib/commonjs/system/notification/SimpleNotificationManager.js.map +1 -1
- package/lib/commonjs/types.js +39 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/filePresets.js +43 -0
- package/lib/commonjs/utils/filePresets.js.map +1 -0
- package/lib/commonjs/web-system/notification/PlaybackNotificationManager.js +6 -3
- package/lib/commonjs/web-system/notification/PlaybackNotificationManager.js.map +1 -1
- package/lib/commonjs/web-system/notification/RecordingNotificationManager.js +6 -3
- package/lib/commonjs/web-system/notification/RecordingNotificationManager.js.map +1 -1
- package/lib/module/api.js +5 -4
- package/lib/module/api.js.map +1 -1
- package/lib/module/core/AudioRecorder.js +159 -13
- package/lib/module/core/AudioRecorder.js.map +1 -1
- package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/module/system/notification/PlaybackNotificationManager.js +17 -14
- package/lib/module/system/notification/PlaybackNotificationManager.js.map +1 -1
- package/lib/module/system/notification/RecordingNotificationManager.js +22 -19
- package/lib/module/system/notification/RecordingNotificationManager.js.map +1 -1
- package/lib/module/system/notification/SimpleNotificationManager.js +16 -13
- package/lib/module/system/notification/SimpleNotificationManager.js.map +1 -1
- package/lib/module/types.js +38 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/filePresets.js +39 -0
- package/lib/module/utils/filePresets.js.map +1 -0
- package/lib/module/web-system/notification/PlaybackNotificationManager.js +6 -3
- package/lib/module/web-system/notification/PlaybackNotificationManager.js.map +1 -1
- package/lib/module/web-system/notification/RecordingNotificationManager.js +6 -3
- package/lib/module/web-system/notification/RecordingNotificationManager.js.map +1 -1
- package/lib/typescript/api.d.ts +5 -4
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/core/AudioRecorder.d.ts +69 -7
- package/lib/typescript/core/AudioRecorder.d.ts.map +1 -1
- package/lib/typescript/events/types.d.ts +36 -2
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +24 -4
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts +1 -1
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
- package/lib/typescript/system/notification/PlaybackNotificationManager.d.ts +4 -3
- package/lib/typescript/system/notification/PlaybackNotificationManager.d.ts.map +1 -1
- package/lib/typescript/system/notification/RecordingNotificationManager.d.ts +4 -3
- package/lib/typescript/system/notification/RecordingNotificationManager.d.ts.map +1 -1
- package/lib/typescript/system/notification/SimpleNotificationManager.d.ts +3 -2
- package/lib/typescript/system/notification/SimpleNotificationManager.d.ts.map +1 -1
- package/lib/typescript/system/notification/types.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +79 -3
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/filePresets.d.ts +9 -0
- package/lib/typescript/utils/filePresets.d.ts.map +1 -0
- package/lib/typescript/web-system/notification/PlaybackNotificationManager.d.ts +4 -3
- package/lib/typescript/web-system/notification/PlaybackNotificationManager.d.ts.map +1 -1
- package/lib/typescript/web-system/notification/RecordingNotificationManager.d.ts +4 -3
- package/lib/typescript/web-system/notification/RecordingNotificationManager.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/AudioAPIModule/globals.d.ts +1 -2
- package/src/api.ts +8 -29
- package/src/core/AudioRecorder.ts +195 -23
- package/src/events/types.ts +40 -2
- package/src/interfaces.ts +34 -5
- package/src/specs/NativeAudioAPIModule.ts +2 -2
- package/src/system/notification/PlaybackNotificationManager.ts +20 -16
- package/src/system/notification/RecordingNotificationManager.ts +26 -21
- package/src/system/notification/SimpleNotificationManager.ts +18 -13
- package/src/system/notification/types.ts +1 -0
- package/src/types.ts +89 -3
- package/src/utils/filePresets.ts +47 -0
- package/src/web-system/notification/PlaybackNotificationManager.ts +9 -5
- package/src/web-system/notification/RecordingNotificationManager.ts +9 -5
|
@@ -1,18 +1,87 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import AudioBuffer from "./AudioBuffer.js";
|
|
4
3
|
import { AudioEventEmitter } from "../events/index.js";
|
|
4
|
+
import { FileDirectory, FileFormat } from "../types.js";
|
|
5
|
+
import FilePreset from "../utils/filePresets.js";
|
|
6
|
+
import AudioBuffer from "./AudioBuffer.js";
|
|
7
|
+
// Enforces default options, making sure that all properties are defined
|
|
8
|
+
// for the contract with native code.
|
|
9
|
+
function withDefaultOptions(inOptions) {
|
|
10
|
+
return {
|
|
11
|
+
directory: FileDirectory.Cache,
|
|
12
|
+
subDirectory: 'AudioAPI',
|
|
13
|
+
fileNamePrefix: 'recording_',
|
|
14
|
+
channelCount: 2,
|
|
15
|
+
format: FileFormat.M4A,
|
|
16
|
+
batchDurationSeconds: 0,
|
|
17
|
+
preset: FilePreset.High,
|
|
18
|
+
androidFlushIntervalMs: 500,
|
|
19
|
+
...inOptions
|
|
20
|
+
};
|
|
21
|
+
}
|
|
5
22
|
export default class AudioRecorder {
|
|
23
|
+
onAudioReadySubscription = null;
|
|
24
|
+
onErrorSubscription = null;
|
|
25
|
+
options_ = null;
|
|
26
|
+
isFileOutputEnabled = false;
|
|
6
27
|
audioEventEmitter = new AudioEventEmitter(global.AudioEventEmitter);
|
|
7
|
-
constructor(
|
|
8
|
-
this.recorder = global.createAudioRecorder(
|
|
28
|
+
constructor() {
|
|
29
|
+
this.recorder = global.createAudioRecorder();
|
|
30
|
+
}
|
|
31
|
+
enableFileOutput(
|
|
32
|
+
// TODO: Re-enable 'batchDurationSeconds' once supported
|
|
33
|
+
options) {
|
|
34
|
+
this.options_ = options || {};
|
|
35
|
+
const parsedOptions = withDefaultOptions(this.options_);
|
|
36
|
+
const result = this.recorder.enableFileOutput(parsedOptions);
|
|
37
|
+
this.isFileOutputEnabled = true;
|
|
38
|
+
return result;
|
|
9
39
|
}
|
|
40
|
+
get options() {
|
|
41
|
+
return this.options_;
|
|
42
|
+
}
|
|
43
|
+
disableFileOutput() {
|
|
44
|
+
this.options_ = null;
|
|
45
|
+
this.recorder.disableFileOutput();
|
|
46
|
+
this.isFileOutputEnabled = false;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Starts the audio recording process with configured output options */
|
|
10
50
|
start() {
|
|
11
|
-
this.
|
|
51
|
+
if (!this.isFileOutputEnabled) {
|
|
52
|
+
this.recorder.start();
|
|
53
|
+
return {
|
|
54
|
+
status: 'success',
|
|
55
|
+
path: ''
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return this.recorder.start();
|
|
12
59
|
}
|
|
60
|
+
|
|
61
|
+
/** Stops the audio recording process and releases internal resources */
|
|
13
62
|
stop() {
|
|
14
|
-
this.recorder.stop();
|
|
63
|
+
return this.recorder.stop();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Pauses the audio recording process without tearing down anything */
|
|
67
|
+
pause() {
|
|
68
|
+
this.recorder.pause();
|
|
15
69
|
}
|
|
70
|
+
|
|
71
|
+
/** Resumes the audio recording process after being paused */
|
|
72
|
+
resume() {
|
|
73
|
+
this.recorder.resume();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Connects a {@link RecorderAdapterNode} to the recorder’s audio graph.
|
|
78
|
+
*
|
|
79
|
+
* Each node can only be connected once. Attempting to connect a node multiple
|
|
80
|
+
* times will throw an error.
|
|
81
|
+
*
|
|
82
|
+
* @param node - The adapter node to connect to the recorder.
|
|
83
|
+
* @throws If the node has already been connected.
|
|
84
|
+
*/
|
|
16
85
|
connect(node) {
|
|
17
86
|
if (node.wasConnected) {
|
|
18
87
|
throw new Error('RecorderAdapterNode cannot be connected more than once. Refer to the documentation for more details.');
|
|
@@ -20,19 +89,96 @@ export default class AudioRecorder {
|
|
|
20
89
|
node.wasConnected = true;
|
|
21
90
|
this.recorder.connect(node.getNode());
|
|
22
91
|
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Disconnects the recorder from all connected adapter nodes.
|
|
95
|
+
*
|
|
96
|
+
* After calling this method, any connected {@link RecorderAdapterNode} will no
|
|
97
|
+
* longer receive audio data until reconnected.
|
|
98
|
+
*/
|
|
23
99
|
disconnect() {
|
|
24
100
|
this.recorder.disconnect();
|
|
25
101
|
}
|
|
26
|
-
|
|
27
|
-
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Registers a callback to receive raw audio data during an active recording
|
|
105
|
+
* session.
|
|
106
|
+
*
|
|
107
|
+
* The callback is periodically invoked with audio buffers that match the
|
|
108
|
+
* preferred configuration provided in `options`. These parameters (sample
|
|
109
|
+
* rate, buffer length, and channel count) guide how audio data is chunked and
|
|
110
|
+
* delivered, though the exact values may vary depending on device
|
|
111
|
+
* capabilities. Values may vary depending on device capabilities.
|
|
112
|
+
*
|
|
113
|
+
* @param options - Preferred configuration for the audio buffers delivered to
|
|
114
|
+
* the callback.
|
|
115
|
+
* @param callback - Function invoked each time a new audio buffer is
|
|
116
|
+
* available. The callback receives an {@link OnAudioReadyEventType} object
|
|
117
|
+
* containing the audio data and associated metadata.
|
|
118
|
+
*/
|
|
119
|
+
onAudioReady(options, callback) {
|
|
120
|
+
if (this.onAudioReadySubscription) {
|
|
121
|
+
this.recorder.clearOnAudioReady();
|
|
122
|
+
this.onAudioReadySubscription.remove();
|
|
123
|
+
this.onAudioReadySubscription = null;
|
|
124
|
+
}
|
|
125
|
+
this.onAudioReadySubscription = this.audioEventEmitter.addAudioEventListener('audioReady', event => {
|
|
126
|
+
const audioBuffer = new AudioBuffer(event.buffer);
|
|
28
127
|
callback({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
when: event.when
|
|
128
|
+
...event,
|
|
129
|
+
buffer: audioBuffer
|
|
32
130
|
});
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
|
|
131
|
+
});
|
|
132
|
+
return this.recorder.setOnAudioReady({
|
|
133
|
+
sampleRate: options.sampleRate,
|
|
134
|
+
bufferLength: options.bufferLength,
|
|
135
|
+
channelCount: options.channelCount,
|
|
136
|
+
callbackId: this.onAudioReadySubscription.subscriptionId
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Removes the previously registered audio data callback, if any.
|
|
142
|
+
*
|
|
143
|
+
* This stops further `onAudioReady` events from being delivered during
|
|
144
|
+
* recording. Calling this method is safe even if no callback is currently
|
|
145
|
+
* registered.
|
|
146
|
+
*/
|
|
147
|
+
clearOnAudioReady() {
|
|
148
|
+
if (!this.onAudioReadySubscription) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
this.recorder.clearOnAudioReady();
|
|
152
|
+
this.onAudioReadySubscription.remove();
|
|
153
|
+
this.onAudioReadySubscription = null;
|
|
154
|
+
}
|
|
155
|
+
isRecording() {
|
|
156
|
+
return this.recorder.isRecording();
|
|
157
|
+
}
|
|
158
|
+
isPaused() {
|
|
159
|
+
return this.recorder.isPaused();
|
|
160
|
+
}
|
|
161
|
+
getCurrentDuration() {
|
|
162
|
+
return this.recorder.getCurrentDuration();
|
|
163
|
+
}
|
|
164
|
+
onError(callback) {
|
|
165
|
+
if (this.onErrorSubscription) {
|
|
166
|
+
this.recorder.clearOnError();
|
|
167
|
+
this.onErrorSubscription.remove();
|
|
168
|
+
this.onErrorSubscription = null;
|
|
169
|
+
}
|
|
170
|
+
this.onErrorSubscription = this.audioEventEmitter.addAudioEventListener('recorderError', callback);
|
|
171
|
+
this.recorder.setOnError({
|
|
172
|
+
callbackId: this.onErrorSubscription.subscriptionId
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
clearOnError() {
|
|
176
|
+
if (!this.onErrorSubscription) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
this.recorder.clearOnError();
|
|
180
|
+
this.onErrorSubscription.remove();
|
|
181
|
+
this.onErrorSubscription = null;
|
|
36
182
|
}
|
|
37
183
|
}
|
|
38
184
|
//# sourceMappingURL=AudioRecorder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AudioBuffer","
|
|
1
|
+
{"version":3,"names":["AudioEventEmitter","FileDirectory","FileFormat","FilePreset","AudioBuffer","withDefaultOptions","inOptions","directory","Cache","subDirectory","fileNamePrefix","channelCount","format","M4A","batchDurationSeconds","preset","High","androidFlushIntervalMs","AudioRecorder","onAudioReadySubscription","onErrorSubscription","options_","isFileOutputEnabled","audioEventEmitter","global","constructor","recorder","createAudioRecorder","enableFileOutput","options","parsedOptions","result","disableFileOutput","start","status","path","stop","pause","resume","connect","node","wasConnected","Error","getNode","disconnect","onAudioReady","callback","clearOnAudioReady","remove","addAudioEventListener","event","audioBuffer","buffer","setOnAudioReady","sampleRate","bufferLength","callbackId","subscriptionId","isRecording","isPaused","getCurrentDuration","onError","clearOnError","setOnError"],"sourceRoot":"../../../src","sources":["core/AudioRecorder.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","NativeAudioAPIModule","get"],"sourceRoot":"../../../src","sources":["specs/NativeAudioAPIModule.ts"],"mappings":"AAAA,YAAY;;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","NativeAudioAPIModule","get"],"sourceRoot":"../../../src","sources":["specs/NativeAudioAPIModule.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,mBAAmB,QAAQ,cAAc;AAqDlD,MAAMC,oBAAoB,GAAGD,mBAAmB,CAACE,GAAG,CAAO,gBAAgB,CAAC;AAE5E,SAASD,oBAAoB","ignoreList":[]}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { NativeAudioAPIModule } from "../../specs/index.js";
|
|
4
3
|
import { AudioEventEmitter } from "../../events/index.js";
|
|
4
|
+
import { NativeAudioAPIModule } from "../../specs/index.js";
|
|
5
5
|
/// Manager for media playback notifications with controls and MediaSession integration.
|
|
6
6
|
class PlaybackNotificationManager {
|
|
7
7
|
notificationKey = 'playback';
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
isRegistered_ = false;
|
|
9
|
+
isShown_ = false;
|
|
10
10
|
constructor() {
|
|
11
11
|
this.audioEventEmitter = new AudioEventEmitter(global.AudioEventEmitter);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/// Register the playback notification (must be called before showing).
|
|
15
15
|
async register() {
|
|
16
|
-
if (this.
|
|
16
|
+
if (this.isRegistered_) {
|
|
17
17
|
console.warn('PlaybackNotification is already registered');
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
@@ -24,12 +24,12 @@ class PlaybackNotificationManager {
|
|
|
24
24
|
if (result.error) {
|
|
25
25
|
throw new Error(result.error);
|
|
26
26
|
}
|
|
27
|
-
this.
|
|
27
|
+
this.isRegistered_ = true;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/// Show the notification with initial metadata.
|
|
31
31
|
async show(info) {
|
|
32
|
-
if (!this.
|
|
32
|
+
if (!this.isRegistered_) {
|
|
33
33
|
throw new Error('PlaybackNotification must be registered before showing. Call register() first.');
|
|
34
34
|
}
|
|
35
35
|
if (!NativeAudioAPIModule) {
|
|
@@ -39,12 +39,12 @@ class PlaybackNotificationManager {
|
|
|
39
39
|
if (result.error) {
|
|
40
40
|
throw new Error(result.error);
|
|
41
41
|
}
|
|
42
|
-
this.
|
|
42
|
+
this.isShown_ = true;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/// Update the notification with new metadata or state.
|
|
46
46
|
async update(info) {
|
|
47
|
-
if (!this.
|
|
47
|
+
if (!this.isShown_) {
|
|
48
48
|
console.warn('PlaybackNotification is not shown. Call show() first.');
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
@@ -59,7 +59,7 @@ class PlaybackNotificationManager {
|
|
|
59
59
|
|
|
60
60
|
/// Hide the notification (can be shown again later).
|
|
61
61
|
async hide() {
|
|
62
|
-
if (!this.
|
|
62
|
+
if (!this.isShown_) {
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
65
|
if (!NativeAudioAPIModule) {
|
|
@@ -69,15 +69,15 @@ class PlaybackNotificationManager {
|
|
|
69
69
|
if (result.error) {
|
|
70
70
|
throw new Error(result.error);
|
|
71
71
|
}
|
|
72
|
-
this.
|
|
72
|
+
this.isShown_ = false;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
/// Unregister the notification (must register again to use).
|
|
76
76
|
async unregister() {
|
|
77
|
-
if (!this.
|
|
77
|
+
if (!this.isRegistered_) {
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
|
-
if (this.
|
|
80
|
+
if (this.isShown_) {
|
|
81
81
|
await this.hide();
|
|
82
82
|
}
|
|
83
83
|
if (!NativeAudioAPIModule) {
|
|
@@ -87,12 +87,12 @@ class PlaybackNotificationManager {
|
|
|
87
87
|
if (result.error) {
|
|
88
88
|
throw new Error(result.error);
|
|
89
89
|
}
|
|
90
|
-
this.
|
|
90
|
+
this.isRegistered_ = false;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
/// Enable or disable a specific playback control.
|
|
94
94
|
async enableControl(control, enabled) {
|
|
95
|
-
if (!this.
|
|
95
|
+
if (!this.isRegistered_) {
|
|
96
96
|
console.warn('PlaybackNotification is not registered');
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
@@ -116,6 +116,9 @@ class PlaybackNotificationManager {
|
|
|
116
116
|
}
|
|
117
117
|
return await NativeAudioAPIModule.isNotificationActive(this.notificationKey);
|
|
118
118
|
}
|
|
119
|
+
isRegistered() {
|
|
120
|
+
return this.isRegistered_;
|
|
121
|
+
}
|
|
119
122
|
|
|
120
123
|
/// Add an event listener for notification actions.
|
|
121
124
|
addEventListener(eventName, callback) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["AudioEventEmitter","NativeAudioAPIModule","PlaybackNotificationManager","notificationKey","isRegistered_","isShown_","constructor","audioEventEmitter","global","register","console","warn","Error","result","registerNotification","error","show","info","showNotification","update","updateNotification","hide","hideNotification","unregister","unregisterNotification","enableControl","control","enabled","params","isActive","isNotificationActive","isRegistered","addEventListener","eventName","callback","addAudioEventListener","removeEventListener","subscription","remove"],"sourceRoot":"../../../../src","sources":["system/notification/PlaybackNotificationManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Platform } from 'react-native';
|
|
4
|
-
import { NativeAudioAPIModule } from "../../specs/index.js";
|
|
5
4
|
import { AudioEventEmitter } from "../../events/index.js";
|
|
5
|
+
import { NativeAudioAPIModule } from "../../specs/index.js";
|
|
6
6
|
/// Manager for recording notifications with controls.
|
|
7
7
|
class RecordingNotificationManager {
|
|
8
|
+
isRegistered_ = false;
|
|
9
|
+
isShown_ = false;
|
|
8
10
|
notificationKey = 'recording';
|
|
9
|
-
isRegistered = false;
|
|
10
|
-
isShown = false;
|
|
11
11
|
isIOS = Platform.OS === 'ios';
|
|
12
12
|
constructor() {
|
|
13
13
|
this.audioEventEmitter = new AudioEventEmitter(global.AudioEventEmitter);
|
|
@@ -15,14 +15,14 @@ class RecordingNotificationManager {
|
|
|
15
15
|
|
|
16
16
|
/// Register the recording notification (must be called before showing).
|
|
17
17
|
async register() {
|
|
18
|
-
if (this.
|
|
18
|
+
if (this.isRegistered_) {
|
|
19
19
|
console.warn('RecordingNotification is already registered');
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
// Recording notifications are only supported on Android
|
|
24
24
|
if (this.isIOS) {
|
|
25
|
-
this.
|
|
25
|
+
this.isRegistered_ = true;
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
28
28
|
if (!NativeAudioAPIModule) {
|
|
@@ -32,18 +32,18 @@ class RecordingNotificationManager {
|
|
|
32
32
|
if (result.error) {
|
|
33
33
|
throw new Error(result.error);
|
|
34
34
|
}
|
|
35
|
-
this.
|
|
35
|
+
this.isRegistered_ = true;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
/// Show the notification with initial metadata.
|
|
39
39
|
async show(info) {
|
|
40
|
-
if (!this.
|
|
40
|
+
if (!this.isRegistered_) {
|
|
41
41
|
throw new Error('RecordingNotification must be registered before showing. Call register() first.');
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// Recording notifications are only supported on Android
|
|
45
45
|
if (this.isIOS) {
|
|
46
|
-
this.
|
|
46
|
+
this.isShown_ = true;
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
if (!NativeAudioAPIModule) {
|
|
@@ -53,12 +53,12 @@ class RecordingNotificationManager {
|
|
|
53
53
|
if (result.error) {
|
|
54
54
|
throw new Error(result.error);
|
|
55
55
|
}
|
|
56
|
-
this.
|
|
56
|
+
this.isShown_ = true;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/// Update the notification with new metadata or state.
|
|
60
60
|
async update(info) {
|
|
61
|
-
if (!this.
|
|
61
|
+
if (!this.isShown_) {
|
|
62
62
|
console.warn('RecordingNotification is not shown. Call show() first.');
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
@@ -78,13 +78,13 @@ class RecordingNotificationManager {
|
|
|
78
78
|
|
|
79
79
|
/// Hide the notification (can be shown again later).
|
|
80
80
|
async hide() {
|
|
81
|
-
if (!this.
|
|
81
|
+
if (!this.isShown_) {
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
// Recording notifications are only supported on Android
|
|
86
86
|
if (this.isIOS) {
|
|
87
|
-
this.
|
|
87
|
+
this.isShown_ = false;
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
90
|
if (!NativeAudioAPIModule) {
|
|
@@ -94,21 +94,21 @@ class RecordingNotificationManager {
|
|
|
94
94
|
if (result.error) {
|
|
95
95
|
throw new Error(result.error);
|
|
96
96
|
}
|
|
97
|
-
this.
|
|
97
|
+
this.isShown_ = false;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
/// Unregister the notification (must register again to use).
|
|
101
101
|
async unregister() {
|
|
102
|
-
if (!this.
|
|
102
|
+
if (!this.isRegistered_) {
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
|
-
if (this.
|
|
105
|
+
if (this.isShown_) {
|
|
106
106
|
await this.hide();
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
// Recording notifications are only supported on Android
|
|
110
110
|
if (this.isIOS) {
|
|
111
|
-
this.
|
|
111
|
+
this.isRegistered_ = false;
|
|
112
112
|
return;
|
|
113
113
|
}
|
|
114
114
|
if (!NativeAudioAPIModule) {
|
|
@@ -118,12 +118,12 @@ class RecordingNotificationManager {
|
|
|
118
118
|
if (result.error) {
|
|
119
119
|
throw new Error(result.error);
|
|
120
120
|
}
|
|
121
|
-
this.
|
|
121
|
+
this.isRegistered_ = false;
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
/// Enable or disable a specific recording control.
|
|
125
125
|
async enableControl(control, enabled) {
|
|
126
|
-
if (!this.
|
|
126
|
+
if (!this.isRegistered_) {
|
|
127
127
|
console.warn('RecordingNotification is not registered');
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
@@ -149,13 +149,16 @@ class RecordingNotificationManager {
|
|
|
149
149
|
async isActive() {
|
|
150
150
|
// Recording notifications are only supported on Android
|
|
151
151
|
if (this.isIOS) {
|
|
152
|
-
return this.
|
|
152
|
+
return this.isShown_;
|
|
153
153
|
}
|
|
154
154
|
if (!NativeAudioAPIModule) {
|
|
155
155
|
return false;
|
|
156
156
|
}
|
|
157
157
|
return await NativeAudioAPIModule.isNotificationActive(this.notificationKey);
|
|
158
158
|
}
|
|
159
|
+
isRegistered() {
|
|
160
|
+
return this.isRegistered_;
|
|
161
|
+
}
|
|
159
162
|
|
|
160
163
|
/// Add an event listener for notification actions.
|
|
161
164
|
addEventListener(eventName, callback) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","
|
|
1
|
+
{"version":3,"names":["Platform","AudioEventEmitter","NativeAudioAPIModule","RecordingNotificationManager","isRegistered_","isShown_","notificationKey","isIOS","OS","constructor","audioEventEmitter","global","register","console","warn","Error","result","registerNotification","error","show","info","showNotification","update","updateNotification","hide","hideNotification","unregister","unregisterNotification","enableControl","control","enabled","params","isActive","isNotificationActive","isRegistered","addEventListener","eventName","callback","remove","addAudioEventListener","removeEventListener","subscription"],"sourceRoot":"../../../../src","sources":["system/notification/RecordingNotificationManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { NativeAudioAPIModule } from "../../specs/index.js";
|
|
4
3
|
import { AudioEventEmitter } from "../../events/index.js";
|
|
4
|
+
import { NativeAudioAPIModule } from "../../specs/index.js";
|
|
5
5
|
/// Simple notification manager for basic notifications with title and text.
|
|
6
6
|
/// Implements the generic NotificationManager interface.
|
|
7
7
|
// It is only a showcase
|
|
8
8
|
class SimpleNotificationManager {
|
|
9
|
+
isRegistered_ = false;
|
|
10
|
+
isShown_ = false;
|
|
9
11
|
notificationKey = 'simple';
|
|
10
|
-
isRegistered = false;
|
|
11
|
-
isShown = false;
|
|
12
12
|
constructor() {
|
|
13
13
|
this.audioEventEmitter = new AudioEventEmitter(global.AudioEventEmitter);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/// Register the simple notification (must be called before showing).
|
|
17
17
|
async register() {
|
|
18
|
-
if (this.
|
|
18
|
+
if (this.isRegistered_) {
|
|
19
19
|
console.warn('SimpleNotification is already registered');
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
@@ -26,12 +26,12 @@ class SimpleNotificationManager {
|
|
|
26
26
|
if (result.error) {
|
|
27
27
|
throw new Error(result.error);
|
|
28
28
|
}
|
|
29
|
-
this.
|
|
29
|
+
this.isRegistered_ = true;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/// Show the notification with initial options.
|
|
33
33
|
async show(options) {
|
|
34
|
-
if (!this.
|
|
34
|
+
if (!this.isRegistered_) {
|
|
35
35
|
throw new Error('SimpleNotification must be registered before showing. Call register() first.');
|
|
36
36
|
}
|
|
37
37
|
if (!NativeAudioAPIModule) {
|
|
@@ -41,12 +41,12 @@ class SimpleNotificationManager {
|
|
|
41
41
|
if (result.error) {
|
|
42
42
|
throw new Error(result.error);
|
|
43
43
|
}
|
|
44
|
-
this.
|
|
44
|
+
this.isShown_ = true;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/// Update the notification with new options.
|
|
48
48
|
async update(options) {
|
|
49
|
-
if (!this.
|
|
49
|
+
if (!this.isShown_) {
|
|
50
50
|
console.warn('SimpleNotification is not shown. Call show() first.');
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
@@ -61,7 +61,7 @@ class SimpleNotificationManager {
|
|
|
61
61
|
|
|
62
62
|
/// Hide the notification (can be shown again later).
|
|
63
63
|
async hide() {
|
|
64
|
-
if (!this.
|
|
64
|
+
if (!this.isShown_) {
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
67
|
if (!NativeAudioAPIModule) {
|
|
@@ -71,15 +71,15 @@ class SimpleNotificationManager {
|
|
|
71
71
|
if (result.error) {
|
|
72
72
|
throw new Error(result.error);
|
|
73
73
|
}
|
|
74
|
-
this.
|
|
74
|
+
this.isShown_ = false;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
/// Unregister the notification (must register again to use).
|
|
78
78
|
async unregister() {
|
|
79
|
-
if (!this.
|
|
79
|
+
if (!this.isRegistered_) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
if (this.
|
|
82
|
+
if (this.isShown_) {
|
|
83
83
|
await this.hide();
|
|
84
84
|
}
|
|
85
85
|
if (!NativeAudioAPIModule) {
|
|
@@ -89,7 +89,7 @@ class SimpleNotificationManager {
|
|
|
89
89
|
if (result.error) {
|
|
90
90
|
throw new Error(result.error);
|
|
91
91
|
}
|
|
92
|
-
this.
|
|
92
|
+
this.isRegistered_ = false;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
/// Check if the notification is currently active.
|
|
@@ -99,6 +99,9 @@ class SimpleNotificationManager {
|
|
|
99
99
|
}
|
|
100
100
|
return await NativeAudioAPIModule.isNotificationActive(this.notificationKey);
|
|
101
101
|
}
|
|
102
|
+
isRegistered() {
|
|
103
|
+
return this.isRegistered_;
|
|
104
|
+
}
|
|
102
105
|
|
|
103
106
|
/// Add an event listener (SimpleNotification doesn't emit events).
|
|
104
107
|
addEventListener(_eventName, _callback) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["AudioEventEmitter","NativeAudioAPIModule","SimpleNotificationManager","isRegistered_","isShown_","notificationKey","constructor","audioEventEmitter","global","register","console","warn","Error","result","registerNotification","error","show","options","showNotification","update","updateNotification","hide","hideNotification","unregister","unregisterNotification","isActive","isNotificationActive","isRegistered","addEventListener","_eventName","_callback","addAudioEventListener","removeEventListener","subscription","remove"],"sourceRoot":"../../../../src","sources":["system/notification/SimpleNotificationManager.ts"],"mappings":"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","ignoreList":[]}
|