@24i/smartapps-bigscreen-rnv-build-engine 0.17.2-alpha.2167 → 0.17.2
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/dist/src/resolvers/index.js +1 -3
- package/dist/src/resolvers/resolveBuildFileName.js +27 -3
- package/dist/src/sdks/index.js +1 -5
- package/dist/src/sdks/sdk-utils/sdk-installer/services/unzip.js +2 -3
- package/dist/src/tasks/task.rnv.build.js +1 -3
- package/dist/src/tasks/task.rnv.configure.js +1 -3
- package/dist/src/tasks/task.rnv.platform.configure.js +1 -4
- package/package.json +2 -3
- package/dist/src/resolvers/resolveBuildFileBaseName.js +0 -34
- package/dist/src/sdks/sdk-androidtv/index.js +0 -17
- package/dist/src/sdks/sdk-androidtv/sdkAndroidtv.js +0 -240
- package/dist/templates/platforms/androidtv/project/README.md +0 -198
- package/dist/templates/platforms/androidtv/project/amazoniap/build.gradle +0 -37
- package/dist/templates/platforms/androidtv/project/amazoniap/consumer-rules.pro +0 -0
- package/dist/templates/platforms/androidtv/project/amazoniap/libs/in-app-purchasing-2.0.76.jar +0 -0
- package/dist/templates/platforms/androidtv/project/amazoniap/proguard-rules.pro +0 -21
- package/dist/templates/platforms/androidtv/project/amazoniap/src/main/AndroidManifest.xml +0 -4
- package/dist/templates/platforms/androidtv/project/amazoniap/src/main/java/com/twentyfouri/bridgetv/amazoniap/AmazonIapSevice.kt +0 -106
- package/dist/templates/platforms/androidtv/project/app/build.gradle +0 -402
- package/dist/templates/platforms/androidtv/project/app/proguard-rules.pro +0 -32
- package/dist/templates/platforms/androidtv/project/app/src/alhurra/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/alhurra/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/alhurra/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/alhurra/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/alhurra/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/alhurra/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/alhurra/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/alhurra/res/raw/configuration.json +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/androidTest/assets/getStatusSuccesfulResponse.json +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/androidTest/assets/tokenFromPassword_200.json +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/androidTest/java/com/ngsn/tv/RestServiceTestHelper.java +0 -34
- package/dist/templates/platforms/androidtv/project/app/src/androidTest/java/com/ngsn/tv/WebViewActivityTest.java +0 -104
- package/dist/templates/platforms/androidtv/project/app/src/androidTest/java/com/twentyfouri/tvbridge/SignTest.kt +0 -54
- package/dist/templates/platforms/androidtv/project/app/src/androidTest/java/com/twentyfouri/tvbridge/amazonIAP/AmazonIAPManagerTest.java +0 -74
- package/dist/templates/platforms/androidtv/project/app/src/androidTest/java/com/twentyfouri/tvbridge/amazonIAP/SinclairTestRunner.java +0 -22
- package/dist/templates/platforms/androidtv/project/app/src/androidTest/java/com/twentyfouri/tvbridge/webview/ui/model/BridgeWebViewTest.java +0 -50
- package/dist/templates/platforms/androidtv/project/app/src/bbg/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/bbg/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bbg/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bbg/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bbg/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bbg/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bbg/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bbg/res/raw/configuration.json +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/raw/configuration.json +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/broadwayhd/java/com/twentyfouri/tvbridge/Flavor.kt +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/broadwayhd/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/broadwayhd/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/broadwayhd/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/broadwayhd/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/broadwayhd/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/broadwayhd/res/raw/configuration.json +0 -16
- package/dist/templates/platforms/androidtv/project/app/src/cineClick/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/cineClick/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/entel/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/entel/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/fuboTV/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/fuboTV/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/fuse/AndroidManifest.xml +0 -12
- package/dist/templates/platforms/androidtv/project/app/src/fuse/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/fuse/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/fuse/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/fuse/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/fuse/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/fuse/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/fuse/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/fuse/res/raw/configuration.json +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/gsn/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/gsn/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/gsn/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/gsn/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/gsn/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/gsn/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/gsn/res/raw/configuration.json +0 -8
- package/dist/templates/platforms/androidtv/project/app/src/heremedia/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/heremedia/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/heremedia/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/heremedia/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/heremedia/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/heremedia/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/heremedia/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/heremedia/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/hummingbird/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/hummingbird/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/hummingbird/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/hummingbird/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/hummingbird/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/hummingbird/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/hummingbird/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/kan/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/kan/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kan/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kan/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kan/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kan/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kan/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kan/res/raw/configuration.json +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/kijk/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/kijk/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kijk/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kijk/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kijk/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kijk/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kijk/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kijk/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/kpn/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/kpn/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kpn/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kpn/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kpn/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kpn/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kpn/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/kpn/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/main/AndroidManifest.xml +0 -53
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/FlavorBase.kt +0 -12
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeFromJavaScript.kt +0 -385
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeToJavaScript.kt +0 -83
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/BridgeConfig.kt +0 -16
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/ConfigCallback.kt +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/ConfigProvider.kt +0 -27
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/Drm.kt +0 -10
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/UserAgent.kt +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/BaseApplication.kt +0 -73
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ActivityComponent.kt +0 -13
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ActivityModule.kt +0 -21
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationComponent.kt +0 -24
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationModule.kt +0 -43
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/PerActivity.kt +0 -26
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/LocalStorage.kt +0 -30
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/LoggingDrmCallback.kt +0 -38
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/OverriddenHttpMediaDrmCallback.kt +0 -134
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryExoPlayerCustomized.kt +0 -84
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/SimpleActivityLifecycleCallback.kt +0 -32
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/SourceDrmOverridden.kt +0 -49
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/jump/JumpAnalytics.kt +0 -211
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/sound/TouchPlayer.kt +0 -86
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/client/BridgeWebView.kt +0 -82
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/client/BridgeWebViewClient.kt +0 -114
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/AnalyticsPlaybackInfo.kt +0 -10
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/ContentModel.kt +0 -14
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/DrmModel.kt +0 -20
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/MediaEventType.kt +0 -20
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/ContentModelParser.kt +0 -16
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/DeviceInfoParser.kt +0 -22
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/PlaybackInfoParser.kt +0 -10
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/TrackJsonModelParser.kt +0 -58
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/Mainview.kt +0 -20
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/PlayerCache.kt +0 -15
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/WebViewActivity.kt +0 -301
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/viewmodel/WebViewModel.kt +0 -571
- package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/button_background_focus.xml +0 -10
- package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/button_background_normal.xml +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/button_background_pressed.xml +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/main/res/drawable/button_focus.xml +0 -8
- package/dist/templates/platforms/androidtv/project/app/src/main/res/layout/activity_web_view.xml +0 -76
- package/dist/templates/platforms/androidtv/project/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/res/raw/click.ogg +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/res/raw/fiddle_root_michal_konecny.cer +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/res/raw/proxy_milanwilczak.pem +0 -26
- package/dist/templates/platforms/androidtv/project/app/src/main/res/values/styles.xml +0 -12
- package/dist/templates/platforms/androidtv/project/app/src/main/res/xml/network_security_config.xml +0 -12
- package/dist/templates/platforms/androidtv/project/app/src/marti/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/marti/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/marti/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/marti/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/marti/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/marti/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/marti/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/marti/res/raw/configuration.json +0 -8
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/AndroidManifest.xml +0 -43
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/newsmax/res/raw/configuration.json +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/portal/java/com/twentyfouri/tvbridge/Flavor.kt +0 -10
- package/dist/templates/platforms/androidtv/project/app/src/portal/res/raw/configuration.json +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/portalDrm/java/com/twentyfouri/tvbridge/Flavor.kt +0 -10
- package/dist/templates/platforms/androidtv/project/app/src/portalDrm/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/portalDrm/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/pureflix/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/pureflix/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/pureflix/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/pureflix/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/pureflix/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/pureflix/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/pureflix/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/pureflix/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/rfa/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/rfa/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfa/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfa/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfa/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfa/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfa/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfa/res/raw/configuration.json +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/rfe/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/rfe/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfe/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfe/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfe/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfe/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfe/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rfe/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/rte/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/rte/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rte/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rte/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rte/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rte/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rte/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/rte/res/raw/configuration.json +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/sentai/google-services.json +0 -191
- package/dist/templates/platforms/androidtv/project/app/src/sentai/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentai/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentai/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentai/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentai/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentai/res/raw/configuration.json +0 -15
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/google-services.json +0 -191
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/java/com/twentyfouri/tvbridge/Flavor.kt +0 -54
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/java/com/twentyfouri/tvbridge/SentaiRequestData.kt +0 -13
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/sentaiandroidtv/res/raw/configuration.json +0 -14
- package/dist/templates/platforms/androidtv/project/app/src/smartott/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/smartott/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/smartott/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/smartott/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/smartott/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/smartott/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/tennisChannel/java/com/twentyfouri/tvbridge/Flavor.kt +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/tennisChannel/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/tennisChannel/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/tennisChannel/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/tennisChannel/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/tennisChannel/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/tennisChannel/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/app/src/topic/java/com/twentyfouri/tvbridge/Flavor.kt +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/topic/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/topic/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/topic/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/topic/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/topic/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/topic/res/raw/configuration.json +0 -9
- package/dist/templates/platforms/androidtv/project/app/src/voa/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/voa/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa/res/raw/configuration.json +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/voa365/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/voa365/res/drawable/banner.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa365/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa365/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa365/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa365/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa365/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/voa365/res/raw/configuration.json +0 -7
- package/dist/templates/platforms/androidtv/project/app/src/youFone/java/com/twentyfouri/tvbridge/Flavor.kt +0 -5
- package/dist/templates/platforms/androidtv/project/app/src/youFone/res/raw/configuration.json +0 -6
- package/dist/templates/platforms/androidtv/project/build.gradle +0 -48
- package/dist/templates/platforms/androidtv/project/common/build.gradle +0 -36
- package/dist/templates/platforms/androidtv/project/common/consumer-rules.pro +0 -0
- package/dist/templates/platforms/androidtv/project/common/proguard-rules.pro +0 -21
- package/dist/templates/platforms/androidtv/project/common/src/main/AndroidManifest.xml +0 -4
- package/dist/templates/platforms/androidtv/project/common/src/main/java/com/twentyfouri/tvbridge/common/IapService.kt +0 -114
- package/dist/templates/platforms/androidtv/project/googleiap/build.gradle +0 -38
- package/dist/templates/platforms/androidtv/project/googleiap/consumer-rules.pro +0 -0
- package/dist/templates/platforms/androidtv/project/googleiap/proguard-rules.pro +0 -21
- package/dist/templates/platforms/androidtv/project/googleiap/src/main/AndroidManifest.xml +0 -6
- package/dist/templates/platforms/androidtv/project/googleiap/src/main/java/com/twentyfouri/tvbridge/googleiap/GoogleIapService.kt +0 -29
- package/dist/templates/platforms/androidtv/project/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/dist/templates/platforms/androidtv/project/gradle/wrapper/gradle-wrapper.properties +0 -6
- package/dist/templates/platforms/androidtv/project/gradle.properties +0 -4
- package/dist/templates/platforms/androidtv/project/gradlew +0 -185
- package/dist/templates/platforms/androidtv/project/gradlew.bat +0 -104
- package/dist/templates/platforms/androidtv/project/keystore/debug_madrid.jks +0 -0
- package/dist/templates/platforms/androidtv/project/keystore/kan11_applicaster.keystore +0 -0
- package/dist/templates/platforms/androidtv/project/proguard-rules.pro +0 -42
- package/dist/templates/platforms/androidtv/project/settings.gradle +0 -4
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.jump
|
|
2
|
-
|
|
3
|
-
import android.util.Log
|
|
4
|
-
import com.google.android.exoplayer2.ExoPlayer
|
|
5
|
-
import com.google.android.exoplayer2.SimpleExoPlayer
|
|
6
|
-
import com.google.gson.JsonObject
|
|
7
|
-
import com.twentyfouri.tvbridge.BuildConfig
|
|
8
|
-
import com.twentyfouri.tvbridge.webview.model.AnalyticsPlaybackInfo
|
|
9
|
-
import jump.JumpKit
|
|
10
|
-
import jump.insights.models.contextinformation.*
|
|
11
|
-
import jump.insights.models.track.events.JKContentType
|
|
12
|
-
import jump.insights.models.track.events.JKTransactionType
|
|
13
|
-
import jump.libs.gson.annotations.SerializedName
|
|
14
|
-
import java.util.*
|
|
15
|
-
|
|
16
|
-
class JumpAnalytics {
|
|
17
|
-
|
|
18
|
-
private var started = false
|
|
19
|
-
private var hasContent = false
|
|
20
|
-
|
|
21
|
-
fun setPlaybackInfo(playbackInfo: AnalyticsPlaybackInfo) {
|
|
22
|
-
setApplicationId(playbackInfo.id ?: return)
|
|
23
|
-
setUserInfo(playbackInfo.userInfo)
|
|
24
|
-
setContentInfo(playbackInfo.contentInfo)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
private fun setApplicationId(applicationId: String) {
|
|
28
|
-
if (started) return
|
|
29
|
-
started = true
|
|
30
|
-
JumpKit.setDebugMode(BuildConfig.DEBUG)
|
|
31
|
-
JumpKit.start(applicationId)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private fun setUserInfo(params: JsonObject?) {
|
|
35
|
-
JumpKit.insights.setUserInfo(parseUserInfo(params))
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private fun setContentInfo(params: JsonObject?) {
|
|
39
|
-
val contentInfo = parseContentInfo(params)
|
|
40
|
-
jump.exoplayerextension.JumpKit.insights.setContentInfo(contentInfo)
|
|
41
|
-
hasContent = true
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
fun setVideoPlayer(player: ExoPlayer?) {
|
|
45
|
-
@Suppress("DEPRECATION")
|
|
46
|
-
if (player !is SimpleExoPlayer) {
|
|
47
|
-
/* NOTICE: passing null also causes insights.setContentInfo(null) */
|
|
48
|
-
jump.exoplayerextension.JumpKit.insights.setVideoPlayer(null)
|
|
49
|
-
hasContent = false
|
|
50
|
-
} else if (started && hasContent) {
|
|
51
|
-
jump.exoplayerextension.JumpKit.insights.setVideoPlayer(player)
|
|
52
|
-
} else if (started) {
|
|
53
|
-
Log.w("JumpAnalytics", "No content data available. Did you call SetPlaybackInfo before SetVideoPath?")
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
private fun parseUserInfo(params: JsonObject?): JKUserInfo {
|
|
58
|
-
return try {
|
|
59
|
-
var userType = parseEnum(params, "userType", JKUserType::class.java)
|
|
60
|
-
if (userType == null) userType = JKUserType.ANONYMOUS
|
|
61
|
-
val userId = parseString(params, "userId")
|
|
62
|
-
val userCountry = parseString(params, "userCountry")
|
|
63
|
-
val userBirthDate = parseString(params, "userBirthDate")
|
|
64
|
-
var userSex = parseEnum(params, "userSex", JKUserSex::class.java)
|
|
65
|
-
if (userSex == null) userSex = JKUserSex.UNDEFINED
|
|
66
|
-
val userProfileId = parseString(params, "userProfileId")
|
|
67
|
-
val userOperator = parseString(params, "userOperator")
|
|
68
|
-
if (userType == JKUserType.ANONYMOUS) JKUserInfo.anonymousInstance() else JKUserInfo(userType, userId, userCountry, userBirthDate, userSex, userProfileId, userOperator)
|
|
69
|
-
} catch (e: Exception) {
|
|
70
|
-
Log.w("JumpAnalytics", "Parsing userInfo failed. Falling back to ANONYMOUS", e)
|
|
71
|
-
JKUserInfo.anonymousInstance()
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
private fun parseCategory(params: JsonObject?, property: String): JKContextCategory? {
|
|
76
|
-
val jsonValue = params?.get(property) ?: return null
|
|
77
|
-
return if (!jsonValue.isJsonObject) null else parseCategory(jsonValue.asJsonObject)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private fun parseCategory(params: JsonObject): JKContextCategory {
|
|
81
|
-
return JKContextCategory(
|
|
82
|
-
parseString(params, "categoryId"),
|
|
83
|
-
parseString(params, "categoryName")
|
|
84
|
-
)
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
private fun parseSubCategory(params: JsonObject?, property: String): JKContextSubcategory? {
|
|
88
|
-
val jsonValue = params?.get(property) ?: return null
|
|
89
|
-
return if (!jsonValue.isJsonObject) null else parseSubCategory(jsonValue.asJsonObject)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
private fun parseSubCategory(params: JsonObject): JKContextSubcategory {
|
|
93
|
-
return JKContextSubcategory(
|
|
94
|
-
parseString(params, "subcategoryId"),
|
|
95
|
-
parseString(params, "categoryId"),
|
|
96
|
-
parseString(params, "subcategoryName")
|
|
97
|
-
)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
private fun parseGenre(params: JsonObject): JKContextGenre {
|
|
101
|
-
return JKContextGenre(
|
|
102
|
-
parseString(params, "genreId"),
|
|
103
|
-
parseString(params, "genreName"),
|
|
104
|
-
parseCategory(params, "categoryId"),
|
|
105
|
-
parseSubCategory(params, "subCategoryId")
|
|
106
|
-
)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
private fun parseContentInfo(params: JsonObject?): JKContextContent {
|
|
110
|
-
return JKContextContent(
|
|
111
|
-
parseString(params, "contentId"),
|
|
112
|
-
parseString(params, "contentTitle"),
|
|
113
|
-
parseString(params, "contentSerieTitle"),
|
|
114
|
-
parseInteger(params, "contentEpisodeNumber"),
|
|
115
|
-
parseInteger(params, "contentSeasonNumber"),
|
|
116
|
-
parseString(params, "contentDescription"),
|
|
117
|
-
parseCategory(params, "contentCategory"),
|
|
118
|
-
parseSubCategory(params, "contentSubCategory"),
|
|
119
|
-
parseGenres(params, "contentGenres"),
|
|
120
|
-
parseString(params, "contentProvider"),
|
|
121
|
-
parseEnum(params, "contentTransactionType", JKTransactionType::class.java),
|
|
122
|
-
parseEnum(params, "contentType", JKContentType::class.java),
|
|
123
|
-
parseString(params, "contentLanguage")
|
|
124
|
-
)
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
private fun parseGenres(container: JsonObject?, property: String): List<JKContextGenre>? {
|
|
128
|
-
if (container == null) return null
|
|
129
|
-
val jsonValue = container[property] ?: return null
|
|
130
|
-
if (!jsonValue.isJsonArray) return null
|
|
131
|
-
val list = ArrayList<JKContextGenre>()
|
|
132
|
-
for (jsonElement in jsonValue.asJsonArray) {
|
|
133
|
-
if (!jsonElement.isJsonObject) continue
|
|
134
|
-
list.add(parseGenre(jsonElement.asJsonObject))
|
|
135
|
-
}
|
|
136
|
-
return list
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
private fun <T : Enum<T>> parseEnum(container: JsonObject?, property: String, type: Class<T>): T? {
|
|
140
|
-
if (container == null) return null
|
|
141
|
-
val jsonValue = container[property] ?: return null
|
|
142
|
-
if (!jsonValue.isJsonPrimitive) return null
|
|
143
|
-
val primitive = jsonValue.asJsonPrimitive
|
|
144
|
-
return when {
|
|
145
|
-
primitive.isString ->
|
|
146
|
-
parseEnum(type, jsonValue.asString)
|
|
147
|
-
primitive.isNumber ->
|
|
148
|
-
parseEnum(type, jsonValue.asInt)
|
|
149
|
-
else ->
|
|
150
|
-
null
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
private fun <T : Enum<T>> parseEnum(type: Class<T>, value: String): T? {
|
|
155
|
-
try {
|
|
156
|
-
for (constant in type.enumConstants ?: return null) {
|
|
157
|
-
val name = constant.name
|
|
158
|
-
if (name == value) {
|
|
159
|
-
return constant
|
|
160
|
-
}
|
|
161
|
-
val annotation = type.getField(name).getAnnotation(SerializedName::class.java)
|
|
162
|
-
if (annotation != null) {
|
|
163
|
-
if (annotation.value == value) {
|
|
164
|
-
return constant
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return null
|
|
169
|
-
} catch (e: NoSuchFieldException) {
|
|
170
|
-
return null
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
@Suppress("UNCHECKED_CAST")
|
|
175
|
-
private fun <T : Enum<T>> parseEnum(type: Class<T>, value: Int): T? {
|
|
176
|
-
return try {
|
|
177
|
-
val map = type.getDeclaredField("mapper")[null] as Map<T, Int>
|
|
178
|
-
for ((key, value1) in map) {
|
|
179
|
-
if (value1 == value) {
|
|
180
|
-
return key
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
null
|
|
184
|
-
} catch (e: ClassCastException) {
|
|
185
|
-
null
|
|
186
|
-
} catch (e: IllegalAccessException) {
|
|
187
|
-
null
|
|
188
|
-
} catch (e: NoSuchFieldException) {
|
|
189
|
-
null
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
private fun parseString(container: JsonObject?, property: String): String? {
|
|
194
|
-
if (container == null) return null
|
|
195
|
-
var jsonValue = container[property]
|
|
196
|
-
if (jsonValue == null && property.endsWith("Id")) {
|
|
197
|
-
// inconsistencies in SDK cause confusion, try uppercased xxxxID just in case
|
|
198
|
-
jsonValue = container[property.replace("Id", "ID")]
|
|
199
|
-
}
|
|
200
|
-
if (jsonValue == null) return null
|
|
201
|
-
if (!jsonValue.isJsonPrimitive) return null
|
|
202
|
-
return if (!jsonValue.asJsonPrimitive.isString) null else jsonValue.asString
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
private fun parseInteger(container: JsonObject?, property: String): Int? {
|
|
206
|
-
if (container == null) return null
|
|
207
|
-
val jsonValue = container[property] ?: return null
|
|
208
|
-
if (!jsonValue.isJsonPrimitive) return null
|
|
209
|
-
return if (!jsonValue.asJsonPrimitive.isNumber) null else jsonValue.asInt
|
|
210
|
-
}
|
|
211
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.sound
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.media.AudioManager
|
|
5
|
-
import android.media.MediaPlayer
|
|
6
|
-
import android.provider.MediaStore
|
|
7
|
-
import android.util.Log
|
|
8
|
-
import androidx.annotation.IntRange
|
|
9
|
-
import androidx.annotation.RawRes
|
|
10
|
-
import com.twentyfouri.tvbridge.R
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Play touch sound. Uses queue to handle several overlapping sounds
|
|
14
|
-
* Configuration:
|
|
15
|
-
* MEDIA_PLAYER_LIST_SIZE: Number of parallel touch sounds that can be played at once
|
|
16
|
-
* TOUCH_SOUND_RES: Resource ID of touch sound to be used
|
|
17
|
-
* USE_NATIVE_SOUND: Uses native click sound from AudioManager, don't use overlapping & queue at all
|
|
18
|
-
*/
|
|
19
|
-
class TouchPlayer(
|
|
20
|
-
private val context: Context
|
|
21
|
-
) : MediaPlayer.OnCompletionListener {
|
|
22
|
-
|
|
23
|
-
companion object {
|
|
24
|
-
private const val MEDIA_PLAYER_LIST_SIZE = 1L
|
|
25
|
-
@RawRes
|
|
26
|
-
private const val TOUCH_SOUND_RES = R.raw.click
|
|
27
|
-
private const val USE_NATIVE_SOUND = true
|
|
28
|
-
private var audioManager: AudioManager? = null
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
private var mediaPlayerList = mutableListOf<MediaPlayer>()
|
|
32
|
-
|
|
33
|
-
@IntRange(from = 0, to = MEDIA_PLAYER_LIST_SIZE - 1)
|
|
34
|
-
private var mediaPlayerListIterator: Int = 0
|
|
35
|
-
|
|
36
|
-
init {
|
|
37
|
-
for (i in 0 until Companion.MEDIA_PLAYER_LIST_SIZE) {
|
|
38
|
-
mediaPlayerList.add(getNewPlayer())
|
|
39
|
-
}
|
|
40
|
-
if (USE_NATIVE_SOUND) {
|
|
41
|
-
audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
fun play() {
|
|
46
|
-
Log.d("TouchPlayer", "Touch event envoked")
|
|
47
|
-
audioManager?.playSoundEffect(AudioManager.FX_KEY_CLICK)
|
|
48
|
-
?: getAvailableMediaPlayer()?.start()
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
override fun onCompletion(mp: MediaPlayer) {
|
|
52
|
-
if (mp in mediaPlayerList) {
|
|
53
|
-
mediaPlayerList[mediaPlayerList.indexOf(mp)] = getNewPlayer()
|
|
54
|
-
mp.release()
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Returns available player from buffer. If there is no available player already, it returns null
|
|
60
|
-
*/
|
|
61
|
-
private fun getAvailableMediaPlayer(): MediaPlayer? {
|
|
62
|
-
val nextIter = if (MEDIA_PLAYER_LIST_SIZE.toInt() == 1) {
|
|
63
|
-
mediaPlayerListIterator
|
|
64
|
-
} else {
|
|
65
|
-
++mediaPlayerListIterator / MEDIA_PLAYER_LIST_SIZE.toInt()
|
|
66
|
-
}
|
|
67
|
-
val selectedPlayer = mediaPlayerList[mediaPlayerListIterator]
|
|
68
|
-
|
|
69
|
-
return if (selectedPlayer.isPlaying) { // We reached the end of available buffer
|
|
70
|
-
null
|
|
71
|
-
} else {
|
|
72
|
-
mediaPlayerListIterator = nextIter
|
|
73
|
-
selectedPlayer
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
private fun getNewPlayer(): MediaPlayer {
|
|
78
|
-
val mediaPlayer = MediaPlayer()
|
|
79
|
-
mediaPlayer.setAudioStreamType(AudioManager.STREAM_SYSTEM)
|
|
80
|
-
mediaPlayer.setOnCompletionListener(this)
|
|
81
|
-
val afd = context.resources.openRawResourceFd(TOUCH_SOUND_RES)
|
|
82
|
-
mediaPlayer.setDataSource(afd.fileDescriptor, afd.startOffset, afd.length)
|
|
83
|
-
mediaPlayer.prepare()
|
|
84
|
-
return mediaPlayer
|
|
85
|
-
}
|
|
86
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.client
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.content.pm.PackageManager
|
|
5
|
-
import android.graphics.Color
|
|
6
|
-
import android.util.AttributeSet
|
|
7
|
-
import android.util.Log
|
|
8
|
-
import android.view.KeyEvent
|
|
9
|
-
import android.webkit.WebSettings
|
|
10
|
-
import android.webkit.WebView
|
|
11
|
-
import com.twentyfouri.tvbridge.BuildConfig
|
|
12
|
-
import com.twentyfouri.tvbridge.configuration.BridgeConfig
|
|
13
|
-
import com.twentyfouri.tvbridge.global.BaseApplication
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Created by gonzapico on 20/09/2017.
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* Custom WebView of 24i with the configuration required to play the videos.
|
|
20
|
-
*/
|
|
21
|
-
class BridgeWebView @JvmOverloads constructor(
|
|
22
|
-
context: Context,
|
|
23
|
-
attrs: AttributeSet? = null
|
|
24
|
-
) : WebView(context, attrs) {
|
|
25
|
-
|
|
26
|
-
var previewKeyEvent: ((KeyEvent) -> Boolean)? = null
|
|
27
|
-
|
|
28
|
-
private val config: BridgeConfig?
|
|
29
|
-
get() = (context.applicationContext as? BaseApplication)?.component?.configuration
|
|
30
|
-
|
|
31
|
-
init {
|
|
32
|
-
// Set the background color of the WebView to transparent, so the video player can be shown behind it.
|
|
33
|
-
setBackgroundColor(Color.TRANSPARENT)
|
|
34
|
-
val webSettings = this.settings
|
|
35
|
-
webSettings.javaScriptEnabled = true
|
|
36
|
-
webSettings.domStorageEnabled = true
|
|
37
|
-
webSettings.useWideViewPort = true
|
|
38
|
-
webSettings.loadWithOverviewMode = true
|
|
39
|
-
webSettings.mediaPlaybackRequiresUserGesture = false
|
|
40
|
-
webSettings.allowFileAccess = true
|
|
41
|
-
webSettings.allowContentAccess = true
|
|
42
|
-
webSettings.userAgentString = config?.userAgent?.value ?: userAgent
|
|
43
|
-
|
|
44
|
-
// Log the settings of the WebView.
|
|
45
|
-
if (BuildConfig.DEBUG) {
|
|
46
|
-
logWebViewSettings(webSettings)
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
private val userAgent: String?
|
|
51
|
-
get() {
|
|
52
|
-
try {
|
|
53
|
-
val ai = context.packageManager.getApplicationInfo(context.packageName, PackageManager.GET_META_DATA)
|
|
54
|
-
val bundle = ai.metaData
|
|
55
|
-
return bundle.getString("user-agent")
|
|
56
|
-
} catch (e: PackageManager.NameNotFoundException) {
|
|
57
|
-
Log.e(LOG, "Failed to load meta-data, NameNotFound: " + e.message)
|
|
58
|
-
} catch (e: NullPointerException) {
|
|
59
|
-
Log.e(LOG, "Failed to load meta-data, NullPointer: " + e.message)
|
|
60
|
-
}
|
|
61
|
-
return "unknown"
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
|
|
65
|
-
if (previewKeyEvent?.invoke(event) == true) return true
|
|
66
|
-
return super.dispatchKeyEvent(event)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
companion object {
|
|
70
|
-
private const val LOG = "24iWebView"
|
|
71
|
-
private fun logWebViewSettings(webSettings: WebSettings) {
|
|
72
|
-
Log.v(LOG, "logWebViewSettings")
|
|
73
|
-
Log.v(LOG, " * supportZoom: " + webSettings.supportZoom())
|
|
74
|
-
Log.v(LOG, " * getBuiltInZoomControls: " + webSettings.builtInZoomControls)
|
|
75
|
-
Log.v(LOG, " * getDisplayZoomControls: " + webSettings.displayZoomControls)
|
|
76
|
-
Log.v(LOG, " * getLoadWithOverviewMode: " + webSettings.loadWithOverviewMode)
|
|
77
|
-
Log.v(LOG, " * getUseWideViewPort: " + webSettings.useWideViewPort)
|
|
78
|
-
Log.v(LOG, " * getJavaScriptEnabled: " + webSettings.javaScriptEnabled)
|
|
79
|
-
Log.v(LOG, " * getJavaScriptCanOpenWindowsAutomatically: " + webSettings.javaScriptCanOpenWindowsAutomatically)
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.client
|
|
2
|
-
|
|
3
|
-
import android.graphics.Bitmap
|
|
4
|
-
import android.net.http.SslError
|
|
5
|
-
import android.os.Build
|
|
6
|
-
import android.os.Message
|
|
7
|
-
import android.util.Log
|
|
8
|
-
import android.view.InputEvent
|
|
9
|
-
import android.view.KeyEvent
|
|
10
|
-
import android.webkit.*
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Created by gonzapico on 21/09/2017.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* Custom 24i WebViewClient to override the methods required by the app.
|
|
17
|
-
*/
|
|
18
|
-
class BridgeWebViewClient(
|
|
19
|
-
private val callback: BridgeWebViewClientCallback
|
|
20
|
-
) : WebViewClient() {
|
|
21
|
-
|
|
22
|
-
interface BridgeWebViewClientCallback {
|
|
23
|
-
fun onUnhandledKeyEvent(view: WebView, event: KeyEvent)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
override fun doUpdateVisitedHistory(view: WebView, url: String, isReload: Boolean) {
|
|
27
|
-
//Log.v(LOGTAG, "doUpdateVisitedHistory - " + url);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
override fun onFormResubmission(view: WebView, dontResend: Message?, resend: Message?) {
|
|
31
|
-
Log.v(LOGTAG, "onFormResubmission")
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
override fun onLoadResource(view: WebView, url: String?) {
|
|
35
|
-
//Log.v(LOGTAG, "onLoadResource - " + url);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
override fun onPageFinished(view: WebView, url: String?) {
|
|
39
|
-
Log.v(LOGTAG, "onPageFinished - $url")
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
override fun onPageStarted(view: WebView, url: String?, favicon: Bitmap?) {
|
|
43
|
-
Log.v(LOGTAG, "onPageStarted - $url")
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Surpress warnings about deprecation. Also added API level 23 version of method below.
|
|
47
|
-
override fun onReceivedError(view: WebView, errorCode: Int, description: String, failingUrl: String) {
|
|
48
|
-
Log.v(LOGTAG, "onReceivedError (<=22) - $description")
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) {
|
|
52
|
-
// Log the description on devices at API level 23 (Marshmellow) or higher.
|
|
53
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
54
|
-
Log.v(LOGTAG, "onReceivedError (>=23) - " + error.description)
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
override fun onReceivedHttpAuthRequest(view: WebView, handler: HttpAuthHandler, host: String, realm: String) {
|
|
59
|
-
Log.v(LOGTAG, "onReceivedHttpAuthRequest - $host")
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
override fun onReceivedHttpError(view: WebView, request: WebResourceRequest, errorResponse: WebResourceResponse) {
|
|
63
|
-
// Log the description on devices at API level 23 (Marshmellow) or higher.
|
|
64
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
65
|
-
Log.v(LOGTAG, "onReceivedError (>=23) - " + errorResponse.statusCode + " " + errorResponse.reasonPhrase)
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
override fun onReceivedLoginRequest(view: WebView, realm: String, account: String?, args: String?) {
|
|
70
|
-
Log.v(LOGTAG, "onReceivedLoginRequest - $realm")
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
|
|
74
|
-
Log.v(LOGTAG, "onReceivedSslError - $error")
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
override fun onScaleChanged(view: WebView, oldScale: Float, newScale: Float) {
|
|
78
|
-
Log.v(LOGTAG, "onScaleChanged - oldScale: $oldScale, newScale: $newScale")
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Surpress warnings about deprecation. Also added API level 21 version of method below.
|
|
82
|
-
override fun onUnhandledKeyEvent(view: WebView, event: KeyEvent) {
|
|
83
|
-
callback.onUnhandledKeyEvent(view, event)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
fun onUnhandledInputEvent(view: WebView?, event: InputEvent) {
|
|
87
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
88
|
-
Log.v(LOGTAG, "onUnhandledInputEvent (>=21) - $event")
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Surpress warnings about deprecation. Also added API level 21 version of method below.
|
|
93
|
-
override fun shouldInterceptRequest(view: WebView, url: String?): WebResourceResponse? {
|
|
94
|
-
return null
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse? {
|
|
98
|
-
return null
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
override fun shouldOverrideKeyEvent(view: WebView, event: KeyEvent): Boolean {
|
|
102
|
-
return false
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Handle all clicked links within the WebView.
|
|
106
|
-
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
|
|
107
|
-
Log.v(LOGTAG, "shouldOverrideUrlLoading - $url")
|
|
108
|
-
return false
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
companion object {
|
|
112
|
-
private const val LOGTAG = "24iWebViewClient"
|
|
113
|
-
}
|
|
114
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.model
|
|
2
|
-
|
|
3
|
-
import com.google.gson.annotations.SerializedName
|
|
4
|
-
|
|
5
|
-
class ContentModel {
|
|
6
|
-
@SerializedName("streamUrl")
|
|
7
|
-
var streamUrl: String? = null
|
|
8
|
-
|
|
9
|
-
@SerializedName("drmConfig")
|
|
10
|
-
var drmModel: DrmModel? = null
|
|
11
|
-
|
|
12
|
-
@SerializedName("streamType")
|
|
13
|
-
var streamType: String? = null
|
|
14
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.model
|
|
2
|
-
|
|
3
|
-
import com.google.gson.annotations.SerializedName
|
|
4
|
-
|
|
5
|
-
class DrmModel {
|
|
6
|
-
@SerializedName("drmSchemeUuid")
|
|
7
|
-
var drmSchemeUuid: String? = null
|
|
8
|
-
|
|
9
|
-
@SerializedName("drmLicenseUrl")
|
|
10
|
-
var drmLicenseUrl: String? = null
|
|
11
|
-
|
|
12
|
-
@SerializedName("drmCustomData")
|
|
13
|
-
var keyRequestProperties: Map<String, String>? = null
|
|
14
|
-
|
|
15
|
-
@SerializedName("overrideDrmCallback")
|
|
16
|
-
var overrideDrmCallback: Boolean? = null
|
|
17
|
-
|
|
18
|
-
@SerializedName("multiSessionEnabled")
|
|
19
|
-
var multiSessionEnabled: Boolean? = null
|
|
20
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.model
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Created by mitchellwit on 10/03/2017.
|
|
5
|
-
*/
|
|
6
|
-
object MediaEventType {
|
|
7
|
-
const val TIME_UPDATE = "timeupdate"
|
|
8
|
-
const val ERROR = "error"
|
|
9
|
-
const val PLAYING = "playing"
|
|
10
|
-
const val PAUSE = "pause"
|
|
11
|
-
const val PLAY = "pause"
|
|
12
|
-
const val ENDED = "ended"
|
|
13
|
-
const val WAITING = "waiting"
|
|
14
|
-
const val SEEKING = "seeking"
|
|
15
|
-
const val SEEKED = "seeked"
|
|
16
|
-
const val KEY_PRESS = "keypress"
|
|
17
|
-
const val KEY_UP = "keyup"
|
|
18
|
-
const val KEY_DOWN = "keydown"
|
|
19
|
-
const val TRACKS_CHANGED = "tracksChanged"
|
|
20
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.parser
|
|
2
|
-
|
|
3
|
-
import com.google.gson.Gson
|
|
4
|
-
import com.twentyfouri.tvbridge.webview.model.ContentModel
|
|
5
|
-
|
|
6
|
-
object ContentModelParser {
|
|
7
|
-
fun stringToJson(json: String?): ContentModel? = when {
|
|
8
|
-
json.isNullOrEmpty() -> null
|
|
9
|
-
json.startsWith("http://") || json.startsWith("https://") ->
|
|
10
|
-
ContentModel().apply {
|
|
11
|
-
streamUrl = json
|
|
12
|
-
}
|
|
13
|
-
else ->
|
|
14
|
-
Gson().fromJson(json, ContentModel::class.java)
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.parser
|
|
2
|
-
|
|
3
|
-
import android.os.Build
|
|
4
|
-
import org.json.JSONException
|
|
5
|
-
import org.json.JSONObject
|
|
6
|
-
|
|
7
|
-
object DeviceInfoParser {
|
|
8
|
-
// TODO Auto-generated catch block
|
|
9
|
-
val deviceInfoParsed: String
|
|
10
|
-
get() {
|
|
11
|
-
val deviceInfo = JSONObject()
|
|
12
|
-
try {
|
|
13
|
-
deviceInfo.put("deviceBrand", Build.MANUFACTURER)
|
|
14
|
-
deviceInfo.put("deviceModel", Build.MODEL)
|
|
15
|
-
deviceInfo.put("osVersion", Build.VERSION.RELEASE)
|
|
16
|
-
} catch (e: JSONException) {
|
|
17
|
-
// TODO Auto-generated catch block
|
|
18
|
-
e.printStackTrace()
|
|
19
|
-
}
|
|
20
|
-
return deviceInfo.toString()
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.parser
|
|
2
|
-
|
|
3
|
-
import com.google.gson.Gson
|
|
4
|
-
import com.twentyfouri.tvbridge.webview.model.AnalyticsPlaybackInfo
|
|
5
|
-
|
|
6
|
-
object PlaybackInfoParser {
|
|
7
|
-
fun parse(serialized: String?): AnalyticsPlaybackInfo {
|
|
8
|
-
return Gson().fromJson(serialized, AnalyticsPlaybackInfo::class.java)
|
|
9
|
-
}
|
|
10
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.parser
|
|
2
|
-
|
|
3
|
-
import com.twentyfouri.player.base.AudioTrack
|
|
4
|
-
import com.twentyfouri.player.base.DefaultSourceSerializer
|
|
5
|
-
import com.twentyfouri.player.base.TextTrack
|
|
6
|
-
import org.json.JSONArray
|
|
7
|
-
import org.json.JSONObject
|
|
8
|
-
import java.util.*
|
|
9
|
-
|
|
10
|
-
object TrackJsonModelParser {
|
|
11
|
-
|
|
12
|
-
val serializer = DefaultSourceSerializer()
|
|
13
|
-
|
|
14
|
-
fun toJson(audioTracks: List<AudioTrack>?, textTracks: List<TextTrack>?): String {
|
|
15
|
-
val jsonArray = JSONArray()
|
|
16
|
-
audioTracks?.forEach {
|
|
17
|
-
jsonArray.put(toJsonTree(it))
|
|
18
|
-
}
|
|
19
|
-
textTracks?.forEach {
|
|
20
|
-
jsonArray.put(toJsonTree(it))
|
|
21
|
-
}
|
|
22
|
-
return jsonArray.toString()
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
fun toJson(trackInfo: AudioTrack?): String {
|
|
26
|
-
if (trackInfo == null) return ""
|
|
27
|
-
return toJsonTree(trackInfo ?: return "").toString()
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
fun toJson(trackInfo: TextTrack?): String {
|
|
31
|
-
return toJsonTree(trackInfo ?: return "").toString()
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private fun toJsonTree(trackInfo: AudioTrack) = serializer.toPersistentMap(trackInfo).also {
|
|
35
|
-
it.put("type", "audio")
|
|
36
|
-
it.put("name", buildTrackName(trackInfo.language, trackInfo.label))
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
private fun toJsonTree(trackInfo: TextTrack) = serializer.toPersistentMap(trackInfo).also {
|
|
40
|
-
it.put("type", "subtitles")
|
|
41
|
-
it.put("name", buildTrackName(trackInfo.language, trackInfo.label))
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
private fun buildTrackName(language: String?, label: String?): String? {
|
|
45
|
-
if (language.isNullOrEmpty()) return label
|
|
46
|
-
return Locale(language).displayName
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
fun audioFromJson(json: String?): AudioTrack? {
|
|
50
|
-
if (json.isNullOrEmpty()) return null
|
|
51
|
-
return serializer.toAudioTrack(JSONObject(json))
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
fun textFromJson(json: String?): TextTrack? {
|
|
55
|
-
if (json.isNullOrEmpty()) return null
|
|
56
|
-
return serializer.toTextTrack(JSONObject(json))
|
|
57
|
-
}
|
|
58
|
-
}
|