Adapt to media 1.2.0

This commit is contained in:
tzugen 2023-12-04 15:15:37 +01:00
parent b855e4bbe7
commit 639ef03bce
No known key found for this signature in database
GPG Key ID: 61E9C34BC10EC930
3 changed files with 27 additions and 14 deletions

View File

@ -46,6 +46,10 @@ class ArtworkBitmapLoader : BitmapLoader, KoinComponent {
} }
} }
override fun loadBitmap(uri: Uri, options: BitmapFactory.Options?): ListenableFuture<Bitmap> {
return loadBitmap(uri)
}
private fun decode(data: ByteArray): Bitmap { private fun decode(data: ByteArray): Bitmap {
val bitmap = BitmapFactory.decodeByteArray(data, 0, data.size) val bitmap = BitmapFactory.decodeByteArray(data, 0, data.size)
return bitmap ?: throw IllegalArgumentException("Could not decode bitmap") return bitmap ?: throw IllegalArgumentException("Could not decode bitmap")

View File

@ -12,6 +12,7 @@ import android.view.Surface
import android.view.SurfaceHolder import android.view.SurfaceHolder
import android.view.SurfaceView import android.view.SurfaceView
import android.view.TextureView import android.view.TextureView
import androidx.media3.common.AudioAttributes
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.MediaMetadata import androidx.media3.common.MediaMetadata
import androidx.media3.common.PlaybackParameters import androidx.media3.common.PlaybackParameters
@ -27,6 +28,10 @@ import androidx.media3.common.Tracks
@SuppressLint("UnsafeOptInUsageError") @SuppressLint("UnsafeOptInUsageError")
abstract class JukeboxUnimplementedFunctions : Player { abstract class JukeboxUnimplementedFunctions : Player {
override fun setAudioAttributes(audioAttributes: AudioAttributes, handleAudioFocus: Boolean) {
TODO("Not yet implemented")
}
override fun setMediaItems(mediaItems: MutableList<MediaItem>) { override fun setMediaItems(mediaItems: MutableList<MediaItem>) {
TODO("Not yet implemented") TODO("Not yet implemented")
} }

View File

@ -20,10 +20,10 @@ import androidx.media3.common.C
import androidx.media3.common.C.USAGE_MEDIA import androidx.media3.common.C.USAGE_MEDIA
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.Player import androidx.media3.common.Player
import androidx.media3.common.TrackSelectionParameters
import androidx.media3.datasource.DataSource import androidx.media3.datasource.DataSource
import androidx.media3.datasource.ResolvingDataSource import androidx.media3.datasource.ResolvingDataSource
import androidx.media3.datasource.okhttp.OkHttpDataSource import androidx.media3.datasource.okhttp.OkHttpDataSource
import androidx.media3.exoplayer.DefaultRenderersFactory
import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
import androidx.media3.exoplayer.source.ShuffleOrder import androidx.media3.exoplayer.source.ShuffleOrder
@ -237,35 +237,39 @@ class PlaybackService :
val cacheDataSourceFactory: DataSource.Factory = val cacheDataSourceFactory: DataSource.Factory =
CachedDataSource.Factory(resolvingDataSource) CachedDataSource.Factory(resolvingDataSource)
// Create a renderer with HW rendering support
val renderer = DefaultRenderersFactory(this)
if (Settings.useHwOffload) {
renderer.setEnableAudioOffload(true)
}
// Create the player // Create the player
val player = ExoPlayer.Builder(this) val player = ExoPlayer.Builder(this)
.setAudioAttributes(getAudioAttributes(), true) .setAudioAttributes(getAudioAttributes(), true)
.setWakeMode(getWakeModeFlag()) .setWakeMode(getWakeModeFlag())
.setHandleAudioBecomingNoisy(true) .setHandleAudioBecomingNoisy(true)
.setMediaSourceFactory(DefaultMediaSourceFactory(cacheDataSourceFactory)) .setMediaSourceFactory(DefaultMediaSourceFactory(cacheDataSourceFactory))
.setRenderersFactory(renderer)
.setSeekBackIncrementMs(Settings.seekInterval.toLong()) .setSeekBackIncrementMs(Settings.seekInterval.toLong())
.setSeekForwardIncrementMs(Settings.seekInterval.toLong()) .setSeekForwardIncrementMs(Settings.seekInterval.toLong())
.build() .build()
// Enable audio offload
if (Settings.useHwOffload) {
player.enableOffload()
}
// Setup Equalizer // Setup Equalizer
equalizer = EqualizerController.create(player.audioSessionId) equalizer = EqualizerController.create(player.audioSessionId)
// Enable audio offload
if (Settings.useHwOffload) {
player.experimentalSetOffloadSchedulingEnabled(true)
}
return player return player
} }
private fun ExoPlayer.enableOffload() {
trackSelectionParameters = trackSelectionParameters.buildUpon()
.setAudioOffloadPreferences(
TrackSelectionParameters.AudioOffloadPreferences
.Builder()
.setAudioOffloadMode(
TrackSelectionParameters.AudioOffloadPreferences.AUDIO_OFFLOAD_MODE_ENABLED
)
.build()
).build()
}
private fun createShuffleListFromCurrentIndex( private fun createShuffleListFromCurrentIndex(
currentIndex: Int, currentIndex: Int,
length: Int, length: Int,