expo-audio 58.0.4 → 58.0.6
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/CHANGELOG.md +14 -0
- package/android/build.gradle +3 -2
- package/android/src/main/java/expo/modules/audio/AudioExceptions.kt +0 -6
- package/android/src/main/java/expo/modules/audio/AudioModule.kt +2 -6
- package/android/src/main/java/expo/modules/audio/AudioRecorder.kt +16 -12
- package/android/src/main/java/expo/modules/audio/service/AudioRecordingServiceConnection.kt +23 -12
- package/build/AudioPlayer.web.js +14 -2
- package/build/AudioPlayer.web.js.map +1 -1
- package/build/AudioPlaylist.web.d.ts +1 -0
- package/build/AudioPlaylist.web.js +15 -5
- package/build/AudioPlaylist.web.js.map +1 -1
- package/build/AudioUtils.web.d.ts +1 -0
- package/build/AudioUtils.web.js +4 -0
- package/build/AudioUtils.web.js.map +1 -1
- package/ios/AudioModule.swift +4 -12
- package/ios/AudioRecorder.swift +17 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/{58.0.4/expo.modules.audio-58.0.4-sources.jar → 58.0.6/expo.modules.audio-58.0.6-sources.jar} +0 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6-sources.jar.md5 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6-sources.jar.sha1 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6-sources.jar.sha256 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6-sources.jar.sha512 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.aar +0 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.aar.md5 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.aar.sha1 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.aar.sha256 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.aar.sha512 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/{58.0.4/expo.modules.audio-58.0.4.module → 58.0.6/expo.modules.audio-58.0.6.module} +22 -22
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.module.md5 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.module.sha1 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.module.sha256 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.module.sha512 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/{58.0.4/expo.modules.audio-58.0.4.pom → 58.0.6/expo.modules.audio-58.0.6.pom} +1 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.pom.md5 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.pom.sha1 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.pom.sha256 +1 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.pom.sha512 +1 -0
- package/package.json +9 -5
- package/src/AudioPlayer.web.ts +14 -1
- package/src/AudioPlaylist.web.ts +16 -5
- package/src/AudioUtils.web.ts +5 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4-sources.jar.md5 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4-sources.jar.sha1 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4-sources.jar.sha256 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4-sources.jar.sha512 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.aar +0 -0
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.aar.md5 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.aar.sha1 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.aar.sha256 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.aar.sha512 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.module.md5 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.module.sha1 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.module.sha256 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.module.sha512 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.pom.md5 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.pom.sha1 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.pom.sha256 +0 -1
- package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.pom.sha512 +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 58.0.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [iOS][Android] Fixed recorders that the user paused starting to record again when the app returned to the foreground. On iOS, this also happened to recorders that were only prepared, and when an audio interruption ended. Now only recordings that the system paused are resumed. ([#51048](https://github.com/expo/expo/pull/51048) by [@alanjhughes](https://github.com/alanjhughes))
|
|
8
|
+
|
|
9
|
+
## 58.0.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [Android] Fixed `prepareToRecordAsync` rejecting when `allowsBackgroundRecording` is `true` and the notification permission is not granted ([#50705](https://github.com/expo/expo/issues/50705)). ([#50968](https://github.com/expo/expo/pull/50968) by [@alanjhughes](https://github.com/alanjhughes))
|
|
14
|
+
- [Web] Fixed an uncaught promise rejection, and `playing` staying `true`, when the browser blocks playback before the user interacts with the page. The player now reports the rejection in `error` on its status ([#36264](https://github.com/expo/expo/issues/36264)). ([#50972](https://github.com/expo/expo/pull/50972) by [@alanjhughes](https://github.com/alanjhughes))
|
|
15
|
+
- [Android] Fix `prepareToRecordAsync()` hanging forever when background recording is enabled and the recording service never connects. The binding timeout is now started, and the promise also rejects when the React context is lost. ([#50883](https://github.com/expo/expo/pull/50883) by [@Cedric921](https://github.com/Cedric921))
|
|
16
|
+
|
|
3
17
|
## 58.0.4
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/android/build.gradle
CHANGED
|
@@ -4,13 +4,13 @@ plugins {
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
group = 'expo.modules.audio'
|
|
7
|
-
version = '58.0.
|
|
7
|
+
version = '58.0.6'
|
|
8
8
|
|
|
9
9
|
android {
|
|
10
10
|
namespace "expo.modules.audio"
|
|
11
11
|
defaultConfig {
|
|
12
12
|
versionCode 1
|
|
13
|
-
versionName "58.0.
|
|
13
|
+
versionName "58.0.6"
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
compileOptions {
|
|
@@ -37,4 +37,5 @@ dependencies {
|
|
|
37
37
|
implementation "androidx.media3:media3-exoplayer-smoothstreaming:$androidxMedia3Version"
|
|
38
38
|
|
|
39
39
|
testImplementation 'junit:junit:4.13.2'
|
|
40
|
+
testImplementation 'io.mockk:mockk:1.14.9'
|
|
40
41
|
}
|
|
@@ -14,12 +14,6 @@ private const val defaultRecordingServiceTip =
|
|
|
14
14
|
internal class AudioPermissionsException :
|
|
15
15
|
CodedException("RECORD_AUDIO permission has not been granted")
|
|
16
16
|
|
|
17
|
-
internal class NotificationPermissionsException :
|
|
18
|
-
CodedException(
|
|
19
|
-
"POST_NOTIFICATIONS permission has not been granted. This permission is required when using background recording (allowsBackgroundRecording: true). " +
|
|
20
|
-
"Request notification permissions using AudioModule.requestNotificationPermissionsAsync() before calling prepareRecording()."
|
|
21
|
-
)
|
|
22
|
-
|
|
23
17
|
internal class GetAudioInputNotSupportedException :
|
|
24
18
|
CodedException("Getting current audio input is not supported on devices running Android version lower than Android 9.0")
|
|
25
19
|
|
|
@@ -467,9 +467,7 @@ class AudioModule : Module() {
|
|
|
467
467
|
}
|
|
468
468
|
if (!allowsBackgroundRecording) {
|
|
469
469
|
recorders.values.forEach { recorder ->
|
|
470
|
-
|
|
471
|
-
recorder.pauseRecording()
|
|
472
|
-
}
|
|
470
|
+
recorder.pauseForSystem()
|
|
473
471
|
}
|
|
474
472
|
}
|
|
475
473
|
}
|
|
@@ -492,9 +490,7 @@ class AudioModule : Module() {
|
|
|
492
490
|
}
|
|
493
491
|
if (!allowsBackgroundRecording) {
|
|
494
492
|
recorders.values.forEach { recorder ->
|
|
495
|
-
|
|
496
|
-
recorder.record()
|
|
497
|
-
}
|
|
493
|
+
recorder.resumeAfterSystemPause()
|
|
498
494
|
}
|
|
499
495
|
}
|
|
500
496
|
if (shouldRouteThroughEarpiece) {
|
|
@@ -46,6 +46,7 @@ class AudioRecorder(
|
|
|
46
46
|
var startTime = 0L
|
|
47
47
|
var isRecording = false
|
|
48
48
|
var isPaused = false
|
|
49
|
+
private var isPausedBySystem = false
|
|
49
50
|
private var recordingTimerJob: Job? = null
|
|
50
51
|
private var durationLimitMillis: Long? = null
|
|
51
52
|
var useForegroundService = false
|
|
@@ -89,10 +90,6 @@ class AudioRecorder(
|
|
|
89
90
|
throw AudioRecorderAlreadyPreparedException()
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
if (useForegroundService && !hasNotificationPermissions()) {
|
|
93
|
-
throw NotificationPermissionsException()
|
|
94
|
-
}
|
|
95
|
-
|
|
96
93
|
val recordingOptions = options ?: this.options
|
|
97
94
|
val mediaRecorder = createRecorder(recordingOptions)
|
|
98
95
|
recorder = mediaRecorder
|
|
@@ -113,6 +110,7 @@ class AudioRecorder(
|
|
|
113
110
|
}
|
|
114
111
|
|
|
115
112
|
fun record() {
|
|
113
|
+
isPausedBySystem = false
|
|
116
114
|
if (useForegroundService) {
|
|
117
115
|
serviceConnection.recordingServiceBinder?.service?.registerRecorder(this) ?: run {
|
|
118
116
|
throw AudioRecordingServiceException("The service connection is not bound, but `allowsBackgroundRecording` is set to `true`")
|
|
@@ -161,6 +159,7 @@ class AudioRecorder(
|
|
|
161
159
|
}
|
|
162
160
|
|
|
163
161
|
fun pauseRecording() {
|
|
162
|
+
isPausedBySystem = false
|
|
164
163
|
recordingTimerJob?.cancel()
|
|
165
164
|
recordingTimerJob = null
|
|
166
165
|
recorder?.pause()
|
|
@@ -169,6 +168,19 @@ class AudioRecorder(
|
|
|
169
168
|
isPaused = true
|
|
170
169
|
}
|
|
171
170
|
|
|
171
|
+
fun pauseForSystem() {
|
|
172
|
+
if (isRecording) {
|
|
173
|
+
pauseRecording()
|
|
174
|
+
isPausedBySystem = true
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
fun resumeAfterSystemPause() {
|
|
179
|
+
if (isPausedBySystem && isPaused) {
|
|
180
|
+
record()
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
172
184
|
private fun scheduleRecordingStop() {
|
|
173
185
|
recordingTimerJob?.cancel()
|
|
174
186
|
recordingTimerJob = durationLimitMillis?.let { limit ->
|
|
@@ -462,14 +474,6 @@ class AudioRecorder(
|
|
|
462
474
|
private fun hasRecordingPermissions() =
|
|
463
475
|
ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED
|
|
464
476
|
|
|
465
|
-
private fun hasNotificationPermissions(): Boolean {
|
|
466
|
-
// POST_NOTIFICATIONS permission is only required on Android 13+ (API 33+)
|
|
467
|
-
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
|
|
468
|
-
return true
|
|
469
|
-
}
|
|
470
|
-
return ContextCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED
|
|
471
|
-
}
|
|
472
|
-
|
|
473
477
|
fun getAvailableInputs(audioManager: AudioManager) =
|
|
474
478
|
audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS).mapNotNull { deviceInfo ->
|
|
475
479
|
val type = deviceInfo.type
|
|
@@ -40,10 +40,11 @@ class AudioRecordingServiceConnection(
|
|
|
40
40
|
bindingTimeoutJob?.cancel()
|
|
41
41
|
bindingTimeoutJob = CoroutineScope(Dispatchers.Default).launch {
|
|
42
42
|
delay(timeoutMs)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
43
|
+
// Only the side that takes the continuation settles the binding. If a service callback
|
|
44
|
+
// got it first, the binding has already been handled and must not be unbound here.
|
|
45
|
+
val continuation = takeBindingContinuation() ?: return@launch
|
|
46
|
+
continuation.resumeWithException(AudioRecordingServiceException("The recording service connection has failed to connect with the recording service within ${timeoutMs}ms"))
|
|
47
|
+
unbind()
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
|
|
@@ -52,6 +53,14 @@ class AudioRecordingServiceConnection(
|
|
|
52
53
|
bindingTimeoutJob = null
|
|
53
54
|
}
|
|
54
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Returns the pending binding continuation and clears it, so that it can be resumed at most once,
|
|
58
|
+
* even if the binding timeout races with a service connection callback.
|
|
59
|
+
*/
|
|
60
|
+
private fun takeBindingContinuation(): Continuation<Unit>? = synchronized(this) {
|
|
61
|
+
bindingContinuation.also { bindingContinuation = null }
|
|
62
|
+
}
|
|
63
|
+
|
|
55
64
|
/**
|
|
56
65
|
* Binds with the recording service. If the service doesn't exist, it will create the service.
|
|
57
66
|
*/
|
|
@@ -71,7 +80,9 @@ class AudioRecordingServiceConnection(
|
|
|
71
80
|
suspendCoroutine { continuation ->
|
|
72
81
|
if (bindingState == ServiceBindingState.UNBOUND || bindingState == ServiceBindingState.FAILED) {
|
|
73
82
|
val reactContext = appContext.reactContext ?: run {
|
|
74
|
-
|
|
83
|
+
val message = "Binding with the expo-audio recording service failed: React context lost"
|
|
84
|
+
onBindingFailed(message)
|
|
85
|
+
continuation.resumeWithException(AudioRecordingServiceException(message))
|
|
75
86
|
return@suspendCoroutine
|
|
76
87
|
}
|
|
77
88
|
val serviceRunning = startServiceAndBind(appContext, reactContext, this, AudioRecordingService::class.java, AudioRecordingService.ACTION_START_RECORDING)
|
|
@@ -83,6 +94,8 @@ class AudioRecordingServiceConnection(
|
|
|
83
94
|
|
|
84
95
|
transitionToState(ServiceBindingState.BINDING)
|
|
85
96
|
bindingContinuation = continuation
|
|
97
|
+
// Without a timeout, the promise would never settle if the system never calls back.
|
|
98
|
+
startBindingTimeout()
|
|
86
99
|
}
|
|
87
100
|
}
|
|
88
101
|
}
|
|
@@ -93,18 +106,18 @@ class AudioRecordingServiceConnection(
|
|
|
93
106
|
val recorder = recorder.get()
|
|
94
107
|
if (recorder == null || isRecorderReleased) {
|
|
95
108
|
transitionToState(ServiceBindingState.FAILED)
|
|
96
|
-
|
|
109
|
+
takeBindingContinuation()?.resumeWithException(AudioRecordingServiceException("The recorder has been deallocated"))
|
|
97
110
|
return
|
|
98
111
|
}
|
|
99
112
|
|
|
100
113
|
val serviceBinder: AudioRecordingServiceBinder = binder as? AudioRecordingServiceBinder ?: run {
|
|
101
|
-
|
|
114
|
+
takeBindingContinuation()?.resumeWithException(AudioRecordingServiceException("Could not bind to the recording service - invalid binder type"))
|
|
102
115
|
transitionToState(ServiceBindingState.FAILED)
|
|
103
116
|
return
|
|
104
117
|
}
|
|
105
118
|
transitionToState(ServiceBindingState.BOUND)
|
|
106
119
|
|
|
107
|
-
|
|
120
|
+
takeBindingContinuation()?.resume(Unit)
|
|
108
121
|
recordingServiceBinder = serviceBinder
|
|
109
122
|
serviceBinder.service.appContext = appContext
|
|
110
123
|
}
|
|
@@ -117,19 +130,17 @@ class AudioRecordingServiceConnection(
|
|
|
117
130
|
|
|
118
131
|
override fun onBindingDied(name: ComponentName?) {
|
|
119
132
|
cancelBindingTimeout()
|
|
120
|
-
|
|
133
|
+
takeBindingContinuation()?.resumeWithException(
|
|
121
134
|
AudioRecordingServiceException("Service binding died")
|
|
122
135
|
)
|
|
123
|
-
bindingContinuation = null
|
|
124
136
|
super.onBindingDied(name)
|
|
125
137
|
}
|
|
126
138
|
|
|
127
139
|
override fun onNullBinding(componentName: ComponentName) {
|
|
128
140
|
cancelBindingTimeout()
|
|
129
|
-
|
|
141
|
+
takeBindingContinuation()?.resumeWithException(
|
|
130
142
|
AudioRecordingServiceException("Service returned null binding")
|
|
131
143
|
)
|
|
132
|
-
bindingContinuation = null
|
|
133
144
|
super.onNullBinding(componentName)
|
|
134
145
|
}
|
|
135
146
|
|
package/build/AudioPlayer.web.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AUDIO_SAMPLE_UPDATE, PLAYBACK_STATUS_UPDATE } from './AudioEventKeys';
|
|
2
2
|
import { isAudioActive } from './AudioModule.web';
|
|
3
|
-
import { getAudioContext, getSourceUri, getStatusFromMedia, nextId, preloadCache, safeDuration } from './AudioUtils.web';
|
|
3
|
+
import { getAudioContext, getSourceUri, getStatusFromMedia, isPlayInterrupted, nextId, preloadCache, safeDuration } from './AudioUtils.web';
|
|
4
4
|
import { mediaSessionController } from './MediaSessionController.web';
|
|
5
5
|
export const activePlayers = new Set();
|
|
6
6
|
let hasWarnedIOSVolume = false;
|
|
@@ -82,7 +82,19 @@ export class AudioPlayerWeb extends globalThis.expo.SharedObject {
|
|
|
82
82
|
if (!isAudioActive) {
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
|
-
this.media
|
|
85
|
+
const media = this.media;
|
|
86
|
+
media.play().catch((error)=>{
|
|
87
|
+
if (isPlayInterrupted(error) || media !== this.media) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
this.isPlaying = false;
|
|
91
|
+
this.stopSampling();
|
|
92
|
+
this.emit(PLAYBACK_STATUS_UPDATE, {
|
|
93
|
+
...getStatusFromMedia(media, this.id),
|
|
94
|
+
playing: false,
|
|
95
|
+
error: error?.message ?? String(error)
|
|
96
|
+
});
|
|
97
|
+
});
|
|
86
98
|
this.isPlaying = true;
|
|
87
99
|
this.startSampling();
|
|
88
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AudioPlayer.web.ts"],"sourcesContent":[null],"names":["AUDIO_SAMPLE_UPDATE","PLAYBACK_STATUS_UPDATE","isAudioActive","getAudioContext","getSourceUri","getStatusFromMedia","nextId","preloadCache","safeDuration","mediaSessionController","activePlayers","Set","hasWarnedIOSVolume","isIOSSafari","test","navigator","userAgent","AudioPlayerWeb","globalThis","expo","SharedObject","source","options","updateInterval","crossOrigin","src","interval","Math","max","media","_createMediaElement","add","id","isAudioSamplingSupported","isBuffering","shouldCorrectPitch","isPlaying","loaded","analyser","sourceNode","samplingFrameId","samplingEnabled","samplingBuffer","playing","muted","value","loop","duration","currentTime","paused","isLoaded","playbackRate","volume","console","warn","currentStatus","play","startSampling","pause","stopSampling","replace","wasPlaying","wasSampling","mediaSessionState","getActiveState","remove","setAudioSamplingEnabled","setActivePlayer","metadata","undefined","seekTo","seconds","toleranceMillisBefore","toleranceMillisAfter","enabled","_isCrossOrigin","ctx","state","resume","createMediaElementSource","createAnalyser","fftSize","disconnect","connect","destination","Float32Array","frequencyBinCount","sampleLoop","getFloatTimeDomainData","emit","channels","frames","Array","from","timestamp","requestAnimationFrame","cancelAnimationFrame","setPlaybackRate","second","pitchCorrectionQuality","preservesPitch","updatePositionState","clear","ontimeupdate","onplay","onpause","onseeked","onended","onloadeddata","onerror","removeAttribute","load","delete","release","setActiveForLockScreen","active","updateLockScreenMetadata","updateMetadata","clearLockScreenControls","URL","origin","window","location","newSource","cachedUri","has","get","blobUrl","Audio","lastEmitTime","intervalSec","now","updatePlaybackState","errorMessage","error","code"],"mappings":"AAQA,SAASA,mBAAmB,EAAEC,sBAAsB,QAAQ,mBAAmB;AAE/E,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SACEC,eAAe,EACfC,YAAY,EACZC,kBAAkB,EAClBC,MAAM,EACNC,YAAY,EACZC,YAAY,QACP,mBAAmB;AAC1B,SAASC,sBAAsB,QAAQ,+BAA+B;AAEtE,OAAO,MAAMC,gBAAgB,IAAIC,MAAsB;AAEvD,IAAIC,qBAAqB;AACzB,SAASC;IACP,OAAO,mBAAmBC,IAAI,CAACC,UAAUC,SAAS;AACpD;AAEA,OAAO,MAAMC,uBACHC,WAAWC,IAAI,CAACC,YAAY;IAGpC,YAAYC,MAAmB,EAAEC,UAA8B,CAAC,CAAC,CAAE;QACjE,KAAK;QACL,MAAM,EAAEC,iBAAiB,GAAG,EAAEC,WAAW,EAAE,GAAGF;QAC9C,IAAI,CAACG,GAAG,GAAGJ;QACX,IAAI,CAACK,QAAQ,GAAGC,KAAKC,GAAG,CAACL,gBAAgB;QACzC,IAAI,CAACC,WAAW,GAAGA;QACnB,IAAI,CAACK,KAAK,GAAG,IAAI,CAACC,mBAAmB;QACrCpB,cAAcqB,GAAG,CAAC,IAAI;IACxB;IAEAC,KAAa1B,SAAS;IACtB2B,2BAA2B,MAAM;IACjCC,cAAc,MAAM;IACpBC,qBAAqB,MAAM;IAEnBV,MAAmB,KAAK;IACxBI,MAAwB;IACxBH,WAAW,IAAI;IACfU,YAAY,MAAM;IAClBC,SAAS,MAAM;IACfb,YAA8C;IAC9Cc,WAAgC,KAAK;IACrCC,aAAiD,KAAK;IACtDC,kBAAiC,KAAK;IACtCC,kBAAkB,MAAM;IACxBC,iBAAmD,KAAK;IAEhE,IAAIC,UAAmB;QACrB,OAAO,IAAI,CAACP,SAAS;IACvB;IAEA,IAAIQ,QAAiB;QACnB,OAAO,IAAI,CAACf,KAAK,CAACe,KAAK;IACzB;IAEA,IAAIA,MAAMC,KAAc,EAAE;QACxB,IAAI,CAAChB,KAAK,CAACe,KAAK,GAAGC;IACrB;IAEA,IAAIC,OAAgB;QAClB,OAAO,IAAI,CAACjB,KAAK,CAACiB,IAAI;IACxB;IAEA,IAAIA,KAAKD,KAAc,EAAE;QACvB,IAAI,CAAChB,KAAK,CAACiB,IAAI,GAAGD;IACpB;IAEA,IAAIE,WAAmB;QACrB,OAAOvC,aAAa,IAAI,CAACqB,KAAK,CAACkB,QAAQ;IACzC;IAEA,IAAIC,cAAsB;QACxB,OAAO,IAAI,CAACnB,KAAK,CAACmB,WAAW;IAC/B;IAEA,IAAIC,SAAkB;QACpB,OAAO,IAAI,CAACpB,KAAK,CAACoB,MAAM;IAC1B;IAEA,IAAIC,WAAoB;QACtB,OAAO,IAAI,CAACb,MAAM;IACpB;IAEA,IAAIc,eAAuB;QACzB,OAAO,IAAI,CAACtB,KAAK,CAACsB,YAAY;IAChC;IAEA,IAAIA,aAAaN,KAAa,EAAE;QAC9B,IAAI,CAAChB,KAAK,CAACsB,YAAY,GAAGN;IAC5B;IAEA,IAAIO,SAAiB;QACnB,OAAO,IAAI,CAACvB,KAAK,CAACuB,MAAM;IAC1B;IAEA,IAAIA,OAAOP,KAAa,EAAE;QACxB,IAAI,CAACjC,sBAAsBC,eAAe;YACxCD,qBAAqB;YACrByC,QAAQC,IAAI,CACV,kFACE;QAEN;QACA,IAAI,CAACzB,KAAK,CAACuB,MAAM,GAAGP;IACtB;IAEA,IAAIU,gBAA6B;QAC/B,OAAOlD,mBAAmB,IAAI,CAACwB,KAAK,EAAE,IAAI,CAACG,EAAE;IAC/C;IAEAwB,OAAa;QACX,IAAI,CAACtD,eAAe;YAClB;QACF;QACA,IAAI,CAAC2B,KAAK,CAAC2B,IAAI;QACf,IAAI,CAACpB,SAAS,GAAG;QACjB,IAAI,CAACqB,aAAa;IACpB;IAEAC,QAAc;QACZ,IAAI,CAAC7B,KAAK,CAAC6B,KAAK;QAChB,IAAI,CAACtB,SAAS,GAAG;QACjB,IAAI,CAACuB,YAAY;IACnB;IAEAC,QAAQvC,MAAmB,EAAQ;QACjC,MAAMwC,aAAa,IAAI,CAACzB,SAAS;QACjC,MAAM0B,cAAc,IAAI,CAACrB,eAAe;QACxC,MAAMsB,oBAAoBtD,uBAAuBuD,cAAc,CAAC,IAAI;QAEpE,mEAAmE;QACnE,IAAI,CAACC,MAAM;QAEX,IAAI,CAACxC,GAAG,GAAGJ;QACX,IAAI,CAACe,SAAS,GAAG;QACjB,IAAI,CAACC,MAAM,GAAG;QACd,IAAI,CAACR,KAAK,GAAG,IAAI,CAACC,mBAAmB;QAErC,IAAIgC,aAAa;YACf,IAAI,CAACI,uBAAuB,CAAC;QAC/B;QAEA,IAAIH,mBAAmB;YACrBtD,uBAAuB0D,eAAe,CACpC,IAAI,EACJJ,kBAAkBK,QAAQ,IAAIC,WAC9BN,kBAAkBzC,OAAO,IAAI+C;QAEjC;QAEA,2CAA2C;QAC3C,IAAIR,YAAY;YACd,IAAI,CAACL,IAAI;QACX;IACF;IAEA,MAAMc,OACJC,OAAe,EACfC,qBAA8B,EAC9BC,oBAA6B,EACd;QACf,IAAI,CAAC5C,KAAK,CAACmB,WAAW,GAAGuB;IAC3B;IAEAL,wBAAwBQ,OAAgB,EAAQ;QAC9C,IAAIA,SAAS;YACX,IAAI,CAAC,IAAI,CAAC7C,KAAK,CAACL,WAAW,IAAI,IAAI,CAACmD,cAAc,IAAI;gBACpD,IAAI,CAAC1C,wBAAwB,GAAG;gBAChC;YACF;YAEA,IAAI,IAAI,CAACK,QAAQ,EAAE;gBACjB;YACF;YAEA,MAAMsC,MAAMzE;YACZ,IAAIyE,IAAIC,KAAK,KAAK,aAAa;gBAC7BD,IAAIE,MAAM;YACZ;YAEA,IAAI,CAAC,IAAI,CAACvC,UAAU,EAAE;gBACpB,IAAI,CAACA,UAAU,GAAGqC,IAAIG,wBAAwB,CAAC,IAAI,CAAClD,KAAK;YAC3D;YAEA,IAAI,CAACS,QAAQ,GAAGsC,IAAII,cAAc;YAClC,IAAI,CAAC1C,QAAQ,CAAC2C,OAAO,GAAG;YAExB,IAAI,CAAC1C,UAAU,CAAC2C,UAAU;YAC1B,IAAI,CAAC3C,UAAU,CAAC4C,OAAO,CAAC,IAAI,CAAC7C,QAAQ;YACrC,IAAI,CAACA,QAAQ,CAAC6C,OAAO,CAACP,IAAIQ,WAAW;YAErC,IAAI,CAAC1C,cAAc,GAAG,IAAI2C,aAAa,IAAI,CAAC/C,QAAQ,CAACgD,iBAAiB;YACtE,IAAI,CAAC7C,eAAe,GAAG;YAEvB,IAAI,IAAI,CAACL,SAAS,EAAE;gBAClB,IAAI,CAACqB,aAAa;YACpB;YACA,IAAI,CAACxB,wBAAwB,GAAG;QAClC,OAAO;YACL,IAAI,CAAC0B,YAAY;YAEjB,IAAI,IAAI,CAACrB,QAAQ,EAAE;gBACjB,IAAI,CAACA,QAAQ,CAAC4C,UAAU;gBACxB,IAAI,CAAC5C,QAAQ,GAAG;YAClB;YAEA,IAAI,IAAI,CAACC,UAAU,EAAE;gBACnB,MAAMqC,MAAMzE;gBACZ,IAAI,CAACoC,UAAU,CAAC2C,UAAU;gBAC1B,IAAI,CAAC3C,UAAU,CAAC4C,OAAO,CAACP,IAAIQ,WAAW;YACzC;YAEA,IAAI,CAAC1C,cAAc,GAAG;YACtB,IAAI,CAACD,eAAe,GAAG;QACzB;IACF;IAEQgB,gBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAChB,eAAe,IAAI,CAAC,IAAI,CAACH,QAAQ,IAAI,CAAC,IAAI,CAACI,cAAc,EAAE;YACnE;QACF;QACA,MAAM6C,aAAa;YACjB,IAAI,CAAC,IAAI,CAACjD,QAAQ,IAAI,CAAC,IAAI,CAACI,cAAc,EAAE;gBAC1C;YACF;YACA,IAAI,CAACJ,QAAQ,CAACkD,sBAAsB,CAAC,IAAI,CAAC9C,cAAc;YACxD,IAAI,CAAC+C,IAAI,CAACzF,qBAAqB;gBAC7B0F,UAAU;oBAAC;wBAAEC,QAAQC,MAAMC,IAAI,CAAC,IAAI,CAACnD,cAAc;oBAAE;iBAAE;gBACvDoD,WAAW,IAAI,CAACjE,KAAK,CAACmB,WAAW;YACnC;YACA,IAAI,CAACR,eAAe,GAAGuD,sBAAsBR;QAC/C;QACA,IAAI,CAAC/C,eAAe,GAAGuD,sBAAsBR;IAC/C;IAEQ5B,eAAqB;QAC3B,IAAI,IAAI,CAACnB,eAAe,IAAI,MAAM;YAChCwD,qBAAqB,IAAI,CAACxD,eAAe;YACzC,IAAI,CAACA,eAAe,GAAG;QACzB;IACF;IAEAyD,gBAAgBC,MAAc,EAAEC,sBAA+C,EAAQ;QACrF,IAAI,CAACtE,KAAK,CAACsB,YAAY,GAAG+C;QAC1B,IAAI,CAAC/D,kBAAkB,GAAGgE,2BAA2B;QACrD,IAAI,CAACtE,KAAK,CAACuE,cAAc,GAAG,IAAI,CAACjE,kBAAkB;QACnD1B,uBAAuB4F,mBAAmB,CAAC,IAAI;IACjD;IAEApC,SAAe;QACbxD,uBAAuB6F,KAAK,CAAC,IAAI;QACjC,IAAI,CAAC3C,YAAY;QAEjB,IAAI,IAAI,CAACrB,QAAQ,EAAE;YACjB,IAAI,CAACA,QAAQ,CAAC4C,UAAU;YACxB,IAAI,CAAC5C,QAAQ,GAAG;QAClB;QAEA,IAAI,IAAI,CAACC,UAAU,EAAE;YACnB,IAAI,CAACA,UAAU,CAAC2C,UAAU;YAC1B,IAAI,CAAC3C,UAAU,GAAG;QACpB;QAEA,IAAI,CAACE,eAAe,GAAG;QACvB,IAAI,CAACZ,KAAK,CAAC6B,KAAK;QAChB,+CAA+C;QAC/C,IAAI,CAAC7B,KAAK,CAAC0E,YAAY,GAAG;QAC1B,IAAI,CAAC1E,KAAK,CAAC2E,MAAM,GAAG;QACpB,IAAI,CAAC3E,KAAK,CAAC4E,OAAO,GAAG;QACrB,IAAI,CAAC5E,KAAK,CAAC6E,QAAQ,GAAG;QACtB,IAAI,CAAC7E,KAAK,CAAC8E,OAAO,GAAG;QACrB,IAAI,CAAC9E,KAAK,CAAC+E,YAAY,GAAG;QAC1B,IAAI,CAAC/E,KAAK,CAACgF,OAAO,GAAG;QACrB,IAAI,CAAChF,KAAK,CAACiF,eAAe,CAAC;QAC3B,IAAI,CAACjF,KAAK,CAACkF,IAAI;QACfrG,cAAcsG,MAAM,CAAC,IAAI;IAC3B;IAEAC,UAAgB;QACd,IAAI,CAAChD,MAAM;IACb;IAEAiD,uBACEC,MAAe,EACf/C,QAAwB,EACxB9C,OAAgC,EAC1B;QACN,IAAI6F,QAAQ;YACV1G,uBAAuB0D,eAAe,CAAC,IAAI,EAAEC,UAAU9C;QACzD,OAAO;YACLb,uBAAuB6F,KAAK,CAAC,IAAI;QACnC;IACF;IAEAc,yBAAyBhD,QAAuB,EAAQ;QACtD3D,uBAAuB4G,cAAc,CAAC,IAAI,EAAEjD;IAC9C;IAEAkD,0BAAgC;QAC9B7G,uBAAuB6F,KAAK,CAAC,IAAI;IACnC;IAEA3B,iBAA0B;QACxB,IAAI;YACF,OAAO,IAAI4C,IAAI,IAAI,CAAC1F,KAAK,CAACJ,GAAG,EAAE+F,MAAM,KAAKC,OAAOC,QAAQ,CAACF,MAAM;QAClE,EAAE,OAAM;YACN,OAAO;QACT;IACF;IAEA1F,sBAAwC;QACtC,MAAM6F,YAAYvH,aAAa,IAAI,CAACqB,GAAG;QACvC,MAAMmG,YACJD,aAAapH,aAAasH,GAAG,CAACF,aAAapH,aAAauH,GAAG,CAACH,WAAYI,OAAO,GAAGJ;QACpF,MAAM9F,QAAQ,IAAImG,MAAMJ;QACxB,IAAI,IAAI,CAACpG,WAAW,KAAK6C,WAAW;YAClCxC,MAAML,WAAW,GAAG,IAAI,CAACA,WAAW;QACtC;QAEA,IAAIyG,eAAe;QACnB,MAAMC,cAAc,IAAI,CAACxG,QAAQ,GAAG;QAEpC,6CAA6C;QAC7CG,MAAM0E,YAAY,GAAG;YACnB,MAAM4B,MAAMtG,MAAMmB,WAAW;YAC7B,oCAAoC;YACpC,IAAImF,MAAMF,cAAc;gBACtBA,eAAeE;YACjB;YACA,IAAIA,MAAMF,gBAAgBC,aAAa;gBACrCD,eAAeE;gBACf,IAAI,CAAC1C,IAAI,CAACxF,wBAAwBI,mBAAmBwB,OAAO,IAAI,CAACG,EAAE;gBACnEvB,uBAAuB4F,mBAAmB,CAAC,IAAI;YACjD;QACF;QAEAxE,MAAM2E,MAAM,GAAG;YACb,IAAI,CAACpE,SAAS,GAAG;YACjB6F,eAAepG,MAAMmB,WAAW;YAChC,IAAI,CAACyC,IAAI,CAACxF,wBAAwB;gBAChC,GAAGI,mBAAmBwB,OAAO,IAAI,CAACG,EAAE,CAAC;gBACrCW,SAAS,IAAI,CAACP,SAAS;YACzB;YACA3B,uBAAuB2H,mBAAmB,CAAC,IAAI;YAC/C3H,uBAAuB4F,mBAAmB,CAAC,IAAI;QACjD;QAEAxE,MAAM4E,OAAO,GAAG;YACd,IAAI,CAACrE,SAAS,GAAG;YACjB6F,eAAepG,MAAMmB,WAAW;YAChC,IAAI,CAACyC,IAAI,CAACxF,wBAAwB;gBAChC,GAAGI,mBAAmBwB,OAAO,IAAI,CAACG,EAAE,CAAC;gBACrCW,SAAS,IAAI,CAACP,SAAS;YACzB;YACA3B,uBAAuB2H,mBAAmB,CAAC,IAAI;YAC/C3H,uBAAuB4F,mBAAmB,CAAC,IAAI;QACjD;QAEAxE,MAAM6E,QAAQ,GAAG;YACfuB,eAAepG,MAAMmB,WAAW;YAChC,IAAI,CAACyC,IAAI,CAACxF,wBAAwBI,mBAAmBwB,OAAO,IAAI,CAACG,EAAE;YACnEvB,uBAAuB4F,mBAAmB,CAAC,IAAI;QACjD;QAEAxE,MAAM8E,OAAO,GAAG;YACdsB,eAAe;YACfxH,uBAAuB2H,mBAAmB,CAAC,IAAI;QACjD;QAEAvG,MAAM+E,YAAY,GAAG;YACnB,IAAI,CAACvE,MAAM,GAAG;YACd4F,eAAepG,MAAMmB,WAAW;YAChC,IAAI,CAACyC,IAAI,CAACxF,wBAAwB;gBAChC,GAAGI,mBAAmBwB,OAAO,IAAI,CAACG,EAAE,CAAC;gBACrCkB,UAAU,IAAI,CAACb,MAAM;YACvB;YACA5B,uBAAuB4F,mBAAmB,CAAC,IAAI;QACjD;QAEAxE,MAAMgF,OAAO,GAAG;YACd,IAAI,CAACxE,MAAM,GAAG;YACd,IAAI,CAACD,SAAS,GAAG;YACjB,MAAMiG,eAAexG,MAAMyG,KAAK,GAC5B,CAAC,qBAAqB,EAAEzG,MAAMyG,KAAK,CAACC,IAAI,CAAC,CAAC,CAAC,GAC3C;YACJ,IAAI,CAAC9C,IAAI,CAACxF,wBAAwB;gBAChC,GAAGI,mBAAmBwB,OAAO,IAAI,CAACG,EAAE,CAAC;gBACrCkB,UAAU;gBACVP,SAAS;gBACT2F,OAAOD;YACT;QACF;QAEA,OAAOxG;IACT;AACF"}
|
|
1
|
+
{"version":3,"sources":["AudioPlayer.web.ts"],"sourcesContent":[null],"names":["AUDIO_SAMPLE_UPDATE","PLAYBACK_STATUS_UPDATE","isAudioActive","getAudioContext","getSourceUri","getStatusFromMedia","isPlayInterrupted","nextId","preloadCache","safeDuration","mediaSessionController","activePlayers","Set","hasWarnedIOSVolume","isIOSSafari","test","navigator","userAgent","AudioPlayerWeb","globalThis","expo","SharedObject","source","options","updateInterval","crossOrigin","src","interval","Math","max","media","_createMediaElement","add","id","isAudioSamplingSupported","isBuffering","shouldCorrectPitch","isPlaying","loaded","analyser","sourceNode","samplingFrameId","samplingEnabled","samplingBuffer","playing","muted","value","loop","duration","currentTime","paused","isLoaded","playbackRate","volume","console","warn","currentStatus","play","catch","error","stopSampling","emit","message","String","startSampling","pause","replace","wasPlaying","wasSampling","mediaSessionState","getActiveState","remove","setAudioSamplingEnabled","setActivePlayer","metadata","undefined","seekTo","seconds","toleranceMillisBefore","toleranceMillisAfter","enabled","_isCrossOrigin","ctx","state","resume","createMediaElementSource","createAnalyser","fftSize","disconnect","connect","destination","Float32Array","frequencyBinCount","sampleLoop","getFloatTimeDomainData","channels","frames","Array","from","timestamp","requestAnimationFrame","cancelAnimationFrame","setPlaybackRate","second","pitchCorrectionQuality","preservesPitch","updatePositionState","clear","ontimeupdate","onplay","onpause","onseeked","onended","onloadeddata","onerror","removeAttribute","load","delete","release","setActiveForLockScreen","active","updateLockScreenMetadata","updateMetadata","clearLockScreenControls","URL","origin","window","location","newSource","cachedUri","has","get","blobUrl","Audio","lastEmitTime","intervalSec","now","updatePlaybackState","errorMessage","code"],"mappings":"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"}
|
|
@@ -56,6 +56,7 @@ export declare class AudioPlaylistWeb extends globalThis.expo.SharedObject<Audio
|
|
|
56
56
|
private _attachMediaHandlers;
|
|
57
57
|
private _createMediaElement;
|
|
58
58
|
private _handleTrackEnded;
|
|
59
|
+
private _playCurrentMedia;
|
|
59
60
|
private _getStatus;
|
|
60
61
|
private _emitStatus;
|
|
61
62
|
private _updateMediaSession;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PLAYLIST_STATUS_UPDATE, TRACK_CHANGED } from './AudioEventKeys';
|
|
2
|
-
import { getSourceUri, nextId } from './AudioUtils.web';
|
|
2
|
+
import { getSourceUri, isPlayInterrupted, nextId } from './AudioUtils.web';
|
|
3
3
|
import { mediaSessionController } from './MediaSessionController.web';
|
|
4
4
|
import { resolveSource } from './utils/resolveSource';
|
|
5
5
|
function getSourceInfo(source) {
|
|
@@ -115,7 +115,7 @@ export class AudioPlaylistWeb extends globalThis.expo.SharedObject {
|
|
|
115
115
|
if (!this._currentMedia || this._sources.length === 0) {
|
|
116
116
|
return;
|
|
117
117
|
}
|
|
118
|
-
this.
|
|
118
|
+
this._playCurrentMedia();
|
|
119
119
|
this._isPlaying = true;
|
|
120
120
|
}
|
|
121
121
|
pause() {
|
|
@@ -217,7 +217,7 @@ export class AudioPlaylistWeb extends globalThis.expo.SharedObject {
|
|
|
217
217
|
if (source) {
|
|
218
218
|
this._currentMedia = this._createMediaElement(source);
|
|
219
219
|
if (wasPlaying) {
|
|
220
|
-
this.
|
|
220
|
+
this._playCurrentMedia();
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
this._preloadNext();
|
|
@@ -283,7 +283,7 @@ export class AudioPlaylistWeb extends globalThis.expo.SharedObject {
|
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
285
|
if (this._currentMedia && wasPlaying) {
|
|
286
|
-
this.
|
|
286
|
+
this._playCurrentMedia();
|
|
287
287
|
this._isPlaying = true;
|
|
288
288
|
}
|
|
289
289
|
this._preloadNext();
|
|
@@ -424,7 +424,7 @@ export class AudioPlaylistWeb extends globalThis.expo.SharedObject {
|
|
|
424
424
|
if (this._loopMode === 'single') {
|
|
425
425
|
if (this._currentMedia) {
|
|
426
426
|
this._currentMedia.currentTime = 0;
|
|
427
|
-
this.
|
|
427
|
+
this._playCurrentMedia();
|
|
428
428
|
}
|
|
429
429
|
return;
|
|
430
430
|
}
|
|
@@ -444,6 +444,16 @@ export class AudioPlaylistWeb extends globalThis.expo.SharedObject {
|
|
|
444
444
|
this._transitionToTrack(this._currentIndex + 1, this._currentIndex);
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
|
+
_playCurrentMedia() {
|
|
448
|
+
const media = this._currentMedia;
|
|
449
|
+
media?.play().catch((error)=>{
|
|
450
|
+
if (isPlayInterrupted(error) || media !== this._currentMedia) {
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
this._isPlaying = false;
|
|
454
|
+
this._emitStatus();
|
|
455
|
+
});
|
|
456
|
+
}
|
|
447
457
|
_getStatus() {
|
|
448
458
|
return {
|
|
449
459
|
id: this.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AudioPlaylist.web.ts"],"sourcesContent":[null],"names":["PLAYLIST_STATUS_UPDATE","TRACK_CHANGED","getSourceUri","nextId","mediaSessionController","resolveSource","getSourceInfo","source","resolved","uri","name","AudioPlaylistWeb","globalThis","expo","SharedObject","initialSources","updateInterval","loopMode","crossOrigin","_updateInterval","Math","max","_loopMode","_crossOrigin","_sources","push","_sourceInfos","length","_currentMedia","_createMediaElement","_preloadNext","id","_currentIndex","_nextMedia","_isPlaying","_isLoaded","_isBuffering","_volume","_muted","_playbackRate","_knownDuration","currentIndex","trackCount","sources","playing","muted","value","isLoaded","isBuffering","currentTime","duration","volume","playbackRate","loop","_emitStatus","currentStatus","_getStatus","play","pause","next","previousIndex","nextIndex","_transitionToTrack","previous","prevIndex","skipTo","index","seekTo","seconds","add","insert","splice","remove","wasCurrentTrack","wasPlaying","_cleanupMedia","clear","destroy","setActiveForLockScreen","active","metadata","options","setActivePlayer","updateLockScreenMetadata","updateMetadata","clearLockScreenControls","newIndex","isNextSequential","_attachMediaHandlers","emit","Audio","undefined","preload","media","ontimeupdate","onplay","onpause","onseeked","onended","onloadedmetadata","onloadeddata","onwaiting","oncanplaythrough","onerror","removeAttribute","load","lastEmitTime","intervalSec","readyState","isNaN","isFinite","now","ended","_handleTrackEnded","isLastTrack","_updateMediaSession","didJustFinish","updatePlaybackState","updatePositionState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["AudioPlaylist.web.ts"],"sourcesContent":[null],"names":["PLAYLIST_STATUS_UPDATE","TRACK_CHANGED","getSourceUri","isPlayInterrupted","nextId","mediaSessionController","resolveSource","getSourceInfo","source","resolved","uri","name","AudioPlaylistWeb","globalThis","expo","SharedObject","initialSources","updateInterval","loopMode","crossOrigin","_updateInterval","Math","max","_loopMode","_crossOrigin","_sources","push","_sourceInfos","length","_currentMedia","_createMediaElement","_preloadNext","id","_currentIndex","_nextMedia","_isPlaying","_isLoaded","_isBuffering","_volume","_muted","_playbackRate","_knownDuration","currentIndex","trackCount","sources","playing","muted","value","isLoaded","isBuffering","currentTime","duration","volume","playbackRate","loop","_emitStatus","currentStatus","_getStatus","play","_playCurrentMedia","pause","next","previousIndex","nextIndex","_transitionToTrack","previous","prevIndex","skipTo","index","seekTo","seconds","add","insert","splice","remove","wasCurrentTrack","wasPlaying","_cleanupMedia","clear","destroy","setActiveForLockScreen","active","metadata","options","setActivePlayer","updateLockScreenMetadata","updateMetadata","clearLockScreenControls","newIndex","isNextSequential","_attachMediaHandlers","emit","Audio","undefined","preload","media","ontimeupdate","onplay","onpause","onseeked","onended","onloadedmetadata","onloadeddata","onwaiting","oncanplaythrough","onerror","removeAttribute","load","lastEmitTime","intervalSec","readyState","isNaN","isFinite","now","ended","_handleTrackEnded","isLastTrack","_updateMediaSession","didJustFinish","catch","error","updatePlaybackState","updatePositionState"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export declare const nextId: () => string;
|
|
|
3
3
|
export declare function getAudioContext(): AudioContext;
|
|
4
4
|
export declare function getUserMedia(constraints: MediaStreamConstraints): Promise<MediaStream>;
|
|
5
5
|
export declare function safeDuration(duration: number): number;
|
|
6
|
+
export declare function isPlayInterrupted(error: unknown): boolean;
|
|
6
7
|
export declare function getStatusFromMedia(media: HTMLMediaElement, id: string): AudioStatus;
|
|
7
8
|
export declare const preloadCache: Map<string, {
|
|
8
9
|
blobUrl: string;
|
package/build/AudioUtils.web.js
CHANGED
|
@@ -35,6 +35,10 @@ export function getUserMedia(constraints) {
|
|
|
35
35
|
export function safeDuration(duration) {
|
|
36
36
|
return isNaN(duration) || !isFinite(duration) ? 0 : duration;
|
|
37
37
|
}
|
|
38
|
+
// `play()` rejects with an `AbortError` when `pause()` or a new source interrupts it, which is not a failure.
|
|
39
|
+
export function isPlayInterrupted(error) {
|
|
40
|
+
return error instanceof DOMException && error.name === 'AbortError';
|
|
41
|
+
}
|
|
38
42
|
export function getStatusFromMedia(media, id) {
|
|
39
43
|
const isPlaying = !!(media.currentTime > 0 && !media.paused && !media.ended && media.readyState > 2);
|
|
40
44
|
const status = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AudioUtils.web.ts"],"sourcesContent":[null],"names":["Asset","nextId","id","String","audioContext","getAudioContext","AudioContext","getUserMedia","constraints","navigator","mediaDevices","webkitGetUserMedia","mozGetUserMedia","error","Error","code","name","Promise","resolve","reject","call","safeDuration","duration","isNaN","isFinite","getStatusFromMedia","media","isPlaying","currentTime","paused","ended","readyState","status","isLoaded","playbackState","timeControlStatus","reasonForWaitingToPlay","playing","didJustFinish","isBuffering","playbackRate","shouldCorrectPitch","mute","muted","loop","isLive","Infinity","currentOffsetFromLive","preloadCache","Map","getSourceUri","source","asset","fromModule","uri","assetId","undefined"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AAInC,OAAO,MAAMC,SAAS,AAAC,CAAA;IACrB,IAAIC,KAAK;IACT,OAAO,IAAMC,OAAOD;AACtB,CAAA,IAAK;AAEL,IAAIE,eAAoC;AAExC,OAAO,SAASC;IACd,IAAI,CAACD,cAAc;QACjBA,eAAe,IAAIE;IACrB;IACA,OAAOF;AACT;AAEA,OAAO,SAASG,aAAaC,WAAmC;IAC9D,IAAIC,UAAUC,YAAY,IAAID,UAAUC,YAAY,CAACH,YAAY,EAAE;QACjE,OAAOE,UAAUC,YAAY,CAACH,YAAY,CAACC;IAC7C;IAEA,iFAAiF;IACjF,+DAA+D;IAC/D,oEAAoE;IAEpE,yDAAyD;IACzD,MAAMD,eACJ,yHAAyH;IACzHE,UAAUF,YAAY,IACtBE,UAAUE,kBAAkB,IAC5BF,UAAUG,eAAe,IACzB;QACE,MAAMC,QAAa,IAAIC,MAAM;QAC7BD,MAAME,IAAI,GAAG;QACbF,MAAMG,IAAI,GAAG;QACb,MAAMH;IACR;IAEF,OAAO,IAAII,QAAQ,CAACC,SAASC;QAC3B,6DAA6D;QAC7D,wCAAwC;QACxC,6EAA6E;QAC7EZ,aAAaa,IAAI,CAACX,WAAWD,aAAaU,SAASC;IACrD;AACF;AAEA,OAAO,SAASE,aAAaC,QAAgB;IAC3C,OAAOC,MAAMD,aAAa,CAACE,SAASF,YAAY,IAAIA;AACtD;AAEA,OAAO,SAASG,mBAAmBC,KAAuB,
|
|
1
|
+
{"version":3,"sources":["AudioUtils.web.ts"],"sourcesContent":[null],"names":["Asset","nextId","id","String","audioContext","getAudioContext","AudioContext","getUserMedia","constraints","navigator","mediaDevices","webkitGetUserMedia","mozGetUserMedia","error","Error","code","name","Promise","resolve","reject","call","safeDuration","duration","isNaN","isFinite","isPlayInterrupted","DOMException","getStatusFromMedia","media","isPlaying","currentTime","paused","ended","readyState","status","isLoaded","playbackState","timeControlStatus","reasonForWaitingToPlay","playing","didJustFinish","isBuffering","playbackRate","shouldCorrectPitch","mute","muted","loop","isLive","Infinity","currentOffsetFromLive","preloadCache","Map","getSourceUri","source","asset","fromModule","uri","assetId","undefined"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AAInC,OAAO,MAAMC,SAAS,AAAC,CAAA;IACrB,IAAIC,KAAK;IACT,OAAO,IAAMC,OAAOD;AACtB,CAAA,IAAK;AAEL,IAAIE,eAAoC;AAExC,OAAO,SAASC;IACd,IAAI,CAACD,cAAc;QACjBA,eAAe,IAAIE;IACrB;IACA,OAAOF;AACT;AAEA,OAAO,SAASG,aAAaC,WAAmC;IAC9D,IAAIC,UAAUC,YAAY,IAAID,UAAUC,YAAY,CAACH,YAAY,EAAE;QACjE,OAAOE,UAAUC,YAAY,CAACH,YAAY,CAACC;IAC7C;IAEA,iFAAiF;IACjF,+DAA+D;IAC/D,oEAAoE;IAEpE,yDAAyD;IACzD,MAAMD,eACJ,yHAAyH;IACzHE,UAAUF,YAAY,IACtBE,UAAUE,kBAAkB,IAC5BF,UAAUG,eAAe,IACzB;QACE,MAAMC,QAAa,IAAIC,MAAM;QAC7BD,MAAME,IAAI,GAAG;QACbF,MAAMG,IAAI,GAAG;QACb,MAAMH;IACR;IAEF,OAAO,IAAII,QAAQ,CAACC,SAASC;QAC3B,6DAA6D;QAC7D,wCAAwC;QACxC,6EAA6E;QAC7EZ,aAAaa,IAAI,CAACX,WAAWD,aAAaU,SAASC;IACrD;AACF;AAEA,OAAO,SAASE,aAAaC,QAAgB;IAC3C,OAAOC,MAAMD,aAAa,CAACE,SAASF,YAAY,IAAIA;AACtD;AAEA,8GAA8G;AAC9G,OAAO,SAASG,kBAAkBZ,KAAc;IAC9C,OAAOA,iBAAiBa,gBAAgBb,MAAMG,IAAI,KAAK;AACzD;AAEA,OAAO,SAASW,mBAAmBC,KAAuB,EAAE1B,EAAU;IACpE,MAAM2B,YAAY,CAAC,CACjBD,CAAAA,MAAME,WAAW,GAAG,KACpB,CAACF,MAAMG,MAAM,IACb,CAACH,MAAMI,KAAK,IACZJ,MAAMK,UAAU,GAAG,CAAA;IAGrB,MAAMC,SAAsB;QAC1BhC;QACAiC,UAAU;QACVb,UAAUD,aAAaO,MAAMN,QAAQ;QACrCQ,aAAaF,MAAME,WAAW;QAC9BM,eAAe;QACfC,mBAAmBR,YAAY,YAAY;QAC3CS,wBAAwB;QACxBC,SAASV;QACTW,eAAeZ,MAAMI,KAAK;QAC1BS,aAAa;QACbC,cAAcd,MAAMc,YAAY;QAChCC,oBAAoB;QACpBC,MAAMhB,MAAMiB,KAAK;QACjBC,MAAMlB,MAAMkB,IAAI;QAChBC,QAAQnB,MAAMN,QAAQ,KAAK0B;QAC3BC,uBAAuB;QACvBpC,OAAO;IACT;IAEA,OAAOqB;AACT;AAEA,oEAAoE;AACpE,OAAO,MAAMgB,eAAe,IAAIC,MAA4D;AAE5F,OAAO,SAASC,aAAaC,MAAmB;IAC9C,IAAI,OAAOA,WAAW,UAAU;QAC9B,OAAOA;IACT;IACA,IAAI,OAAOA,WAAW,UAAU;QAC9B,MAAMC,QAAQtD,MAAMuD,UAAU,CAACF;QAC/B,OAAOC,MAAME,GAAG;IAClB;IACA,IAAI,OAAOH,QAAQI,YAAY,YAAY,CAACJ,QAAQG,KAAK;QACvD,MAAMF,QAAQtD,MAAMuD,UAAU,CAACF,OAAOI,OAAO;QAC7C,OAAOH,MAAME,GAAG;IAClB;IAEA,OAAOH,QAAQG,OAAOE;AACxB"}
|
package/ios/AudioModule.swift
CHANGED
|
@@ -685,9 +685,7 @@ public class AudioModule: Module {
|
|
|
685
685
|
|
|
686
686
|
#if os(iOS)
|
|
687
687
|
registry.allRecorders.values.forEach { recorder in
|
|
688
|
-
|
|
689
|
-
recorder.pauseRecording()
|
|
690
|
-
}
|
|
688
|
+
recorder.pauseForSystem()
|
|
691
689
|
}
|
|
692
690
|
#endif
|
|
693
691
|
|
|
@@ -774,9 +772,7 @@ public class AudioModule: Module {
|
|
|
774
772
|
|
|
775
773
|
#if os(iOS)
|
|
776
774
|
registry.allRecorders.values.forEach { recorder in
|
|
777
|
-
|
|
778
|
-
_ = try? recorder.startRecording()
|
|
779
|
-
}
|
|
775
|
+
try? recorder.resumeAfterSystemPause()
|
|
780
776
|
}
|
|
781
777
|
#endif
|
|
782
778
|
|
|
@@ -805,9 +801,7 @@ public class AudioModule: Module {
|
|
|
805
801
|
private func pauseAllRecorders() {
|
|
806
802
|
#if os(iOS)
|
|
807
803
|
registry.allRecorders.values.forEach { recorder in
|
|
808
|
-
|
|
809
|
-
recorder.pauseRecording()
|
|
810
|
-
}
|
|
804
|
+
recorder.pauseForSystem()
|
|
811
805
|
}
|
|
812
806
|
#endif
|
|
813
807
|
}
|
|
@@ -815,9 +809,7 @@ public class AudioModule: Module {
|
|
|
815
809
|
private func resumeAllRecorders() {
|
|
816
810
|
#if os(iOS)
|
|
817
811
|
registry.allRecorders.values.forEach { recorder in
|
|
818
|
-
|
|
819
|
-
_ = try? recorder.startRecording()
|
|
820
|
-
}
|
|
812
|
+
try? recorder.resumeAfterSystemPause()
|
|
821
813
|
}
|
|
822
814
|
#endif
|
|
823
815
|
}
|
package/ios/AudioRecorder.swift
CHANGED
|
@@ -19,6 +19,7 @@ class AudioRecorder: SharedRef<AVAudioRecorder>, RecordingResultHandler {
|
|
|
19
19
|
private var currentState: RecordingState = .idle
|
|
20
20
|
private var recordingSession = AVAudioSession.sharedInstance()
|
|
21
21
|
var allowsRecording = false
|
|
22
|
+
private var isPausedBySystem = false
|
|
22
23
|
weak var owningRegistry: AudioComponentRegistry?
|
|
23
24
|
private var mediaServicesDidReset = false
|
|
24
25
|
private var currentOptions: RecordingOptions?
|
|
@@ -158,6 +159,7 @@ class AudioRecorder: SharedRef<AVAudioRecorder>, RecordingResultHandler {
|
|
|
158
159
|
}
|
|
159
160
|
|
|
160
161
|
func startRecording() throws -> [String: Any] {
|
|
162
|
+
isPausedBySystem = false
|
|
161
163
|
guard allowsRecording else {
|
|
162
164
|
throw RecordingDisabledException()
|
|
163
165
|
}
|
|
@@ -189,6 +191,7 @@ class AudioRecorder: SharedRef<AVAudioRecorder>, RecordingResultHandler {
|
|
|
189
191
|
|
|
190
192
|
// Public method to update state when calling native recording methods directly
|
|
191
193
|
func updateStateForDirectRecording() {
|
|
194
|
+
isPausedBySystem = false
|
|
192
195
|
if currentState != .paused {
|
|
193
196
|
resetDurationTracking()
|
|
194
197
|
}
|
|
@@ -208,6 +211,7 @@ class AudioRecorder: SharedRef<AVAudioRecorder>, RecordingResultHandler {
|
|
|
208
211
|
}
|
|
209
212
|
|
|
210
213
|
func pauseRecording() {
|
|
214
|
+
isPausedBySystem = false
|
|
211
215
|
guard currentState == .recording else {
|
|
212
216
|
return
|
|
213
217
|
}
|
|
@@ -218,6 +222,19 @@ class AudioRecorder: SharedRef<AVAudioRecorder>, RecordingResultHandler {
|
|
|
218
222
|
currentState = .paused
|
|
219
223
|
}
|
|
220
224
|
|
|
225
|
+
func pauseForSystem() {
|
|
226
|
+
if currentState == .recording {
|
|
227
|
+
pauseRecording()
|
|
228
|
+
isPausedBySystem = true
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
func resumeAfterSystemPause() throws {
|
|
233
|
+
if isPausedBySystem && currentState == .paused {
|
|
234
|
+
_ = try startRecording()
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
221
238
|
func getRecordingStatus() -> [String: Any] {
|
|
222
239
|
var result: [String: Any] = [
|
|
223
240
|
"canRecord": isPrepared,
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
83cf708677405e262c8c9b113888d179
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b025140d2c4d4afec6ff2177e5b11c3a65cf32b8
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4a9c9fa744bae7346ceae6c312ed030bb16584e9d1e66473ebb84219a7ca3875
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
e7dd160ec6dde30682c7e7001d944f703baa815825c685bc098757fa3f7a2a05db2aae5b95bb12eca2733d4d3867cd3b9321640e88683c2e0b0fc4f4855357c7
|
package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.6/expo.modules.audio-58.0.6.aar
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8f4b5ebe1aaa3a88feb8d7e2d5ee1191
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a67bfef57451d3cdbf9593b42736336fa342fec6
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
66ef223a729dc25795eb8a2ac81f772110be7331bcb8201858a53dce2d5be054
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a5561246f985399aacbc1973743d782fdb42eade03470bee92eacfb77be5a67157f2b87e96f5004c16b65c146af341a9aa2ed90ca7b7129aca4224f161f0f98f
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "expo.modules.audio",
|
|
5
5
|
"module": "expo.modules.audio",
|
|
6
|
-
"version": "58.0.
|
|
6
|
+
"version": "58.0.6",
|
|
7
7
|
"attributes": {
|
|
8
8
|
"org.gradle.status": "release"
|
|
9
9
|
}
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
{
|
|
27
|
-
"name": "expo.modules.audio-58.0.
|
|
28
|
-
"url": "expo.modules.audio-58.0.
|
|
29
|
-
"size":
|
|
30
|
-
"sha512": "
|
|
31
|
-
"sha256": "
|
|
32
|
-
"sha1": "
|
|
33
|
-
"md5": "
|
|
27
|
+
"name": "expo.modules.audio-58.0.6.aar",
|
|
28
|
+
"url": "expo.modules.audio-58.0.6.aar",
|
|
29
|
+
"size": 560911,
|
|
30
|
+
"sha512": "a5561246f985399aacbc1973743d782fdb42eade03470bee92eacfb77be5a67157f2b87e96f5004c16b65c146af341a9aa2ed90ca7b7129aca4224f161f0f98f",
|
|
31
|
+
"sha256": "66ef223a729dc25795eb8a2ac81f772110be7331bcb8201858a53dce2d5be054",
|
|
32
|
+
"sha1": "a67bfef57451d3cdbf9593b42736336fa342fec6",
|
|
33
|
+
"md5": "8f4b5ebe1aaa3a88feb8d7e2d5ee1191"
|
|
34
34
|
}
|
|
35
35
|
]
|
|
36
36
|
},
|
|
@@ -137,13 +137,13 @@
|
|
|
137
137
|
],
|
|
138
138
|
"files": [
|
|
139
139
|
{
|
|
140
|
-
"name": "expo.modules.audio-58.0.
|
|
141
|
-
"url": "expo.modules.audio-58.0.
|
|
142
|
-
"size":
|
|
143
|
-
"sha512": "
|
|
144
|
-
"sha256": "
|
|
145
|
-
"sha1": "
|
|
146
|
-
"md5": "
|
|
140
|
+
"name": "expo.modules.audio-58.0.6.aar",
|
|
141
|
+
"url": "expo.modules.audio-58.0.6.aar",
|
|
142
|
+
"size": 560911,
|
|
143
|
+
"sha512": "a5561246f985399aacbc1973743d782fdb42eade03470bee92eacfb77be5a67157f2b87e96f5004c16b65c146af341a9aa2ed90ca7b7129aca4224f161f0f98f",
|
|
144
|
+
"sha256": "66ef223a729dc25795eb8a2ac81f772110be7331bcb8201858a53dce2d5be054",
|
|
145
|
+
"sha1": "a67bfef57451d3cdbf9593b42736336fa342fec6",
|
|
146
|
+
"md5": "8f4b5ebe1aaa3a88feb8d7e2d5ee1191"
|
|
147
147
|
}
|
|
148
148
|
]
|
|
149
149
|
},
|
|
@@ -157,13 +157,13 @@
|
|
|
157
157
|
},
|
|
158
158
|
"files": [
|
|
159
159
|
{
|
|
160
|
-
"name": "expo.modules.audio-58.0.
|
|
161
|
-
"url": "expo.modules.audio-58.0.
|
|
162
|
-
"size":
|
|
163
|
-
"sha512": "
|
|
164
|
-
"sha256": "
|
|
165
|
-
"sha1": "
|
|
166
|
-
"md5": "
|
|
160
|
+
"name": "expo.modules.audio-58.0.6-sources.jar",
|
|
161
|
+
"url": "expo.modules.audio-58.0.6-sources.jar",
|
|
162
|
+
"size": 43154,
|
|
163
|
+
"sha512": "e7dd160ec6dde30682c7e7001d944f703baa815825c685bc098757fa3f7a2a05db2aae5b95bb12eca2733d4d3867cd3b9321640e88683c2e0b0fc4f4855357c7",
|
|
164
|
+
"sha256": "4a9c9fa744bae7346ceae6c312ed030bb16584e9d1e66473ebb84219a7ca3875",
|
|
165
|
+
"sha1": "b025140d2c4d4afec6ff2177e5b11c3a65cf32b8",
|
|
166
|
+
"md5": "83cf708677405e262c8c9b113888d179"
|
|
167
167
|
}
|
|
168
168
|
]
|
|
169
169
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
065846f3a03ec60a018067f29f1a0a90
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3be8d4d610e8fc0be0a60b78a5a88e9ef780c2b0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d238ebe08a1acfb1e1063631b1294e755e2cca72712ce0f0feb03f8bd679aa43
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8ee748f545e08acb280b4bdec8a0d1347a134a03691d2ab568d5c9599733c0c9f1082302c39a1519fd8629fa1fe59520b592ec4fd0ae031067cf9c6e9afea9ea
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<modelVersion>4.0.0</modelVersion>
|
|
10
10
|
<groupId>expo.modules.audio</groupId>
|
|
11
11
|
<artifactId>expo.modules.audio</artifactId>
|
|
12
|
-
<version>58.0.
|
|
12
|
+
<version>58.0.6</version>
|
|
13
13
|
<packaging>aar</packaging>
|
|
14
14
|
<name>expo.modules.audio</name>
|
|
15
15
|
<url>https://github.com/expo/expo</url>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
eead1b965ee5b0ec58048ebad728cd7b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a343a5516cd5affb9e2769eea981c20ba9842f12
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
f4958b4616edd823a50ba07a97e253df89049a7a96d9def18be329b8dc3f1687
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
208812c172f0ca180d04bf00e1d9e8437b5e1eee5b474afb8cc51f3be64921f2a649f45cc40d6cfb102e8945ee18c64fb077232f869623045c804915d35df07b
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-audio",
|
|
3
|
-
"version": "58.0.
|
|
3
|
+
"version": "58.0.6",
|
|
4
4
|
"description": "A cross-platform audio library for React Native and Expo apps.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"android",
|
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
"main": "build/index.js",
|
|
23
23
|
"types": "build/index.d.ts",
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@types/jest": "^
|
|
25
|
+
"@types/jest": "^30.0.0",
|
|
26
26
|
"@types/node": "^22.14.0",
|
|
27
27
|
"@types/react": "~19.3.0",
|
|
28
|
-
"expo": "58.0.
|
|
29
|
-
"expo-asset": "58.0.
|
|
30
|
-
"expo-module-scripts": "56.0.
|
|
28
|
+
"expo": "58.0.4",
|
|
29
|
+
"expo-asset": "58.0.12",
|
|
30
|
+
"expo-module-scripts": "56.0.7"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"expo": "*",
|
|
@@ -35,6 +35,9 @@
|
|
|
35
35
|
"react": "*",
|
|
36
36
|
"react-native": "*"
|
|
37
37
|
},
|
|
38
|
+
"jest": {
|
|
39
|
+
"preset": "expo-module-scripts"
|
|
40
|
+
},
|
|
38
41
|
"title": "Expo Audio",
|
|
39
42
|
"scripts": {
|
|
40
43
|
"precompile-android": "et prebuild-android-package-for-publish",
|
|
@@ -43,6 +46,7 @@
|
|
|
43
46
|
"build:plugin": "expo-build --base plugin cjs:src",
|
|
44
47
|
"clean": "expo-module clean",
|
|
45
48
|
"lint": "oxlint --config oxlint.config.mjs .",
|
|
49
|
+
"test": "jest",
|
|
46
50
|
"format": "expo-module format",
|
|
47
51
|
"depscheck": "expo-module depscheck",
|
|
48
52
|
"typecheck": "tsc -b tsconfig.all.json"
|
package/src/AudioPlayer.web.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
getAudioContext,
|
|
14
14
|
getSourceUri,
|
|
15
15
|
getStatusFromMedia,
|
|
16
|
+
isPlayInterrupted,
|
|
16
17
|
nextId,
|
|
17
18
|
preloadCache,
|
|
18
19
|
safeDuration,
|
|
@@ -124,7 +125,19 @@ export class AudioPlayerWeb
|
|
|
124
125
|
if (!isAudioActive) {
|
|
125
126
|
return;
|
|
126
127
|
}
|
|
127
|
-
this.media
|
|
128
|
+
const media = this.media;
|
|
129
|
+
media.play().catch((error) => {
|
|
130
|
+
if (isPlayInterrupted(error) || media !== this.media) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
this.isPlaying = false;
|
|
134
|
+
this.stopSampling();
|
|
135
|
+
this.emit(PLAYBACK_STATUS_UPDATE, {
|
|
136
|
+
...getStatusFromMedia(media, this.id),
|
|
137
|
+
playing: false,
|
|
138
|
+
error: error?.message ?? String(error),
|
|
139
|
+
});
|
|
140
|
+
});
|
|
128
141
|
this.isPlaying = true;
|
|
129
142
|
this.startSampling();
|
|
130
143
|
}
|
package/src/AudioPlaylist.web.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type {
|
|
|
8
8
|
import type { AudioLockScreenOptions } from './AudioConstants';
|
|
9
9
|
import { PLAYLIST_STATUS_UPDATE, TRACK_CHANGED } from './AudioEventKeys';
|
|
10
10
|
import type { AudioPlaylist, AudioPlaylistEvents } from './AudioModule.types';
|
|
11
|
-
import { getSourceUri, nextId } from './AudioUtils.web';
|
|
11
|
+
import { getSourceUri, isPlayInterrupted, nextId } from './AudioUtils.web';
|
|
12
12
|
import { mediaSessionController } from './MediaSessionController.web';
|
|
13
13
|
import { resolveSource } from './utils/resolveSource';
|
|
14
14
|
|
|
@@ -152,7 +152,7 @@ export class AudioPlaylistWeb
|
|
|
152
152
|
if (!this._currentMedia || this._sources.length === 0) {
|
|
153
153
|
return;
|
|
154
154
|
}
|
|
155
|
-
this.
|
|
155
|
+
this._playCurrentMedia();
|
|
156
156
|
this._isPlaying = true;
|
|
157
157
|
}
|
|
158
158
|
|
|
@@ -278,7 +278,7 @@ export class AudioPlaylistWeb
|
|
|
278
278
|
if (source) {
|
|
279
279
|
this._currentMedia = this._createMediaElement(source);
|
|
280
280
|
if (wasPlaying) {
|
|
281
|
-
this.
|
|
281
|
+
this._playCurrentMedia();
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
this._preloadNext();
|
|
@@ -359,7 +359,7 @@ export class AudioPlaylistWeb
|
|
|
359
359
|
}
|
|
360
360
|
|
|
361
361
|
if (this._currentMedia && wasPlaying) {
|
|
362
|
-
this.
|
|
362
|
+
this._playCurrentMedia();
|
|
363
363
|
this._isPlaying = true;
|
|
364
364
|
}
|
|
365
365
|
|
|
@@ -521,7 +521,7 @@ export class AudioPlaylistWeb
|
|
|
521
521
|
if (this._loopMode === 'single') {
|
|
522
522
|
if (this._currentMedia) {
|
|
523
523
|
this._currentMedia.currentTime = 0;
|
|
524
|
-
this.
|
|
524
|
+
this._playCurrentMedia();
|
|
525
525
|
}
|
|
526
526
|
return;
|
|
527
527
|
}
|
|
@@ -544,6 +544,17 @@ export class AudioPlaylistWeb
|
|
|
544
544
|
}
|
|
545
545
|
}
|
|
546
546
|
|
|
547
|
+
private _playCurrentMedia(): void {
|
|
548
|
+
const media = this._currentMedia;
|
|
549
|
+
media?.play().catch((error) => {
|
|
550
|
+
if (isPlayInterrupted(error) || media !== this._currentMedia) {
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
553
|
+
this._isPlaying = false;
|
|
554
|
+
this._emitStatus();
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
|
|
547
558
|
private _getStatus(): AudioPlaylistStatus {
|
|
548
559
|
return {
|
|
549
560
|
id: this.id,
|
package/src/AudioUtils.web.ts
CHANGED
|
@@ -50,6 +50,11 @@ export function safeDuration(duration: number): number {
|
|
|
50
50
|
return isNaN(duration) || !isFinite(duration) ? 0 : duration;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
// `play()` rejects with an `AbortError` when `pause()` or a new source interrupts it, which is not a failure.
|
|
54
|
+
export function isPlayInterrupted(error: unknown): boolean {
|
|
55
|
+
return error instanceof DOMException && error.name === 'AbortError';
|
|
56
|
+
}
|
|
57
|
+
|
|
53
58
|
export function getStatusFromMedia(media: HTMLMediaElement, id: string): AudioStatus {
|
|
54
59
|
const isPlaying = !!(
|
|
55
60
|
media.currentTime > 0 &&
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
d35f8337cadbb8f86ff1171e41ad9d5f
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
449174b8832846258619989167d246fd963d015d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b9a922c1e17423223501c1f3387d7719f6fae5cd9555b861931c948af389e891
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6b52b2086aaa77e0c85829d33c244fc628004d9826eff8170fcc7bee594583e0ca63141233401eb034b101d9c24c605d86079ed9ee2abdfda1ee93929586e9a0
|
package/local-maven-repo/expo/modules/audio/expo.modules.audio/58.0.4/expo.modules.audio-58.0.4.aar
DELETED
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
d333307c9a865618efe34cad33089160
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2a51da42795e2957fbe1d1eb650010d66125cf92
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0c0ed2cf6c37a869edbcfc37199ef6bfd777023df6f61b7ceb70f3a2d15cf646
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
d4b63688a2ed10c3f1fe4192ed93dc10be270a38c726808f283042c6beeafb2065684b81722fd82f13c8fa586ae6f9f475998388b93ab5ad56523e645a1a1df0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
618a8253ff0eebd895d2acd4a6405dc3
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
fdc8ae0af09692c07d215bc7f7889813671424df
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
decd83e81a4bef0a035c67a9e8fd9981114e02611a315293838a8f35c6486beb
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
bb910e6f53e77c6cb5c40c6d98d27486ef68c68ae635e5853bd7205d0137822e4f6736e0b0eca3516ad737d049a0acfdbcc21d9cd54fe2eda00b982e0c2d17e6
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1411e0eac9181f2143f339a5e0926d26
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3553c6a7ac54616659753c4f03d7d3783b1908a3
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
5e376957cfba5b72e87cb249b3778a698cb139ceaf6ef5a6fc1dd75f7f3505f4
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
a07ea293fb89b12a185465fdc1352423c2d0045c534b9f2ee2ffbff585791103e4c3c709fa211c462c65a73515d678a85fb4a2e12838e86121939494e509a1fe
|