@capgo/native-audio 5.1.10 → 5.1.13

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 CHANGED
@@ -385,6 +385,26 @@ isPlaying(options: { assetId: string; }) => Promise<{ isPlaying: boolean; }>
385
385
  --------------------
386
386
 
387
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&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt; & <a href="#pluginlistenerhandle">PluginListenerHandle</a></code>
402
+
403
+ **Since:** 5.0.0
404
+
405
+ --------------------
406
+
407
+
388
408
  ### Interfaces
389
409
 
390
410
 
@@ -406,4 +426,26 @@ isPlaying(options: { assetId: string; }) => Promise<{ isPlaying: boolean; }>
406
426
  | **`audioChannelNum`** | <code>number</code> |
407
427
  | **`isUrl`** | <code>boolean</code> |
408
428
 
429
+
430
+ #### PluginListenerHandle
431
+
432
+ | Prop | Type |
433
+ | ------------ | ----------------------------------------- |
434
+ | **`remove`** | <code>() =&gt; Promise&lt;void&gt;</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
+
409
451
  </docgen-api>
@@ -1,6 +1,8 @@
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;
@@ -152,6 +154,16 @@ public class AudioAsset {
152
154
  }
153
155
  }
154
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
+ }
164
+ }
165
+ }
166
+
155
167
  public boolean isPlaying() throws Exception {
156
168
  if (audioList.size() != 1) return false;
157
169
 
@@ -11,6 +11,7 @@ import static ee.forgr.audio.Constant.ERROR_AUDIO_ID_MISSING;
11
11
  import static ee.forgr.audio.Constant.LOOP;
12
12
  import static ee.forgr.audio.Constant.OPT_FADE_MUSIC;
13
13
  import static ee.forgr.audio.Constant.OPT_FOCUS_AUDIO;
14
+ import static ee.forgr.audio.Constant.RATE;
14
15
  import static ee.forgr.audio.Constant.VOLUME;
15
16
 
16
17
  import android.Manifest;
@@ -18,8 +19,10 @@ import android.content.Context;
18
19
  import android.content.res.AssetFileDescriptor;
19
20
  import android.content.res.AssetManager;
20
21
  import android.media.AudioManager;
22
+ import android.os.Build;
21
23
  import android.os.ParcelFileDescriptor;
22
24
  import android.util.Log;
25
+ import androidx.annotation.RequiresApi;
23
26
  import com.getcapacitor.JSObject;
24
27
  import com.getcapacitor.Plugin;
25
28
  import com.getcapacitor.PluginCall;
@@ -363,6 +366,28 @@ public class NativeAudio
363
366
  }
364
367
  }
365
368
 
369
+ @RequiresApi(api = Build.VERSION_CODES.M)
370
+ @PluginMethod
371
+ public void setRate(PluginCall call) {
372
+ try {
373
+ initSoundPool();
374
+
375
+ String audioId = call.getString(ASSET_ID);
376
+ float rate = call.getFloat(RATE);
377
+
378
+ if (audioAssetList.containsKey(audioId)) {
379
+ AudioAsset asset = audioAssetList.get(audioId);
380
+ if (asset != null) {
381
+ asset.setRate(rate);
382
+ }
383
+ } else {
384
+ call.reject(ERROR_AUDIO_ASSET_MISSING);
385
+ }
386
+ } catch (Exception ex) {
387
+ call.reject(ex.getMessage());
388
+ }
389
+ }
390
+
366
391
  @PluginMethod
