Запрос залпа на обратный вызов местоположения в BroadcastReceiver - PullRequest
0 голосов
/ 06 марта 2020

Итак, я сделал менеджер по тревоге и позвонил ему из своей основной деятельности. Класс приемника вещания принимает вызов, и он работает даже в фоновом режиме. Так что мне нужно знать широту и долготу пользователя и загрузить их в базу данных через API. Вот как теперь выглядит код

class AlarmReceiver : BroadcastReceiver() {

    lateinit var mFusedLocationClient: FusedLocationProviderClient

    var latitude = ""
    var longitude = ""
    var token = ""
    var id = 0;


    override fun onReceive(context: Context, intent: Intent) {

        if (intent != null) {

            token = intent.getStringExtra("token")

            id = intent.getIntExtra("id", 0)


            var mLocationRequest = LocationRequest()
            mLocationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
            mLocationRequest.interval = 3000
            mLocationRequest.fastestInterval = 1000




            mFusedLocationClient = LocationServices.getFusedLocationProviderClient(context)
            mFusedLocationClient!!.requestLocationUpdates(
                mLocationRequest, mLocationCallback,
                Looper.myLooper()
            )


        }


    }


    private val mLocationCallback = object : LocationCallback() {

        override fun onLocationResult(locationResult: LocationResult) {


            var mLastLocation: Location = locationResult.lastLocation

            latitude = mLastLocation.latitude.toString()
            longitude = mLastLocation.longitude.toString()


            }
        }


    }

Я получил местоположение из обратного вызова, но проблема сейчас в том, что я не могу использовать залп, потому что этот обратный вызов не имеет контекста. Я пытался сделать объект-компаньон для этого обратного вызова в mainacctivity, но приложение закроет sh, если я закрою его. Есть ли способ получить контекст в обратном вызове или получить значение где-нибудь еще, чтобы я мог использовать залп даже в фоновом режиме?

...