@24i/smartapps-bigscreen-rnv-build-engine 0.17.9 → 0.17.10-alpha.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/package.json +5 -5
- package/dist/src/__tests__/engine.spec.js +0 -57
- package/dist/src/__tests__/resolvers/resolveBaseUrl.spec.js +0 -120
- package/dist/src/__tests__/resolvers/resolveBuildEnvName.spec.js +0 -23
- package/dist/src/__tests__/resolvers/resolveBuildEnvType.spec.js +0 -23
- package/dist/src/__tests__/resolvers/resolveBuildFileBaseName.spec.js +0 -100
- package/dist/src/__tests__/resolvers/resolveBuildFileExtension.spec.js +0 -26
- package/dist/src/__tests__/resolvers/resolveBuildFileName.spec.js +0 -109
- package/dist/src/__tests__/resolvers/resolveBuildVersion.spec.js +0 -60
- package/dist/src/__tests__/resolvers/resolveBuildVersionOffset.spec.js +0 -111
- package/dist/src/__tests__/resolvers/resolveDeployLocations.spec.js +0 -98
- package/dist/src/__tests__/resolvers/resolveGenericRnvConfig.spec.js +0 -92
- package/dist/src/__tests__/resolvers/resolveHbbtvDeployConfig.spec.js +0 -35
- package/dist/src/__tests__/resolvers/resolveHbbtvDeployUrl.spec.js +0 -53
- package/dist/src/__tests__/resolvers/resolveHbbtvRemoteBuildDirRelativePath.spec.js +0 -68
- package/dist/src/__tests__/resolvers/resolveSupportedPlatforms.spec.js +0 -22
- package/dist/src/__tests__/resolvers/resolveUsedFlavours.spec.js +0 -38
- package/dist/src/__tests__/resolvers/resolveZippedPlatformBuildsRelativeFilePath.spec.js +0 -18
- package/dist/src/__tests__/sdks/sdk-utils/registerSdkPath.spec.js +0 -60
- package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/sdkInstaller.spec.js +0 -85
- package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/services/clean.spec.js +0 -50
- package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/services/download.spec.js +0 -103
- package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/services/install.spec.js +0 -57
- package/dist/src/__tests__/sdks/sdk-utils/sdk-installer/services/unzip.spec.js +0 -51
- package/dist/src/__tests__/utils/forEachSupportedPlatformFlavour.spec.js +0 -104
- package/dist/src/__tests__/utils/generatePngSpriteMap.spec.js +0 -81
- package/dist/src/__tests__/utils/generateSvgSpriteMap.spec.js +0 -108
- package/dist/src/__tests__/utils/mergeSvgAndPngIcons.spec.js +0 -112
- package/dist/src/__tests__/utils/replaceRelevantStringsInConfig/replaceRelevantStringsInConfig.spec.js +0 -116
- package/dist/src/__tests__/utils/replaceRelevantStringsInConfig/replaceTemplateString.spec.js +0 -65
- package/dist/src/__tests__/utils/zipBuildsByPlatforms.spec.js +0 -69
- package/dist/src/constants/buildEnvironments.js +0 -9
- package/dist/src/constants/buildProductionPackages.js +0 -10
- package/dist/src/constants/buildSchemes.js +0 -19
- package/dist/src/constants/delopyLivePlatforms.js +0 -14
- package/dist/src/constants/index.js +0 -9
- package/dist/src/constants/platforms.js +0 -18
- package/dist/src/engine.js +0 -118
- package/dist/src/index.js +0 -30
- package/dist/src/resolvers/index.js +0 -42
- package/dist/src/resolvers/resolveBaseUrl.js +0 -27
- package/dist/src/resolvers/resolveBuildEnvName.js +0 -16
- package/dist/src/resolvers/resolveBuildEnvType.js +0 -23
- package/dist/src/resolvers/resolveBuildFileBaseName.js +0 -46
- package/dist/src/resolvers/resolveBuildFileExtension.js +0 -12
- package/dist/src/resolvers/resolveBuildFileName.js +0 -12
- package/dist/src/resolvers/resolveBuildVersion.js +0 -47
- package/dist/src/resolvers/resolveBuildVersionOffset.js +0 -34
- package/dist/src/resolvers/resolveDeployLocations.js +0 -76
- package/dist/src/resolvers/resolveGenericRnvConfig.js +0 -58
- package/dist/src/resolvers/resolveHbbtvDeployConfig.js +0 -13
- package/dist/src/resolvers/resolveHbbtvDeployUrl.js +0 -11
- package/dist/src/resolvers/resolveHbbtvRemoteBuildDirRelativePath.js +0 -29
- package/dist/src/resolvers/resolvePackageVersions.js +0 -57
- package/dist/src/resolvers/resolveProductionZipFileRelativePath.js +0 -35
- package/dist/src/resolvers/resolveS3BucketAppPath.js +0 -15
- package/dist/src/resolvers/resolveSupportedFlavoursForPlatform.js +0 -8
- package/dist/src/resolvers/resolveSupportedPlatforms.js +0 -5
- package/dist/src/resolvers/resolveUsedFlavours.js +0 -23
- package/dist/src/resolvers/resolveZippedPlatformBuildsRelativeFilePath.js +0 -38
- package/dist/src/resolvers/shared/constructFullUrl.js +0 -25
- package/dist/src/scripts/buildAllWithScheme.js +0 -25
- package/dist/src/scripts/buildAllWithSchemes.js +0 -88
- package/dist/src/scripts/buildProductionPackagesAll.js +0 -75
- package/dist/src/scripts/deployLiveAll.js +0 -27
- package/dist/src/scripts/deployLivePlatform.js +0 -44
- package/dist/src/scripts/generateDeployUrls/formatTableDataSpaces.js +0 -30
- package/dist/src/scripts/generateDeployUrls/generateDeployUrls.js +0 -151
- package/dist/src/scripts/generateDeployUrls/index.js +0 -4
- package/dist/src/scripts/generateDeployUrls/makeTableDataByScheme.js +0 -65
- package/dist/src/scripts/gitReleaser/afterVersionBump.js +0 -18
- package/dist/src/scripts/gitReleaser/beforeVersionBump.js +0 -12
- package/dist/src/scripts/gitReleaser/checkReleaseNotes.js +0 -16
- package/dist/src/scripts/gitReleaser/pushRelease.js +0 -31
- package/dist/src/scripts/gitReleaser/pushReleaseCandidate.js +0 -6
- package/dist/src/scripts/gitReleaser/pushReleaseNotes.js +0 -37
- package/dist/src/scripts/release/appCenter/appCenter.js +0 -17
- package/dist/src/scripts/release/appCenter/deployProductionPackagesToAppCenter.js +0 -127
- package/dist/src/scripts/release/appCenter/deployToAppCenter.js +0 -76
- package/dist/src/scripts/release/deleteSourceMaps.js +0 -11
- package/dist/src/scripts/release/githubRelease.js +0 -132
- package/dist/src/scripts/release/notifySlack/generateWebhoook.js +0 -69
- package/dist/src/scripts/release/notifySlack/makePayload.js +0 -89
- package/dist/src/scripts/release/notifySlack/notifySlack.js +0 -56
- package/dist/src/scripts/release/notifySlack/slackBlockKitBuilder.js +0 -39
- package/dist/src/scripts/release/sentryRelease.js +0 -95
- package/dist/src/scripts/release/urlsMarkdown.js +0 -66
- package/dist/src/scripts/releaseAllWithScheme.js +0 -90
- package/dist/src/scripts/releaseAllWithSchemes.js +0 -158
- package/dist/src/scripts/releaseProductionPackagesAll.js +0 -13
- package/dist/src/scripts/utils/cmdUtils.js +0 -12
- package/dist/src/scripts/utils/fsUtils.js +0 -37
- package/dist/src/scripts/utils/generateIcons.js +0 -29
- package/dist/src/scripts/utils/gitUtils.js +0 -78
- package/dist/src/scripts/utils/index.js +0 -31
- package/dist/src/scripts/utils/stringUtils.js +0 -5
- package/dist/src/sdks/index.js +0 -51
- package/dist/src/sdks/sdk-androidtv/index.js +0 -17
- package/dist/src/sdks/sdk-androidtv/sdkAndroidtv.js +0 -290
- package/dist/src/sdks/sdk-tizen/index.js +0 -17
- package/dist/src/sdks/sdk-tizen/sdkTizen.js +0 -178
- package/dist/src/sdks/sdk-utils/index.js +0 -18
- package/dist/src/sdks/sdk-utils/registerSdkPath.js +0 -14
- package/dist/src/sdks/sdk-utils/sdk-installer/index.js +0 -5
- package/dist/src/sdks/sdk-utils/sdk-installer/sdkInstaller.js +0 -37
- package/dist/src/sdks/sdk-utils/sdk-installer/services/clean.js +0 -11
- package/dist/src/sdks/sdk-utils/sdk-installer/services/download.js +0 -80
- package/dist/src/sdks/sdk-utils/sdk-installer/services/index.js +0 -11
- package/dist/src/sdks/sdk-utils/sdk-installer/services/install.js +0 -23
- package/dist/src/sdks/sdk-utils/sdk-installer/services/unzip.js +0 -13
- package/dist/src/sdks/sdk-webos/index.js +0 -17
- package/dist/src/sdks/sdk-webos/sdkWebos.js +0 -90
- package/dist/src/sdks/sdk-webpack/index.js +0 -17
- package/dist/src/sdks/sdk-webpack/sdkWebpack.js +0 -121
- package/dist/src/sdks/sdk-xbox/index.js +0 -17
- package/dist/src/sdks/sdk-xbox/sdkXbox.js +0 -221
- package/dist/src/tasks/deploy/aswS3/aws.js +0 -40
- package/dist/src/tasks/deploy/aswS3/deployS3.js +0 -74
- package/dist/src/tasks/deploy/aswS3/distToLiveS3.js +0 -75
- package/dist/src/tasks/deploy/hbbtv/deployHbbtv.js +0 -104
- package/dist/src/tasks/engineTasks.js +0 -24
- package/dist/src/tasks/task.rnv.build.js +0 -118
- package/dist/src/tasks/task.rnv.configure.js +0 -48
- package/dist/src/tasks/task.rnv.configureSoft.js +0 -30
- package/dist/src/tasks/task.rnv.deploy.js +0 -53
- package/dist/src/tasks/task.rnv.hooks.run.js +0 -74
- package/dist/src/tasks/task.rnv.package.js +0 -18
- package/dist/src/tasks/task.rnv.platform.configure.js +0 -79
- package/dist/src/tasks/task.rnv.project.configure.js +0 -120
- package/dist/src/tasks/task.rnv.start.js +0 -48
- package/dist/src/types/c.js +0 -2
- package/dist/src/types/constants.js +0 -2
- package/dist/src/types/index.js +0 -2
- package/dist/src/utils/copyEnvironmentFolder.js +0 -65
- package/dist/src/utils/copyTheoPlayerLibs.js +0 -48
- package/dist/src/utils/forEachSupportedPlatformFlavour.js +0 -46
- package/dist/src/utils/generatePngSpriteMap.js +0 -81
- package/dist/src/utils/generateSvgSpriteMap.js +0 -117
- package/dist/src/utils/getSafeSchemeString.js +0 -7
- package/dist/src/utils/mergeSvgAndPngIcons.js +0 -65
- package/dist/src/utils/replaceRelevantStringsInConfig/index.js +0 -5
- package/dist/src/utils/replaceRelevantStringsInConfig/replaceRelevantStringsInConfig.js +0 -31
- package/dist/src/utils/replaceRelevantStringsInConfig/replaceTemplateString.js +0 -40
- package/dist/src/utils/zipBuildsByPlatforms.js +0 -68
- package/dist/src/utils/zipStagingProdBuildsByPlatforms.js +0 -114
- package/dist/templates/platforms/_shared/template.js +0 -87
- package/dist/templates/platforms/_shared/utils/extendSass.js +0 -29
- package/dist/templates/platforms/_shared/utils/joinStrings.js +0 -5
- package/dist/templates/platforms/_shared/webpack.base.js +0 -248
- package/dist/templates/platforms/_shared/webpack.config.dev.js +0 -6
- package/dist/templates/platforms/_shared/webpack.config.prod.js +0 -6
- package/dist/templates/platforms/_shared/webpack.extend.js +0 -8
- package/dist/templates/platforms/_shared/webpackConfigAdapter.js +0 -99
- package/dist/templates/platforms/_shared/webpackPlatformProps.js +0 -8
- package/dist/templates/platforms/androidtv/project/README.md +0 -196
- package/dist/templates/platforms/androidtv/project/amazoniap/build.gradle +0 -38
- 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/java/com/twentyfouri/bridgetv/amazoniap/AmazonIapSevice.kt +0 -106
- package/dist/templates/platforms/androidtv/project/app/build.gradle +0 -110
- package/dist/templates/platforms/androidtv/project/app/proguard-rules.pro +0 -47
- 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/raw/configuration.json +0 -8
- package/dist/templates/platforms/androidtv/project/app/src/main/AndroidManifest.xml +0 -52
- 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 -382
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeToJavaScript.kt +0 -104
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/BridgeConfig.kt +0 -17
- 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 -14
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationComponent.kt +0 -26
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationModule.kt +0 -51
- 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/PlayerFactoryConfigured.kt +0 -33
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryExoPlayerCustomized.kt +0 -90
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryTheoPlayerCustomized.kt +0 -14
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryVersion.kt +0 -27
- 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 -91
- 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 -25
- 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/SourceParser.kt +0 -89
- 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 -17
- 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 -247
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/viewmodel/WebViewModel.kt +0 -557
- 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 -28
- 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/values/styles.xml +0 -12
- package/dist/templates/platforms/androidtv/project/app/src/main/res/xml/network_security_config.xml +0 -4
- package/dist/templates/platforms/androidtv/project/build.gradle +0 -47
- package/dist/templates/platforms/androidtv/project/common/build.gradle +0 -37
- 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/java/com/twentyfouri/tvbridge/common/IapService.kt +0 -114
- package/dist/templates/platforms/androidtv/project/googleiap/build.gradle +0 -39
- 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/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/proguard-rules.pro +0 -42
- package/dist/templates/platforms/androidtv/project/settings.gradle +0 -4
- package/dist/templates/platforms/hbbtv/webpackPlatformProps.js +0 -24
- package/dist/templates/platforms/tizen/project/.project +0 -24
- package/dist/templates/platforms/tizen/project/.tproject +0 -12
- package/dist/templates/platforms/tizen/project/config.xml +0 -17
- package/dist/templates/platforms/webos/project/.project +0 -35
- package/dist/templates/platforms/webos/project/appinfo.json +0 -19
- package/dist/templates/platforms/webos/webpackPlatformProps.js +0 -8
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.di
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import com.twentyfouri.player.base.PlayerFactoryBase
|
|
5
|
-
import com.twentyfouri.tvbridge.Flavor
|
|
6
|
-
import com.twentyfouri.tvbridge.common.NullIapService
|
|
7
|
-
import com.twentyfouri.tvbridge.configuration.BridgeConfig
|
|
8
|
-
import com.twentyfouri.tvbridge.global.BaseApplication
|
|
9
|
-
import com.twentyfouri.tvbridge.global.utils.LocalStorage
|
|
10
|
-
import com.twentyfouri.tvbridge.global.utils.PlayerFactoryConfigured
|
|
11
|
-
import com.twentyfouri.tvbridge.sound.TouchPlayer
|
|
12
|
-
import dagger.Module
|
|
13
|
-
import dagger.Provides
|
|
14
|
-
import javax.inject.Singleton
|
|
15
|
-
|
|
16
|
-
@Module
|
|
17
|
-
class ApplicationModule(
|
|
18
|
-
private val baseApplication: BaseApplication,
|
|
19
|
-
private val configuration: BridgeConfig
|
|
20
|
-
) {
|
|
21
|
-
@Provides
|
|
22
|
-
fun getApplication() = baseApplication
|
|
23
|
-
|
|
24
|
-
@Provides
|
|
25
|
-
fun getConfiguration() = configuration
|
|
26
|
-
|
|
27
|
-
@Provides
|
|
28
|
-
fun provideApplicationContext(): Context = baseApplication
|
|
29
|
-
|
|
30
|
-
@Singleton
|
|
31
|
-
@Provides
|
|
32
|
-
fun provideLocalStorage() = LocalStorage(baseApplication.applicationContext)
|
|
33
|
-
|
|
34
|
-
@Singleton
|
|
35
|
-
@Provides
|
|
36
|
-
fun provideTouchPlayer() = TouchPlayer(baseApplication)
|
|
37
|
-
|
|
38
|
-
@Singleton
|
|
39
|
-
@Provides
|
|
40
|
-
fun provideIapService() = Flavor()
|
|
41
|
-
.getIapServiceFactories()
|
|
42
|
-
.firstOrNull { it.detectSupport(baseApplication) }
|
|
43
|
-
?.build(baseApplication)
|
|
44
|
-
?: NullIapService()
|
|
45
|
-
|
|
46
|
-
@Provides
|
|
47
|
-
@Singleton
|
|
48
|
-
fun providePlayerFactory(config: BridgeConfig): PlayerFactoryBase =
|
|
49
|
-
PlayerFactoryConfigured.buildFactory(config)
|
|
50
|
-
|
|
51
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.di
|
|
2
|
-
|
|
3
|
-
import javax.inject.Scope
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2013 Square, Inc.
|
|
7
|
-
*
|
|
8
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
-
* you may not use this file except in compliance with the License.
|
|
10
|
-
* You may obtain a copy of the License at
|
|
11
|
-
*
|
|
12
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
-
*
|
|
14
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
-
* See the License for the specific language governing permissions and
|
|
18
|
-
* limitations under the License.
|
|
19
|
-
*/ /**
|
|
20
|
-
* A scoping annotation to permit objects whose lifetime should
|
|
21
|
-
* conform to the life of the activity to be memoized in the
|
|
22
|
-
* correct component.
|
|
23
|
-
*/
|
|
24
|
-
@Scope
|
|
25
|
-
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
|
|
26
|
-
annotation class PerActivity
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.content.SharedPreferences
|
|
5
|
-
|
|
6
|
-
class LocalStorage(context: Context) {
|
|
7
|
-
|
|
8
|
-
private val preferences: SharedPreferences =
|
|
9
|
-
context.applicationContext.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE)
|
|
10
|
-
|
|
11
|
-
fun saveCookieJson(key: String?, value: String?) {
|
|
12
|
-
val editor = preferences.edit()
|
|
13
|
-
editor.putString(key, value)
|
|
14
|
-
editor.apply()
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
fun removeFromLocalStorage(key: String?) {
|
|
18
|
-
val editor = preferences.edit()
|
|
19
|
-
editor.remove(key)
|
|
20
|
-
editor.apply()
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
fun getFromLocalStorage(key: String?): String? {
|
|
24
|
-
return preferences.getString(key, null)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
companion object {
|
|
28
|
-
private const val SHARED_PREFERENCES = "com.twentyfouri.tvbridge"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import android.util.Base64
|
|
4
|
-
import android.util.Log
|
|
5
|
-
import com.google.android.exoplayer2.drm.ExoMediaDrm
|
|
6
|
-
import com.google.android.exoplayer2.drm.MediaDrmCallback
|
|
7
|
-
import java.util.*
|
|
8
|
-
|
|
9
|
-
class LoggingDrmCallback(
|
|
10
|
-
private val base: MediaDrmCallback,
|
|
11
|
-
private val licenseUrl: String? = null
|
|
12
|
-
) : MediaDrmCallback {
|
|
13
|
-
override fun executeProvisionRequest(
|
|
14
|
-
uuid: UUID,
|
|
15
|
-
request: ExoMediaDrm.ProvisionRequest
|
|
16
|
-
): ByteArray {
|
|
17
|
-
return base.executeProvisionRequest(uuid, request)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override fun executeKeyRequest(uuid: UUID, request: ExoMediaDrm.KeyRequest): ByteArray {
|
|
21
|
-
if (com.twentyfouri.player.exoplayer.BuildConfig.DEBUG) {
|
|
22
|
-
Log.v(TAG, "DRM Embedded URL: ${request.licenseServerUrl}")
|
|
23
|
-
Log.v(TAG, "DRM Default URL: $licenseUrl")
|
|
24
|
-
Log.v(TAG, "DRM request:\n${request.data.toBase64()}")
|
|
25
|
-
}
|
|
26
|
-
val response = base.executeKeyRequest(uuid, request)
|
|
27
|
-
if (com.twentyfouri.player.exoplayer.BuildConfig.DEBUG) {
|
|
28
|
-
Log.v(TAG, "DRM response:\n" + response.toBase64())
|
|
29
|
-
}
|
|
30
|
-
return response
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
private fun ByteArray.toBase64(): String = Base64.encodeToString(this, Base64.DEFAULT)
|
|
34
|
-
|
|
35
|
-
companion object {
|
|
36
|
-
const val TAG = "DrmCallback"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import android.net.Uri
|
|
4
|
-
import android.util.Base64
|
|
5
|
-
import android.util.Log
|
|
6
|
-
import com.google.android.exoplayer2.C
|
|
7
|
-
import com.google.android.exoplayer2.drm.ExoMediaDrm
|
|
8
|
-
import com.google.android.exoplayer2.drm.MediaDrmCallback
|
|
9
|
-
import com.google.android.exoplayer2.upstream.DataSourceInputStream
|
|
10
|
-
import com.google.android.exoplayer2.upstream.DataSpec
|
|
11
|
-
import com.google.android.exoplayer2.upstream.HttpDataSource
|
|
12
|
-
import com.google.android.exoplayer2.util.Util
|
|
13
|
-
import com.twentyfouri.tvbridge.BuildConfig
|
|
14
|
-
import org.json.JSONException
|
|
15
|
-
import org.json.JSONObject
|
|
16
|
-
import java.io.BufferedReader
|
|
17
|
-
import java.io.IOException
|
|
18
|
-
import java.io.InputStreamReader
|
|
19
|
-
import java.net.MalformedURLException
|
|
20
|
-
import java.net.URL
|
|
21
|
-
import java.net.URLEncoder
|
|
22
|
-
import java.util.HashMap
|
|
23
|
-
import java.util.UUID
|
|
24
|
-
|
|
25
|
-
class OverriddenHttpMediaDrmCallback(
|
|
26
|
-
private val defaultLicenseUrl: String?,
|
|
27
|
-
private val forceDefaultLicenseUrl: Boolean,
|
|
28
|
-
private val dataSourceFactory: HttpDataSource.Factory
|
|
29
|
-
) : MediaDrmCallback {
|
|
30
|
-
|
|
31
|
-
@Throws(IOException::class)
|
|
32
|
-
override fun executeProvisionRequest(uuid: UUID, request: ExoMediaDrm.ProvisionRequest): ByteArray {
|
|
33
|
-
Log.d(TAG, "executeProvisionRequest")
|
|
34
|
-
val url = request.defaultUrl + "&signedRequest=" + String(request.data)
|
|
35
|
-
return executePost(dataSourceFactory, url, ByteArray(0), null)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
@Throws(Exception::class)
|
|
39
|
-
override fun executeKeyRequest(uuid: UUID, request: ExoMediaDrm.KeyRequest): ByteArray {
|
|
40
|
-
Log.d(TAG, "executeKeyRequest")
|
|
41
|
-
var url: String? = request.licenseServerUrl
|
|
42
|
-
if (forceDefaultLicenseUrl || url.isNullOrEmpty()) {
|
|
43
|
-
url = defaultLicenseUrl
|
|
44
|
-
}
|
|
45
|
-
val requestProperties: MutableMap<String, String> = HashMap()
|
|
46
|
-
// Add standard request properties for supported schemes.
|
|
47
|
-
val contentType = "text/plain"
|
|
48
|
-
requestProperties["Content-Type"] = contentType
|
|
49
|
-
if (C.PLAYREADY_UUID == uuid) {
|
|
50
|
-
requestProperties["SOAPAction"] = "http://schemas.microsoft.com/DRM/2007/03/protocols/AcquireLicense"
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
//adding data to url
|
|
54
|
-
val challenge = request.data
|
|
55
|
-
val encoded = URLEncoder.encode(Base64.encodeToString(challenge, Base64.NO_WRAP), "UTF-8")
|
|
56
|
-
url = appendQuery(url, "_widevineChallenge=$encoded")
|
|
57
|
-
if (BuildConfig.DEBUG) {
|
|
58
|
-
Log.d(TAG, "Executing post on url $url with content type $contentType")
|
|
59
|
-
}
|
|
60
|
-
return executeGet(url)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
companion object {
|
|
64
|
-
private const val TAG = "DrmCallback"
|
|
65
|
-
|
|
66
|
-
private fun executeGet(urlString: String): ByteArray {
|
|
67
|
-
try {
|
|
68
|
-
val licenserRequest = URL(urlString)
|
|
69
|
-
val yc = licenserRequest.openConnection()
|
|
70
|
-
val input = BufferedReader(InputStreamReader(yc.getInputStream()))
|
|
71
|
-
val builder = StringBuilder()
|
|
72
|
-
var inputLine: String?
|
|
73
|
-
while (input.readLine().also { inputLine = it } != null) {
|
|
74
|
-
builder.append(inputLine)
|
|
75
|
-
}
|
|
76
|
-
input.close()
|
|
77
|
-
val jsonObject = JSONObject(builder.toString())
|
|
78
|
-
val container = jsonObject.getJSONObject("getWidevineLicenseResponse")
|
|
79
|
-
val license = container.getString("license")
|
|
80
|
-
if (BuildConfig.DEBUG) {
|
|
81
|
-
Log.d(TAG, "Finished post: $license")
|
|
82
|
-
}
|
|
83
|
-
return Base64.decode(license, Base64.NO_WRAP)
|
|
84
|
-
} catch (e: MalformedURLException) {
|
|
85
|
-
e.printStackTrace()
|
|
86
|
-
} catch (e: IOException) {
|
|
87
|
-
e.printStackTrace()
|
|
88
|
-
} catch (e: JSONException) {
|
|
89
|
-
e.printStackTrace()
|
|
90
|
-
}
|
|
91
|
-
return byteArrayOf()
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@Throws(IOException::class)
|
|
95
|
-
private fun executePost(
|
|
96
|
-
dataSourceFactory: HttpDataSource.Factory,
|
|
97
|
-
url: String,
|
|
98
|
-
data: ByteArray,
|
|
99
|
-
requestProperties: Map<String, String>?
|
|
100
|
-
): ByteArray {
|
|
101
|
-
Log.d(TAG, "executePost")
|
|
102
|
-
val dataSource = dataSourceFactory.createDataSource()
|
|
103
|
-
if (requestProperties != null) {
|
|
104
|
-
for ((key, value) in requestProperties) {
|
|
105
|
-
dataSource.setRequestProperty(key, value)
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
val dataSpec = DataSpec.Builder()
|
|
109
|
-
.setUri(Uri.parse(url))
|
|
110
|
-
.setFlags(DataSpec.FLAG_ALLOW_GZIP)
|
|
111
|
-
.setHttpMethod(DataSpec.HTTP_METHOD_POST)
|
|
112
|
-
.setHttpBody(data)
|
|
113
|
-
.setHttpRequestHeaders(requestProperties ?: emptyMap())
|
|
114
|
-
.build()
|
|
115
|
-
val inputStream = DataSourceInputStream(dataSource, dataSpec)
|
|
116
|
-
return try {
|
|
117
|
-
Util.toByteArray(inputStream)
|
|
118
|
-
} finally {
|
|
119
|
-
Util.closeQuietly(inputStream)
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
fun appendQuery(url: String?, appendQuery: String): String {
|
|
124
|
-
val oldUri = Uri.parse(url)
|
|
125
|
-
var newQuery = oldUri.query
|
|
126
|
-
if (newQuery == null) {
|
|
127
|
-
newQuery = appendQuery
|
|
128
|
-
} else {
|
|
129
|
-
newQuery += "&$appendQuery"
|
|
130
|
-
}
|
|
131
|
-
return oldUri.scheme + "://" + oldUri.authority + oldUri.path + "?" + newQuery
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import com.twentyfouri.player.base.*
|
|
4
|
-
import com.twentyfouri.player.theoplayer.PlayerFactoryTheoPlayer
|
|
5
|
-
import com.twentyfouri.tvbridge.configuration.BridgeConfig
|
|
6
|
-
|
|
7
|
-
object PlayerFactoryConfigured {
|
|
8
|
-
|
|
9
|
-
fun buildFactory(bridgeConfig: BridgeConfig): PlayerFactoryBase {
|
|
10
|
-
var factory: PlayerFactoryBase? = null
|
|
11
|
-
if (bridgeConfig.theoLicense.isNotEmpty()) {
|
|
12
|
-
factory = factory ?: buildTheoFactory(bridgeConfig)
|
|
13
|
-
}
|
|
14
|
-
factory = factory ?: buildExoFactory(bridgeConfig)
|
|
15
|
-
return factory ?: throw Exception("Cannot create player factory")
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
private fun buildExoFactory(bridgeConfig: BridgeConfig): PlayerFactoryBase? {
|
|
19
|
-
try {
|
|
20
|
-
return PlayerFactoryExoPlayerCustomized(bridgeConfig)
|
|
21
|
-
} catch (e: NoClassDefFoundError) {
|
|
22
|
-
return null
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
private fun buildTheoFactory(bridgeConfig: BridgeConfig): PlayerFactoryBase? {
|
|
27
|
-
try {
|
|
28
|
-
return PlayerFactoryTheoPlayerCustomized(bridgeConfig)
|
|
29
|
-
} catch (e: NoClassDefFoundError) {
|
|
30
|
-
return null
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import com.google.android.exoplayer2.C
|
|
5
|
-
import com.google.android.exoplayer2.ExoPlayerLibraryInfo
|
|
6
|
-
import com.google.android.exoplayer2.drm.DefaultDrmSessionManager
|
|
7
|
-
import com.google.android.exoplayer2.drm.DrmSessionManager
|
|
8
|
-
import com.google.android.exoplayer2.drm.FrameworkMediaDrm
|
|
9
|
-
import com.google.android.exoplayer2.drm.MediaDrmCallback
|
|
10
|
-
import com.google.android.exoplayer2.upstream.HttpDataSource
|
|
11
|
-
import com.google.android.exoplayer2.util.Util
|
|
12
|
-
import com.twentyfouri.player.base.DrmPlayready
|
|
13
|
-
import com.twentyfouri.player.base.DrmWidevine
|
|
14
|
-
import com.twentyfouri.player.base.Source
|
|
15
|
-
import com.twentyfouri.player.base.SourceDrm
|
|
16
|
-
import com.twentyfouri.player.exoplayer.*
|
|
17
|
-
import com.twentyfouri.tvbridge.configuration.BridgeConfig
|
|
18
|
-
|
|
19
|
-
class PlayerFactoryExoPlayerCustomized(
|
|
20
|
-
private val config: BridgeConfig
|
|
21
|
-
) : PlayerFactoryExoPlayer(), PlayerFactoryVersion {
|
|
22
|
-
|
|
23
|
-
override val engineName: String = "Exoplayer"
|
|
24
|
-
|
|
25
|
-
override val engineVersion: String = ExoPlayerLibraryInfo.VERSION
|
|
26
|
-
|
|
27
|
-
override fun createSharedComponents(context: Context): SharedComponents =
|
|
28
|
-
CustomizedSharedComponents(context)
|
|
29
|
-
|
|
30
|
-
private inner class CustomizedSharedComponents(context: Context) : DefaultSharedComponents(context) {
|
|
31
|
-
|
|
32
|
-
override val drmProvider: DrmSessionManagerProvider by lazy { CustomizedDrmSessionManagerProvider() }
|
|
33
|
-
|
|
34
|
-
override val applicationName: String
|
|
35
|
-
get() = config.playerAppName ?: super.applicationName
|
|
36
|
-
|
|
37
|
-
override fun buildIsolatedComponents(): PlayerComponents {
|
|
38
|
-
return CustomizedPlayerComponents(this)
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
private inner class CustomizedPlayerComponents(shared: SharedComponents) : DefaultPlayerComponents(shared) {
|
|
43
|
-
override val handleAudioFocus: Boolean
|
|
44
|
-
get() = false
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
private class CustomizedDrmSessionManagerProvider : DefaultDrmSessionManagerProvider() {
|
|
48
|
-
override fun buildDrmSessionManager(
|
|
49
|
-
dataSourceFactory: AuthorizedDataSourceProvider,
|
|
50
|
-
source: Source,
|
|
51
|
-
sourceDrm: SourceDrm
|
|
52
|
-
): DrmSessionManager? {
|
|
53
|
-
if (sourceDrm is SourceDrmOverridden) {
|
|
54
|
-
return buildDrmOverridden(dataSourceFactory, sourceDrm)
|
|
55
|
-
} else {
|
|
56
|
-
return super.buildDrmSessionManager(dataSourceFactory, source, sourceDrm)
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
private fun buildDrmOverridden(dataSourceFactory: AuthorizedDataSourceProvider, sourceDrm: SourceDrmOverridden): DrmSessionManager? {
|
|
61
|
-
val drmUuid = when (sourceDrm.packageName) {
|
|
62
|
-
DrmWidevine.packageName -> C.WIDEVINE_UUID
|
|
63
|
-
DrmPlayready.packageName -> C.PLAYREADY_UUID
|
|
64
|
-
else -> C.UUID_NIL
|
|
65
|
-
}
|
|
66
|
-
val licenseUrl = sourceDrm.licenseServer?.toString() ?: ""
|
|
67
|
-
val forceLicenseUrl = sourceDrm.forceLicenseServer
|
|
68
|
-
val httpDataSourceFactory = dataSourceFactory.buildHttpDataSourceFactory(sourceDrm.authorization)
|
|
69
|
-
|
|
70
|
-
val drmCallback = LoggingDrmCallback(
|
|
71
|
-
OverriddenHttpMediaDrmCallback(
|
|
72
|
-
licenseUrl,
|
|
73
|
-
forceLicenseUrl,
|
|
74
|
-
httpDataSourceFactory
|
|
75
|
-
),
|
|
76
|
-
licenseUrl
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
return DefaultDrmSessionManager.Builder()
|
|
80
|
-
.setUuidAndExoMediaDrmProvider(drmUuid, FrameworkMediaDrm.DEFAULT_PROVIDER)
|
|
81
|
-
.setMultiSession(false)
|
|
82
|
-
.build(drmCallback)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
override fun buildDrmCallback(licenseUrl: String, forceLicenseUrl: Boolean, httpDataSourceFactory: HttpDataSource.Factory): MediaDrmCallback {
|
|
86
|
-
return LoggingDrmCallback(super.buildDrmCallback(licenseUrl, forceLicenseUrl, httpDataSourceFactory), licenseUrl)
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import com.theoplayer.android.api.THEOplayerGlobal
|
|
4
|
-
import com.twentyfouri.player.theoplayer.PlayerFactoryTheoPlayer
|
|
5
|
-
import com.twentyfouri.tvbridge.configuration.BridgeConfig
|
|
6
|
-
|
|
7
|
-
class PlayerFactoryTheoPlayerCustomized(
|
|
8
|
-
private val config: BridgeConfig
|
|
9
|
-
) : PlayerFactoryTheoPlayer(config.theoLicense), PlayerFactoryVersion {
|
|
10
|
-
|
|
11
|
-
override val engineName: String = "THEOPlayer"
|
|
12
|
-
|
|
13
|
-
override val engineVersion: String = THEOplayerGlobal.getVersion()
|
|
14
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import com.twentyfouri.player.base.PlayerFactoryBase
|
|
4
|
-
|
|
5
|
-
interface PlayerFactoryVersion {
|
|
6
|
-
val engineName: String
|
|
7
|
-
val engineVersion: String
|
|
8
|
-
|
|
9
|
-
private data class Fixed(
|
|
10
|
-
override val engineName: String,
|
|
11
|
-
override val engineVersion: String
|
|
12
|
-
): PlayerFactoryVersion
|
|
13
|
-
|
|
14
|
-
companion object {
|
|
15
|
-
fun from(factory: PlayerFactoryBase): PlayerFactoryVersion {
|
|
16
|
-
(factory as? PlayerFactoryVersion)?.also { return it }
|
|
17
|
-
|
|
18
|
-
// fallback to just engine name
|
|
19
|
-
val engineName = factory.javaClass.simpleName
|
|
20
|
-
.replace("PlayerFactory", "")
|
|
21
|
-
.replace("Customized", "")
|
|
22
|
-
.lowercase()
|
|
23
|
-
val engineVersion = "0.0.0"
|
|
24
|
-
return Fixed(engineName, engineVersion)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import android.app.Activity
|
|
4
|
-
import android.app.Application.ActivityLifecycleCallbacks
|
|
5
|
-
import android.os.Bundle
|
|
6
|
-
|
|
7
|
-
abstract class SimpleActivityLifecycleCallback : ActivityLifecycleCallbacks {
|
|
8
|
-
|
|
9
|
-
override fun onActivityStarted(activity: Activity) {
|
|
10
|
-
//Do nothing
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
override fun onActivityResumed(activity: Activity) {
|
|
14
|
-
//Do nothing
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
override fun onActivityPaused(activity: Activity) {
|
|
18
|
-
//Do nothing
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
override fun onActivityStopped(activity: Activity) {
|
|
22
|
-
//Do nothing
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle) {
|
|
26
|
-
//Do nothing
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
override fun onActivityDestroyed(activity: Activity) {
|
|
30
|
-
//Do nothing
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.global.utils
|
|
2
|
-
|
|
3
|
-
import com.twentyfouri.player.base.Source
|
|
4
|
-
import com.twentyfouri.player.base.SourceAuthorization
|
|
5
|
-
import com.twentyfouri.player.base.SourceDrm
|
|
6
|
-
import com.twentyfouri.player.base.SourceDrmPlayready
|
|
7
|
-
import com.twentyfouri.player.base.SourceDrmWidevine
|
|
8
|
-
import com.twentyfouri.player.base.buildUpon
|
|
9
|
-
import java.net.URI
|
|
10
|
-
|
|
11
|
-
open class SourceDrmOverridden protected constructor(
|
|
12
|
-
builder: Builder
|
|
13
|
-
) : SourceDrm() {
|
|
14
|
-
|
|
15
|
-
override val packageName: String = builder.packageName
|
|
16
|
-
?: throw IllegalStateException("Missing SourceDrmOverridden.packageName")
|
|
17
|
-
val licenseServer: URI? = builder.licenseServer
|
|
18
|
-
val forceLicenseServer: Boolean = builder.forceLicenseServer
|
|
19
|
-
val authorization: SourceAuthorization? = builder.authorization
|
|
20
|
-
|
|
21
|
-
override fun hashCode(): Int = licenseServer.hashCode()
|
|
22
|
-
|
|
23
|
-
override fun toString(): String = "SourceDrmOverridden($licenseServer)"
|
|
24
|
-
|
|
25
|
-
override fun equals(other: Any?): Boolean = other is SourceDrmOverridden &&
|
|
26
|
-
packageName == other.packageName &&
|
|
27
|
-
licenseServer == other.licenseServer &&
|
|
28
|
-
forceLicenseServer == other.forceLicenseServer &&
|
|
29
|
-
authorization == other.authorization
|
|
30
|
-
|
|
31
|
-
override fun buildUpon() = Builder()
|
|
32
|
-
.also { it.applyFrom(this) }
|
|
33
|
-
|
|
34
|
-
open class Builder : SourceDrm.Builder() {
|
|
35
|
-
var packageName: String? = null
|
|
36
|
-
var licenseServer: URI? = null
|
|
37
|
-
var forceLicenseServer: Boolean = false
|
|
38
|
-
var authorization: SourceAuthorization? = null
|
|
39
|
-
|
|
40
|
-
open fun applyFrom(source: SourceDrm) {
|
|
41
|
-
when (source) {
|
|
42
|
-
is SourceDrmOverridden -> applyFrom(source)
|
|
43
|
-
is SourceDrmWidevine -> applyFrom(source)
|
|
44
|
-
is SourceDrmPlayready -> applyFrom(source)
|
|
45
|
-
else -> {
|
|
46
|
-
packageName = source.packageName
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
open fun applyFrom(source: SourceDrmOverridden) {
|
|
52
|
-
packageName = source.packageName
|
|
53
|
-
licenseServer = source.licenseServer
|
|
54
|
-
forceLicenseServer = source.forceLicenseServer
|
|
55
|
-
authorization = source.authorization
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
open fun applyFrom(source: SourceDrmWidevine) {
|
|
59
|
-
packageName = source.packageName
|
|
60
|
-
licenseServer = source.licenseServer
|
|
61
|
-
forceLicenseServer = source.forceLicenseServer
|
|
62
|
-
authorization = source.authorization
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
open fun applyFrom(source: SourceDrmPlayready) {
|
|
66
|
-
packageName = source.packageName
|
|
67
|
-
licenseServer = source.licenseServer
|
|
68
|
-
forceLicenseServer = source.forceLicenseServer
|
|
69
|
-
authorization = source.authorization
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
override fun build() =
|
|
73
|
-
SourceDrmOverridden(this)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
companion object {
|
|
77
|
-
fun replaceSource(source: Source): Source {
|
|
78
|
-
if (source.drm.isEmpty()) return source
|
|
79
|
-
return source.buildUpon {
|
|
80
|
-
drm = drm.mapTo(mutableListOf()) { sourceDrm ->
|
|
81
|
-
SourceDrmOverridden {
|
|
82
|
-
applyFrom(sourceDrm)
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
inline fun SourceDrmOverridden(block: SourceDrmOverridden.Builder.() -> Unit) =
|
|
91
|
-
SourceDrmOverridden.Builder().apply(block).build()
|
|
@@ -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
|
-
}
|