expo-libvlc-player 2.0.1 → 2.0.3
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/android/build.gradle
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
apply plugin: "com.android.library"
|
|
2
2
|
|
|
3
3
|
group = "expo.modules.libvlcplayer"
|
|
4
|
-
version = "2.0.
|
|
4
|
+
version = "2.0.3"
|
|
5
5
|
|
|
6
6
|
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
|
|
7
7
|
apply from: expoModulesCorePlugin
|
|
@@ -27,7 +27,7 @@ android {
|
|
|
27
27
|
namespace "expo.modules.libvlcplayer"
|
|
28
28
|
defaultConfig {
|
|
29
29
|
versionCode 1
|
|
30
|
-
versionName "2.0.
|
|
30
|
+
versionName "2.0.3"
|
|
31
31
|
consumerProguardFiles("proguard-rules.pro")
|
|
32
32
|
}
|
|
33
33
|
lintOptions {
|
|
@@ -151,7 +151,7 @@ class AudioFocusManager(
|
|
|
151
151
|
pausePlayerIfUnmuted(player)
|
|
152
152
|
} else {
|
|
153
153
|
val volume = player.getVolume() / 20
|
|
154
|
-
view.
|
|
154
|
+
view.oldVolume = volume
|
|
155
155
|
player.setVolume(volume)
|
|
156
156
|
}
|
|
157
157
|
}
|
|
@@ -166,7 +166,7 @@ class AudioFocusManager(
|
|
|
166
166
|
playerView.get()?.let { view ->
|
|
167
167
|
view.mediaPlayer?.let { player ->
|
|
168
168
|
if (player.getVolume() > MIN_PLAYER_VOLUME) {
|
|
169
|
-
player.setVolume(view.
|
|
169
|
+
player.setVolume(view.oldVolume)
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
}
|
|
@@ -38,11 +38,11 @@ class LibVlcPlayerView(
|
|
|
38
38
|
|
|
39
39
|
private var libVLC: LibVLC? = null
|
|
40
40
|
internal var mediaPlayer: MediaPlayer? = null
|
|
41
|
-
|
|
41
|
+
private var media: Media? = null
|
|
42
42
|
private var shouldCreate: Boolean = false
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
internal var
|
|
44
|
+
private var mediaLength: Long = 0L
|
|
45
|
+
internal var oldVolume: Int = MAX_PLAYER_VOLUME
|
|
46
46
|
internal var firstPlay: Boolean = false
|
|
47
47
|
|
|
48
48
|
internal val onBuffering by EventDispatcher()
|
|
@@ -58,6 +58,8 @@ class LibVlcPlayerView(
|
|
|
58
58
|
|
|
59
59
|
init {
|
|
60
60
|
MediaPlayerManager.registerPlayerView(this)
|
|
61
|
+
|
|
62
|
+
addPlayerView()
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
override fun onAttachedToWindow() {
|
|
@@ -101,13 +103,21 @@ class LibVlcPlayerView(
|
|
|
101
103
|
firstPlay = true
|
|
102
104
|
}
|
|
103
105
|
|
|
106
|
+
fun addPlayerView() {
|
|
107
|
+
val parent = playerView.getParent()
|
|
108
|
+
|
|
109
|
+
if (parent == null) {
|
|
110
|
+
addView(playerView)
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
104
114
|
fun attachPlayer() {
|
|
105
115
|
mediaPlayer?.let { player ->
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
116
|
+
addPlayerView()
|
|
117
|
+
|
|
118
|
+
val attached = player.getVLCVout().areViewsAttached()
|
|
109
119
|
|
|
110
|
-
if (!
|
|
120
|
+
if (!attached) {
|
|
111
121
|
player.attachViews(playerView, DISPLAY_MANAGER, ENABLE_SUBTITLES, USE_TEXTURE_VIEW)
|
|
112
122
|
}
|
|
113
123
|
}
|
|
@@ -119,7 +129,6 @@ class LibVlcPlayerView(
|
|
|
119
129
|
}
|
|
120
130
|
|
|
121
131
|
fun destroyPlayer() {
|
|
122
|
-
media?.release()
|
|
123
132
|
media = null
|
|
124
133
|
mediaPlayer?.release()
|
|
125
134
|
mediaPlayer = null
|
|
@@ -276,7 +285,7 @@ class LibVlcPlayerView(
|
|
|
276
285
|
}
|
|
277
286
|
}
|
|
278
287
|
|
|
279
|
-
var options: ArrayList<String> = ArrayList
|
|
288
|
+
var options: ArrayList<String> = ArrayList()
|
|
280
289
|
set(value) {
|
|
281
290
|
val old = field
|
|
282
291
|
field = value
|
|
@@ -292,12 +301,13 @@ class LibVlcPlayerView(
|
|
|
292
301
|
setPlayerTracks()
|
|
293
302
|
}
|
|
294
303
|
|
|
295
|
-
var slaves: ArrayList<Slave> = ArrayList
|
|
304
|
+
var slaves: ArrayList<Slave> = ArrayList()
|
|
296
305
|
set(value) {
|
|
297
|
-
val
|
|
298
|
-
|
|
306
|
+
val newSlaves = value.filter { it !in field }
|
|
307
|
+
|
|
308
|
+
field = field.apply { addAll(newSlaves) }
|
|
299
309
|
|
|
300
|
-
if (
|
|
310
|
+
if (!newSlaves.isEmpty()) {
|
|
301
311
|
addPlayerSlaves()
|
|
302
312
|
}
|
|
303
313
|
}
|
|
@@ -332,7 +342,7 @@ class LibVlcPlayerView(
|
|
|
332
342
|
}
|
|
333
343
|
|
|
334
344
|
val newVolume = value.coerceIn(MIN_PLAYER_VOLUME, MAX_PLAYER_VOLUME)
|
|
335
|
-
|
|
345
|
+
oldVolume = newVolume
|
|
336
346
|
|
|
337
347
|
mediaPlayer?.let { player ->
|
|
338
348
|
if (player.getVolume() > MIN_PLAYER_VOLUME) {
|
|
@@ -354,7 +364,7 @@ class LibVlcPlayerView(
|
|
|
354
364
|
if (value) {
|
|
355
365
|
MIN_PLAYER_VOLUME
|
|
356
366
|
} else {
|
|
357
|
-
|
|
367
|
+
oldVolume
|
|
358
368
|
}
|
|
359
369
|
|
|
360
370
|
mediaPlayer?.setVolume(newVolume)
|
|
@@ -408,7 +418,7 @@ class LibVlcPlayerView(
|
|
|
408
418
|
}
|
|
409
419
|
}
|
|
410
420
|
|
|
411
|
-
|
|
421
|
+
private fun ArrayList<String>.hasAudioOption(): Boolean {
|
|
412
422
|
val options =
|
|
413
423
|
setOf(
|
|
414
424
|
"--no-audio",
|
|
@@ -17,7 +17,7 @@ class LibVlcPlayerView: ExpoView {
|
|
|
17
17
|
private var shouldCreate: Bool = false
|
|
18
18
|
|
|
19
19
|
var mediaLength: Int32 = 0
|
|
20
|
-
private var
|
|
20
|
+
private var oldVolume: Int = maxPlayerVolume
|
|
21
21
|
var firstPlay: Bool = false
|
|
22
22
|
|
|
23
23
|
let onBuffering = EventDispatcher()
|
|
@@ -80,6 +80,8 @@ class LibVlcPlayerView: ExpoView {
|
|
|
80
80
|
|
|
81
81
|
func destroyPlayer() {
|
|
82
82
|
mediaPlayer?.media = nil
|
|
83
|
+
mediaPlayer?.delegate = nil
|
|
84
|
+
mediaPlayer?.drawable = nil
|
|
83
85
|
mediaPlayer = nil
|
|
84
86
|
}
|
|
85
87
|
|
|
@@ -245,9 +247,16 @@ class LibVlcPlayerView: ExpoView {
|
|
|
245
247
|
}
|
|
246
248
|
}
|
|
247
249
|
|
|
248
|
-
var
|
|
249
|
-
|
|
250
|
-
|
|
250
|
+
private var _slaves: [Slave] = .init()
|
|
251
|
+
|
|
252
|
+
var slaves: [Slave] {
|
|
253
|
+
get { _slaves }
|
|
254
|
+
set {
|
|
255
|
+
let newSlaves = newValue.filter { !_slaves.contains($0) }
|
|
256
|
+
|
|
257
|
+
_slaves += newSlaves
|
|
258
|
+
|
|
259
|
+
if !newSlaves.isEmpty {
|
|
251
260
|
addPlayerSlaves()
|
|
252
261
|
}
|
|
253
262
|
}
|
|
@@ -288,7 +297,7 @@ class LibVlcPlayerView: ExpoView {
|
|
|
288
297
|
}
|
|
289
298
|
|
|
290
299
|
let newVolume = max(minPlayerVolume, min(maxPlayerVolume, volume))
|
|
291
|
-
|
|
300
|
+
oldVolume = newVolume
|
|
292
301
|
|
|
293
302
|
if let player = mediaPlayer, let audio = player.audio {
|
|
294
303
|
if audio.volume > minPlayerVolume {
|
|
@@ -307,7 +316,7 @@ class LibVlcPlayerView: ExpoView {
|
|
|
307
316
|
|
|
308
317
|
let newVolume = mute ?
|
|
309
318
|
minPlayerVolume :
|
|
310
|
-
|
|
319
|
+
oldVolume
|
|
311
320
|
|
|
312
321
|
mediaPlayer?.audio?.volume = Int32(newVolume)
|
|
313
322
|
MediaPlayerManager.shared.setAppropriateAudioSession()
|
|
@@ -361,7 +370,7 @@ class LibVlcPlayerView: ExpoView {
|
|
|
361
370
|
}
|
|
362
371
|
}
|
|
363
372
|
|
|
364
|
-
extension Array where Element == String {
|
|
373
|
+
private extension Array where Element == String {
|
|
365
374
|
func hasAudioOption() -> Bool {
|
|
366
375
|
let options: Set<String> = [
|
|
367
376
|
"--no-audio", "-no-audio", ":no-audio",
|