diff --git a/CHANGELOG.md b/CHANGELOG.md index 86864b975..38e0983c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.0 +* Updated ExoPlayer version to 2.19.1 +* Updated Kotlin version to 1.8.22. + ## 0.0.83 * Updated dependencies * Fixed Flutter 3.0 issues diff --git a/android/build.gradle b/android/build.gradle index 40d3f6b57..4250a4977 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,13 +2,13 @@ group 'com.jhomlala.better_player.better_player' version '1.0-SNAPSHOT' buildscript { - ext.exoPlayerVersion = "2.17.1" + ext.exoPlayerVersion = "2.19.1" ext.lifecycleVersion = "2.4.0-beta01" ext.annotationVersion = "1.2.0" ext.workVersion = "2.7.0" ext.coreVersion = "1.6.0" ext.gradleVersion = "7.0.2" - ext.kotlinVersion = "1.5.31" + ext.kotlinVersion = "1.8.22" repositories { google() @@ -32,7 +32,7 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { - compileSdkVersion 31 + compileSdkVersion 33 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -68,4 +68,5 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" + implementation 'androidx.media3:media3-common:1.1.1' } diff --git a/android/src/main/kotlin/com/jhomlala/better_player/BetterPlayer.kt b/android/src/main/kotlin/com/jhomlala/better_player/BetterPlayer.kt index f5e494430..89410d175 100644 --- a/android/src/main/kotlin/com/jhomlala/better_player/BetterPlayer.kt +++ b/android/src/main/kotlin/com/jhomlala/better_player/BetterPlayer.kt @@ -32,7 +32,6 @@ import com.google.android.exoplayer2.drm.FrameworkMediaDrm import com.google.android.exoplayer2.drm.UnsupportedDrmException import com.google.android.exoplayer2.drm.DummyExoMediaDrm import com.google.android.exoplayer2.drm.LocalMediaDrmCallback -import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory import com.google.android.exoplayer2.source.MediaSource import com.google.android.exoplayer2.source.ClippingMediaSource import com.google.android.exoplayer2.ui.PlayerNotificationManager.MediaDescriptionAdapter @@ -51,14 +50,12 @@ import com.google.android.exoplayer2.source.hls.HlsMediaSource import com.google.android.exoplayer2.source.ProgressiveMediaSource import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory import io.flutter.plugin.common.EventChannel.EventSink -import androidx.media.session.MediaButtonReceiver import androidx.work.Data import com.google.android.exoplayer2.* import com.google.android.exoplayer2.audio.AudioAttributes import com.google.android.exoplayer2.drm.DrmSessionManagerProvider import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector -import com.google.android.exoplayer2.trackselection.DefaultTrackSelector.SelectionOverride -import com.google.android.exoplayer2.trackselection.TrackSelectionOverrides +import com.google.android.exoplayer2.trackselection.TrackSelectionOverride import com.google.android.exoplayer2.upstream.DataSource import com.google.android.exoplayer2.upstream.DefaultDataSource import com.google.android.exoplayer2.util.Util @@ -411,24 +408,33 @@ internal class BetterPlayer( C.TYPE_SS -> SsMediaSource.Factory( DefaultSsChunkSource.Factory(mediaDataSourceFactory), DefaultDataSource.Factory(context, mediaDataSourceFactory) - ) - .setDrmSessionManagerProvider(drmSessionManagerProvider) - .createMediaSource(mediaItem) + ).apply{ + drmSessionManagerProvider?.let{ + this.setDrmSessionManagerProvider(it) + } + }.createMediaSource(mediaItem) C.TYPE_DASH -> DashMediaSource.Factory( DefaultDashChunkSource.Factory(mediaDataSourceFactory), DefaultDataSource.Factory(context, mediaDataSourceFactory) - ) - .setDrmSessionManagerProvider(drmSessionManagerProvider) - .createMediaSource(mediaItem) + ).apply{ + drmSessionManagerProvider?.let{ + this.setDrmSessionManagerProvider(it) + } + }.createMediaSource(mediaItem) C.TYPE_HLS -> HlsMediaSource.Factory(mediaDataSourceFactory) - .setDrmSessionManagerProvider(drmSessionManagerProvider) - .createMediaSource(mediaItem) + .apply{ + drmSessionManagerProvider?.let{ + this.setDrmSessionManagerProvider(it) + } + }.createMediaSource(mediaItem) C.TYPE_OTHER -> ProgressiveMediaSource.Factory( mediaDataSourceFactory, DefaultExtractorsFactory() - ) - .setDrmSessionManagerProvider(drmSessionManagerProvider) - .createMediaSource(mediaItem) + ).apply{ + drmSessionManagerProvider?.let{ + this.setDrmSessionManagerProvider(it) + } + }.createMediaSource(mediaItem) else -> { throw IllegalStateException("Unsupported type: $type") } @@ -508,12 +514,12 @@ internal class BetterPlayer( val audioComponent = exoPlayer?.audioComponent ?: return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { audioComponent.setAudioAttributes( - AudioAttributes.Builder().setContentType(C.CONTENT_TYPE_MOVIE).build(), + AudioAttributes.Builder().setContentType(C.AUDIO_CONTENT_TYPE_MOVIE).build(), !mixWithOthers ) } else { audioComponent.setAudioAttributes( - AudioAttributes.Builder().setContentType(C.CONTENT_TYPE_MUSIC).build(), + AudioAttributes.Builder().setContentType(C.AUDIO_CONTENT_TYPE_MUSIC).build(), !mixWithOthers ) } @@ -707,17 +713,9 @@ internal class BetterPlayer( if (mappedTrackInfo != null) { val builder = trackSelector.parameters.buildUpon() .setRendererDisabled(rendererIndex, false) - .setTrackSelectionOverrides( - TrackSelectionOverrides.Builder().addOverride( - TrackSelectionOverrides.TrackSelectionOverride( - mappedTrackInfo.getTrackGroups( - rendererIndex - ).get(groupIndex) - ) - ).build() - ) - - trackSelector.setParameters(builder) + .addOverride(TrackSelectionOverride(mappedTrackInfo.getTrackGroups(rendererIndex).get(groupIndex),0)) + .build() + trackSelector.parameters = builder } } diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index d243520f8..1befda4d9 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -26,20 +26,16 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 31 + compileSdkVersion 33 sourceSets { main.java.srcDirs += 'src/main/kotlin' } - lintOptions { - disable 'InvalidPackage' - } - defaultConfig { applicationId "com.jhomlala.better_player_example" minSdkVersion 16 - targetSdkVersion 31 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName multiDexEnabled true @@ -51,6 +47,9 @@ android { signingConfig signingConfigs.debug } } + lint { + disable 'InvalidPackage' + } } flutter { diff --git a/example/android/build.gradle b/example/android/build.gradle index 7c1aad732..021e0ef3b 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,6 +1,6 @@ buildscript { - ext.kotlinVersion = "1.5.31" - ext.gradleVersion = "7.0.2" + ext.kotlinVersion = "1.8.22" + ext.gradleVersion = '7.3.1' ext.multidexVersion = "2.0.1" repositories { google() @@ -28,6 +28,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index c3c8c1027..55be9291d 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,5 +3,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip