@capgo/native-audio 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CapgoNativeAudio.podspec +16 -0
- package/LICENSE +21 -0
- package/README.md +394 -0
- package/android/build.gradle +55 -0
- package/android/src/main/AndroidManifest.xml +5 -0
- package/android/src/main/java/ee/forgr/audio/AudioAsset.java +140 -0
- package/android/src/main/java/ee/forgr/audio/AudioDispatcher.java +178 -0
- package/android/src/main/java/ee/forgr/audio/Constant.java +18 -0
- package/android/src/main/java/ee/forgr/audio/NativeAudio.java +471 -0
- package/android/src/main/res/layout/bridge_layout_main.xml +15 -0
- package/android/src/main/res/values/colors.xml +3 -0
- package/android/src/main/res/values/strings.xml +3 -0
- package/android/src/main/res/values/styles.xml +3 -0
- package/dist/docs.json +279 -0
- package/dist/esm/audio-asset.d.ts +4 -0
- package/dist/esm/audio-asset.js +6 -0
- package/dist/esm/audio-asset.js.map +1 -0
- package/dist/esm/definitions.d.ts +53 -0
- package/dist/esm/definitions.js +2 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +52 -0
- package/dist/esm/web.js +113 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +134 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +137 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Plugin/AudioAsset.swift +184 -0
- package/ios/Plugin/Constant.swift +20 -0
- package/ios/Plugin/Info.plist +24 -0
- package/ios/Plugin/Plugin.h +10 -0
- package/ios/Plugin/Plugin.m +19 -0
- package/ios/Plugin/Plugin.swift +276 -0
- package/package.json +91 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/audio-asset.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst NativeAudio = registerPlugin('NativeAudio', {\n web: () => import('./web').then((m) => new m.NativeAudioWeb()),\n});\nexport * from './definitions';\nexport { NativeAudio };\n//# sourceMappingURL=index.js.map","export class AudioAsset {\n constructor(audio) {\n this.audio = audio;\n }\n}\n//# sourceMappingURL=audio-asset.js.map","import { WebPlugin } from '@capacitor/core';\nimport { AudioAsset } from './audio-asset';\nexport class NativeAudioWeb extends WebPlugin {\n constructor() {\n super({\n name: 'NativeAudio',\n platforms: ['web'],\n });\n }\n async resume(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n if (audio.paused) {\n return audio.play();\n }\n }\n async pause(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return audio.pause();\n }\n async getCurrentTime(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return { currentTime: audio.currentTime };\n }\n async getDuration(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n if (Number.isNaN(audio.duration)) {\n throw 'no duration available';\n }\n if (!Number.isFinite(audio.duration)) {\n throw 'duration not available => media resource is streaming';\n }\n return { duration: audio.duration };\n }\n async configure(options) {\n throw `configure is not supported for web: ${JSON.stringify(options)}`;\n }\n async preload(options) {\n var _a;\n if (NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(options.assetId)) {\n throw 'AssetId already exists. Unload first if like to change!';\n }\n if (!((_a = options.assetPath) === null || _a === void 0 ? void 0 : _a.length)) {\n throw 'no assetPath provided';\n }\n if (!options.isUrl && !new RegExp('^/?' + NativeAudioWeb.FILE_LOCATION).test(options.assetPath)) {\n const slashPrefix = options.assetPath.startsWith('/') ? '' : '/';\n options.assetPath = `${NativeAudioWeb.FILE_LOCATION}${slashPrefix}${options.assetPath}`;\n }\n const audio = new Audio(options.assetPath);\n audio.autoplay = false;\n audio.loop = false;\n audio.preload = 'auto';\n if (options.volume) {\n audio.volume = options.volume;\n }\n NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.set(options.assetId, new AudioAsset(audio));\n }\n async play(options) {\n var _a;\n const audio = this.getAudioAsset(options.assetId).audio;\n await this.stop(options);\n audio.loop = false;\n audio.currentTime = (_a = options.time) !== null && _a !== void 0 ? _a : 0;\n return audio.play();\n }\n async loop(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n await this.stop(options);\n audio.loop = true;\n return audio.play();\n }\n async stop(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.pause();\n audio.loop = false;\n audio.currentTime = 0;\n }\n async unload(options) {\n await this.stop(options);\n NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.delete(options.assetId);\n }\n async setVolume(options) {\n if (typeof (options === null || options === void 0 ? void 0 : options.volume) !== 'number') {\n throw 'no volume provided';\n }\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.volume = options.volume;\n }\n async isPlaying(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return { isPlaying: !audio.paused };\n }\n getAudioAsset(assetId) {\n this.checkAssetId(assetId);\n if (!NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(assetId)) {\n throw `no asset for assetId \"${assetId}\" available. Call preload first!`;\n }\n return NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.get(assetId);\n }\n checkAssetId(assetId) {\n if (typeof assetId !== 'string') {\n throw 'assetId must be a string';\n }\n if (!(assetId === null || assetId === void 0 ? void 0 : assetId.length)) {\n throw 'no assetId provided';\n }\n }\n}\nNativeAudioWeb.FILE_LOCATION = 'assets/sounds';\nNativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID = new Map();\nconst NativeAudio = new NativeAudioWeb();\nexport { NativeAudio };\n//# sourceMappingURL=web.js.map"],"names":["NativeAudio","registerPlugin","WebPlugin"],"mappings":"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"}
|
package/dist/plugin.js
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
var capacitorApp = (function (exports, core) {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
const NativeAudio$1 = core.registerPlugin('NativeAudio', {
|
5
|
+
web: () => Promise.resolve().then(function () { return web; }).then((m) => new m.NativeAudioWeb()),
|
6
|
+
});
|
7
|
+
|
8
|
+
class AudioAsset {
|
9
|
+
constructor(audio) {
|
10
|
+
this.audio = audio;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
class NativeAudioWeb extends core.WebPlugin {
|
15
|
+
constructor() {
|
16
|
+
super({
|
17
|
+
name: 'NativeAudio',
|
18
|
+
platforms: ['web'],
|
19
|
+
});
|
20
|
+
}
|
21
|
+
async resume(options) {
|
22
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
23
|
+
if (audio.paused) {
|
24
|
+
return audio.play();
|
25
|
+
}
|
26
|
+
}
|
27
|
+
async pause(options) {
|
28
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
29
|
+
return audio.pause();
|
30
|
+
}
|
31
|
+
async getCurrentTime(options) {
|
32
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
33
|
+
return { currentTime: audio.currentTime };
|
34
|
+
}
|
35
|
+
async getDuration(options) {
|
36
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
37
|
+
if (Number.isNaN(audio.duration)) {
|
38
|
+
throw 'no duration available';
|
39
|
+
}
|
40
|
+
if (!Number.isFinite(audio.duration)) {
|
41
|
+
throw 'duration not available => media resource is streaming';
|
42
|
+
}
|
43
|
+
return { duration: audio.duration };
|
44
|
+
}
|
45
|
+
async configure(options) {
|
46
|
+
throw `configure is not supported for web: ${JSON.stringify(options)}`;
|
47
|
+
}
|
48
|
+
async preload(options) {
|
49
|
+
var _a;
|
50
|
+
if (NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(options.assetId)) {
|
51
|
+
throw 'AssetId already exists. Unload first if like to change!';
|
52
|
+
}
|
53
|
+
if (!((_a = options.assetPath) === null || _a === void 0 ? void 0 : _a.length)) {
|
54
|
+
throw 'no assetPath provided';
|
55
|
+
}
|
56
|
+
if (!options.isUrl && !new RegExp('^/?' + NativeAudioWeb.FILE_LOCATION).test(options.assetPath)) {
|
57
|
+
const slashPrefix = options.assetPath.startsWith('/') ? '' : '/';
|
58
|
+
options.assetPath = `${NativeAudioWeb.FILE_LOCATION}${slashPrefix}${options.assetPath}`;
|
59
|
+
}
|
60
|
+
const audio = new Audio(options.assetPath);
|
61
|
+
audio.autoplay = false;
|
62
|
+
audio.loop = false;
|
63
|
+
audio.preload = 'auto';
|
64
|
+
if (options.volume) {
|
65
|
+
audio.volume = options.volume;
|
66
|
+
}
|
67
|
+
NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.set(options.assetId, new AudioAsset(audio));
|
68
|
+
}
|
69
|
+
async play(options) {
|
70
|
+
var _a;
|
71
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
72
|
+
await this.stop(options);
|
73
|
+
audio.loop = false;
|
74
|
+
audio.currentTime = (_a = options.time) !== null && _a !== void 0 ? _a : 0;
|
75
|
+
return audio.play();
|
76
|
+
}
|
77
|
+
async loop(options) {
|
78
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
79
|
+
await this.stop(options);
|
80
|
+
audio.loop = true;
|
81
|
+
return audio.play();
|
82
|
+
}
|
83
|
+
async stop(options) {
|
84
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
85
|
+
audio.pause();
|
86
|
+
audio.loop = false;
|
87
|
+
audio.currentTime = 0;
|
88
|
+
}
|
89
|
+
async unload(options) {
|
90
|
+
await this.stop(options);
|
91
|
+
NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.delete(options.assetId);
|
92
|
+
}
|
93
|
+
async setVolume(options) {
|
94
|
+
if (typeof (options === null || options === void 0 ? void 0 : options.volume) !== 'number') {
|
95
|
+
throw 'no volume provided';
|
96
|
+
}
|
97
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
98
|
+
audio.volume = options.volume;
|
99
|
+
}
|
100
|
+
async isPlaying(options) {
|
101
|
+
const audio = this.getAudioAsset(options.assetId).audio;
|
102
|
+
return { isPlaying: !audio.paused };
|
103
|
+
}
|
104
|
+
getAudioAsset(assetId) {
|
105
|
+
this.checkAssetId(assetId);
|
106
|
+
if (!NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(assetId)) {
|
107
|
+
throw `no asset for assetId "${assetId}" available. Call preload first!`;
|
108
|
+
}
|
109
|
+
return NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.get(assetId);
|
110
|
+
}
|
111
|
+
checkAssetId(assetId) {
|
112
|
+
if (typeof assetId !== 'string') {
|
113
|
+
throw 'assetId must be a string';
|
114
|
+
}
|
115
|
+
if (!(assetId === null || assetId === void 0 ? void 0 : assetId.length)) {
|
116
|
+
throw 'no assetId provided';
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
120
|
+
NativeAudioWeb.FILE_LOCATION = 'assets/sounds';
|
121
|
+
NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID = new Map();
|
122
|
+
const NativeAudio = new NativeAudioWeb();
|
123
|
+
|
124
|
+
var web = /*#__PURE__*/Object.freeze({
|
125
|
+
__proto__: null,
|
126
|
+
NativeAudioWeb: NativeAudioWeb,
|
127
|
+
NativeAudio: NativeAudio
|
128
|
+
});
|
129
|
+
|
130
|
+
exports.NativeAudio = NativeAudio$1;
|
131
|
+
|
132
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
133
|
+
|
134
|
+
return exports;
|
135
|
+
|
136
|
+
})({}, capacitorExports);
|
137
|
+
//# sourceMappingURL=plugin.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/audio-asset.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst NativeAudio = registerPlugin('NativeAudio', {\n web: () => import('./web').then((m) => new m.NativeAudioWeb()),\n});\nexport * from './definitions';\nexport { NativeAudio };\n//# sourceMappingURL=index.js.map","export class AudioAsset {\n constructor(audio) {\n this.audio = audio;\n }\n}\n//# sourceMappingURL=audio-asset.js.map","import { WebPlugin } from '@capacitor/core';\nimport { AudioAsset } from './audio-asset';\nexport class NativeAudioWeb extends WebPlugin {\n constructor() {\n super({\n name: 'NativeAudio',\n platforms: ['web'],\n });\n }\n async resume(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n if (audio.paused) {\n return audio.play();\n }\n }\n async pause(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return audio.pause();\n }\n async getCurrentTime(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return { currentTime: audio.currentTime };\n }\n async getDuration(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n if (Number.isNaN(audio.duration)) {\n throw 'no duration available';\n }\n if (!Number.isFinite(audio.duration)) {\n throw 'duration not available => media resource is streaming';\n }\n return { duration: audio.duration };\n }\n async configure(options) {\n throw `configure is not supported for web: ${JSON.stringify(options)}`;\n }\n async preload(options) {\n var _a;\n if (NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(options.assetId)) {\n throw 'AssetId already exists. Unload first if like to change!';\n }\n if (!((_a = options.assetPath) === null || _a === void 0 ? void 0 : _a.length)) {\n throw 'no assetPath provided';\n }\n if (!options.isUrl && !new RegExp('^/?' + NativeAudioWeb.FILE_LOCATION).test(options.assetPath)) {\n const slashPrefix = options.assetPath.startsWith('/') ? '' : '/';\n options.assetPath = `${NativeAudioWeb.FILE_LOCATION}${slashPrefix}${options.assetPath}`;\n }\n const audio = new Audio(options.assetPath);\n audio.autoplay = false;\n audio.loop = false;\n audio.preload = 'auto';\n if (options.volume) {\n audio.volume = options.volume;\n }\n NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.set(options.assetId, new AudioAsset(audio));\n }\n async play(options) {\n var _a;\n const audio = this.getAudioAsset(options.assetId).audio;\n await this.stop(options);\n audio.loop = false;\n audio.currentTime = (_a = options.time) !== null && _a !== void 0 ? _a : 0;\n return audio.play();\n }\n async loop(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n await this.stop(options);\n audio.loop = true;\n return audio.play();\n }\n async stop(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.pause();\n audio.loop = false;\n audio.currentTime = 0;\n }\n async unload(options) {\n await this.stop(options);\n NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.delete(options.assetId);\n }\n async setVolume(options) {\n if (typeof (options === null || options === void 0 ? void 0 : options.volume) !== 'number') {\n throw 'no volume provided';\n }\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.volume = options.volume;\n }\n async isPlaying(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return { isPlaying: !audio.paused };\n }\n getAudioAsset(assetId) {\n this.checkAssetId(assetId);\n if (!NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(assetId)) {\n throw `no asset for assetId \"${assetId}\" available. Call preload first!`;\n }\n return NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.get(assetId);\n }\n checkAssetId(assetId) {\n if (typeof assetId !== 'string') {\n throw 'assetId must be a string';\n }\n if (!(assetId === null || assetId === void 0 ? void 0 : assetId.length)) {\n throw 'no assetId provided';\n }\n }\n}\nNativeAudioWeb.FILE_LOCATION = 'assets/sounds';\nNativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID = new Map();\nconst NativeAudio = new NativeAudioWeb();\nexport { NativeAudio };\n//# sourceMappingURL=web.js.map"],"names":["NativeAudio","registerPlugin","WebPlugin"],"mappings":"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"}
|
@@ -0,0 +1,184 @@
|
|
1
|
+
//
|
2
|
+
// AudioAsset.swift
|
3
|
+
// Plugin
|
4
|
+
//
|
5
|
+
// Created by priyank on 2020-05-29.
|
6
|
+
// Copyright © 2022 Martin Donadieu. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
import AVFoundation
|
10
|
+
|
11
|
+
public class AudioAsset: NSObject, AVAudioPlayerDelegate {
|
12
|
+
|
13
|
+
var channels: NSMutableArray = NSMutableArray()
|
14
|
+
var playIndex: Int = 0
|
15
|
+
var assetId: String = ""
|
16
|
+
var initialVolume: NSNumber = 1.0
|
17
|
+
var fadeDelay: NSNumber = 1.0
|
18
|
+
var owner: NativeAudio
|
19
|
+
|
20
|
+
let FADE_STEP: Float = 0.05
|
21
|
+
let FADE_DELAY: Float = 0.08
|
22
|
+
|
23
|
+
init(owner:NativeAudio, withAssetId assetId:String, withPath path: String!, withChannels channels: NSNumber!, withVolume volume: NSNumber!, withFadeDelay delay: NSNumber!) {
|
24
|
+
|
25
|
+
self.owner = owner
|
26
|
+
self.assetId = assetId
|
27
|
+
self.channels = NSMutableArray.init(capacity: channels as! Int)
|
28
|
+
|
29
|
+
super.init()
|
30
|
+
|
31
|
+
let pathUrl: NSURL! = NSURL.fileURL(withPath: path) as NSURL
|
32
|
+
|
33
|
+
for _ in 0..<channels.intValue {
|
34
|
+
do {
|
35
|
+
let player: AVAudioPlayer! = try AVAudioPlayer(contentsOf: pathUrl as URL)
|
36
|
+
|
37
|
+
if player != nil {
|
38
|
+
player.volume = volume.floatValue
|
39
|
+
player.prepareToPlay()
|
40
|
+
self.channels.addObjects(from: [player as Any])
|
41
|
+
if channels == 1 {
|
42
|
+
player.delegate = self
|
43
|
+
}
|
44
|
+
}
|
45
|
+
} catch {
|
46
|
+
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
func getCurrentTime() -> TimeInterval {
|
52
|
+
if channels.count != 1 {
|
53
|
+
return 0
|
54
|
+
}
|
55
|
+
|
56
|
+
let player: AVAudioPlayer = channels.object(at: playIndex) as! AVAudioPlayer
|
57
|
+
|
58
|
+
return player.currentTime
|
59
|
+
}
|
60
|
+
|
61
|
+
func getDuration() -> TimeInterval {
|
62
|
+
if channels.count != 1 {
|
63
|
+
return 0
|
64
|
+
}
|
65
|
+
|
66
|
+
let player: AVAudioPlayer = channels.object(at: playIndex) as! AVAudioPlayer
|
67
|
+
|
68
|
+
return player.duration
|
69
|
+
}
|
70
|
+
|
71
|
+
func play(time: TimeInterval) {
|
72
|
+
let player: AVAudioPlayer = channels.object(at: playIndex) as! AVAudioPlayer
|
73
|
+
player.currentTime = time
|
74
|
+
player.numberOfLoops = 0
|
75
|
+
player.play()
|
76
|
+
playIndex = Int(truncating: NSNumber(value: playIndex + 1))
|
77
|
+
playIndex = Int(truncating: NSNumber(value: playIndex % channels.count))
|
78
|
+
}
|
79
|
+
|
80
|
+
func playWithFade(time: TimeInterval) {
|
81
|
+
let player: AVAudioPlayer! = channels.object(at: playIndex) as? AVAudioPlayer
|
82
|
+
player.currentTime = time
|
83
|
+
|
84
|
+
if !player.isPlaying {
|
85
|
+
player.numberOfLoops = 0
|
86
|
+
player.volume = 0
|
87
|
+
player.play()
|
88
|
+
playIndex = Int(truncating: NSNumber(value: playIndex + 1))
|
89
|
+
playIndex = Int(truncating: NSNumber(value: playIndex % channels.count))
|
90
|
+
} else {
|
91
|
+
if player.volume < initialVolume.floatValue {
|
92
|
+
player.volume = player.volume + self.FADE_STEP
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
}
|
97
|
+
|
98
|
+
func pause() {
|
99
|
+
let player: AVAudioPlayer = channels.object(at: playIndex) as! AVAudioPlayer
|
100
|
+
player.pause()
|
101
|
+
}
|
102
|
+
|
103
|
+
func resume() {
|
104
|
+
let player: AVAudioPlayer = channels.object(at: playIndex) as! AVAudioPlayer
|
105
|
+
|
106
|
+
let timeOffset = player.deviceCurrentTime + 0.01
|
107
|
+
player.play(atTime: timeOffset)
|
108
|
+
}
|
109
|
+
|
110
|
+
func stop() {
|
111
|
+
for i in 0..<channels.count {
|
112
|
+
let player: AVAudioPlayer! = channels.object(at: i) as? AVAudioPlayer
|
113
|
+
player.stop()
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
func stopWithFade() {
|
118
|
+
let player: AVAudioPlayer! = channels.object(at: playIndex) as? AVAudioPlayer
|
119
|
+
|
120
|
+
if !player.isPlaying {
|
121
|
+
player.currentTime = 0.0
|
122
|
+
player.numberOfLoops = 0
|
123
|
+
player.volume = 0
|
124
|
+
player.play()
|
125
|
+
playIndex = Int(truncating: NSNumber(value: playIndex + 1))
|
126
|
+
playIndex = Int(truncating: NSNumber(value: playIndex % channels.count))
|
127
|
+
} else {
|
128
|
+
if player.volume < initialVolume.floatValue
|
129
|
+
{
|
130
|
+
player.volume = player.volume + self.FADE_STEP
|
131
|
+
}
|
132
|
+
}
|
133
|
+
}
|
134
|
+
|
135
|
+
func loop() {
|
136
|
+
self.stop()
|
137
|
+
|
138
|
+
let player: AVAudioPlayer! = channels.object(at: Int(playIndex)) as? AVAudioPlayer
|
139
|
+
player.numberOfLoops = -1
|
140
|
+
player.play()
|
141
|
+
playIndex = Int(truncating: NSNumber(value: playIndex + 1))
|
142
|
+
playIndex = Int(truncating: NSNumber(value: playIndex % channels.count))
|
143
|
+
}
|
144
|
+
|
145
|
+
func unload() {
|
146
|
+
self.stop()
|
147
|
+
|
148
|
+
// for i in 0..<channels.count {
|
149
|
+
// var player: AVAudioPlayer! = channels.object(at: i) as? AVAudioPlayer
|
150
|
+
//
|
151
|
+
// player = nil
|
152
|
+
// }
|
153
|
+
|
154
|
+
channels = NSMutableArray()
|
155
|
+
}
|
156
|
+
|
157
|
+
func setVolume(volume: NSNumber!) {
|
158
|
+
for i in 0..<channels.count {
|
159
|
+
let player: AVAudioPlayer! = channels.object(at: i) as? AVAudioPlayer
|
160
|
+
player.volume = volume.floatValue
|
161
|
+
}
|
162
|
+
}
|
163
|
+
|
164
|
+
public func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
|
165
|
+
NSLog("playerDidFinish")
|
166
|
+
self.owner.notifyListeners("complete", data: [
|
167
|
+
"assetId": self.assetId
|
168
|
+
])
|
169
|
+
}
|
170
|
+
|
171
|
+
func playerDecodeError(player: AVAudioPlayer!, error: NSError!) {
|
172
|
+
|
173
|
+
}
|
174
|
+
|
175
|
+
func isPlaying() -> Bool {
|
176
|
+
if channels.count != 1 {
|
177
|
+
return false
|
178
|
+
}
|
179
|
+
|
180
|
+
let player: AVAudioPlayer = channels.object(at: playIndex) as! AVAudioPlayer
|
181
|
+
|
182
|
+
return player.isPlaying
|
183
|
+
}
|
184
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
//
|
2
|
+
// Constant.swift
|
3
|
+
// Plugin
|
4
|
+
//
|
5
|
+
// Created by priyankpat on 2020-05-28.
|
6
|
+
// Copyright © 2022 Martin Donadieu. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
public class Constant {
|
10
|
+
public static let FadeKey = "fade"
|
11
|
+
public static let FocusAudio = "focus"
|
12
|
+
public static let AssetPathKey = "assetPath"
|
13
|
+
public static let AssetIdKey = "assetId"
|
14
|
+
public static let Volume = "volume"
|
15
|
+
public static let Loop = "loop"
|
16
|
+
|
17
|
+
public static let ErrorAssetId = "Asset Id is missing"
|
18
|
+
public static let ErrorAssetPath = "Asset Path is missing"
|
19
|
+
public static let ErrorAssetNotFound = "Asset is not loaded"
|
20
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
6
|
+
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
7
|
+
<key>CFBundleExecutable</key>
|
8
|
+
<string>$(EXECUTABLE_NAME)</string>
|
9
|
+
<key>CFBundleIdentifier</key>
|
10
|
+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
11
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
12
|
+
<string>6.0</string>
|
13
|
+
<key>CFBundleName</key>
|
14
|
+
<string>$(PRODUCT_NAME)</string>
|
15
|
+
<key>CFBundlePackageType</key>
|
16
|
+
<string>FMWK</string>
|
17
|
+
<key>CFBundleShortVersionString</key>
|
18
|
+
<string>$(MARKETING_VERSION)</string>
|
19
|
+
<key>CFBundleVersion</key>
|
20
|
+
<string>$(CURRENT_PROJECT_VERSION)</string>
|
21
|
+
<key>NSPrincipalClass</key>
|
22
|
+
<string></string>
|
23
|
+
</dict>
|
24
|
+
</plist>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#import <UIKit/UIKit.h>
|
2
|
+
|
3
|
+
//! Project version number for Plugin.
|
4
|
+
FOUNDATION_EXPORT double PluginVersionNumber;
|
5
|
+
|
6
|
+
//! Project version string for Plugin.
|
7
|
+
FOUNDATION_EXPORT const unsigned char PluginVersionString[];
|
8
|
+
|
9
|
+
// In this header, you should import all the public headers of your framework using statements like #import <Plugin/PublicHeader.h>
|
10
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#import <Foundation/Foundation.h>
|
2
|
+
#import <Capacitor/Capacitor.h>
|
3
|
+
|
4
|
+
// Define the plugin using the CAP_PLUGIN Macro, and
|
5
|
+
// each method the plugin supports using the CAP_PLUGIN_METHOD macro.
|
6
|
+
CAP_PLUGIN(NativeAudio, "NativeAudio",
|
7
|
+
CAP_PLUGIN_METHOD(configure, CAPPluginReturnPromise);
|
8
|
+
CAP_PLUGIN_METHOD(preload, CAPPluginReturnPromise);
|
9
|
+
CAP_PLUGIN_METHOD(play, CAPPluginReturnPromise);
|
10
|
+
CAP_PLUGIN_METHOD(stop, CAPPluginReturnPromise);
|
11
|
+
CAP_PLUGIN_METHOD(loop, CAPPluginReturnPromise);
|
12
|
+
CAP_PLUGIN_METHOD(pause, CAPPluginReturnPromise);
|
13
|
+
CAP_PLUGIN_METHOD(resume, CAPPluginReturnPromise);
|
14
|
+
CAP_PLUGIN_METHOD(unload, CAPPluginReturnPromise);
|
15
|
+
CAP_PLUGIN_METHOD(setVolume, CAPPluginReturnPromise);
|
16
|
+
CAP_PLUGIN_METHOD(getCurrentTime, CAPPluginReturnPromise);
|
17
|
+
CAP_PLUGIN_METHOD(getDuration, CAPPluginReturnPromise);
|
18
|
+
CAP_PLUGIN_METHOD(isPlaying, CAPPluginReturnPromise);
|
19
|
+
)
|