@capgo/native-audio 4.2.2 → 4.2.4
Sign up to get free protection for your applications and to get access to all the features.
- package/ios/Plugin/AudioAsset.swift +32 -33
- package/ios/Plugin/Plugin.swift +7 -8
- package/package.json +3 -3
@@ -9,31 +9,31 @@
|
|
9
9
|
import AVFoundation
|
10
10
|
|
11
11
|
public class AudioAsset: NSObject, AVAudioPlayerDelegate {
|
12
|
-
|
12
|
+
|
13
13
|
var channels: NSMutableArray = NSMutableArray()
|
14
14
|
var playIndex: Int = 0
|
15
15
|
var assetId: String = ""
|
16
16
|
var initialVolume: NSNumber = 1.0
|
17
17
|
var fadeDelay: NSNumber = 1.0
|
18
18
|
var owner: NativeAudio
|
19
|
-
|
19
|
+
|
20
20
|
let FADE_STEP: Float = 0.05
|
21
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!) {
|
22
|
+
|
23
|
+
init(owner: NativeAudio, withAssetId assetId: String, withPath path: String!, withChannels channels: NSNumber!, withVolume volume: NSNumber!, withFadeDelay delay: NSNumber!) {
|
24
24
|
|
25
25
|
self.owner = owner
|
26
26
|
self.assetId = assetId
|
27
27
|
self.channels = NSMutableArray.init(capacity: channels as! Int)
|
28
|
-
|
28
|
+
|
29
29
|
super.init()
|
30
|
-
|
30
|
+
|
31
31
|
let pathUrl: NSURL! = NSURL.fileURL(withPath: path) as NSURL
|
32
|
-
|
32
|
+
|
33
33
|
for _ in 0..<channels.intValue {
|
34
34
|
do {
|
35
35
|
let player: AVAudioPlayer! = try AVAudioPlayer(contentsOf: pathUrl as URL)
|
36
|
-
|
36
|
+
|
37
37
|
if player != nil {
|
38
38
|
player.volume = volume.floatValue
|
39
39
|
player.prepareToPlay()
|
@@ -43,11 +43,11 @@ public class AudioAsset: NSObject, AVAudioPlayerDelegate {
|
|
43
43
|
}
|
44
44
|
}
|
45
45
|
} catch {
|
46
|
-
|
46
|
+
|
47
47
|
}
|
48
48
|
}
|
49
49
|
}
|
50
|
-
|
50
|
+
|
51
51
|
func getCurrentTime() -> TimeInterval {
|
52
52
|
if channels.count != 1 {
|
53
53
|
return 0
|
@@ -57,7 +57,7 @@ public class AudioAsset: NSObject, AVAudioPlayerDelegate {
|
|
57
57
|
|
58
58
|
return player.currentTime
|
59
59
|
}
|
60
|
-
|
60
|
+
|
61
61
|
func getDuration() -> TimeInterval {
|
62
62
|
if channels.count != 1 {
|
63
63
|
return 0
|
@@ -76,11 +76,11 @@ public class AudioAsset: NSObject, AVAudioPlayerDelegate {
|
|
76
76
|
playIndex = Int(truncating: NSNumber(value: playIndex + 1))
|
77
77
|
playIndex = Int(truncating: NSNumber(value: playIndex % channels.count))
|
78
78
|
}
|
79
|
-
|
79
|
+
|
80
80
|
func playWithFade(time: TimeInterval) {
|
81
81
|
let player: AVAudioPlayer! = channels.object(at: playIndex) as? AVAudioPlayer
|
82
82
|
player.currentTime = time
|
83
|
-
|
83
|
+
|
84
84
|
if !player.isPlaying {
|
85
85
|
player.numberOfLoops = 0
|
86
86
|
player.volume = 0
|
@@ -92,7 +92,7 @@ public class AudioAsset: NSObject, AVAudioPlayerDelegate {
|
|
92
92
|
player.volume = player.volume + self.FADE_STEP
|
93
93
|
}
|
94
94
|
}
|
95
|
-
|
95
|
+
|
96
96
|
}
|
97
97
|
|
98
98
|
func pause() {
|
@@ -106,17 +106,17 @@ public class AudioAsset: NSObject, AVAudioPlayerDelegate {
|
|
106
106
|
let timeOffset = player.deviceCurrentTime + 0.01
|
107
107
|
player.play(atTime: timeOffset)
|
108
108
|
}
|
109
|
-
|
109
|
+
|
110
110
|
func stop() {
|
111
111
|
for i in 0..<channels.count {
|
112
112
|
let player: AVAudioPlayer! = channels.object(at: i) as? AVAudioPlayer
|
113
113
|
player.stop()
|
114
114
|
}
|
115
115
|
}
|
116
|
-
|
116
|
+
|
117
117
|
func stopWithFade() {
|
118
118
|
let player: AVAudioPlayer! = channels.object(at: playIndex) as? AVAudioPlayer
|
119
|
-
|
119
|
+
|
120
120
|
if !player.isPlaying {
|
121
121
|
player.currentTime = 0.0
|
122
122
|
player.numberOfLoops = 0
|
@@ -125,51 +125,50 @@ public class AudioAsset: NSObject, AVAudioPlayerDelegate {
|
|
125
125
|
playIndex = Int(truncating: NSNumber(value: playIndex + 1))
|
126
126
|
playIndex = Int(truncating: NSNumber(value: playIndex % channels.count))
|
127
127
|
} else {
|
128
|
-
if player.volume < initialVolume.floatValue
|
129
|
-
{
|
128
|
+
if player.volume < initialVolume.floatValue {
|
130
129
|
player.volume = player.volume + self.FADE_STEP
|
131
130
|
}
|
132
131
|
}
|
133
132
|
}
|
134
|
-
|
133
|
+
|
135
134
|
func loop() {
|
136
135
|
self.stop()
|
137
|
-
|
136
|
+
|
138
137
|
let player: AVAudioPlayer! = channels.object(at: Int(playIndex)) as? AVAudioPlayer
|
139
138
|
player.numberOfLoops = -1
|
140
139
|
player.play()
|
141
140
|
playIndex = Int(truncating: NSNumber(value: playIndex + 1))
|
142
141
|
playIndex = Int(truncating: NSNumber(value: playIndex % channels.count))
|
143
142
|
}
|
144
|
-
|
143
|
+
|
145
144
|
func unload() {
|
146
145
|
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
|
-
|
146
|
+
|
147
|
+
// for i in 0..<channels.count {
|
148
|
+
// var player: AVAudioPlayer! = channels.object(at: i) as? AVAudioPlayer
|
149
|
+
//
|
150
|
+
// player = nil
|
151
|
+
// }
|
152
|
+
|
154
153
|
channels = NSMutableArray()
|
155
154
|
}
|
156
|
-
|
155
|
+
|
157
156
|
func setVolume(volume: NSNumber!) {
|
158
157
|
for i in 0..<channels.count {
|
159
158
|
let player: AVAudioPlayer! = channels.object(at: i) as? AVAudioPlayer
|
160
159
|
player.volume = volume.floatValue
|
161
160
|
}
|
162
161
|
}
|
163
|
-
|
162
|
+
|
164
163
|
public func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
|
165
164
|
NSLog("playerDidFinish")
|
166
165
|
self.owner.notifyListeners("complete", data: [
|
167
166
|
"assetId": self.assetId
|
168
167
|
])
|
169
168
|
}
|
170
|
-
|
169
|
+
|
171
170
|
func playerDecodeError(player: AVAudioPlayer!, error: NSError!) {
|
172
|
-
|
171
|
+
|
173
172
|
}
|
174
173
|
|
175
174
|
func isPlaying() -> Bool {
|
package/ios/Plugin/Plugin.swift
CHANGED
@@ -14,11 +14,11 @@ enum MyError: Error {
|
|
14
14
|
@objc(NativeAudio)
|
15
15
|
public class NativeAudio: CAPPlugin {
|
16
16
|
|
17
|
-
var audioList: [String
|
17
|
+
var audioList: [String: Any] = [:]
|
18
18
|
var fadeMusic = false
|
19
19
|
var session = AVAudioSession.sharedInstance()
|
20
20
|
|
21
|
-
public
|
21
|
+
override public func load() {
|
22
22
|
super.load()
|
23
23
|
|
24
24
|
self.fadeMusic = false
|
@@ -72,7 +72,7 @@ public class NativeAudio: CAPPlugin {
|
|
72
72
|
audioAsset?.play(time: time)
|
73
73
|
}
|
74
74
|
call.resolve()
|
75
|
-
} else if
|
75
|
+
} else if asset is Int32 {
|
76
76
|
let audioAsset = asset as? NSNumber ?? 0
|
77
77
|
AudioServicesPlaySystemSound(SystemSoundID(audioAsset.intValue ))
|
78
78
|
call.resolve()
|
@@ -101,7 +101,6 @@ public class NativeAudio: CAPPlugin {
|
|
101
101
|
return nil
|
102
102
|
}
|
103
103
|
|
104
|
-
|
105
104
|
@objc func getDuration(_ call: CAPPluginCall) {
|
106
105
|
guard let audioAsset: AudioAsset = self.getAudioAsset(call) else {
|
107
106
|
return
|
@@ -165,7 +164,7 @@ public class NativeAudio: CAPPlugin {
|
|
165
164
|
let asset = self.audioList[audioId]
|
166
165
|
if asset != nil && asset is AudioAsset {
|
167
166
|
let audioAsset = asset as! AudioAsset
|
168
|
-
audioAsset.unload()
|
167
|
+
audioAsset.unload()
|
169
168
|
self.audioList[audioId] = nil
|
170
169
|
}
|
171
170
|
}
|
@@ -182,7 +181,7 @@ public class NativeAudio: CAPPlugin {
|
|
182
181
|
audioAsset.setVolume(volume: volume as NSNumber)
|
183
182
|
call.resolve()
|
184
183
|
}
|
185
|
-
|
184
|
+
|
186
185
|
@objc func isPlaying(_ call: CAPPluginCall) {
|
187
186
|
guard let audioAsset: AudioAsset = self.getAudioAsset(call) else {
|
188
187
|
return
|
@@ -192,7 +191,7 @@ public class NativeAudio: CAPPlugin {
|
|
192
191
|
"isPlaying": audioAsset.isPlaying()
|
193
192
|
])
|
194
193
|
}
|
195
|
-
|
194
|
+
|
196
195
|
private func preloadAsset(_ call: CAPPluginCall, isComplex complex: Bool) {
|
197
196
|
let audioId = call.getString(Constant.AssetIdKey) ?? ""
|
198
197
|
let channels: NSNumber?
|
@@ -203,7 +202,7 @@ public class NativeAudio: CAPPlugin {
|
|
203
202
|
if audioId != "" {
|
204
203
|
let assetPath: String = call.getString(Constant.AssetPathKey) ?? ""
|
205
204
|
|
206
|
-
if
|
205
|
+
if complex {
|
207
206
|
volume = call.getFloat("volume") ?? 1.0
|
208
207
|
channels = NSNumber(value: call.getInt("channels") ?? 1)
|
209
208
|
delay = NSNumber(value: call.getInt("delay") ?? 1)
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@capgo/native-audio",
|
3
|
-
"version": "4.2.
|
3
|
+
"version": "4.2.4",
|
4
4
|
"description": "A native plugin for native audio engine",
|
5
5
|
"main": "dist/plugin.js",
|
6
6
|
"module": "dist/esm/index.js",
|
@@ -26,13 +26,13 @@
|
|
26
26
|
"verify:android": "cd android && ./gradlew clean build test && cd ..",
|
27
27
|
"verify:web": "npm run build",
|
28
28
|
"lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint",
|
29
|
-
"fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- autocorrect --format",
|
29
|
+
"fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --autocorrect --format",
|
30
30
|
"eslint": "eslint . --ext ts",
|
31
31
|
"prettier": "prettier \"**/*.{css,html,ts,js,java}\"",
|
32
32
|
"swiftlint": "node-swiftlint",
|
33
33
|
"docgen": "docgen --api NativeAudio --output-readme README.md --output-json dist/docs.json",
|
34
34
|
"build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs",
|
35
|
-
"clean": "rimraf ./dist",
|
35
|
+
"clean": "rimraf ./dist && cd android && ./gradlew clean && cd ..",
|
36
36
|
"watch": "tsc --watch",
|
37
37
|
"prepublishOnly": "npm run build",
|
38
38
|
"prepare": "husky install"
|