Skip to content

Commit e59f53d

Browse files
authored
Merge branch 'main' into capacitor_7
2 parents 9ad5d58 + 4da55e0 commit e59f53d

File tree

9 files changed

+75
-1
lines changed

9 files changed

+75
-1
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
## [6.5.0](https://github.com/Cap-go/native-audio/compare/6.4.23...6.5.0) (2025-02-08)
6+
7+
8+
### Features
9+
10+
* **setCurrentTime:** Added a setCurrentTime function (not tested) ([e52b44d](https://github.com/Cap-go/native-audio/commit/e52b44de834323596c0c8d23f77258b61c619a80))
11+
512
### [6.4.23](https://github.com/Cap-go/native-audio/compare/6.4.22...6.4.23) (2024-10-29)
613

714

README.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,13 +404,30 @@ Set the rate of an audio file
404404
--------------------
405405

406406

407+
### setCurrentTime(...)
408+
409+
```typescript
410+
setCurrentTime(options: { assetId: string; time: number; }) => Promise<void>
411+
```
412+
413+
Set the current time of an audio file
414+
415+
| Param | Type |
416+
| ------------- | ----------------------------------------------- |
417+
| **`options`** | <code>{ assetId: string; time: number; }</code> |
418+
419+
**Since:** 6.5.0
420+
421+
--------------------
422+
423+
407424
### getCurrentTime(...)
408425

409426
```typescript
410427
getCurrentTime(options: { assetId: string; }) => Promise<{ currentTime: number; }>
411428
```
412429

413-
Set the current time of an audio file
430+
Get the current time of an audio file
414431

415432
| Param | Type |
416433
| ------------- | --------------------------------- |

android/src/main/java/ee/forgr/audio/AudioAsset.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ public double getDuration() {
6767
return 0;
6868
}
6969

70+
public void setCurrentPosition(double time) {
71+
if (audioList.size() != 1) return;
72+
73+
AudioDispatcher audio = audioList.get(playIndex);
74+
75+
if (audio != null) {
76+
audio.setCurrentPosition(time);
77+
}
78+
}
79+
7080
public double getCurrentPosition() {
7181
if (audioList.size() != 1) return 0;
7282

android/src/main/java/ee/forgr/audio/AudioDispatcher.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ public double getDuration() {
5656
return mediaPlayer.getDuration() / 1000.0;
5757
}
5858

59+
public void setCurrentPosition(double time) {
60+
if (mediaState == PLAYING || mediaState == PAUSE) {
61+
mediaPlayer.seekTo((int) (time * 1000));
62+
}
63+
}
64+
5965
public double getCurrentPosition() {
6066
return mediaPlayer.getCurrentPosition() / 1000.0;
6167
}

ios/Plugin/AudioAsset.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,16 @@ public class AudioAsset: NSObject, AVAudioPlayerDelegate {
5959
return player.currentTime
6060
}
6161

62+
func setCurrentTime(time: TimeInterval) {
63+
if channels.count != 1 {
64+
return
65+
}
66+
67+
let player: AVAudioPlayer = channels[playIndex]
68+
69+
player.currentTime = time
70+
}
71+
6272
func getDuration() -> TimeInterval {
6373
if channels.count != 1 {
6474
return 0

ios/Plugin/Plugin.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
CAP_PLUGIN_METHOD(resume, CAPPluginReturnPromise);
1616
CAP_PLUGIN_METHOD(unload, CAPPluginReturnPromise);
1717
CAP_PLUGIN_METHOD(setVolume, CAPPluginReturnPromise);
18+
CAP_PLUGIN_METHOD(setCurrentTime, CAPPluginReturnPromise);
1819
CAP_PLUGIN_METHOD(getCurrentTime, CAPPluginReturnPromise);
1920
CAP_PLUGIN_METHOD(getDuration, CAPPluginReturnPromise);
2021
CAP_PLUGIN_METHOD(isPlaying, CAPPluginReturnPromise);

ios/Plugin/Plugin.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,16 @@ public class NativeAudio: CAPPlugin, AVAudioPlayerDelegate {
188188
return asset as? AudioAsset
189189
}
190190

191+
@objc func setCurrentTime(_ call: CAPPluginCall) {
192+
guard let audioAsset: AudioAsset = self.getAudioAsset(call) else {
193+
return
194+
}
195+
196+
let time = call.getDouble("time") ?? 0
197+
audioAsset.setCurrentTime(time: time)
198+
call.resolve()
199+
}
200+
191201
@objc func getDuration(_ call: CAPPluginCall) {
192202
guard let audioAsset: AudioAsset = self.getAudioAsset(call) else {
193203
return

src/definitions.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,13 @@ export interface NativeAudio {
175175
setRate(options: { assetId: string; rate: number }): Promise<void>;
176176
/**
177177
* Set the current time of an audio file
178+
* @since 6.5.0
179+
* @param option {@link AssetPlayOptions}
180+
* @returns {Promise<void>}
181+
*/
182+
setCurrentTime(options: { assetId: string, time: number }): Promise<void>;
183+
/**
184+
* Get the current time of an audio file
178185
* @since 5.0.0
179186
* @param option {@link AssetPlayOptions}
180187
* @returns {Promise<{ currentTime: number }>}

src/web.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ export class NativeAudioWeb extends WebPlugin implements NativeAudio {
2525
return audio.pause();
2626
}
2727

28+
async setCurrentTime(options: { assetId: string; time: number; }): Promise<void> {
29+
const audio: HTMLAudioElement = this.getAudioAsset(options.assetId).audio;
30+
audio.currentTime = options.time;
31+
return;
32+
}
33+
2834
async getCurrentTime(options: {
2935
assetId: string;
3036
}): Promise<{ currentTime: number }> {

0 commit comments

Comments
 (0)