diff --git a/MediaSessionKotlin/.gitignore b/MediaSessionKotlin/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/MediaSessionKotlin/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/MediaSessionKotlin/build.gradle b/MediaSessionKotlin/build.gradle
new file mode 100644
index 00000000..30345f84
--- /dev/null
+++ b/MediaSessionKotlin/build.gradle
@@ -0,0 +1,44 @@
+plugins {
+ id 'com.android.application'
+ id 'org.jetbrains.kotlin.android'
+}
+
+android {
+ namespace 'com.bitmovin.player.samples.media.session'
+ compileSdk rootProject.compileSdk
+
+ defaultConfig {
+ applicationId "com.bitmovin.player.samples.media.session"
+ minSdkVersion rootProject.minSdkVersion
+ targetSdkVersion rootProject.targetSdkVersion
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ buildFeatures {
+ viewBinding = true
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
+ }
+ kotlinOptions {
+ jvmTarget = '11'
+ }
+}
+
+dependencies {
+ implementation supportDependencies.appCompat
+ implementation bitmovinPlayerDependencies.bitmovinPlayer
+ implementation "com.bitmovin.player:player-media-session:${bitmovinPlayerVersion}"
+ implementation 'androidx.activity:activity:1.9.3'
+ implementation 'com.google.android.material:material:1.12.0'
+}
diff --git a/MediaSessionKotlin/proguard-rules.pro b/MediaSessionKotlin/proguard-rules.pro
new file mode 100644
index 00000000..f1b42451
--- /dev/null
+++ b/MediaSessionKotlin/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/MediaSessionKotlin/src/main/AndroidManifest.xml b/MediaSessionKotlin/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..0e626c03
--- /dev/null
+++ b/MediaSessionKotlin/src/main/AndroidManifest.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MediaSessionKotlin/src/main/java/com/bitmovin/player/samples/media/session/MainActivity.kt b/MediaSessionKotlin/src/main/java/com/bitmovin/player/samples/media/session/MainActivity.kt
new file mode 100644
index 00000000..a8907c35
--- /dev/null
+++ b/MediaSessionKotlin/src/main/java/com/bitmovin/player/samples/media/session/MainActivity.kt
@@ -0,0 +1,117 @@
+package com.bitmovin.player.samples.media.session
+
+import android.Manifest
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.content.ServiceConnection
+import android.content.pm.PackageManager
+import android.os.Build
+import android.os.Bundle
+import android.os.IBinder
+import android.view.ViewGroup
+import android.widget.RelativeLayout
+import androidx.activity.result.contract.ActivityResultContracts.RequestPermission
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import com.bitmovin.player.PlayerView
+import com.bitmovin.player.api.Player
+import com.bitmovin.player.api.source.SourceConfig
+import com.bitmovin.player.api.source.SourceType
+import com.bitmovin.player.samples.media.session.databinding.ActivityMainBinding
+
+class MainActivity : AppCompatActivity() {
+ private lateinit var playerView: PlayerView
+ private var serviceBinder: MediaSessionPlaybackService.ServiceBinder? = null
+ private val player: Player? get() = serviceBinder?.player
+ private var isBound = false
+ private lateinit var uiBinding: ActivityMainBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ uiBinding = ActivityMainBinding.inflate(layoutInflater)
+ setContentView(uiBinding.root)
+ // Create a PlayerView without a Player and add it to the View hierarchy
+ playerView = PlayerView(this, null as Player?).apply {
+ layoutParams = RelativeLayout.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT
+ )
+ }
+ playerView.keepScreenOn = true
+ uiBinding.root.addView(playerView)
+ }
+
+ private fun initializePlayer() {
+ // Load a new source
+ val sourceConfig = SourceConfig(
+ "https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd",
+ SourceType.Dash,
+ posterSource = "https://bitmovin-a.akamaihd.net/content/poster/hd/RedBull.jpg"
+ )
+
+ player?.load(sourceConfig)
+ }
+
+
+ private fun bindService() {
+ val intent = Intent(this, MediaSessionPlaybackService::class.java)
+ intent.setAction(Intent.ACTION_MEDIA_BUTTON)
+ bindService(intent, connection, Context.BIND_AUTO_CREATE)
+ startService(intent)
+ }
+
+ private fun unbindService() {
+ unbindService(connection)
+ }
+
+ override fun onStart() {
+ super.onStart()
+ playerView.onStart()
+ bindService()
+ }
+
+ override fun onResume() {
+ super.onResume()
+
+ // Attach the Player to allow the PlayerView to control the player
+ playerView.player = player
+ playerView.onResume()
+ }
+
+ override fun onPause() {
+ // Detach the Player to decouple it from the PlayerView lifecycle
+ playerView.player = null
+ playerView.onPause()
+ super.onPause()
+ }
+
+ override fun onStop() {
+ super.onStop()
+ // Unbind the Service and reset the Player reference
+ unbindService()
+ playerView.onStop()
+ }
+
+ override fun onDestroy() {
+ playerView.onDestroy()
+ super.onDestroy()
+ }
+
+ private val connection = object : ServiceConnection {
+ override fun onServiceConnected(className: ComponentName, service: IBinder) {
+ // We've bound to the Service, cast the IBinder and get the Player instance
+ val binder = service as MediaSessionPlaybackService.ServiceBinder
+ serviceBinder = binder
+ val player = binder.player ?: throw IllegalStateException("Player is null")
+ playerView.player = player
+ if (player.source == null) {
+ initializePlayer()
+ }
+ }
+
+ override fun onServiceDisconnected(name: ComponentName) {
+ isBound = false
+ }
+ }
+}
diff --git a/MediaSessionKotlin/src/main/java/com/bitmovin/player/samples/media/session/MediaSessionPlaybackService.kt b/MediaSessionKotlin/src/main/java/com/bitmovin/player/samples/media/session/MediaSessionPlaybackService.kt
new file mode 100644
index 00000000..7ebf2c09
--- /dev/null
+++ b/MediaSessionKotlin/src/main/java/com/bitmovin/player/samples/media/session/MediaSessionPlaybackService.kt
@@ -0,0 +1,53 @@
+package com.bitmovin.player.samples.media.session
+
+import android.content.Intent
+import android.os.Binder
+import android.os.IBinder
+import com.bitmovin.player.api.PlaybackConfig
+import com.bitmovin.player.api.Player
+import com.bitmovin.player.api.PlayerConfig
+import com.bitmovin.player.api.media.session.ControllerInfo
+import com.bitmovin.player.api.media.session.MediaSession
+import com.bitmovin.player.api.media.session.MediaSessionService
+
+class MediaSessionPlaybackService : MediaSessionService() {
+ inner class ServiceBinder : Binder() {
+ val player get() = this@MediaSessionPlaybackService.player
+ fun connectSession() = addSession(mediaSession)
+ fun disconnectSession() = removeSession(mediaSession)
+ }
+
+ private val binder = ServiceBinder()
+ private lateinit var player: Player
+ private lateinit var mediaSession: MediaSession
+
+ override fun onGetSession(controllerInfo: ControllerInfo) = mediaSession
+
+ override fun onCreate() {
+ super.onCreate()
+ player = Player(
+ this, PlayerConfig(
+ playbackConfig = PlaybackConfig(
+ handleAudioFocus = true
+ )
+ )
+ )
+ mediaSession = MediaSession(
+ this,
+ mainLooper,
+ player,
+ )
+ }
+
+ override fun onDestroy() {
+ mediaSession.release()
+ player.destroy()
+
+ super.onDestroy()
+ }
+
+ override fun onBind(intent: Intent?): IBinder {
+ super.onBind(intent)
+ return binder
+ }
+}
diff --git a/MediaSessionKotlin/src/main/res/drawable/ic_launcher_background.xml b/MediaSessionKotlin/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/MediaSessionKotlin/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MediaSessionKotlin/src/main/res/drawable/ic_launcher_foreground.xml b/MediaSessionKotlin/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 00000000..7706ab9e
--- /dev/null
+++ b/MediaSessionKotlin/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MediaSessionKotlin/src/main/res/layout/activity_main.xml b/MediaSessionKotlin/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..34404b04
--- /dev/null
+++ b/MediaSessionKotlin/src/main/res/layout/activity_main.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/MediaSessionKotlin/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/MediaSessionKotlin/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..b3e26b4c
--- /dev/null
+++ b/MediaSessionKotlin/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/MediaSessionKotlin/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/MediaSessionKotlin/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..b3e26b4c
--- /dev/null
+++ b/MediaSessionKotlin/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/MediaSessionKotlin/src/main/res/mipmap-hdpi/ic_launcher.webp b/MediaSessionKotlin/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 00000000..c209e78e
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/MediaSessionKotlin/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..b2dfe3d1
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-mdpi/ic_launcher.webp b/MediaSessionKotlin/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 00000000..4f0f1d64
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/MediaSessionKotlin/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..62b611da
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-xhdpi/ic_launcher.webp b/MediaSessionKotlin/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 00000000..948a3070
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/MediaSessionKotlin/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..1b9a6956
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/MediaSessionKotlin/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..28d4b77f
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/MediaSessionKotlin/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9287f508
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/MediaSessionKotlin/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..aa7d6427
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/MediaSessionKotlin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/MediaSessionKotlin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9126ae37
Binary files /dev/null and b/MediaSessionKotlin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/MediaSessionKotlin/src/main/res/values/colors.xml b/MediaSessionKotlin/src/main/res/values/colors.xml
new file mode 100644
index 00000000..3ab3e9cb
--- /dev/null
+++ b/MediaSessionKotlin/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #3F51B5
+ #303F9F
+ #FF4081
+
diff --git a/MediaSessionKotlin/src/main/res/values/strings.xml b/MediaSessionKotlin/src/main/res/values/strings.xml
new file mode 100644
index 00000000..0e1e427e
--- /dev/null
+++ b/MediaSessionKotlin/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ MediaSessionKotlin
+
diff --git a/MediaSessionKotlin/src/main/res/values/themes.xml b/MediaSessionKotlin/src/main/res/values/themes.xml
new file mode 100644
index 00000000..96b8200a
--- /dev/null
+++ b/MediaSessionKotlin/src/main/res/values/themes.xml
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/README.md b/README.md
index 6bcde122..91e68669 100644
--- a/README.md
+++ b/README.md
@@ -36,8 +36,7 @@ Every example is available in `Java` and `Kotlin` :+1:
+ **BackgroundPlayback** Shows how background playback can be implemented for the Bitmovin Player.
+ **BasicVrPlayback** Shows how the Bitmovin Player can be setup and configured for playback of VR content.
+ **BasicPiPHandling** Shows how the `BitmovinPlayerView` can be configured to allow the Picture in Picture mode.
-+ **BasicControlNotification** Shows how the `BitmovinPlayerNotificationManager` can be used to show playback control notifications.
-+ **BasicMediaControl** Shows how the `BitmovinPlayerNotificationManager` can be used to connect to Android's system media controls.
++ **MediaSession** Shows how the media session integration can be used to connect to Android's system media controls and do background playback.
+ **BasicLowLatencyPlayback** Shows how the Bitmovin Player can be setup to playback streams in low latency mode.
+ **CustomAdaptation** Shows how the Bitmovin Player can be setup to implement custom adaptation behavior.
@@ -84,9 +83,7 @@ Every example is available in `Java` and `Kotlin` :+1:
com.bitmovin.player.samples.custom.ui.html
com.bitmovin.player.samples.offline.playback
com.bitmovin.player.samples.pip.basic
- com.bitmovin.player.samples.notification.basic
- com.bitmovin.player.samples.mediacontrol.basic
- com.bitmovin.player.samples.playback.background
+ com.bitmovin.player.samples.media.session
com.bitmovin.player.samples.tv.playback.basic
com.bitmovin.player.samples.playback.lowlatency
com.bitmovin.player.samples.custom.adaptation
@@ -148,7 +145,7 @@ When you want to develop an own Android application using the Bitmovin Player An
It is recommended to reference a specific version as you can see below:
```
- implementation 'com.bitmovin.player:player:3.91.0'
+ implementation 'com.bitmovin.player:player:3.92.0'
```
#### Additional SDK dependencies
diff --git a/dependencies.gradle b/dependencies.gradle
index 95f4d720..84cf305a 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -3,7 +3,7 @@ ext {
playServicesAdsIdentifierVersion = '18.0.1'
imaSdkVersion = '3.33.0'
playServicesCastVersion = '21.4.0'
- bitmovinPlayerVersion = '3.91.0'
+ bitmovinPlayerVersion = '3.92.0'
appcompat_version = "1.6.1"
activity_version = "1.6.1"
fragment_version = "1.5.5"
diff --git a/gradlew.bat b/gradlew.bat
index 9d21a218..9b42019c 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,94 +1,94 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-@rem SPDX-License-Identifier: Apache-2.0
-@rem
-
-@if "%DEBUG%"=="" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%"=="" set DIRNAME=.
-@rem This is normally unused
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if %ERRORLEVEL% equ 0 goto execute
-
-echo. 1>&2
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
-echo. 1>&2
-echo Please set the JAVA_HOME variable in your environment to match the 1>&2
-echo location of your Java installation. 1>&2
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo. 1>&2
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
-echo. 1>&2
-echo Please set the JAVA_HOME variable in your environment to match the 1>&2
-echo location of your Java installation. 1>&2
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if %ERRORLEVEL% equ 0 goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-set EXIT_CODE=%ERRORLEVEL%
-if %EXIT_CODE% equ 0 set EXIT_CODE=1
-if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
-exit /b %EXIT_CODE%
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/settings.gradle b/settings.gradle
index bf11af65..fce628f2 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,16 +1,12 @@
include ':Analytics',
':AnalyticsKotlin',
- ':BackgroundPlayback',
- ':BackgroundPlaybackKotlin',
':BasicCasting',
':BasicCastingKotlin',
- ':BasicControlNotification',
':BasicDRMPlayback',
':BasicDRMPlaybackKotlin',
':BasicFullscreenHandling',
':BasicFullscreenHandlingKotlin',
':BasicLowLatencyPlayback',
- ':BasicMediaControlKotlin',
':BasicMetadataHandling',
':BasicMetadataHandlingKotlin',
':BasicPiPHandling',
@@ -43,4 +39,5 @@ include ':Analytics',
':OfflinePlayback',
':OfflinePlaybackKotlin',
':ProgressiveAds',
- ':ProgressiveAdsKotlin'
+ ':ProgressiveAdsKotlin',
+ ':MediaSessionKotlin'