@capgo/native-audio 5.1.3 → 5.1.13
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +58 -36
- package/android/src/main/java/ee/forgr/audio/AudioAsset.java +126 -106
- package/android/src/main/java/ee/forgr/audio/AudioDispatcher.java +185 -168
- package/android/src/main/java/ee/forgr/audio/Constant.java +14 -13
- package/android/src/main/java/ee/forgr/audio/NativeAudio.java +453 -403
- package/dist/docs.json +107 -27
- package/dist/esm/definitions.d.ts +16 -0
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +4 -4
- package/dist/esm/web.d.ts +3 -3
- package/dist/esm/web.js +20 -19
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +19 -18
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +19 -18
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/AudioAsset.swift +38 -45
- package/ios/Plugin/Constant.swift +1 -0
- package/ios/Plugin/Plugin.swift +15 -11
- package/package.json +14 -13
package/README.md
CHANGED
@@ -213,164 +213,144 @@ NativeAudio.isPlaying({
|
|
213
213
|
### configure(...)
|
214
214
|
|
215
215
|
```typescript
|
216
|
-
configure(options: ConfigureOptions) =>
|
216
|
+
configure(options: ConfigureOptions) => Promise<void>
|
217
217
|
```
|
218
218
|
|
219
219
|
| Param | Type |
|
220
220
|
| ------------- | ------------------------------------------------------------- |
|
221
221
|
| **`options`** | <code><a href="#configureoptions">ConfigureOptions</a></code> |
|
222
222
|
|
223
|
-
**Returns:** <code>any</code>
|
224
|
-
|
225
223
|
--------------------
|
226
224
|
|
227
225
|
|
228
226
|
### preload(...)
|
229
227
|
|
230
228
|
```typescript
|
231
|
-
preload(options: PreloadOptions) =>
|
229
|
+
preload(options: PreloadOptions) => Promise<void>
|
232
230
|
```
|
233
231
|
|
234
232
|
| Param | Type |
|
235
233
|
| ------------- | --------------------------------------------------------- |
|
236
234
|
| **`options`** | <code><a href="#preloadoptions">PreloadOptions</a></code> |
|
237
235
|
|
238
|
-
**Returns:** <code>any</code>
|
239
|
-
|
240
236
|
--------------------
|
241
237
|
|
242
238
|
|
243
239
|
### play(...)
|
244
240
|
|
245
241
|
```typescript
|
246
|
-
play(options: { assetId: string; time?: number; }) =>
|
242
|
+
play(options: { assetId: string; time?: number; }) => Promise<void>
|
247
243
|
```
|
248
244
|
|
249
245
|
| Param | Type |
|
250
246
|
| ------------- | ------------------------------------------------ |
|
251
247
|
| **`options`** | <code>{ assetId: string; time?: number; }</code> |
|
252
248
|
|
253
|
-
**Returns:** <code>any</code>
|
254
|
-
|
255
249
|
--------------------
|
256
250
|
|
257
251
|
|
258
252
|
### pause(...)
|
259
253
|
|
260
254
|
```typescript
|
261
|
-
pause(options: { assetId: string; }) =>
|
255
|
+
pause(options: { assetId: string; }) => Promise<void>
|
262
256
|
```
|
263
257
|
|
264
258
|
| Param | Type |
|
265
259
|
| ------------- | --------------------------------- |
|
266
260
|
| **`options`** | <code>{ assetId: string; }</code> |
|
267
261
|
|
268
|
-
**Returns:** <code>any</code>
|
269
|
-
|
270
262
|
--------------------
|
271
263
|
|
272
264
|
|
273
265
|
### resume(...)
|
274
266
|
|
275
267
|
```typescript
|
276
|
-
resume(options: { assetId: string; }) =>
|
268
|
+
resume(options: { assetId: string; }) => Promise<void>
|
277
269
|
```
|
278
270
|
|
279
271
|
| Param | Type |
|
280
272
|
| ------------- | --------------------------------- |
|
281
273
|
| **`options`** | <code>{ assetId: string; }</code> |
|
282
274
|
|
283
|
-
**Returns:** <code>any</code>
|
284
|
-
|
285
275
|
--------------------
|
286
276
|
|
287
277
|
|
288
278
|
### loop(...)
|
289
279
|
|
290
280
|
```typescript
|
291
|
-
loop(options: { assetId: string; }) =>
|
281
|
+
loop(options: { assetId: string; }) => Promise<void>
|
292
282
|
```
|
293
283
|
|
294
284
|
| Param | Type |
|
295
285
|
| ------------- | --------------------------------- |
|
296
286
|
| **`options`** | <code>{ assetId: string; }</code> |
|
297
287
|
|
298
|
-
**Returns:** <code>any</code>
|
299
|
-
|
300
288
|
--------------------
|
301
289
|
|
302
290
|
|
303
291
|
### stop(...)
|
304
292
|
|
305
293
|
```typescript
|
306
|
-
stop(options: { assetId: string; }) =>
|
294
|
+
stop(options: { assetId: string; }) => Promise<void>
|
307
295
|
```
|
308
296
|
|
309
297
|
| Param | Type |
|
310
298
|
| ------------- | --------------------------------- |
|
311
299
|
| **`options`** | <code>{ assetId: string; }</code> |
|
312
300
|
|
313
|
-
**Returns:** <code>any</code>
|
314
|
-
|
315
301
|
--------------------
|
316
302
|
|
317
303
|
|
318
304
|
### unload(...)
|
319
305
|
|
320
306
|
```typescript
|
321
|
-
unload(options: { assetId: string; }) =>
|
307
|
+
unload(options: { assetId: string; }) => Promise<void>
|
322
308
|
```
|
323
309
|
|
324
310
|
| Param | Type |
|
325
311
|
| ------------- | --------------------------------- |
|
326
312
|
| **`options`** | <code>{ assetId: string; }</code> |
|
327
313
|
|
328
|
-
**Returns:** <code>any</code>
|
329
|
-
|
330
314
|
--------------------
|
331
315
|
|
332
316
|
|
333
317
|
### setVolume(...)
|
334
318
|
|
335
319
|
```typescript
|
336
|
-
setVolume(options: { assetId: string; volume: number; }) =>
|
320
|
+
setVolume(options: { assetId: string; volume: number; }) => Promise<void>
|
337
321
|
```
|
338
322
|
|
339
323
|
| Param | Type |
|
340
324
|
| ------------- | ------------------------------------------------- |
|
341
325
|
| **`options`** | <code>{ assetId: string; volume: number; }</code> |
|
342
326
|
|
343
|
-
**Returns:** <code>any</code>
|
344
|
-
|
345
327
|
--------------------
|
346
328
|
|
347
329
|
|
348
330
|
### setRate(...)
|
349
331
|
|
350
332
|
```typescript
|
351
|
-
setRate(options: { assetId: string; rate: number; }) =>
|
333
|
+
setRate(options: { assetId: string; rate: number; }) => Promise<void>
|
352
334
|
```
|
353
335
|
|
354
336
|
| Param | Type |
|
355
337
|
| ------------- | ----------------------------------------------- |
|
356
338
|
| **`options`** | <code>{ assetId: string; rate: number; }</code> |
|
357
339
|
|
358
|
-
**Returns:** <code>any</code>
|
359
|
-
|
360
340
|
--------------------
|
361
341
|
|
362
342
|
|
363
343
|
### getCurrentTime(...)
|
364
344
|
|
365
345
|
```typescript
|
366
|
-
getCurrentTime(options: { assetId: string; }) =>
|
346
|
+
getCurrentTime(options: { assetId: string; }) => Promise<{ currentTime: number; }>
|
367
347
|
```
|
368
348
|
|
369
349
|
| Param | Type |
|
370
350
|
| ------------- | --------------------------------- |
|
371
351
|
| **`options`** | <code>{ assetId: string; }</code> |
|
372
352
|
|
373
|
-
**Returns:** <code>
|
353
|
+
**Returns:** <code>Promise<{ currentTime: number; }></code>
|
374
354
|
|
375
355
|
--------------------
|
376
356
|
|
@@ -378,14 +358,14 @@ getCurrentTime(options: { assetId: string; }) => any
|
|
378
358
|
### getDuration(...)
|
379
359
|
|
380
360
|
```typescript
|
381
|
-
getDuration(options: { assetId: string; }) =>
|
361
|
+
getDuration(options: { assetId: string; }) => Promise<{ duration: number; }>
|
382
362
|
```
|
383
363
|
|
384
364
|
| Param | Type |
|
385
365
|
| ------------- | --------------------------------- |
|
386
366
|
| **`options`** | <code>{ assetId: string; }</code> |
|
387
367
|
|
388
|
-
**Returns:** <code>
|
368
|
+
**Returns:** <code>Promise<{ duration: number; }></code>
|
389
369
|
|
390
370
|
--------------------
|
391
371
|
|
@@ -393,14 +373,34 @@ getDuration(options: { assetId: string; }) => any
|
|
393
373
|
### isPlaying(...)
|
394
374
|
|
395
375
|
```typescript
|
396
|
-
isPlaying(options: { assetId: string; }) =>
|
376
|
+
isPlaying(options: { assetId: string; }) => Promise<{ isPlaying: boolean; }>
|
397
377
|
```
|
398
378
|
|
399
379
|
| Param | Type |
|
400
380
|
| ------------- | --------------------------------- |
|
401
381
|
| **`options`** | <code>{ assetId: string; }</code> |
|
402
382
|
|
403
|
-
**Returns:** <code>
|
383
|
+
**Returns:** <code>Promise<{ isPlaying: boolean; }></code>
|
384
|
+
|
385
|
+
--------------------
|
386
|
+
|
387
|
+
|
388
|
+
### addListener('complete', ...)
|
389
|
+
|
390
|
+
```typescript
|
391
|
+
addListener(eventName: "complete", listenerFunc: CompletedListener) => Promise<PluginListenerHandle> & PluginListenerHandle
|
392
|
+
```
|
393
|
+
|
394
|
+
Listen for complete event
|
395
|
+
|
396
|
+
| Param | Type |
|
397
|
+
| ------------------ | --------------------------------------------------------------- |
|
398
|
+
| **`eventName`** | <code>'complete'</code> |
|
399
|
+
| **`listenerFunc`** | <code><a href="#completedlistener">CompletedListener</a></code> |
|
400
|
+
|
401
|
+
**Returns:** <code>Promise<<a href="#pluginlistenerhandle">PluginListenerHandle</a>> & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>
|
402
|
+
|
403
|
+
**Since:** 5.0.0
|
404
404
|
|
405
405
|
--------------------
|
406
406
|
|
@@ -426,4 +426,26 @@ isPlaying(options: { assetId: string; }) => any
|
|
426
426
|
| **`audioChannelNum`** | <code>number</code> |
|
427
427
|
| **`isUrl`** | <code>boolean</code> |
|
428
428
|
|
429
|
+
|
430
|
+
#### PluginListenerHandle
|
431
|
+
|
432
|
+
| Prop | Type |
|
433
|
+
| ------------ | ----------------------------------------- |
|
434
|
+
| **`remove`** | <code>() => Promise<void></code> |
|
435
|
+
|
436
|
+
|
437
|
+
#### CompletedEvent
|
438
|
+
|
439
|
+
| Prop | Type | Description | Since |
|
440
|
+
| ------------- | ------------------- | -------------------------- | ----- |
|
441
|
+
| **`assetId`** | <code>string</code> | Emit when a play completes | 5.0.0 |
|
442
|
+
|
443
|
+
|
444
|
+
### Type Aliases
|
445
|
+
|
446
|
+
|
447
|
+
#### CompletedListener
|
448
|
+
|
449
|
+
<code>(state: <a href="#completedevent">CompletedEvent</a>): void</code>
|
450
|
+
|
429
451
|
</docgen-api>
|
@@ -1,152 +1,172 @@
|
|
1
1
|
package ee.forgr.audio;
|
2
2
|
|
3
3
|
import android.content.res.AssetFileDescriptor;
|
4
|
+
import android.os.Build;
|
5
|
+
import androidx.annotation.RequiresApi;
|
4
6
|
import com.getcapacitor.JSObject;
|
5
7
|
import java.util.ArrayList;
|
6
8
|
import java.util.concurrent.Callable;
|
7
9
|
|
8
10
|
public class AudioAsset {
|
9
11
|
|
10
|
-
|
12
|
+
private final String TAG = "AudioAsset";
|
13
|
+
|
14
|
+
private ArrayList<AudioDispatcher> audioList;
|
15
|
+
private int playIndex = 0;
|
16
|
+
private String assetId;
|
17
|
+
private NativeAudio owner;
|
18
|
+
|
19
|
+
AudioAsset(
|
20
|
+
NativeAudio owner,
|
21
|
+
String assetId,
|
22
|
+
AssetFileDescriptor assetFileDescriptor,
|
23
|
+
int audioChannelNum,
|
24
|
+
float volume
|
25
|
+
) throws Exception {
|
26
|
+
audioList = new ArrayList<>();
|
27
|
+
this.owner = owner;
|
28
|
+
this.assetId = assetId;
|
29
|
+
|
30
|
+
if (audioChannelNum < 0) {
|
31
|
+
audioChannelNum = 1;
|
32
|
+
}
|
11
33
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
34
|
+
for (int x = 0; x < audioChannelNum; x++) {
|
35
|
+
AudioDispatcher audioDispatcher = new AudioDispatcher(
|
36
|
+
assetFileDescriptor,
|
37
|
+
volume
|
38
|
+
);
|
39
|
+
audioList.add(audioDispatcher);
|
40
|
+
if (audioChannelNum == 1) audioDispatcher.setOwner(this);
|
41
|
+
}
|
42
|
+
}
|
16
43
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
this.owner = owner;
|
21
|
-
this.assetId = assetId;
|
44
|
+
public void dispatchComplete() {
|
45
|
+
this.owner.dispatchComplete(this.assetId);
|
46
|
+
}
|
22
47
|
|
23
|
-
|
24
|
-
|
25
|
-
}
|
48
|
+
public void play(Double time) throws Exception {
|
49
|
+
AudioDispatcher audio = audioList.get(playIndex);
|
26
50
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
51
|
+
if (audio != null) {
|
52
|
+
audio.play(time);
|
53
|
+
playIndex++;
|
54
|
+
playIndex = playIndex % audioList.size();
|
55
|
+
} else {
|
56
|
+
throw new Exception("AudioDispatcher is null");
|
32
57
|
}
|
58
|
+
}
|
33
59
|
|
34
|
-
|
35
|
-
|
36
|
-
}
|
60
|
+
public double getDuration() {
|
61
|
+
if (audioList.size() != 1) return 0;
|
37
62
|
|
38
|
-
|
39
|
-
AudioDispatcher audio = audioList.get(playIndex);
|
63
|
+
AudioDispatcher audio = audioList.get(playIndex);
|
40
64
|
|
41
|
-
|
42
|
-
|
43
|
-
playIndex++;
|
44
|
-
playIndex = playIndex % audioList.size();
|
45
|
-
} else {
|
46
|
-
throw new Exception("AudioDispatcher is null");
|
47
|
-
}
|
65
|
+
if (audio != null) {
|
66
|
+
return audio.getDuration();
|
48
67
|
}
|
68
|
+
return 0;
|
69
|
+
}
|
49
70
|
|
50
|
-
|
51
|
-
|
71
|
+
public double getCurrentPosition() {
|
72
|
+
if (audioList.size() != 1) return 0;
|
52
73
|
|
53
|
-
|
74
|
+
AudioDispatcher audio = audioList.get(playIndex);
|
54
75
|
|
55
|
-
|
56
|
-
|
57
|
-
}
|
58
|
-
return 0;
|
76
|
+
if (audio != null) {
|
77
|
+
return audio.getCurrentPosition();
|
59
78
|
}
|
79
|
+
return 0;
|
80
|
+
}
|
60
81
|
|
61
|
-
|
62
|
-
|
82
|
+
public boolean pause() throws Exception {
|
83
|
+
boolean wasPlaying = false;
|
63
84
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
return audio.getCurrentPosition();
|
68
|
-
}
|
69
|
-
return 0;
|
85
|
+
for (int x = 0; x < audioList.size(); x++) {
|
86
|
+
AudioDispatcher audio = audioList.get(x);
|
87
|
+
wasPlaying |= audio.pause();
|
70
88
|
}
|
71
89
|
|
72
|
-
|
73
|
-
|
90
|
+
return wasPlaying;
|
91
|
+
}
|
74
92
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
}
|
93
|
+
public void resume() throws Exception {
|
94
|
+
if (audioList.size() > 0) {
|
95
|
+
AudioDispatcher audio = audioList.get(0);
|
79
96
|
|
80
|
-
|
97
|
+
if (audio != null) {
|
98
|
+
audio.resume();
|
99
|
+
} else {
|
100
|
+
throw new Exception("AudioDispatcher is null");
|
101
|
+
}
|
81
102
|
}
|
103
|
+
}
|
82
104
|
|
83
|
-
|
84
|
-
|
85
|
-
|
105
|
+
public void stop() throws Exception {
|
106
|
+
for (int x = 0; x < audioList.size(); x++) {
|
107
|
+
AudioDispatcher audio = audioList.get(x);
|
86
108
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
}
|
109
|
+
if (audio != null) {
|
110
|
+
audio.stop();
|
111
|
+
} else {
|
112
|
+
throw new Exception("AudioDispatcher is null");
|
113
|
+
}
|
93
114
|
}
|
115
|
+
}
|
94
116
|
|
95
|
-
|
96
|
-
|
97
|
-
AudioDispatcher audio = audioList.get(x);
|
117
|
+
public void loop() throws Exception {
|
118
|
+
AudioDispatcher audio = audioList.get(playIndex);
|
98
119
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
120
|
+
if (audio != null) {
|
121
|
+
audio.loop();
|
122
|
+
playIndex++;
|
123
|
+
playIndex = playIndex % audioList.size();
|
124
|
+
} else {
|
125
|
+
throw new Exception("AudioDispatcher is null");
|
105
126
|
}
|
127
|
+
}
|
106
128
|
|
107
|
-
|
108
|
-
|
129
|
+
public void unload() throws Exception {
|
130
|
+
this.stop();
|
109
131
|
|
110
|
-
|
111
|
-
|
112
|
-
playIndex++;
|
113
|
-
playIndex = playIndex % audioList.size();
|
114
|
-
} else {
|
115
|
-
throw new Exception("AudioDispatcher is null");
|
116
|
-
}
|
117
|
-
}
|
132
|
+
for (int x = 0; x < audioList.size(); x++) {
|
133
|
+
AudioDispatcher audio = audioList.get(x);
|
118
134
|
|
119
|
-
|
120
|
-
|
135
|
+
if (audio != null) {
|
136
|
+
audio.unload();
|
137
|
+
} else {
|
138
|
+
throw new Exception("AudioDispatcher is null");
|
139
|
+
}
|
140
|
+
}
|
121
141
|
|
122
|
-
|
123
|
-
|
142
|
+
audioList.clear();
|
143
|
+
}
|
124
144
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
throw new Exception("AudioDispatcher is null");
|
129
|
-
}
|
130
|
-
}
|
145
|
+
public void setVolume(float volume) throws Exception {
|
146
|
+
for (int x = 0; x < audioList.size(); x++) {
|
147
|
+
AudioDispatcher audio = audioList.get(x);
|
131
148
|
|
132
|
-
|
149
|
+
if (audio != null) {
|
150
|
+
audio.setVolume(volume);
|
151
|
+
} else {
|
152
|
+
throw new Exception("AudioDispatcher is null");
|
153
|
+
}
|
133
154
|
}
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
}
|
144
|
-
}
|
155
|
+
}
|
156
|
+
|
157
|
+
@RequiresApi(api = Build.VERSION_CODES.M)
|
158
|
+
public void setRate(float rate) throws Exception {
|
159
|
+
for (int x = 0; x < audioList.size(); x++) {
|
160
|
+
AudioDispatcher audio = audioList.get(x);
|
161
|
+
if (audio != null) {
|
162
|
+
audio.setRate(rate);
|
163
|
+
}
|
145
164
|
}
|
165
|
+
}
|
146
166
|
|
147
|
-
|
148
|
-
|
167
|
+
public boolean isPlaying() throws Exception {
|
168
|
+
if (audioList.size() != 1) return false;
|
149
169
|
|
150
|
-
|
151
|
-
|
170
|
+
return audioList.get(playIndex).isPlaying();
|
171
|
+
}
|
152
172
|
}
|