367
392
  public void isPlaying(final PluginCall call) {
368
393
  try {
package/dist/docs.json CHANGED
@@ -216,6 +216,35 @@
216
216
  "docs": "",
217
217
  "complexTypes": [],
218
218
  "slug": "isplaying"
219
+ },
220
+ {
221
+ "name": "addListener",
222
+ "signature": "(eventName: \"complete\", listenerFunc: CompletedListener) => Promise<PluginListenerHandle> & PluginListenerHandle",
223
+ "parameters": [
224
+ {
225
+ "name": "eventName",
226
+ "docs": "",
227
+ "type": "'complete'"
228
+ },
229
+ {
230
+ "name": "listenerFunc",
231
+ "docs": "",
232
+ "type": "CompletedListener"
233
+ }
234
+ ],
235
+ "returns": "Promise<PluginListenerHandle> & PluginListenerHandle",
236
+ "tags": [
237
+ {
238
+ "name": "since",
239
+ "text": "5.0.0"
240
+ }
241
+ ],
242
+ "docs": "Listen for complete event",
243
+ "complexTypes": [
244
+ "PluginListenerHandle",
245
+ "CompletedListener"
246
+ ],
247
+ "slug": "addlistenercomplete"
219
248
  }
220
249
  ],
221
250
  "properties": []
@@ -287,9 +316,60 @@
287
316
  "type": "boolean | undefined"
288
317
  }
289
318
  ]
319
+ },
320
+ {
321
+ "name": "PluginListenerHandle",
322
+ "slug": "pluginlistenerhandle",
323
+ "docs": "",
324
+ "tags": [],
325
+ "methods": [],
326
+ "properties": [
327
+ {
328
+ "name": "remove",
329
+ "tags": [],
330
+ "docs": "",
331
+ "complexTypes": [],
332
+ "type": "() => Promise<void>"
333
+ }
334
+ ]
335
+ },
336
+ {
337
+ "name": "CompletedEvent",
338
+ "slug": "completedevent",
339
+ "docs": "",
340
+ "tags": [],
341
+ "methods": [],
342
+ "properties": [
343
+ {
344
+ "name": "assetId",
345
+ "tags": [
346
+ {
347
+ "text": "5.0.0",
348
+ "name": "since"
349
+ }
350
+ ],
351
+ "docs": "Emit when a play completes",
352
+ "complexTypes": [],
353
+ "type": "string"
354
+ }
355
+ ]
290
356
  }
291
357
  ],
292
358
  "enums": [],
293
- "typeAliases": [],
359
+ "typeAliases": [
360
+ {
361
+ "name": "CompletedListener",
362
+ "slug": "completedlistener",
363
+ "docs": "",
364
+ "types": [
365
+ {
366
+ "text": "(state: CompletedEvent): void",
367
+ "complexTypes": [
368
+ "CompletedEvent"
369
+ ]
370
+ }
371
+ ]
372
+ }
373
+ ],
294
374
  "pluginConfigs": []
295
375
  }
@@ -1,3 +1,13 @@
1
+ import type { PluginListenerHandle } from "@capacitor/core";
2
+ export interface CompletedEvent {
3
+ /**
4
+ * Emit when a play completes
5
+ *
6
+ * @since 5.0.0
7
+ */
8
+ assetId: string;
9
+ }
10
+ export type CompletedListener = (state: CompletedEvent) => void;
1
11
  export interface NativeAudio {
2
12
  configure(options: ConfigureOptions): Promise<void>;
3
13
  preload(options: PreloadOptions): Promise<void>;
@@ -43,6 +53,12 @@ export interface NativeAudio {
43
53
  }): Promise<{
44
54
  isPlaying: boolean;
45
55
  }>;
56
+ /**
57
+ * Listen for complete event
58
+ *
59
+ * @since 5.0.0
60
+ */
61
+ addListener(eventName: "complete", listenerFunc: CompletedListener): Promise<PluginListenerHandle> & PluginListenerHandle;
46
62
  }
47
63
  export interface ConfigureOptions {
48
64
  fade?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/native-audio",
3
- "version": "5.1.10",
3
+ "version": "5.1.13",
4
4
  "description": "A native plugin for native audio engine",
5
5
  "main": "dist/plugin.js",
6
6
  "module": "dist/esm/index.js",