@24i/smartapps-bigscreen-rnv-build-engine 0.17.27-alpha.2774 → 0.17.27-alpha.2782

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.
@@ -85,7 +85,7 @@ android {
85
85
  }
86
86
 
87
87
  dependencies {
88
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
88
+ coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
89
89
 
90
90
  implementation fileTree(include: ['*.jar'], dir: 'libs')
91
91
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
@@ -97,20 +97,20 @@ dependencies {
97
97
  implementation "androidx.appcompat:appcompat:1.7.0"
98
98
  implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
99
99
 
100
- implementation "com.google.dagger:dagger:2.48.1"
101
- kapt "com.google.dagger:dagger-compiler:2.48.1"
100
+ implementation "com.google.dagger:dagger:2.56.1"
101
+ kapt "com.google.dagger:dagger-compiler:2.56.1"
102
102
 
103
103
  implementation "com.squareup.retrofit2:retrofit:2.9.0"
104
104
  implementation "com.squareup.retrofit2:converter-gson:2.9.0"
105
- implementation "com.squareup.okhttp3:logging-interceptor:4.9.2"
106
- implementation "com.squareup.okhttp3:okhttp:4.9.2"
105
+ implementation "com.squareup.okhttp3:logging-interceptor:4.12.0"
106
+ implementation "com.squareup.okhttp3:okhttp:4.12.0"
107
107
  if (useTheoPlayer) {
108
- compileOnly "com.twentyfouri.player:exoplayer:0.8.0-alpha.15"
109
- implementation "com.twentyfouri.player:theoplayer:0.8.0-alpha.15"
108
+ compileOnly "com.twentyfouri.player:exoplayer:0.8.0-alpha.18"
109
+ implementation "com.twentyfouri.player:theoplayer:0.8.0-alpha.18"
110
110
  implementation "com.theoplayer.theoplayer-sdk-android:core:8.2.0"
111
111
  } else {
112
- implementation "com.twentyfouri.player:exoplayer:0.8.0-alpha.15"
113
- compileOnly "com.twentyfouri.player:theoplayer:0.8.0-alpha.15"
112
+ implementation "com.twentyfouri.player:exoplayer:0.8.0-alpha.18"
113
+ compileOnly "com.twentyfouri.player:theoplayer:0.8.0-alpha.18"
114
114
  compileOnly "com.theoplayer.theoplayer-sdk-android:core:8.2.0"
115
115
  }
116
116
 
@@ -130,4 +130,3 @@ dependencies {
130
130
 
131
131
  implementation project(':common')
132
132
  }
133
-
@@ -59,9 +59,9 @@ class BridgeToJavaScript(
59
59
  textTracks: List<TextTrack>
60
60
  ) {
61
61
  val tracksJson = toJson(audioTracks, textTracks)
62
- Log.d(LOG_TAG, tracksJson)
62
+ Log.d(LOG_TAG, "bridgeAndroidToJavaScript_MediaTrackEvent $tracksJson")
63
63
  val mediaEventString = "javascript:((function dispatchEvent(){var evt = document.createEvent('Events');evt.initEvent('$mediaEventPrefix$mediaEvent',true,true);evt.tracks='$tracksJson';document.dispatchEvent(evt);})())"
64
- Log.v(LOG_TAG, mediaEventString)
64
+ Log.v(LOG_TAG, "bridgeAndroidToJavaScript_MediaTrackEvent $mediaEventString")
65
65
  executeJavaScript(mediaEventString)
66
66
  }
67
67
 
@@ -74,8 +74,8 @@ class BridgeToJavaScript(
74
74
  val adBreakJson = adBreak?.let { serializer.toPersistentMap(it).toString() } ?: ""
75
75
  val adJson = ad?.let { serializer.toPersistentMap(it).toString() } ?: ""
76
76
 
77
- val mediaEventString = "javascript:((function dispatchEvent(){var evt = document.createEvent('Events');evt.initEvent('$mediaEventPrefix$mediaEvent',true,true);evt.adbreak='$adBreakJson';evt.adbreak='$adJson';document.dispatchEvent(evt);})())"
78
- Log.v(LOG_TAG, mediaEventString)
77
+ val mediaEventString = "javascript:((function dispatchEvent(){var evt = document.createEvent('Events');evt.initEvent('$mediaEventPrefix$mediaEvent',true,true);evt.adbreak='$adBreakJson';evt.ad='$adJson';document.dispatchEvent(evt);})())"
78
+ Log.v(LOG_TAG, "bridgeAndroidToJavaScript_MediaAdEvent $mediaEventString")
79
79
  executeJavaScript(mediaEventString)
80
80
  }
81
81
 
@@ -87,7 +87,7 @@ class BridgeToJavaScript(
87
87
  val adsJson = JSONArray(timeline.map { serializer.toPersistentMap(it) }).toString()
88
88
 
89
89
  val mediaEventString = "javascript:((function dispatchEvent(){var evt = document.createEvent('Events');evt.initEvent('$mediaEventPrefix$mediaEvent',true,true);evt.ads='$adsJson';document.dispatchEvent(evt);})())"
90
- Log.v(LOG_TAG, mediaEventString)
90
+ Log.v(LOG_TAG, "bridgeAndroidToJavaScript_MediaAdEvent $mediaEventString")
91
91
  executeJavaScript(mediaEventString)
92
92
  }
93
93
 
@@ -22,8 +22,9 @@ object MediaEventType {
22
22
  const val TRACKS_CHANGED = "trackschanged"
23
23
  const val AD_BREAK_START = "adbreakbegin"
24
24
  const val AD_BREAK_END = "adbreakend"
25
- const val AD_BREAKS_RESCHEDULED = "admetadata"
25
+ const val AD_BREAKS_RESCHEDULED = "adcuepointschanged"
26
26
  const val AD_STARTED = "adbegin"
27
+ const val AD_ENDED = "adend"
27
28
  const val AD_ERROR = "aderror"
28
29
  const val AD_SKIPPED = "adskip"
29
30
  }
@@ -17,11 +17,9 @@ import android.view.inputmethod.InputMethodManager
17
17
  import android.widget.RelativeLayout
18
18
  import android.widget.Toast
19
19
  import androidx.appcompat.app.AppCompatActivity
20
- import androidx.databinding.DataBindingUtil
21
20
  import androidx.media.AudioAttributesCompat
22
21
  import androidx.media.AudioFocusRequestCompat
23
22
  import androidx.media.AudioManagerCompat
24
- import com.twentyfouri.tvbridge.R
25
23
  import com.twentyfouri.tvbridge.configuration.BridgeConfig
26
24
  import com.twentyfouri.tvbridge.databinding.ActivityWebViewBinding
27
25
  import com.twentyfouri.tvbridge.global.BaseApplication
@@ -59,6 +59,8 @@ class WebViewModel @Inject constructor(
59
59
 
60
60
  private var source: Source? = null
61
61
 
62
+ private var adStarted: Boolean = false
63
+
62
64
  val audioTrack: AudioTrack?
63
65
  get() = player?.selectedAudioTrack
64
66
  val subtitleTrack: TextTrack?
@@ -283,68 +285,136 @@ class WebViewModel @Inject constructor(
283
285
  when (event) {
284
286
  is ErrorEvent -> {
285
287
  Log.e("AndroidPlayer", "Player error", event.error)
286
- jsBridge.bridgeAndroidToJavaScript_ErrorEvent(MediaEventType.ERROR, "${event.error.message} - ${event.error.nativeCode}")
288
+ jsBridge.bridgeAndroidToJavaScript_ErrorEvent(
289
+ MediaEventType.ERROR,
290
+ "${event.error.message} - ${event.error.nativeCode}"
291
+ )
287
292
  stopPlayer()
288
293
  }
294
+
289
295
  is LoadedMetadataEvent -> {
290
296
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.LOADEDMETADATA)
291
- jsBridge.bridgeAndroidToJavaScript_MediaTrackEvent(MediaEventType.TRACKS_CHANGED, player.audioTracks, player.textTracks)
297
+ jsBridge.bridgeAndroidToJavaScript_MediaTrackEvent(
298
+ MediaEventType.TRACKS_CHANGED,
299
+ player.audioTracks,
300
+ player.textTracks
301
+ )
292
302
  }
303
+
293
304
  is LoadedDataEvent -> {
294
305
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.LOADEDDATA)
295
306
  }
307
+
296
308
  is CanPlayEvent -> {
297
309
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.CANPLAY)
298
310
  }
311
+
299
312
  is EndedEvent -> {
300
313
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.ENDED)
301
314
  }
315
+
302
316
  is WaitingEvent -> {
303
317
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.WAITING)
304
318
  }
