@capgo/native-audio 6.3.4 → 6.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -45
- package/android/src/main/java/ee/forgr/audio/AudioAsset.java +4 -6
- package/android/src/main/java/ee/forgr/audio/AudioDispatcher.java +15 -17
- package/android/src/main/java/ee/forgr/audio/Constant.java +7 -0
- package/android/src/main/java/ee/forgr/audio/NativeAudio.java +41 -32
- package/dist/docs.json +328 -56
- package/dist/esm/definitions.d.ts +171 -33
- package/dist/esm/web.d.ts +1 -0
- package/dist/esm/web.js +8 -0
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +8 -0
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +8 -0
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/Plugin.m +1 -0
- package/ios/Plugin/Plugin.swift +10 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
</a>
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
|
-
<h2>
|
|
10
|
-
|
|
11
|
-
</h2>
|
|
9
|
+
<h2><a href="https://capgo.app/?ref=awesome-list"> ➡️ Get Instant updates for your App with Capgo 🚀</a></h2>
|
|
10
|
+
<h2><a href="https://capgo.app/consulting/"> Fix your annoying bug now, Hire a Capacitor expert 💪</a></h2>
|
|
12
11
|
</div>
|
|
13
12
|
|
|
14
13
|
<h3 align="center">Native Audio</h3>
|
|
@@ -114,7 +113,7 @@ import {NativeAudio} from '@capgo/native-audio'
|
|
|
114
113
|
|
|
115
114
|
/**
|
|
116
115
|
* This method will load more optimized audio files for background into memory.
|
|
117
|
-
* @param assetPath - relative path of the file
|
|
116
|
+
* @param assetPath - relative path of the file, absolute url (file://) or remote url (https://)
|
|
118
117
|
* assetId - unique identifier of the file
|
|
119
118
|
* audioChannelNum - number of audio channels
|
|
120
119
|
* isUrl - pass true if assetPath is a `file://` url
|
|
@@ -169,7 +168,7 @@ NativeAudio.unload({
|
|
|
169
168
|
/**
|
|
170
169
|
* This method will set the new volume for a audio file.
|
|
171
170
|
* @param assetId - identifier of the asset
|
|
172
|
-
* volume - numerical value of the volume between 0.1 - 1.0
|
|
171
|
+
* volume - numerical value of the volume between 0.1 - 1.0 default 1.0
|
|
173
172
|
* @returns void
|
|
174
173
|
*/
|
|
175
174
|
NativeAudio.setVolume({
|
|
@@ -225,10 +224,14 @@ NativeAudio.isPlaying({
|
|
|
225
224
|
configure(options: ConfigureOptions) => Promise<void>
|
|
226
225
|
```
|
|
227
226
|
|
|
227
|
+
Configure the audio player
|
|
228
|
+
|
|
228
229
|
| Param | Type |
|
|
229
230
|
| ------------- | ------------------------------------------------------------- |
|
|
230
231
|
| **`options`** | <code><a href="#configureoptions">ConfigureOptions</a></code> |
|
|
231
232
|
|
|
233
|
+
**Since:** 5.0.0
|
|
234
|
+
|
|
232
235
|
--------------------
|
|
233
236
|
|
|
234
237
|
|
|
@@ -238,10 +241,33 @@ configure(options: ConfigureOptions) => Promise<void>
|
|
|
238
241
|
preload(options: PreloadOptions) => Promise<void>
|
|
239
242
|
```
|
|
240
243
|
|
|
244
|
+
Load an audio file
|
|
245
|
+
|
|
246
|
+
| Param | Type |
|
|
247
|
+
| ------------- | --------------------------------------------------------- |
|
|
248
|
+
| **`options`** | <code><a href="#preloadoptions">PreloadOptions</a></code> |
|
|
249
|
+
|
|
250
|
+
**Since:** 5.0.0
|
|
251
|
+
|
|
252
|
+
--------------------
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
### isPreloaded(...)
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
isPreloaded(options: PreloadOptions) => Promise<boolean>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Check if an audio file is preloaded
|
|
262
|
+
|
|
241
263
|
| Param | Type |
|
|
242
264
|
| ------------- | --------------------------------------------------------- |
|
|
243
265
|
| **`options`** | <code><a href="#preloadoptions">PreloadOptions</a></code> |
|
|
244
266
|
|
|
267
|
+
**Returns:** <code>Promise<boolean></code>
|
|
268
|
+
|
|
269
|
+
**Since:** 6.1.0
|
|
270
|
+
|
|
245
271
|
--------------------
|
|
246
272
|
|
|
247
273
|
|
|
@@ -251,22 +277,30 @@ preload(options: PreloadOptions) => Promise<void>
|
|
|
251
277
|
play(options: { assetId: string; time?: number; delay?: number; }) => Promise<void>
|
|
252
278
|
```
|
|
253
279
|
|
|
280
|
+
Play an audio file
|
|
281
|
+
|
|
254
282
|
| Param | Type |
|
|
255
283
|
| ------------- | ---------------------------------------------------------------- |
|
|
256
284
|
| **`options`** | <code>{ assetId: string; time?: number; delay?: number; }</code> |
|
|
257
285
|
|
|
286
|
+
**Since:** 5.0.0
|
|
287
|
+
|
|
258
288
|
--------------------
|
|
259
289
|
|
|
260
290
|
|
|
261
291
|
### pause(...)
|
|
262
292
|
|
|
263
293
|
```typescript
|
|
264
|
-
pause(options:
|
|
294
|
+
pause(options: Assets) => Promise<void>
|
|
265
295
|
```
|
|
266
296
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
|
297
|
+
Pause an audio file
|
|
298
|
+
|
|
299
|
+
| Param | Type |
|
|
300
|
+
| ------------- | ----------------------------------------- |
|
|
301
|
+
| **`options`** | <code><a href="#assets">Assets</a></code> |
|
|
302
|
+
|
|
303
|
+
**Since:** 5.0.0
|
|
270
304
|
|
|
271
305
|
--------------------
|
|
272
306
|
|
|
@@ -274,12 +308,16 @@ pause(options: { assetId: string; }) => Promise<void>
|
|
|
274
308
|
### resume(...)
|
|
275
309
|
|
|
276
310
|
```typescript
|
|
277
|
-
resume(options:
|
|
311
|
+
resume(options: Assets) => Promise<void>
|
|
278
312
|
```
|
|
279
313
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
|
314
|
+
Resume an audio file
|
|
315
|
+
|
|
316
|
+
| Param | Type |
|
|
317
|
+
| ------------- | ----------------------------------------- |
|
|
318
|
+
| **`options`** | <code><a href="#assets">Assets</a></code> |
|
|
319
|
+
|
|
320
|
+
**Since:** 5.0.0
|
|
283
321
|
|
|
284
322
|
--------------------
|
|
285
323
|
|
|
@@ -287,12 +325,16 @@ resume(options: { assetId: string; }) => Promise<void>
|
|
|
287
325
|
### loop(...)
|
|
288
326
|
|
|
289
327
|
```typescript
|
|
290
|
-
loop(options:
|
|
328
|
+
loop(options: Assets) => Promise<void>
|
|
291
329
|
```
|
|
292
330
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
|
331
|
+
Stop an audio file
|
|
332
|
+
|
|
333
|
+
| Param | Type |
|
|
334
|
+
| ------------- | ----------------------------------------- |
|
|
335
|
+
| **`options`** | <code><a href="#assets">Assets</a></code> |
|
|
336
|
+
|
|
337
|
+
**Since:** 5.0.0
|
|
296
338
|
|
|
297
339
|
--------------------
|
|
298
340
|
|
|
@@ -300,12 +342,16 @@ loop(options: { assetId: string; }) => Promise<void>
|
|
|
300
342
|
### stop(...)
|
|
301
343
|
|
|
302
344
|
```typescript
|
|
303
|
-
stop(options:
|
|
345
|
+
stop(options: Assets) => Promise<void>
|
|
304
346
|
```
|
|
305
347
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
|
348
|
+
Stop an audio file
|
|
349
|
+
|
|
350
|
+
| Param | Type |
|
|
351
|
+
| ------------- | ----------------------------------------- |
|
|
352
|
+
| **`options`** | <code><a href="#assets">Assets</a></code> |
|
|
353
|
+
|
|
354
|
+
**Since:** 5.0.0
|
|
309
355
|
|
|
310
356
|
--------------------
|
|
311
357
|
|
|
@@ -313,12 +359,16 @@ stop(options: { assetId: string; }) => Promise<void>
|
|
|
313
359
|
### unload(...)
|
|
314
360
|
|
|
315
361
|
```typescript
|
|
316
|
-
unload(options:
|
|
362
|
+
unload(options: Assets) => Promise<void>
|
|
317
363
|
```
|
|
318
364
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
|
365
|
+
Unload an audio file
|
|
366
|
+
|
|
367
|
+
| Param | Type |
|
|
368
|
+
| ------------- | ----------------------------------------- |
|
|
369
|
+
| **`options`** | <code><a href="#assets">Assets</a></code> |
|
|
370
|
+
|
|
371
|
+
**Since:** 5.0.0
|
|
322
372
|
|
|
323
373
|
--------------------
|
|
324
374
|
|
|
@@ -329,10 +379,14 @@ unload(options: { assetId: string; }) => Promise<void>
|
|
|
329
379
|
setVolume(options: { assetId: string; volume: number; }) => Promise<void>
|
|
330
380
|
```
|
|
331
381
|
|
|
382
|
+
Set the volume of an audio file
|
|
383
|
+
|
|
332
384
|
| Param | Type |
|
|
333
385
|
| ------------- | ------------------------------------------------- |
|
|
334
386
|
| **`options`** | <code>{ assetId: string; volume: number; }</code> |
|
|
335
387
|
|
|
388
|
+
**Since:** 5.0.0
|
|
389
|
+
|
|
336
390
|
--------------------
|
|
337
391
|
|
|
338
392
|
|
|
@@ -342,10 +396,14 @@ setVolume(options: { assetId: string; volume: number; }) => Promise<void>
|
|
|
342
396
|
setRate(options: { assetId: string; rate: number; }) => Promise<void>
|
|
343
397
|
```
|
|
344
398
|
|
|
399
|
+
Set the rate of an audio file
|
|
400
|
+
|
|
345
401
|
| Param | Type |
|
|
346
402
|
| ------------- | ----------------------------------------------- |
|
|
347
403
|
| **`options`** | <code>{ assetId: string; rate: number; }</code> |
|
|
348
404
|
|
|
405
|
+
**Since:** 5.0.0
|
|
406
|
+
|
|
349
407
|
--------------------
|
|
350
408
|
|
|
351
409
|
|
|
@@ -355,42 +413,54 @@ setRate(options: { assetId: string; rate: number; }) => Promise<void>
|
|
|
355
413
|
getCurrentTime(options: { assetId: string; }) => Promise<{ currentTime: number; }>
|
|
356
414
|
```
|
|
357
415
|
|
|
416
|
+
Set the current time of an audio file
|
|
417
|
+
|
|
358
418
|
| Param | Type |
|
|
359
419
|
| ------------- | --------------------------------- |
|
|
360
420
|
| **`options`** | <code>{ assetId: string; }</code> |
|
|
361
421
|
|
|
362
422
|
**Returns:** <code>Promise<{ currentTime: number; }></code>
|
|
363
423
|
|
|
424
|
+
**Since:** 5.0.0
|
|
425
|
+
|
|
364
426
|
--------------------
|
|
365
427
|
|
|
366
428
|
|
|
367
429
|
### getDuration(...)
|
|
368
430
|
|
|
369
431
|
```typescript
|
|
370
|
-
getDuration(options:
|
|
432
|
+
getDuration(options: Assets) => Promise<{ duration: number; }>
|
|
371
433
|
```
|
|
372
434
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
|
435
|
+
Get the duration of an audio file
|
|
436
|
+
|
|
437
|
+
| Param | Type |
|
|
438
|
+
| ------------- | ----------------------------------------- |
|
|
439
|
+
| **`options`** | <code><a href="#assets">Assets</a></code> |
|
|
376
440
|
|
|
377
441
|
**Returns:** <code>Promise<{ duration: number; }></code>
|
|
378
442
|
|
|
443
|
+
**Since:** 5.0.0
|
|
444
|
+
|
|
379
445
|
--------------------
|
|
380
446
|
|
|
381
447
|
|
|
382
448
|
### isPlaying(...)
|
|
383
449
|
|
|
384
450
|
```typescript
|
|
385
|
-
isPlaying(options:
|
|
451
|
+
isPlaying(options: Assets) => Promise<{ isPlaying: boolean; }>
|
|
386
452
|
```
|
|
387
453
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
|
454
|
+
Check if an audio file is playing
|
|
455
|
+
|
|
456
|
+
| Param | Type |
|
|
457
|
+
| ------------- | ----------------------------------------- |
|
|
458
|
+
| **`options`** | <code><a href="#assets">Assets</a></code> |
|
|
391
459
|
|
|
392
460
|
**Returns:** <code>Promise<{ isPlaying: boolean; }></code>
|
|
393
461
|
|
|
462
|
+
**Since:** 5.0.0
|
|
463
|
+
|
|
394
464
|
--------------------
|
|
395
465
|
|
|
396
466
|
|
|
@@ -410,6 +480,7 @@ Listen for complete event
|
|
|
410
480
|
**Returns:** <code>Promise<<a href="#pluginlistenerhandle">PluginListenerHandle</a>></code>
|
|
411
481
|
|
|
412
482
|
**Since:** 5.0.0
|
|
483
|
+
return {@link CompletedEvent}
|
|
413
484
|
|
|
414
485
|
--------------------
|
|
415
486
|
|
|
@@ -419,22 +490,29 @@ Listen for complete event
|
|
|
419
490
|
|
|
420
491
|
#### ConfigureOptions
|
|
421
492
|
|
|
422
|
-
| Prop | Type |
|
|
423
|
-
| ---------------- | -------------------- |
|
|
424
|
-
| **`fade`** | <code>boolean</code> |
|
|
425
|
-
| **`focus`** | <code>boolean</code> |
|
|
426
|
-
| **`background`** | <code>boolean</code> |
|
|
493
|
+
| Prop | Type | Description |
|
|
494
|
+
| ---------------- | -------------------- | ------------------------------------------------------- |
|
|
495
|
+
| **`fade`** | <code>boolean</code> | Play the audio with Fade effect, only available for IOS |
|
|
496
|
+
| **`focus`** | <code>boolean</code> | focus the audio with Audio Focus |
|
|
497
|
+
| **`background`** | <code>boolean</code> | Play the audio in the background |
|
|
427
498
|
|
|
428
499
|
|
|
429
500
|
#### PreloadOptions
|
|
430
501
|
|
|
431
|
-
| Prop | Type |
|
|
432
|
-
| --------------------- | -------------------- |
|
|
433
|
-
| **`assetPath`** | <code>string</code> |
|
|
434
|
-
| **`assetId`** | <code>string</code> |
|
|
435
|
-
| **`volume`** | <code>number</code> |
|
|
436
|
-
| **`audioChannelNum`** | <code>number</code> |
|
|
437
|
-
| **`isUrl`** | <code>boolean</code> |
|
|
502
|
+
| Prop | Type | Description |
|
|
503
|
+
| --------------------- | -------------------- | -------------------------------------------------------------------------------------------------- |
|
|
504
|
+
| **`assetPath`** | <code>string</code> | Path to the audio file, relative path of the file, absolute url (file://) or remote url (https://) |
|
|
505
|
+
| **`assetId`** | <code>string</code> | Asset Id, unique identifier of the file |
|
|
506
|
+
| **`volume`** | <code>number</code> | Volume of the audio, between 0.1 and 1.0 |
|
|
507
|
+
| **`audioChannelNum`** | <code>number</code> | Audio channel number, default is 1 |
|
|
508
|
+
| **`isUrl`** | <code>boolean</code> | Is the audio file a URL, pass true if assetPath is a `file://` url |
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
#### Assets
|
|
512
|
+
|
|
513
|
+
| Prop | Type | Description |
|
|
514
|
+
| ------------- | ------------------- | --------------------------------------- |
|
|
515
|
+
| **`assetId`** | <code>string</code> | Asset Id, unique identifier of the file |
|
|
438
516
|
|
|
439
517
|
|
|
440
518
|
#### PluginListenerHandle
|
|
@@ -3,18 +3,16 @@ package ee.forgr.audio;
|
|
|
3
3
|
import android.content.res.AssetFileDescriptor;
|
|
4
4
|
import android.os.Build;
|
|
5
5
|
import androidx.annotation.RequiresApi;
|
|
6
|
-
import com.getcapacitor.JSObject;
|
|
7
6
|
import java.util.ArrayList;
|
|
8
|
-
import java.util.concurrent.Callable;
|
|
9
7
|
|
|
10
8
|
public class AudioAsset {
|
|
11
9
|
|
|
12
10
|
private final String TAG = "AudioAsset";
|
|
13
11
|
|
|
14
|
-
private ArrayList<AudioDispatcher> audioList;
|
|
12
|
+
private final ArrayList<AudioDispatcher> audioList;
|
|
15
13
|
private int playIndex = 0;
|
|
16
|
-
private String assetId;
|
|
17
|
-
private NativeAudio owner;
|
|
14
|
+
private final String assetId;
|
|
15
|
+
private final NativeAudio owner;
|
|
18
16
|
|
|
19
17
|
AudioAsset(
|
|
20
18
|
NativeAudio owner,
|
|
@@ -91,7 +89,7 @@ public class AudioAsset {
|
|
|
91
89
|
}
|
|
92
90
|
|
|
93
91
|
public void resume() throws Exception {
|
|
94
|
-
if (audioList.
|
|
92
|
+
if (!audioList.isEmpty()) {
|
|
95
93
|
AudioDispatcher audio = audioList.get(0);
|
|
96
94
|
|
|
97
95
|
if (audio != null) {
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
package ee.forgr.audio;
|
|
2
2
|
|
|
3
|
+
import static ee.forgr.audio.Constant.INVALID;
|
|
4
|
+
import static ee.forgr.audio.Constant.LOOPING;
|
|
5
|
+
import static ee.forgr.audio.Constant.PAUSE;
|
|
6
|
+
import static ee.forgr.audio.Constant.PENDING_LOOP;
|
|
7
|
+
import static ee.forgr.audio.Constant.PENDING_PLAY;
|
|
8
|
+
import static ee.forgr.audio.Constant.PLAYING;
|
|
9
|
+
import static ee.forgr.audio.Constant.PREPARED;
|
|
10
|
+
|
|
3
11
|
import android.content.res.AssetFileDescriptor;
|
|
4
12
|
import android.media.AudioAttributes;
|
|
5
13
|
import android.media.MediaPlayer;
|
|
6
14
|
import android.os.Build;
|
|
7
15
|
import android.util.Log;
|
|
8
|
-
import java.util.concurrent.Callable;
|
|
9
16
|
|
|
10
17
|
public class AudioDispatcher
|
|
11
18
|
implements
|
|
@@ -14,16 +21,7 @@ public class AudioDispatcher
|
|
|
14
21
|
MediaPlayer.OnSeekCompleteListener {
|
|
15
22
|
|
|
16
23
|
private final String TAG = "AudioDispatcher";
|
|
17
|
-
|
|
18
|
-
private final int INVALID = 0;
|
|
19
|
-
private final int PREPARED = 1;
|
|
20
|
-
private final int PENDING_PLAY = 2;
|
|
21
|
-
private final int PLAYING = 3;
|
|
22
|
-
private final int PENDING_LOOP = 4;
|
|
23
|
-
private final int LOOPING = 5;
|
|
24
|
-
private final int PAUSE = 6;
|
|
25
|
-
|
|
26
|
-
private MediaPlayer mediaPlayer;
|
|
24
|
+
private final MediaPlayer mediaPlayer;
|
|
27
25
|
private int mediaState;
|
|
28
26
|
private AudioAsset owner;
|
|
29
27
|
|
|
@@ -63,7 +61,7 @@ public class AudioDispatcher
|
|
|
63
61
|
}
|
|
64
62
|
|
|
65
63
|
public void play(Double time) throws Exception {
|
|
66
|
-
invokePlay(time
|
|
64
|
+
invokePlay(time);
|
|
67
65
|
}
|
|
68
66
|
|
|
69
67
|
public boolean pause() throws Exception {
|
|
@@ -159,23 +157,23 @@ public class AudioDispatcher
|
|
|
159
157
|
}
|
|
160
158
|
}
|
|
161
159
|
|
|
162
|
-
private void invokePlay(Double time
|
|
160
|
+
private void invokePlay(Double time) {
|
|
163
161
|
try {
|
|
164
162
|
boolean playing = mediaPlayer.isPlaying();
|
|
165
163
|
|
|
166
164
|
if (playing) {
|
|
167
165
|
mediaPlayer.pause();
|
|
168
|
-
mediaPlayer.setLooping(
|
|
166
|
+
mediaPlayer.setLooping(false);
|
|
169
167
|
mediaState = PENDING_PLAY;
|
|
170
168
|
seek(time);
|
|
171
169
|
} else {
|
|
172
170
|
if (mediaState == PREPARED) {
|
|
173
|
-
mediaState = (
|
|
171
|
+
mediaState = (PENDING_PLAY);
|
|
174
172
|
onPrepared(mediaPlayer);
|
|
175
173
|
seek(time);
|
|
176
174
|
} else {
|
|
177
|
-
mediaState = (
|
|
178
|
-
mediaPlayer.setLooping(
|
|
175
|
+
mediaState = (PENDING_PLAY);
|
|
176
|
+
mediaPlayer.setLooping(false);
|
|
179
177
|
seek(time);
|
|
180
178
|
}
|
|
181
179
|
}
|
|
@@ -17,4 +17,11 @@ public class Constant {
|
|
|
17
17
|
public static final String RATE = "rate";
|
|
18
18
|
public static final String AUDIO_CHANNEL_NUM = "audioChannelNum";
|
|
19
19
|
public static final String LOOP = "loop";
|
|
20
|
+
public static final int INVALID = 0;
|
|
21
|
+
public static final int PREPARED = 1;
|
|
22
|
+
public static final int PENDING_PLAY = 2;
|
|
23
|
+
public static final int PLAYING = 3;
|
|
24
|
+
public static final int PENDING_LOOP = 4;
|
|
25
|
+
public static final int LOOPING = 5;
|
|
26
|
+
public static final int PAUSE = 6;
|
|
20
27
|
}
|
|
@@ -9,13 +9,11 @@ import static ee.forgr.audio.Constant.ERROR_AUDIO_ASSET_MISSING;
|
|
|
9
9
|
import static ee.forgr.audio.Constant.ERROR_AUDIO_EXISTS;
|
|
10
10
|
import static ee.forgr.audio.Constant.ERROR_AUDIO_ID_MISSING;
|
|
11
11
|
import static ee.forgr.audio.Constant.LOOP;
|
|
12
|
-
import static ee.forgr.audio.Constant.OPT_FADE_MUSIC;
|
|
13
12
|
import static ee.forgr.audio.Constant.OPT_FOCUS_AUDIO;
|
|
14
13
|
import static ee.forgr.audio.Constant.RATE;
|
|
15
14
|
import static ee.forgr.audio.Constant.VOLUME;
|
|
16
15
|
|
|
17
16
|
import android.Manifest;
|
|
18
|
-
import android.app.Application;
|
|
19
17
|
import android.content.Context;
|
|
20
18
|
import android.content.res.AssetFileDescriptor;
|
|
21
19
|
import android.content.res.AssetManager;
|
|
@@ -50,7 +48,6 @@ public class NativeAudio
|
|
|
50
48
|
|
|
51
49
|
private static HashMap<String, AudioAsset> audioAssetList;
|
|
52
50
|
private static ArrayList<AudioAsset> resumeList;
|
|
53
|
-
private boolean fadeMusic = false;
|
|
54
51
|
private AudioManager audioManager;
|
|
55
52
|
|
|
56
53
|
@Override
|
|
@@ -125,24 +122,45 @@ public class NativeAudio
|
|
|
125
122
|
public void configure(PluginCall call) {
|
|
126
123
|
initSoundPool();
|
|
127
124
|
|
|
128
|
-
if (
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
if (this.audioManager == null) {
|
|
126
|
+
call.resolve();
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
131
129
|
|
|
132
|
-
if (call.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
this.audioManager.abandonAudioFocus(this);
|
|
141
|
-
}
|
|
130
|
+
if (Boolean.TRUE.equals(call.getBoolean(OPT_FOCUS_AUDIO, false))) {
|
|
131
|
+
this.audioManager.requestAudioFocus(
|
|
132
|
+
this,
|
|
133
|
+
AudioManager.STREAM_MUSIC,
|
|
134
|
+
AudioManager.AUDIOFOCUS_GAIN
|
|
135
|
+
);
|
|
136
|
+
} else {
|
|
137
|
+
this.audioManager.abandonAudioFocus(this);
|
|
142
138
|
}
|
|
143
139
|
call.resolve();
|
|
144
140
|
}
|
|
145
141
|
|
|
142
|
+
@PluginMethod
|
|
143
|
+
public void isPreloaded(final PluginCall call) {
|
|
144
|
+
new Thread(
|
|
145
|
+
new Runnable() {
|
|
146
|
+
@Override
|
|
147
|
+
public void run() {
|
|
148
|
+
initSoundPool();
|
|
149
|
+
|
|
150
|
+
String audioId = call.getString(ASSET_ID);
|
|
151
|
+
|
|
152
|
+
if (!isStringValid(audioId)) {
|
|
153
|
+
call.reject(ERROR_AUDIO_ID_MISSING + " - " + audioId);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
call.resolve(
|
|
157
|
+
new JSObject().put("found", audioAssetList.containsKey(audioId))
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
).start();
|
|
162
|
+
}
|
|
163
|
+
|
|
146
164
|
@PluginMethod
|
|
147
165
|
public void preload(final PluginCall call) {
|
|
148
166
|
new Thread(
|
|
@@ -348,7 +366,7 @@ public class NativeAudio
|
|
|
348
366
|
initSoundPool();
|
|
349
367
|
|
|
350
368
|
String audioId = call.getString(ASSET_ID);
|
|
351
|
-
float volume = call.getFloat(VOLUME);
|
|
369
|
+
float volume = call.getFloat(VOLUME, 1F);
|
|
352
370
|
|
|
353
371
|
if (audioAssetList.containsKey(audioId)) {
|
|
354
372
|
AudioAsset asset = audioAssetList.get(audioId);
|
|
@@ -372,7 +390,7 @@ public class NativeAudio
|
|
|
372
390
|
initSoundPool();
|
|
373
391
|
|
|
374
392
|
String audioId = call.getString(ASSET_ID);
|
|
375
|
-
float rate = call.getFloat(RATE);
|
|
393
|
+
float rate = call.getFloat(RATE, 1F);
|
|
376
394
|
|
|
377
395
|
if (audioAssetList.containsKey(audioId)) {
|
|
378
396
|
AudioAsset asset = audioAssetList.get(audioId);
|
|
@@ -421,7 +439,7 @@ public class NativeAudio
|
|
|
421
439
|
}
|
|
422
440
|
|
|
423
441
|
private void preloadAsset(PluginCall call) {
|
|
424
|
-
|
|
442
|
+
float volume = 1F;
|
|
425
443
|
int audioChannelNum = 1;
|
|
426
444
|
JSObject status = new JSObject();
|
|
427
445
|
status.put("STATUS", "OK");
|
|
@@ -450,17 +468,8 @@ public class NativeAudio
|
|
|
450
468
|
|
|
451
469
|
String fullPath = assetPath; //"raw/".concat(assetPath);
|
|
452
470
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
} else {
|
|
456
|
-
volume = call.getDouble(VOLUME, 0.5);
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
if (call.getInt(AUDIO_CHANNEL_NUM) == null) {
|
|
460
|
-
audioChannelNum = 1;
|
|
461
|
-
} else {
|
|
462
|
-
audioChannelNum = call.getInt(AUDIO_CHANNEL_NUM);
|
|
463
|
-
}
|
|
471
|
+
volume = call.getFloat(VOLUME, 1F);
|
|
472
|
+
audioChannelNum = call.getInt(AUDIO_CHANNEL_NUM, 1);
|
|
464
473
|
|
|
465
474
|
AssetFileDescriptor assetFileDescriptor;
|
|
466
475
|
if (isLocalUrl) {
|
|
@@ -484,7 +493,7 @@ public class NativeAudio
|
|
|
484
493
|
audioId,
|
|
485
494
|
uri,
|
|
486
495
|
audioChannelNum,
|
|
487
|
-
|
|
496
|
+
volume
|
|
488
497
|
);
|
|
489
498
|
audioAssetList.put(audioId, remoteAudioAsset);
|
|
490
499
|
call.resolve(status);
|
|
@@ -511,7 +520,7 @@ public class NativeAudio
|
|
|
511
520
|
audioId,
|
|
512
521
|
assetFileDescriptor,
|
|
513
522
|
audioChannelNum,
|
|
514
|
-
|
|
523
|
+
volume
|
|
515
524
|
);
|
|
516
525
|
audioAssetList.put(audioId, asset);
|
|
517
526
|
|