Use dedicated audio renderer
Use a dedicated audio renderer to shrink APK size, and possible reduce battery/cache usage.
This commit is contained in:
parent
600aa2d6f1
commit
501e40b2bf
1 changed files with 19 additions and 3 deletions
|
|
@ -20,9 +20,13 @@ import com.google.android.exoplayer2.C
|
|||
import com.google.android.exoplayer2.ExoPlaybackException
|
||||
import com.google.android.exoplayer2.MediaItem
|
||||
import com.google.android.exoplayer2.Player
|
||||
import com.google.android.exoplayer2.Renderer
|
||||
import com.google.android.exoplayer2.RenderersFactory
|
||||
import com.google.android.exoplayer2.SimpleExoPlayer
|
||||
import com.google.android.exoplayer2.audio.AudioAttributes
|
||||
import com.google.android.exoplayer2.audio.MediaCodecAudioRenderer
|
||||
import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector
|
||||
import com.google.android.exoplayer2.mediacodec.MediaCodecSelector
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
|
|
@ -54,9 +58,7 @@ import org.oxycblt.auxio.settings.SettingsManager
|
|||
* @author OxygenCobalt
|
||||
*/
|
||||
class PlaybackService : Service(), Player.EventListener, PlaybackStateManager.Callback, SettingsManager.Callback {
|
||||
private val player: SimpleExoPlayer by lazy {
|
||||
SimpleExoPlayer.Builder(applicationContext).build()
|
||||
}
|
||||
private val player: SimpleExoPlayer by lazy { newPlayer() }
|
||||
|
||||
private val playbackManager = PlaybackStateManager.getInstance()
|
||||
private val settingsManager = SettingsManager.getInstance()
|
||||
|
|
@ -332,6 +334,20 @@ class PlaybackService : Service(), Player.EventListener, PlaybackStateManager.Ca
|
|||
|
||||
// --- OTHER FUNCTIONS ---
|
||||
|
||||
/**
|
||||
* Create the [SimpleExoPlayer] instance.
|
||||
*/
|
||||
private fun newPlayer(): SimpleExoPlayer {
|
||||
// Since Auxio is a music player, only specify an audio renderer to save battery & cache space.
|
||||
val audioRenderer = RenderersFactory { handler, vidListener, audioListener, textOutput, metadataOutput ->
|
||||
arrayOf<Renderer>(
|
||||
MediaCodecAudioRenderer(this, MediaCodecSelector.DEFAULT, handler, audioListener)
|
||||
)
|
||||
}
|
||||
|
||||
return SimpleExoPlayer.Builder(this, audioRenderer).build()
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the [SimpleExoPlayer] state, if the service was destroyed while [PlaybackStateManager] persisted.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in a new issue