diff --git a/app/src/main/java/org/oxycblt/auxio/AuxioService.kt b/app/src/main/java/org/oxycblt/auxio/AuxioService.kt index fb0f2aaac..aeb0e6db7 100644 --- a/app/src/main/java/org/oxycblt/auxio/AuxioService.kt +++ b/app/src/main/java/org/oxycblt/auxio/AuxioService.kt @@ -38,7 +38,7 @@ import org.oxycblt.auxio.playback.service.PlaybackServiceFragment @AndroidEntryPoint class AuxioService : - MediaBrowserServiceCompat(), ForegroundListener, MusicServiceFragment.Invalidator { + MediaBrowserServiceCompat(), ForegroundListener, MusicServiceFragment.Invalidator { @Inject lateinit var playbackFragmentFactory: PlaybackServiceFragment.Factory private lateinit var playbackFragment: PlaybackServiceFragment diff --git a/app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt b/app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt index ef3ecc893..de5969216 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt @@ -21,7 +21,6 @@ package org.oxycblt.auxio.music.service import android.content.Context import android.os.PowerManager import coil.ImageLoader -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -36,7 +35,8 @@ import org.oxycblt.auxio.playback.state.PlaybackStateManager import org.oxycblt.auxio.util.getSystemServiceCompat import org.oxycblt.auxio.util.logD -class Indexer private constructor( +class Indexer +private constructor( override val workerContext: Context, private val foregroundListener: ForegroundListener, private val playbackManager: PlaybackStateManager, @@ -49,7 +49,9 @@ class Indexer private constructor( MusicRepository.IndexingListener, MusicRepository.UpdateListener, MusicSettings.Listener { - class Factory @Inject constructor( + class Factory + @Inject + constructor( private val playbackManager: PlaybackStateManager, private val musicRepository: MusicRepository, private val musicSettings: MusicSettings, @@ -57,8 +59,14 @@ class Indexer private constructor( private val contentObserver: SystemContentObserver ) { fun create(context: Context, listener: ForegroundListener) = - Indexer(context, listener, playbackManager, - musicRepository, musicSettings, imageLoader, contentObserver) + Indexer( + context, + listener, + playbackManager, + musicRepository, + musicSettings, + imageLoader, + contentObserver) } private val indexJob = Job() diff --git a/app/src/main/java/org/oxycblt/auxio/music/service/MusicBrowser.kt b/app/src/main/java/org/oxycblt/auxio/music/service/MusicBrowser.kt index 654712287..ecb53daa9 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/service/MusicBrowser.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/service/MusicBrowser.kt @@ -20,7 +20,6 @@ package org.oxycblt.auxio.music.service import android.content.Context import android.support.v4.media.MediaBrowserCompat.MediaItem -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import org.oxycblt.auxio.R import org.oxycblt.auxio.home.HomeGenerator @@ -37,7 +36,8 @@ import org.oxycblt.auxio.music.Playlist import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.search.SearchEngine -class MusicBrowser private constructor( +class MusicBrowser +private constructor( private val context: Context, private val invalidator: Invalidator, private val musicRepository: MusicRepository, @@ -46,15 +46,24 @@ class MusicBrowser private constructor( homeGeneratorFactory: HomeGenerator.Factory ) : MusicRepository.UpdateListener, HomeGenerator.Invalidator { - class Factory @Inject constructor( - private val musicRepository: MusicRepository, - private val searchEngine: SearchEngine, - private val listSettings: ListSettings, + class Factory + @Inject + constructor( + private val musicRepository: MusicRepository, + private val searchEngine: SearchEngine, + private val listSettings: ListSettings, private val homeGeneratorFactory: HomeGenerator.Factory ) { fun create(context: Context, invalidator: Invalidator): MusicBrowser = - MusicBrowser(context, invalidator, musicRepository, searchEngine, listSettings, homeGeneratorFactory) + MusicBrowser( + context, + invalidator, + musicRepository, + searchEngine, + listSettings, + homeGeneratorFactory) } + interface Invalidator { fun invalidateMusic(ids: Set) } diff --git a/app/src/main/java/org/oxycblt/auxio/music/service/MusicServiceFragment.kt b/app/src/main/java/org/oxycblt/auxio/music/service/MusicServiceFragment.kt index 6cd420928..a36769d9c 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/service/MusicServiceFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/service/MusicServiceFragment.kt @@ -24,7 +24,6 @@ import android.support.v4.media.MediaBrowserCompat.MediaItem import androidx.media.MediaBrowserServiceCompat.BrowserRoot import androidx.media.MediaBrowserServiceCompat.Result import androidx.media.utils.MediaConstants -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -51,13 +50,25 @@ constructor( private val dispatchJob = Job() private val dispatchScope = CoroutineScope(dispatchJob + Dispatchers.Default) - class Factory @Inject constructor( + class Factory + @Inject + constructor( private val indexerFactory: Indexer.Factory, private val musicBrowserFactory: MusicBrowser.Factory, private val musicRepository: MusicRepository ) { - fun create(context: Context, foregroundListener: ForegroundListener, invalidator: Invalidator): MusicServiceFragment = - MusicServiceFragment(context, foregroundListener, invalidator, indexerFactory, musicBrowserFactory, musicRepository) + fun create( + context: Context, + foregroundListener: ForegroundListener, + invalidator: Invalidator + ): MusicServiceFragment = + MusicServiceFragment( + context, + foregroundListener, + invalidator, + indexerFactory, + musicBrowserFactory, + musicRepository) } interface Invalidator { @@ -71,9 +82,7 @@ constructor( } override fun invalidateMusic(ids: Set) { - ids.forEach { mediaId -> - invalidator.invalidateMusic(mediaId) - } + ids.forEach { mediaId -> invalidator.invalidateMusic(mediaId) } } fun start() { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGainAudioProcessor.kt b/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGainAudioProcessor.kt index 9c9b8e695..1a1770736 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGainAudioProcessor.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGainAudioProcessor.kt @@ -44,17 +44,20 @@ import org.oxycblt.auxio.util.logD * * @author Alexander Capehart (OxygenCobalt) */ -class ReplayGainAudioProcessor private constructor( +class ReplayGainAudioProcessor +private constructor( private val playbackManager: PlaybackStateManager, private val playbackSettings: PlaybackSettings ) : BaseAudioProcessor(), PlaybackStateManager.Listener, PlaybackSettings.Listener { - class Factory @Inject constructor( - - private val playbackManager: PlaybackStateManager, - private val playbackSettings: PlaybackSettings + class Factory + @Inject + constructor( + private val playbackManager: PlaybackStateManager, + private val playbackSettings: PlaybackSettings ) { fun create() = ReplayGainAudioProcessor(playbackManager, playbackSettings) } + private var volume = 1f set(value) { field = value diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt index 399aefa55..d0c419ae1 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt @@ -18,23 +18,20 @@ package org.oxycblt.auxio.playback.service -import android.annotation.SuppressLint import android.content.Context import android.support.v4.media.session.MediaSessionCompat -import androidx.core.content.ContextCompat -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import kotlinx.coroutines.Job import org.oxycblt.auxio.ForegroundListener import org.oxycblt.auxio.ForegroundServiceNotification import org.oxycblt.auxio.IntegerTable -import org.oxycblt.auxio.playback.PlaybackSettings import org.oxycblt.auxio.playback.state.DeferredPlayback import org.oxycblt.auxio.playback.state.PlaybackStateManager import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.widgets.WidgetComponent -class PlaybackServiceFragment private constructor( +class PlaybackServiceFragment +private constructor( private val context: Context, private val foregroundListener: ForegroundListener, private val playbackManager: PlaybackStateManager, @@ -43,7 +40,9 @@ class PlaybackServiceFragment private constructor( widgetComponentFactory: WidgetComponent.Factory, systemReceiverFactory: SystemPlaybackReceiver.Factory, ) : MediaSessionCompat.Callback(), PlaybackStateManager.Listener { - class Factory @Inject constructor( + class Factory + @Inject + constructor( private val playbackManager: PlaybackStateManager, private val exoHolderFactory: ExoPlaybackStateHolder.Factory, private val sessionHolderFactory: MediaSessionHolder.Factory, @@ -51,7 +50,14 @@ class PlaybackServiceFragment private constructor( private val systemReceiverFactory: SystemPlaybackReceiver.Factory, ) { fun create(context: Context, foregroundListener: ForegroundListener) = - PlaybackServiceFragment(context, foregroundListener, playbackManager, exoHolderFactory, sessionHolderFactory, widgetComponentFactory, systemReceiverFactory) + PlaybackServiceFragment( + context, + foregroundListener, + playbackManager, + exoHolderFactory, + sessionHolderFactory, + widgetComponentFactory, + systemReceiverFactory) } private val waitJob = Job() @@ -60,7 +66,8 @@ class PlaybackServiceFragment private constructor( private val widgetComponent = widgetComponentFactory.create(context) private val systemReceiver = systemReceiverFactory.create(context) - val token: MediaSessionCompat.Token get() = sessionHolder.token + val token: MediaSessionCompat.Token + get() = sessionHolder.token // --- MEDIASESSION CALLBACKS --- diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/SystemPlaybackReceiver.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/SystemPlaybackReceiver.kt index f7c7110f0..3a10039db 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/SystemPlaybackReceiver.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/SystemPlaybackReceiver.kt @@ -24,32 +24,37 @@ import android.content.Intent import android.content.IntentFilter import android.media.AudioManager import androidx.core.content.ContextCompat +import javax.inject.Inject import org.oxycblt.auxio.playback.PlaybackSettings import org.oxycblt.auxio.playback.state.PlaybackStateManager import org.oxycblt.auxio.util.logD import org.oxycblt.auxio.widgets.WidgetComponent import org.oxycblt.auxio.widgets.WidgetProvider -import javax.inject.Inject /** * A [BroadcastReceiver] for receiving playback-specific [Intent]s from the system that require an * active [IntentFilter] to be registered. */ -class SystemPlaybackReceiver private constructor( +class SystemPlaybackReceiver +private constructor( private val playbackManager: PlaybackStateManager, private val playbackSettings: PlaybackSettings, private val widgetComponent: WidgetComponent ) : BroadcastReceiver() { private var initialHeadsetPlugEventHandled = false - class Factory @Inject constructor( + class Factory + @Inject + constructor( private val playbackManager: PlaybackStateManager, private val playbackSettings: PlaybackSettings, private val widgetComponent: WidgetComponent ) { fun create(context: Context): SystemPlaybackReceiver { - val receiver = SystemPlaybackReceiver(playbackManager, playbackSettings, widgetComponent) - ContextCompat.registerReceiver(context, receiver, INTENT_FILTER, ContextCompat.RECEIVER_EXPORTED) + val receiver = + SystemPlaybackReceiver(playbackManager, playbackSettings, widgetComponent) + ContextCompat.registerReceiver( + context, receiver, INTENT_FILTER, ContextCompat.RECEIVER_EXPORTED) return receiver } } @@ -131,16 +136,16 @@ class SystemPlaybackReceiver private constructor( } private companion object { - val INTENT_FILTER = - IntentFilter().apply { - addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY) - addAction(AudioManager.ACTION_HEADSET_PLUG) - addAction(PlaybackActions.ACTION_INC_REPEAT_MODE) - addAction(PlaybackActions.ACTION_INVERT_SHUFFLE) - addAction(PlaybackActions.ACTION_SKIP_PREV) - addAction(PlaybackActions.ACTION_PLAY_PAUSE) - addAction(PlaybackActions.ACTION_SKIP_NEXT) - addAction(WidgetProvider.ACTION_WIDGET_UPDATE) - } + val INTENT_FILTER = + IntentFilter().apply { + addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY) + addAction(AudioManager.ACTION_HEADSET_PLUG) + addAction(PlaybackActions.ACTION_INC_REPEAT_MODE) + addAction(PlaybackActions.ACTION_INVERT_SHUFFLE) + addAction(PlaybackActions.ACTION_SKIP_PREV) + addAction(PlaybackActions.ACTION_PLAY_PAUSE) + addAction(PlaybackActions.ACTION_SKIP_NEXT) + addAction(WidgetProvider.ACTION_WIDGET_UPDATE) + } } } diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetComponent.kt b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetComponent.kt index 2afa5b177..367b44f42 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetComponent.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetComponent.kt @@ -23,7 +23,6 @@ import android.graphics.Bitmap import android.os.Build import coil.request.ImageRequest import coil.size.Size -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import org.oxycblt.auxio.R import org.oxycblt.auxio.image.BitmapProvider @@ -46,20 +45,24 @@ import org.oxycblt.auxio.util.logD * * @author Alexander Capehart (OxygenCobalt) */ -class WidgetComponent private constructor( +class WidgetComponent +private constructor( private val context: Context, private val imageSettings: ImageSettings, private val bitmapProvider: BitmapProvider, private val playbackManager: PlaybackStateManager, private val uiSettings: UISettings ) : PlaybackStateManager.Listener, UISettings.Listener, ImageSettings.Listener { - class Factory @Inject constructor( + class Factory + @Inject + constructor( private val imageSettings: ImageSettings, private val bitmapProvider: BitmapProvider, private val playbackManager: PlaybackStateManager, private val uiSettings: UISettings ) { - fun create(context: Context) = WidgetComponent(context, imageSettings, bitmapProvider, playbackManager, uiSettings) + fun create(context: Context) = + WidgetComponent(context, imageSettings, bitmapProvider, playbackManager, uiSettings) } private val widgetProvider = WidgetProvider()