Refactor MediaPlayerController to Kotlin
and also make MediaPlayerService context-free
This commit is contained in:
parent
a801e276ee
commit
df047dd463
|
@ -63,7 +63,8 @@ style:
|
||||||
excludePackageStatements: false
|
excludePackageStatements: false
|
||||||
excludeImportStatements: false
|
excludeImportStatements: false
|
||||||
MagicNumber:
|
MagicNumber:
|
||||||
ignoreNumbers: ['-1', '0', '1', '2', '100']
|
# 100 common in percentage, 1000 in milliseconds
|
||||||
|
ignoreNumbers: ['-1', '0', '1', '2', '100', '1000']
|
||||||
ignoreEnums: true
|
ignoreEnums: true
|
||||||
ignorePropertyDeclaration: true
|
ignorePropertyDeclaration: true
|
||||||
UnnecessaryAbstractClass:
|
UnnecessaryAbstractClass:
|
||||||
|
|
|
@ -26,5 +26,5 @@ val mediaPlayerModule = module {
|
||||||
single { AudioFocusHandler(get()) }
|
single { AudioFocusHandler(get()) }
|
||||||
|
|
||||||
// TODO Ideally this can be cleaned up when all circular references are removed.
|
// TODO Ideally this can be cleaned up when all circular references are removed.
|
||||||
single { MediaPlayerController(androidContext(), get(), get(), get(), get(), get()) }
|
single { MediaPlayerController(get(), get(), get(), get(), get()) }
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -24,8 +24,10 @@ import android.view.KeyEvent
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
|
import org.koin.core.component.KoinApiExtension
|
||||||
import org.moire.ultrasonic.R
|
import org.moire.ultrasonic.R
|
||||||
import org.moire.ultrasonic.activity.NavigationActivity
|
import org.moire.ultrasonic.activity.NavigationActivity
|
||||||
|
import org.moire.ultrasonic.app.UApp
|
||||||
import org.moire.ultrasonic.domain.MusicDirectory
|
import org.moire.ultrasonic.domain.MusicDirectory
|
||||||
import org.moire.ultrasonic.domain.PlayerState
|
import org.moire.ultrasonic.domain.PlayerState
|
||||||
import org.moire.ultrasonic.domain.RepeatMode
|
import org.moire.ultrasonic.domain.RepeatMode
|
||||||
|
@ -47,6 +49,7 @@ import timber.log.Timber
|
||||||
* Android Foreground Service for playing music
|
* Android Foreground Service for playing music
|
||||||
* while the rest of the Ultrasonic App is in the background.
|
* while the rest of the Ultrasonic App is in the background.
|
||||||
*/
|
*/
|
||||||
|
@KoinApiExtension
|
||||||
@Suppress("LargeClass")
|
@Suppress("LargeClass")
|
||||||
class MediaPlayerService : Service() {
|
class MediaPlayerService : Service() {
|
||||||
private val binder: IBinder = SimpleServiceBinder(this)
|
private val binder: IBinder = SimpleServiceBinder(this)
|
||||||
|
@ -906,7 +909,8 @@ class MediaPlayerService : Service() {
|
||||||
private val instanceLock = Any()
|
private val instanceLock = Any()
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getInstance(context: Context): MediaPlayerService? {
|
fun getInstance(): MediaPlayerService? {
|
||||||
|
val context = UApp.applicationContext()
|
||||||
synchronized(instanceLock) {
|
synchronized(instanceLock) {
|
||||||
for (i in 0..19) {
|
for (i in 0..19) {
|
||||||
if (instance != null) return instance
|
if (instance != null) return instance
|
||||||
|
@ -931,20 +935,20 @@ class MediaPlayerService : Service() {
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun executeOnStartedMediaPlayerService(
|
fun executeOnStartedMediaPlayerService(
|
||||||
context: Context,
|
taskToExecute: (MediaPlayerService) -> Unit
|
||||||
taskToExecute: (MediaPlayerService?) -> Unit
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
val t: Thread = object : Thread() {
|
val t: Thread = object : Thread() {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
val instance = getInstance(context)
|
val instance = getInstance()
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
Timber.e("ExecuteOnStarted.. failed to get a MediaPlayerService instance!")
|
Timber.e("ExecuteOnStarted.. failed to get a MediaPlayerService instance!")
|
||||||
return
|
return
|
||||||
}
|
} else {
|
||||||
taskToExecute(instance)
|
taskToExecute(instance)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
t.start()
|
t.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue