LocationListener в workManager

Имею приложения для бега, пытаюсь отслеживать передвижение пользователя когда экран заблокирован, перепробовал уже много чего, и пока остановился на варианте с LocationListener в workmanager, но проблема в том, что он и в фоновом и на переднем плане ничего не получает в слушатель, может есть какой хороший туторила или совет что не так

мой WorkManager

@HiltWorker
class TrackLocationWorker @AssistedInject constructor(
    @Assisted private val context: Context,
    @Assisted workerParams: WorkerParameters,
    private val repository: RunRepository
) : Worker (context, workerParams) {

    private val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager

    private val listener = object : LocationListener {
        @SuppressLint("MissingPermission")
        override fun onProviderEnabled(provider: String) {
            super.onProviderEnabled(provider)
            Log.e(TAG,"onProviderEnabled")
            locationManager.getLastKnownLocation(provider)?.also {
                repository.emitLocationFlow(
                    listOf(it)
                )
            }
        }

        override fun onProviderDisabled(provider: String) {
            super.onProviderDisabled(provider)
            Log.e(TAG,"onProviderDisabled")
        }

        override fun onLocationChanged(it: Location) {
            Log.e(TAG, "new point ")

            repository.emitLocationFlow(mutableListOf(it))
        }

        override fun onLocationChanged(locations: MutableList<Location>) {
            //super.onLocationChanged(locations)
            Log.e(TAG, "new points ")
            repository.emitLocationFlow(locations)
        }

        override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) = Unit
    }

    @SuppressLint("MissingPermission")
    override fun doWork(): Result {
        return try {
            Log.e(TAG,"onWork")

            locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER,
                3000.toLong(),
                5.toFloat(),
                listener)

            Result.success()
        } catch (e: Exception) {
            Log.e(TAG, "Failure in doing work $e")
            Result.failure()
        }
    }

    override fun onStopped() {

        Log.e(TAG,"onStopped")
        locationManager.removeUpdates(listener)
        super.onStopped()
    }


}

Проверку на все разрешения я делаю в активности

мой манифест

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
        tools:ignore="CoarseFineLocation" />

  <provider
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:authorities="${applicationId}.workmanager-init"
            tools:node="remove" />

Ответы (0 шт):