319
+
305
320
  is PlayingEvent -> {
306
321
  view?.setBlackCurtainVisibility(View.GONE)
307
322
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.PLAYING)
308
323
  }
324
+
309
325
  is SeekingEvent -> {
310
326
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.SEEKING)
311
327
  }
328
+
312
329
  is SeekedEvent -> {
313
330
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.SEEKED)
314
331
  }
332
+
315
333
  is TimeUpdateEvent -> {
316
334
  if (player.playing) {
317
335
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.TIME_UPDATE)
318
336
  }
319
337
  }
338
+
320
339
  is PauseEvent -> {
321
340
  if (!player.playing) {
322
341
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.PAUSE)
323
342
  }
324
343
  }
344
+
325
345
  is AddAudioTrackEvent, is AddTextTrackEvent,
326
346
  is RemoveAudioTrackEvent, is RemoveTextTrackEvent,
327
347
  is ChangeAudioTrackEvent, is ChangeTextTrackEvent -> {
328
348
  Log.d("WebViewModel", "onTrackschanged: audio=$audioTrack subtitle=$subtitleTrack")
329
- jsBridge.bridgeAndroidToJavaScript_MediaTrackEvent(MediaEventType.TRACKS_CHANGED, player.audioTracks, player.textTracks)
349
+ jsBridge.bridgeAndroidToJavaScript_MediaTrackEvent(
350
+ MediaEventType.TRACKS_CHANGED,
351
+ player.audioTracks,
352
+ player.textTracks
353
+ )
330
354
  }
355
+
331
356
  is AdBreaksRescheduledEvent -> {
332
- jsBridge.bridgeAndroidToJavaScript_MediaAdBreaksEvent(MediaEventType.AD_BREAKS_RESCHEDULED, player.timeline)
357
+ jsBridge.bridgeAndroidToJavaScript_MediaAdBreaksEvent(
358
+ MediaEventType.AD_BREAKS_RESCHEDULED,
359
+ player.timeline
360
+ )
333
361
  }
362
+
334
363
  is AdBreakStartedEvent -> {
335
- jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(MediaEventType.AD_BREAK_START, player.currentAdBreak, player.currentAd)
364
+ jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(
365
+ MediaEventType.AD_BREAK_START,
366
+ player.currentAdBreak,
367
+ player.currentAd
368
+ )
336
369
  }
370
+
337
371
  is AdBreakEndedEvent -> {
338
- jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(MediaEventType.AD_BREAK_END, player.currentAdBreak, player.currentAd)
372
+ if (adStarted) {
373
+ jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(
374
+ MediaEventType.AD_ENDED,
375
+ player.currentAdBreak,
376
+ null
377
+ )
378
+ }
379
+ adStarted = false
380
+ jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(
381
+ MediaEventType.AD_BREAK_END,
382
+ player.currentAdBreak,
383
+ player.currentAd
384
+ )
339
385
  }
386
+
340
387
  is AdStartedEvent -> {
341
- jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(MediaEventType.AD_STARTED, player.currentAdBreak, player.currentAd)
388
+ if (adStarted) {
389
+ jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(
390
+ MediaEventType.AD_ENDED,
391
+ player.currentAdBreak,
392
+ null
393
+ )
394
+ } else {
395
+ adStarted = true
396
+ }
397
+ jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(
398
+ MediaEventType.AD_STARTED,
399
+ player.currentAdBreak,
400
+ player.currentAd
401
+ )
342
402
  }
403
+
343
404
  is AdErrorEvent -> {
344
- jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(MediaEventType.AD_ERROR, player.currentAdBreak, player.currentAd)
405
+ jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(
406
+ MediaEventType.AD_ERROR,
407
+ player.currentAdBreak,
408
+ player.currentAd
409
+ )
345
410
  }
411
+
346
412
  is AdSkippedEvent -> {
347
- jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(MediaEventType.AD_SKIPPED, player.currentAdBreak, player.currentAd)
413
+ jsBridge.bridgeAndroidToJavaScript_MediaAdEvent(
414
+ MediaEventType.AD_SKIPPED,
415
+ player.currentAdBreak,
416
+ player.currentAd
417
+ )
348
418
  }
349
419
  }
350
420
  }
@@ -1,12 +1,12 @@
1
1
  buildscript {
2
- ext.kotlin_version = '1.9.22'
2
+ ext.kotlin_version = '2.1.20'
3
3
 
4
4
  repositories {
5
5
  google()
6
6
  mavenCentral()
7
7
  }
8
8
  dependencies {
9
- classpath 'com.android.tools.build:gradle:8.5.1'
9
+ classpath 'com.android.tools.build:gradle:8.9.1'
10
10
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11
11
  classpath 'com.google.gms:google-services:4.4.2'
12
12
  classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2'
@@ -1,6 +1,6 @@
1
- #Thu Jun 02 10:20:44 CEST 2022
1
+ #Tue Apr 08 16:51:49 CEST 2025
2
2
  distributionBase=GRADLE_USER_HOME
3
- distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
4
3
  distributionPath=wrapper/dists
5
- zipStorePath=wrapper/dists
4
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
6
5
  zipStoreBase=GRADLE_USER_HOME
6
+ zipStorePath=wrapper/dists
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@24i/smartapps-bigscreen-rnv-build-engine",
3
- "version": "0.17.27-alpha.2774",
3
+ "version": "0.17.27-alpha.2782",
4
4
  "description": "Package with build engine for SmartApps BIGscreen projects...",
5
5
  "main": "dist/src/index.js",
6
6
  "scripts": {